MOF QVT ist eine Empfehlung (Standard) der Object Management Group der mehrere Sprachen zur Modell- zu Modell-Transformation definiert.
So kann als EINFACHES Beispiel ein UML Modell aus einem Modell einer anderen in MOF definierten Sprache 'XY' durch Transformation erzeugt werden. Hierzu benötigt man im einfachsten Fall das UML und 'XY' Modell und deren jeweiliges Metamodell sowie eine Vorschrift wie das UML Modell aus dem 'XY' zu erzeugen ist. Diese Vorschrift kann in einer der QVT-Sprachen beschrieben werden. Als TYPISCHES Beispiel kann ein (rein fachliches) Analysemodell in ein (technisches) Designmodell transformiert werden, d.h. die Transformation fügt die Technik in der das Modell realisiert werden soll zum Analysemodell hinzu.
MOF QVT Spezifikation ist ein Teil der Meta-Object Facility (MOF). Das Akronym QVT steht für "queries" (Anfragen), "views" (Sichten) und "transformations" (Transformationen). Unter Anfragen versteht MOF formale Ausdrücke, mit denen einzelne Elemente eines Modell ausgewählt werden können; Sichten sind komplexe Anfragen mit denen ganze Abschnitte, sogenannte Sichten, aus einem Modell ausgewählt werden; mit Transformationen werden Beziehungen zwischen Modellen dargestellt. Trotz des Namens QVT versteht man unter MOF QVT jedoch meist nur einen Standard zur Beschreibung von MOF-Modelltransformationen, da diese als das Hauptanwendungsgebiet von QVT betrachtet werden und Queries und Views sich ohnehin als Teile einer Transformation sehen lassen.
Aufbau
Die QVT Spezifikation definiert zwei Arten von Sprachen: deklarative und imperative. Der deklarative Teil besteht aus den Sprachen QVT-Relations und QVT-Core sowie einer Abbildung der Relations auf die Core Sprache RelationsToCoreTransformation. Der imperative Teil enthält die Sprache Operational Mappings Language sowie Vorgaben für Black Box Implementations, also eine Schnittstelle für ausserhalb von QVT implementierte Transformationssprachen.
Die deklarativen und imperative Sprachen können auf folgende Weise gemeinsam verwendet werden: es möglich einzelne Relationen in einer relationalen Transformation in einer der imperativen Sprachen zu impementieren und diese in die relationale Transformation als plug-in quasi einzuklinken. Dies kann sinnvoll sein um besonders komplexe Algorithmen zu implementieren oder vorhandene Programmbibliotheken wiederzuverwenden.
Anwendung
Die Bedeutung von QVT liegt in der Modell zu Modell Transformation im Rahmen von Model Driven Architecture. Im Gegensatz zur bisher weitgehend üblichen Modell zu Code Transformation, kann so ein Platform Specific Model (PSM) nicht nur als Source-Code sondern als UML-Modell erstellt werden. Aus diesem kann dann später in einem zweiten Schritt der Source-Code generiert werden. Somit verfügt man durch das PSM als echtes Modell auch auf der Ebene der technischen Architektur über die Vorteile der Modellierung gegenüber einer rein Source-Code-basierten Softwareentwicklung (siehe hierzu auch Unified Modeling Language oder Software Engineering).
Typische Einsatzszenarien für QVT-Sprachen sind:
- Verifikation von Modellen
- Uni- und Bidirektionale Modell-Transformationen (N-direktionale sind ebenfalls möglich aber von geringer Relevanz)
Im Rahmen von Transformationen können Elemente von Modellen erzeugt, ersetzt, oder gelöscht werden. Hierzu können Traces zwischen Modellen gepflegt werden. Dies sind Zuordnungen zwischen Elementen der verschiedenen Modelle, die besagen welches Element auf welches abgebildet wurde. Die ist Notwendig um Elemente konsistent erzeugen, ersetzen oder löschen zu können.