Modelltransformation

Eine Modelltransformation ist eine Abbildung von Model-zu-Modell. Der Transformationsbegriff steht im direkten Zusammenhang mit den Begriffen Modell und Metamodell, und dessen Verständnis ist erforderlich im Kontext von Model Driven Software Development ( MDSD). Durch Modelltransformation werden dabei Plattform-unabhängige Modelle in Plattform-abhängige Modelle sowie Programmcode transformiert.

Transformationsregeln beschreiben, wie Elemente des Quellmodells in ein Zielmodell überführt werden. Eine Transformationsregel beispielsweise für UML-Modelle (Unified Modelling Language) wird typischerweise auf der Ebene der UML- Metamodelle formuliert und verwendet häufig UML-Profile - den Mechanismus zur Erweiterung der UML. Es existieren Unterscheidungsmerkmale für Transformationen hinsichtlich der Quell- und Zielmodelle - man unterscheidet endogene und exogene Transformationen. Zudem wird in Abhängigkeit von den Abstraktionsebenen in horizontale und vertikale Transformationen differenziert. Im Zusammenhang mit MDSD haben sich Merkmale zur Unterscheidung von Transformationen hinsichtlich ihrer Umsetzung herausgebildet. Bei den Transformationsmethoden werden Modell-zu- Text-Transformationen und Modell-zu-Modell-Transformationen unterschieden. Transformationssysteme unterstützen spezifische Transformationsmethoden.

Bekannte Transformationssysteme

Bekannte Transformationssysteme sind u.a. die ATLAS Transformation Language ( ATL), das IBM Model Transformation Framework ( MTF), die Java Emitter Templates ( JET), Transformationen mit dem ARIS Business Architect sowie XLST. Mit Query View Transformation ( QVT) existiert seit einiger Zeit ein angehender Standard zur Beschreibung von Modelltransformationen. Weitere Transformationssprachen sind UMLX - eine grafische Sprache zur Spezifikation von Transformationen auf UML- Objektmodelle - sowie Sprachen zur sogenannten Graphtransformation wie TIGER ( TU Berlin) und VIATRA2 (Universität Budapest).

Eine Transformation bezeichnet im Allgemeinen eine Umformung oder Umgestaltung. Im Zusammenhang mit der MDSD wird eine Modelltransformation als die automatisierte Überleitung von einem Quellmodell in ein Zielmodell in Abhängigkeit von einer sogenannten Transformationsdefinition - das ist eine Menge von Transformationsregeln - definiert. Damit stellt eine Transformationsregel eine Beschreibung dar, wie ein oder mehrere Elemente des Quellmodells in ein oder mehrere Elemente des Zielmodells überführt werden. Die Regeln bestehen immer aus einem rechten und linken Teil. Teile der Regel, die sich auf das Quellmodell beziehen, werden auch als Left-Hand-Side (LHS) bezeichnet - analog gilt für die Teile, die sich auf das Zielmodell beziehen, das diese als Right-Hand-Side (RHS) bezeichnet werden.

Die Konzepte und deren Beziehungen in einer Sprache werden allgemein durch deren abstrakte Syntax definiert - dies gilt auch im Zusammenhang mit spezifischen Modellierungssprachen. Auf dieser Abstraktion aufbauend wird auch hinsichtlich endogenen oder exogenen Transformationen unterschieden. Bei einer endogenen Transformation zwischen Modellen ist deren abstrakte Syntax der Modellierungssprachen jeweils gleich. Im Kontext mit Programm-Transformationen wird in der Literatur auch von Reprashing gesprochen. Als Beispiele für endogene Transformationen sind Optimierungen, Vereinfachungen oder Normalisierungen von Quellmodellen zu nennen. Demzufolge sind bei einer exogenen Transformation die Syntaxen der zu betrachtenden Modelltransformationen explizit unterschiedlich, was dazu führt, die exogene Transformation auch als Translation zu bezeichnen. Synthese, Reverse Engineering oder Migration sind klassische exogene Transformationen.

Die vertikale und horizontale Transformation

Darüber hinaus unterscheidet man horizontale und vertikale Transformationen. Dieser Definition liegt der Gedanke zugrunde, dass Modelle die zugrunde liegenden Originale auf unterschiedlichen Ebenen der Abstraktion darstellen können. Sofern sich Quell- und Zielmodell auf gleicher Abstraktionsebene befinden, wird dieses als horizontale Transformation bezeichnet. Ein Beispiel ist die Migration von Software, wobei Modelle einer Quell-Sprache in eine Ziel-Sprache unter der Berücksichtigung der gleichen Aspekte überführt werden. Im Gegensatz dazu; wenn sich Quell- und Zielmodell nicht auf gleicher Abstraktionsebene befinden, wird von vertikaler Transformation gesprochen. Sofern sich beispielsweise die Quell-Sprache auf einer höheren Ebene der Abstraktion befindet als die Zielsprache ist von einer vertikalen Transformation auszugehen - man bezeichnet dies auch als Refinement. Die Transformation einer Spezifikation in ausführbaren Programmcode ist ein solches Refinement.

