ATL (ATLAS transformation language)

Die ATLAS Transformation Language (ATL) ist eine Transformationssprache, mit der Modelltransformationen beschrieben werden können. In diesem Zusammenhang spricht man auch von Transformationsdefinitionen, worunter man eine Menge von Transformationsregeln versteht, die beschreiben, wie ein Quellmodell in ein Zielmodell transformiert wird. ATL ist ein Teil der ATLAS Model Management Architecture (AMMA), deren weitere Projekte ATLAS Model Weaver (AMW), ATLAS Mega-Modell Management (AM3) und ATLAS Technical Projectors (ATP) sind. Ursprünglich wurde die ATLAS-Architektur von den Forschungsgruppen INRIA (Institut National de Recherche en Informatique et en Automatique) an der Universität Nantes und LINA (Laboratoire d'Infomatique de Nantes-Atlantique) entwickelt.

Die Entwicklung der ATLAS TRansformation Language.

Der Hintergrund der Entwicklung von ATL war eine Ausschreibung der Objekt Management Group (OMG) im Hinblick auf eine allgemeine Programmiersprache zur Modell- und Codetransformation, wie diese im OMG RFP der OMG beschrieben ist. Die Spezifikation von ATL beinhaltet neben der Transformation von MOF-konformen Modellen auch Transformationen, deren Basis beispielsweise Datenbanken oder XML-Dokumente sind. ATL wird auch als hybride Transformationssprache bezeichnet, deren Regeln in jedem Fall unidirektional sind. Desweiteren werden keine Kopplungen von Modellen unterstützt. Eine Bidirektionalität kann durch die explizite Definition von beiderseitigen Transformationsregeln realisiert werden. Als Werkzeug für ATL steht die auf einem Eclipse Plug-In basierende integrierte Entwicklungsumgebung ADT (ATL Development Tools) bereit, die auch Teil des Projekts Generative Model Transformer (GMT) der Eclipse Foundation ist. Die ADT beinhaltet neben Editoren und Compiler, eine ATL Virtual Machine sowie weitere Komponenten und verwendet das Eclipse Modelling Framework (EMF) für die Bearbeitung der Modelle hinsichtlich Serialisierung, Deserialisierung, Navigation und Modifikation.

ATL wird zu den hybriden Transformationsmethoden /-techniken gezählt, weil deren Transformationsregeln sowohl im imperativen als auch im deklarativen Stil formuliert werden können. Primär findet jedoch die deklarative Definition von Transformationsregeln Anwendung, während die Definition von imperativen Sprach-Konstrukten für komplexere Transformationsregeln vorgesehen ist. ATL definiert sowohl ein Metamodell als auch eine konkrete Syntax, zudem werden im Sinne von ATL auch die Transformationen selbst als Modelle angesehen. Dahingehend sind an einer Transformation auch drei MOF-konforme Metamodelle wie das Quell-Metamodell, das Ziel-Metamodell und letztendlich das Transformations-Metamodell beteiligt.

Transformationen in ATL sind grundlegend unidirektional angelegt, da diese auf read-only Quellmodellen arbeiten und daraus write-only Zielmodelle generieren. Damit kann in Quellmodellen während der Transformation nur navigiert, aber keine Elemente modifiziert werden. Analog gilt für die Zielmodelle, dass in denen nicht navigiert aber Änderungen vorgenommen werden können. Auch bidirektionale Regeln können spezifiziert werden - in Form von Paaren unidirektionaler Transformationsregeln jeweils für jede Richtung.

Transformationsdefinitionen in ATL.

Das zentrale Element einer Transformationsdefinition in ATL ist das sogenannte Modul, das einen Pflicht-Header, Import-Anweisungen, Helper-Operationen und die Regeln umfasst. Der Header definiert den Namen der Transformation - auch Modelname genannt - und spezifiziert deren Quell- und Ziel-Metamodelle. Mit der Import-Anweisung können ATL-Bibliotheken oder auch andere Module importiert werden. Helper-Operationen entsprechen im Wesentlichen Methoden, wie man sie aus anderen Programmiersprachen kennt und hier als Helpers innerhalb der Regeln verwendet werden. Helpers werden in einem bestimmten Kontext also auf einer Instanz einer Metaklasse aufgerufen. Zudem können globale Variablen und Funktionen definiert werden. Die Regeln beschreiben, wie aus dem Quellmodell das Zielmodell erzeugt wird und bedingen einen bestimmten Aufbau:

  • InPattern geben das Element des Quell-Metamodells an,
  • OutPattern geben die Elemente des Ziel-Metamodells an,
  • Actions-Blocks kennzeichnet eine Sequenz von Anweisungen, die nach dem Erstellen des Out-Patterns ausgeführt werden.

Die ATL Transformationssprache kennt verschiedene Arten von Transformationsregeln:

  • Matched Rule ist eine deklarative Regel und wird implizit aufgerufen. Damit werden bestimmte Elemente des Quellmodells gefiltert. Die Filterbedingungen werden in Form von OCL-Ausdrücken (Object Constraint Language) beschrieben. Mit dem Teil der Regel, die sich auf das Zielmodell bezieht, werden dann die entsprechenden Elemente des Zielmodells generiert,
  • Lazy Rules muss explizit aufgerufen werden,
  • Called Rules können wie Matched Rules Instanzen des Zielmodells erzeugen und müssen jedoch explizit aufgerufen werden.

Code-Beispiel für ATL
Code-Beispiel für ATL lexikon, kompendium, computer, it, elektronik

Das folgende Code-Beispiel zeigt eine Called-Rule. Dabei muss diese explizit aufgerufen, und die Übergabe der Modellelemente als Parameter berücksichtigt werden. Die Typbezeichnung ist aus dem Metamodell MMPerson. Diese Elemente werden an die Variable p gebunden. Der Quellteil der Regel wird durch das Schlüsselwort "to" gekennzeichnet. Das Zielmetamodell heißt MMPerson, und benennt dessen Attribute mit name und surname. Für die Umsetzung von ATL existiert eine komfortable, auf Eclipse basierende Entwicklungsumgebung, die ATL Development Tools (ATD). Wie die Abbildung zeigt, stellt die ATD die folgenden Komponenten zur Verfügung:

Architektur des ATL-Werkzeuges
Architektur des ATL-Werkzeuges lexikon, kompendium, computer, it, elektronik

  • ATL Compiler zur Transformation von ATL-Code in Bytecode,
  • ATL Virtual Machine zur Ausführung des vom Compiler erzeugten Bytecodes,
  • Model Handler Abstraction Layer zur Umsetzung der Befehle der Virtual Machine auf die Model Handler,
  • Model Handler, die die API für die Manipulation von Modell bereitstellen - in der Zeichnung beispielsweise das Eclipse Modelling Framework (EMF) oder das Metadata Repository (MDR),
  • Model Repository zur persistenten Speicherung der Modelle

Als Basis für die Serialisierung, Deserialisierung, Navigation und Modifikation der Modelle verwendet die ADT das EMF. Weiterhin realisiert die ADT eine speziell auf ATL-Spezifikationen angepasste Ergänzung des Eclipse Debugging Frameworks, wodurch ein Debuggen des Transformationsprogramms ermöglicht wird. Ebenso ist beim Abbruch der Transformation aufgrund eines Fehlers, die Navigation des entsprechenden Quell- sowie Zielmodells integriert.

http://www.eclipse.org/m2m/atl/

Inhalt teilen

Partner