Modellförvandling

En modellomvandling , i modelldriven teknik , är ett automatiserat sätt att modifiera och skapa modeller. Ett exempel på användning av modelltransformation är att säkerställa att en familj av modeller är konsekvent, i en exakt mening som mjukvaruingenjören kan definiera. Syftet med att använda en modellomvandling är att spara insatser och minska fel genom att automatisera byggandet och modifieringen av modeller där det är möjligt.

Översikt

Modelltransformationer kan ses som program som tar modeller som input. Det finns en mängd olika typer av modellomvandling och användning av dem, som skiljer sig åt i deras input och output och även i sättet de uttrycks.

En modelltransformation anger vanligtvis vilka modeller som är acceptabla som input, och om lämpligt vilka modeller den kan producera som output, genom att specificera den metamodell som en modell måste överensstämma med.

Klassificering av modelltransformationer

Modelltransformationer och språk för dem har klassificerats på många sätt. Några av de vanligaste distinktionerna som dras är:

Antal och typ av in- och utgångar

I princip kan en modellomvandling ha många ingångar och utgångar av olika slag; den enda absoluta begränsningen är att en modelltransformation kommer att ta minst en modell som input. En modellomvandling som inte producerade någon modell som utdata skulle dock oftare kallas en modellanalys eller modellfråga.

Endogent kontra exogent

Endogena transformationer är transformationer mellan modeller uttryckta på samma språk. Exogena transformationer är transformationer mellan modeller uttryckta med olika språk. Till exempel, i en process som överensstämmer med OMG Model Driven Architecture , kan en plattformsoberoende modell omvandlas till en plattformsspecifik modell genom en exogen modelltransformation.

Enkelriktad kontra dubbelriktad

En enkelriktad modelltransformation har bara ett exekveringssätt: det vill säga att den alltid tar samma typ av indata och producerar samma typ av utdata. Enkelriktade modelltransformationer är användbara i kompileringsliknande situationer, där alla utdatamodeller är skrivskyddade. Den relevanta begreppet konsistens är då mycket enkel: ingångsmodellen överensstämmer med modellen som transformationen endast skulle producera som output.

För en dubbelriktad modelltransformation kan samma typ av modell ibland matas in och andra gånger matas ut. Dubbelriktade transformationer är nödvändiga i situationer där människor arbetar på mer än en modell och modellerna måste hållas konsekventa. Då kan en ändring av endera modellen kräva en ändring av den andra, för att bibehålla överensstämmelse mellan modellerna. Eftersom varje modell kan inkorporera information som inte återspeglas i den andra, kan det finnas många modeller som överensstämmer med en given modell. Viktiga specialfall är:

  • bijektiva transformationer, där det finns exakt en modell som överensstämmer med en given modell; det vill säga konsistensrelationen är bijektiv. Ett par modeller är konsekventa om och bara om det är relaterat av konsistensbijektionen. Båda modellerna innehåller samma information, men presenteras på olika sätt.
  • vytransformationer, där en konkret modell bestämmer en enda vymodell, men samma vymodell kan produceras från många olika betongmodeller. Synmodellen är en abstraktion av den konkreta modellen. Om vyn kan uppdateras behövs en dubbelriktad transformation. Denna situation är känd i databasfältet som view-update . Varje konkret modell överensstämmer med dess uppfattning.

Det är särskilt viktigt att en dubbelriktad modelltransformation har lämpliga egenskaper för att få den att bete sig förnuftigt: till exempel att inte göra ändringar i onödan, eller avvisa medvetet gjorda ändringar.

Språk för modelltransformationer

En modelltransformation kan skrivas i ett allmänt programmeringsspråk, men specialiserade modelltransformationsspråk finns också tillgängliga. I synnerhet dubbelriktade transformationer skrivs bäst på ett språk som säkerställer att riktningarna är korrekt relaterade. De OMG -standardiserade modelltransformationsspråken kallas gemensamt för QVT .

I vissa modelltransformationsspråk, till exempel QVT -språken, är en modelltransformation i sig en modell, det vill säga den överensstämmer med en metamodell som är en del av modelltransformationsspråkets definition. Detta underlättar definitionen av Higher Order Transformation s (HOTs), dvs transformationer som har andra transformationer som input och/eller output.

Se även

Vidare läsning