Eine Modelltransformation bildet ein Modell auf ein anderes Modell oder auf eine textuelle Darstellung ab. Der Begriff hängt eng mit Metamodellen und der modellgetriebenen Softwareentwicklung zusammen. In der Model Driven Software Development (MDSD) können beispielsweise plattformunabhängige Modelle in plattformspezifische Modelle und anschließend in Programmcode überführt werden.
Transformationsregeln werden häufig auf der Ebene der beteiligten Metamodelle formuliert. Für Modelle der Unified Modelling Language (UML) können dabei auch UML-Profile eingesetzt werden, um die Sprache für einen bestimmten Anwendungsbereich zu erweitern.
Aufbau von Transformationsregeln
Eine Transformationsregel beschreibt, wie ein oder mehrere Elemente des Quellmodells in Elemente des Zielmodells übergehen. Der auf das Quellmodell bezogene Teil wird häufig als Left-Hand Side (LHS), der zielbezogene Teil als Right-Hand Side (RHS) bezeichnet. Die Regel kann zusätzlich Bedingungen, Zuordnungen und Berechnungen enthalten.
Die Konzepte und Beziehungen einer Modellierungssprache werden durch ihre abstrakte Syntax beschrieben. Sie bildet eine wichtige Grundlage, um Transformationen nach den beteiligten Sprachen und Abstraktionsebenen einzuordnen.
Endogene und exogene Transformationen
Endogen
Quell- und Zielmodell beruhen auf derselben abstrakten Syntax. Typische Aufgaben sind Optimierung, Vereinfachung und Normalisierung eines Modells.
Exogen
Quell- und Zielmodell verwenden unterschiedliche Modellierungssprachen. Dazu zählen Synthese, Reverse Engineering und Migration.
Eine exogene Transformation wird wegen des Wechsels zwischen unterschiedlichen Sprachen auch als Translation bezeichnet. Bei endogenen Transformationen bleibt die Sprache gleich, während Struktur oder Darstellung verändert werden.
Horizontale und vertikale Transformation
Die zweite wichtige Unterscheidung betrachtet die Abstraktionsebene. Bei einer horizontalen Transformation befinden sich Quell- und Zielmodell auf derselben Ebene. Ein Beispiel ist die Migration zwischen zwei Modellierungssprachen, die dieselben fachlichen Aspekte ausdrücken.
Bei einer vertikalen Transformation unterscheiden sich die Abstraktionsebenen. Wird ein abstraktes Modell zu einer konkreteren Darstellung verfeinert, spricht man von Refinement. Die Überführung einer Spezifikation in ausführbaren Code ist ein typisches Beispiel.
Merkmale der Umsetzung
Transformationssprachen und Werkzeuge unterscheiden sich danach, wie sie Regeln beschreiben, organisieren und ausführen. Wichtige Merkmale sind:
- Richtung: Unidirektionale Regeln bilden vom Quell- zum Zielmodell ab. Bidirektionale Ansätze unterstützen prinzipiell beide Richtungen.
- Regel-Scheduling: Es legt fest, wann und in welcher Reihenfolge mehrere Regeln ausgeführt werden.
- Lokalisierung: Eine Regel wird gezielt auf einen bestimmten Ausschnitt des Quellmodells angewendet.
- Synchronisierung: Veränderungen an zusammengehörigen Modellen müssen konsistent nachgeführt werden.
- Organisation: Regeln können nach Aufgaben, Modellbereichen oder anderen Kriterien in Module gegliedert sein.
Methoden der Modelltransformation
Grundsätzlich lassen sich Modell-zu-Text- und Modell-zu-Modell-Transformationen unterscheiden. Bei Modell-zu-Text entsteht beispielsweise Text oder Code. Bei Modell-zu-Modell wird ein strukturiertes Zielmodell erzeugt, dessen Konformität mit seinem Metamodell geprüft werden kann.
Visitor
Ein Visitor durchläuft eine Modellrepräsentation und erzeugt daraus einen Textstrom oder Code.
Template
Textvorlagen kombinieren feste Inhalte mit Ausdrücken, die auf Daten des Quellmodells zugreifen.
Direct Manipulation
Eine API ermöglicht den gezielten Zugriff auf die Modellrepräsentation.
Structure Driven
Zunächst entsteht die Struktur des Zielmodells; danach werden Attribute und Referenzen ergänzt.
Operational
Operationale Ansätze ergänzen direkte Manipulation um spezielle Sprachmittel und Transformationsinformationen, etwa auf Basis von OCL.
Model Template
Modellfragmente dienen als Vorlage, sodass das Ergebnis gegen das Zielmetamodell geprüft werden kann.
Relational
Beziehungen zwischen Modellelementen werden über das mathematische Konzept der Relation ausgedrückt.
Graphtransformation
Modelle werden als Graphen dargestellt und mit passenden Regeln sowie grafischen Notationen transformiert.
In der Praxis kommen auch hybride Verfahren zum Einsatz, die mehrere Methoden und Techniken kombinieren.
Bekannte Transformationssysteme
Systeme, die entsprechende Methoden und Techniken unterstützen, werden als Transformationssysteme bezeichnet. Zu den etablierten Ansätzen und Sprachen zählen:
- ATLAS Transformation Language (ATL) zur Beschreibung von Modelltransformationen,
- Java Emitter Templates (JET) zur templatebasierten Erzeugung von Textartefakten,
- Model Transformation Framework (MTF) als Ansatz für relationale Transformationen,
- Transformationen über JavaScript-basierte Schnittstellen,
- Extensible Stylesheet Language Transformations (XSLT) mit templatebasierten Regeln,
- Query View Transformation (QVT) zur standardisierten Beschreibung von Modelltransformationen,
- UMLX als grafische Sprache zur Spezifikation von Transformationen auf Grundlage von UML-Objektmodellen.
Welches System geeignet ist, hängt von den beteiligten Modellformaten, der gewünschten Richtung, der erforderlichen Rückverfolgbarkeit und dem angestrebten Ausgabeformat ab.