Modelltransformation
# Modelltransformation

Modelltransformationen (auch Modell-zu-Modell-Transformation oder M2M-Transformation) sind ein wichtiges Mittel bei der modellgetriebenen Softwareentwicklung (MDSD) bzw. modellgetriebenen Architektur (MDA).
Dabei treten Modelltransformationen in der Regel als zusätzlicher Schritt zwischen dem Validieren und der Codegenerierung auf. Sie bereiten die eingelesenen Modelle so auf, wie der Codegenerator sie erwartet. Transformationsregeln werden auf der Ebene der Metamodelle definiert. So müssen sowohl das Quell- als auch das Zielmodell Instanzen definierter Metamodelle sein.

## Arten von Modelltransformationen
### Modell-zu-Modell-Transformation (M2M)

Modellmodifikation (auch: Inplace-Transformation): Hierbei erzeugt die Transformation kein neues Modell, sondern modifiziert das Quellmodell. Diese Art der Transformation wird häufig verwendet, um Modelle um wenige, einfache Dinge zu erweitern. Beispielsweise könnte man für einen Zustandsautomaten einen 'NotAus' Zustand hinzufügen und diesen dann über neue Übergänge an alle modellierten Zustände anbinden. Hier gilt immer : Quellmodell == Zielmodell
Outplace-Transformation: In diesen etwas komplexeren Szenarien werden ein oder mehrere Quellmodelle in ein oder mehrere Zielmodelle transformiert. Dabei werden die Quellmodelle nicht verändert und die Metamodelle können (müssen aber nicht) unterschiedlich sein. Hier gilt immer : Quellmodell != Zielmodell

### Modell-zu-Text Transformation (M2T)

Die Generierung von Textartefakten aus Modellen wird als Modell-zu-Text-Transformation bezeichnet. Auch die Generierung von Quelltext aus Modellen, d. h. die Codegenerierung, kann als Modelltransformation betrachtet werden.

## Technologien

* QVT – Der Standard der OMG zur metamodellbasierten Modell-zu-Modelltransformation
* MOF2Text – Der Standard der OMG zur metamodellbasierten Modell zu Text Transformation
* Xpand – Bestandteil des Generatorframeworks OpenArchitectureWare, um sowohl Modell-zu-Modelltransformationen, Modellmodifkation als auch Codegeneratoren zu beschreiben.
* Atlas Transformation Language (ATL) – Ein Modell zu Modelltransformations-Toolkit auf Basis des Eclipse Modeling Framework
* Graphersetzung – Modelle sind für gewöhnlich Graphen, die sich mit Hilfe von Graphersetzungswerkzeugen und deklarativen Graphersetzungsregeln transformieren lassen.
** Tripel-Graph-Grammatik – Eine auf Graphersetzungen basierende Modelltransformationstechnik
* EMorF – Ein Toolkit auf Basis des Eclipse Modeling Framework für In-place-Modelltransformationen und Modell-zu-Modell-Transformationen