Eine Einführung
Ein entscheidender Vorteil bei der Modellierung auf der Basis von klar definierten Metamodellen ist die Eindeutigkeit und Übersichtlichkeit der in einem for-malen Modell beschriebenen Sachverhalte. Mindestens genauso überzeugend ist aber sicherlich noch ein weiterer Aspekt: Modelle sind grundsätzlich transformierbar.
Transformation in diesem Sinne bedeutet, dass ein oder mehrere Modelle in ein anderes Modell automatisiert überführt werden können. Bei dieser Transformation werden Aspekte der Zieldomäne, also des Fachgebiets des Zielmodells, dem ursprünglichen Modell hinzugefügt und für die Zieldomäne irrelevante Aspekte werden herausgefiltert. Grundsätzlich ist für eine Transformation von Modellen die Definition des Metamodells für das Quellmodell wie auch für das Zielmodell zwingend notwendig.
Im Sinne der modellgetriebenen Softwareentwicklung entspricht die Transfor-mation von Modellen der automatisierten Weiterverarbeitung der Artefakte. Die Transformation von einem Artefakt in ein anderes (z.B. auch Code) läuft übli-cherweise in zwei Stufen ab:
Die eigentliche Arbeit, also die Aktivität im Sinne des Softwareentwicklungs-prozesses, beschränkt sich somit also nur auf den zweiten Schritt. Somit wird redundante Arbeit durch den Transformer erledigt und die Aktivität wird auf die wesentliche Arbeit des Entwicklers oder Systemanalytikers reduziert.
Hieraus ergeben sich folgende Vorteile:
Das so entstandene Zielmodell kann innerhalb einer Transformationskette des Softwareentwicklungsprozesses wiederum ein Quellmodell für eine weitere Transformation sein.
Ein klassisches Beispiel für eine Modelltransformation ist die Transformation eines wohldefinierten XML Formates in ein HTML Dokument. Dies geschieht beispielsweise über einen XSL Transformer (XSLT). So ist es z.B. möglich ein Modell für einen Use Case zu definieren und das auf das bereits definierte HTML Modell zu transformieren. Dies könnte die vereinfachte Basis für ein Anforderungsdokumentationssystem sein.
Gleichzeitig könnte das Modell des Use Cases aber auch bereits Code für ein definiertes Applikationsframework generieren. Formal gesehen ist eine Program-miersprache in Kombination mit einem Framework ein exakt definiertes Metamodell. Je feiner das Metamodell des Use Case Artefaktes definiert ist, umso mehr Code kann für die Zielplattform generiert werden.