Die Umsetzung von Transformationen kann auf unterschiedliche Weise erfolgen. Diesbezüglich haben sich im Kontext der MDSD unterschiedliche Merkmale ausgeprägt, die letztendlich auch die Basis für unterschiedliche Sprachen zur Modelltransformation sind. Hinsichtlich ihrer Umsetzung werden Transformationen anhand nachfolgender Charakteristika unterschieden:

  • Den Transformationsregeln, die uni- oder bidirektional sein können. Unidirektional bedeutet die Abbildung vom Quell- zum Zielmodell, im Gegensatz dazu gibt die bidirektionale Regel in Abbildung in beide Richtungen an.
  • Beim Regel-Scheduling müssen mehrere Regeln für die Transformation angewendet werden.
  • Bei der Lokalisierung wird eine Regel nur auf einen bestimmten Teil des Quellmodells angewendet.
  • Die Richtung von Transformationen - es werden wiederum unidirektionale und bidirektionale Transformationen unterschieden. Dieser Aspekt ist bei der Synchronisierung von Modellen zu beachten.
  • Die Organisation von Regeln, die in Abhängigkeit von bestimmten Kriterien in Module gegliedert sein können.

Von sogenannten Transaktionssystemen werden unterschiedliche Transformationsmethoden sowie -Techniken unterschieden. Dabei haben sich die folgenden Transformationstechniken herausgebildet:

  • Modell-zu-Text-Transformationen
  • Modell-zu-Modell-Transformationen
Dabei wird im ersten Ansatz Text erzeugt, der jedoch dabei nicht auf das zugrunde liegende Metamodell abgeprü ft wird. Das ist bei einer Modelltransformation anders; hier wird während der Ausführung die Konformität des Modells zum Metamodell geprüft. Bei den Transformationsmethoden werden unterschieden:

Visitor Methode Dieser Ansatz implementiert einen sogenannten Visitor-Mechanismus. Dieser ermöglicht es dann, die Modellrepräsentation - beispielsweise UML - zu durchlaufen und daraus den Code als Textstrom zu generieren. Ein bekanntes Projekt in diesem Zusammenhang ist Jamda. Dieses repräsentiert UML-Modelle durch Java-Klassen und realisiert einen Code-writer, der die Modelle durchläuft und den Code daraus generiert.

Template Methode Die Basis der Generierung sind Templates. Diese liegen im Textformat vor und bestehen aus zwei Teilen. Ein Teil ermöglicht den Zugriff auf das Quellmodell, während der zweite Teil aus Text und Ausdrücken besteht, die die Modifizierung des Textes in Abhängigkeit vom Quellmodell ermöglichen.

Direct Manipulation Es wird eine API zur Verfügung gestellt, mit der gezielt auf die Modellrepräsentation zugegriffen werden kann. Ein objektorientiertes Framework realisiert diese Programmierschnittstelle (API).

Structure Driven Zunächst wird die hierarchische Struktur des Zielmodells erstellt. In einem zweiten Schritt wird dieses Modell dann um Attribute und Referenzen auf die verschiedenen Modellelemente ergänzt.

Operational Erweitert den Ansatz der Direct Manipulation in der Form, dass zusätzliche Informationen für eine Transformation zur Verfügung stehen. Im einfachsten Fall kann das beispielsweise durch die Erweiterung einer Sprache wie OCL realisiert werden.

Model Template Hier besteht das Template wiederum aus Fragmenten eines Modells, so dass bei der Erstellung des Zielmodells eine Überprüfung der Konformität mit dem Metamodell erfolgt.

Relational Dabei werden die Beziehungen zwischen Modellelementen durch das mathematische Konzept der Relationen ausgedrückt

Graph-Transformation Die Modelle werden durch Graphen abgebildet, die wiederum durch entsprechende graphische Notationen erzeugt werden. Für die Transformation werden spezifische Graph-Transformationsregeln definiert.

Hier wurden nur die wesentlichen Transformationsmethoden genannt, daneben gibt es weitere hybride Ansätze, die die verschiedenen Transformationsmethoden und -techniken miteinander kombinieren.

Systeme die Transformationsmethoden und -techniken unterstützen, werden als Transformationssysteme bezeichnet. Es existiert ein breites Spektrum von Transformationssystemen. Diesbezügliche Beispiele sind:

  • ATLAS Transformation Language (ATL), eine Sprache zur Beschreibung von Transformationsdefinitionen,
  • Java Emitter Templates (JET), Teil des Eclipse Modeling Frameworks ( EMF), Textartefakte werden durch Anwendung von Templates generiert,
  • IBM Model Transformation Framework, Prototyp eines Transformationssystems für relationale Transformationsmethoden,
  • Transformation im ARIS Business Architect, unterstützt Transformation, die über eine JavaScript Schnittstelle formuliert werden,
  • Extensible Stylesheet Language Transformation ( XSLT), Transformationsregeln werden mit Hilfe von Templates beschrieben,
  • Query View Transformation (QVT), imperative Sprache zur Beschreibung von Modelltransformationen,
  • UMLX, graphische Sprache zur Spezifikation von Transformation auf der Basis von UML-Objektmodellen.
Informationen zum Artikel
Deutsch: Modelltransformation
Englisch: model transformation
Veröffentlicht: 13.04.2010
Wörter: 1178
Tags: Design
Links: Abbildung, Metamodell, Software, Modellgetriebene Software-Entwicklung, Plattform
Übersetzung: EN
Sharing: