• Keine Ergebnisse gefunden

Berliner Werkzeuge basierend auf dem algebraischen Ansatz

4.2 Ans¨ atze und Werkzeuge zur graphbasierten Transformation

4.2.1 Berliner Werkzeuge basierend auf dem algebraischen Ansatz

Das Attributed Graph Grammar System (AGG), das Tiger EMF Model Transformation Framework (EMF Tiger) und dessen Nachfolger Henshin haben Eines gemeinsam: Alle drei Werkzeuge basieren auf dem algebraischen Ansatz zur Graphtransformation. Sie wurden in der genannten Reihenfolge unter Federf¨uhrung der Technischen Universit¨at Berlin an verschiedenen Standorten entwickelt. Dabei k¨onnen alle Modelle letztendlich

in AGG ¨ubersetzt, dargestellt und analysiert werden. Die Werkzeuge werden hier ge-meinsam betrachtet.

Das Attributed Graph Grammar System (AGG) ist eine hybride Programmierspra-che, die grafische Graphtransformationsregeln und Java Quelltext nutzt. Die formale Grundlage f¨ur AGG bildet der algebraische Ansatz zur Graphtransformation, wie er in Abschnitt 2.6 skizziert wurde, genauer gesagt der Single-Pushout-Ansatz3. Der vorlie-gende Text basiert auf dem Handbook of Graph Grammars and Graph Transformation, Band 2, Kapitel 14 von Ermel et al. [32].

Ein AGG-Programm besteht zum Einen aus benutzerdefinierten Java-Klassen, zum Anderen aus einer Graphgrammatik. Die Graphgrammatik setzt sich aus einem Start-graphen und einer Menge von Regeln zusammen, deren Aufbau und Ausf¨uhrung im Folgenden betrachtet werden. Explizite Kontrollfl¨usse sind in AGG nicht vorgesehen.

Die Regelanwendung ergibt sich durch eine AGG-inh¨arente Regelanwendungsstrategie.

Graphen werden in AGG als simple Graphen dargestellt. Dies bedeutet, dass sie aus Knoten und Kanten bestehen, die Objekte des Graphen oder Graphobjekte genannt werden. Jedes Objekt des Graphen kann zur weiteren Klassifikation beliebig typisiert werden, indem es mit einer Markierung versehen wird. Zudem gibt es die M¨oglichkeit Objekte zu attribuieren. Diese Attribute d¨urfen ¨uber jedem zul¨assigen Java-Typ definiert sein. Jede Kante repr¨asentiert zudem eine gerichtete Verbindung zwischen zwei Knoten, die Quell- und Zielknoten genannt werden.

Eine Graphtransformation kann als Transition des Wirtsgraphen angesehen werden.

Der Vorzustand eines Teilgraphen des Wirtsgraphen entspricht dabei der linken Regel-seite, der Nachzustand der rechten Regelseite. Die Objekte innerhalb einer Regel werden als Variablen aufgefasst, die instanziiert werden, sobald die Regel auf einen konkreten Wirtsgraphen angewendet wird. Die Anwendung der Regel erfolgt dabei analog zu einer einseitigen Bedingung einer Programmiersprache. Die linke Seite der Regel stellt die Be-dingung dar. Das Pr¨ufen der Bedingung entspricht einer Mustersuche nach einer totalen Ubereinstimmung, einem totalen Graphmorphismus, der linken Regelseite im Wirtsgra-¨ phen. Wird keine totale ¨Ubereinstimmung gefunden, ist die Regel nicht anwendbar, da ihre Anwendbarkeitsbedingung nicht erf¨ullt ist. Werden mehrere ¨Ubereinstimmungen ge-funden, so wird eine davon ausgew¨ahlt. Dies geschieht kontextabh¨angig entweder zuf¨allig oder durch den Benutzer. Ist die ¨Ubereinstimmung gefunden und damit die Bedingung erf¨ullt, so wird der ¨Ubergang zur rechten Regelseite ausgef¨uhrt. Hierf¨ur wird eine par-tielle ¨Ubereinstimmung der rechten Regelseite ben¨otigt, um die zu l¨oschenden Knoten von den zu erhaltenden zu unterscheiden. Zudem besteht die M¨oglichkeit, innerhalb von rechten Seiten Knoten zu vereinigen. Bei der Anwendung der Regel (siehe 2.6) bleibt der Kontext, d.h. alle Elemente des Wirtsgraphen, die zur Musterinstanz geh¨oren. Kanten, deren Quell- oder Zielknoten fehlt, werden h¨angende Kanten genannt. Sie werden sofort entfernt. Attribute von Graphobjekten k¨onnen innerhalb einer Regel ver¨andert werden, indem ihnen direkt neue Werte zugewiesen werden. Alternativ kann dies durch Aufruf

be-3Genauere Informationen zum Single-Pushout-Ansatz finden sich im Handbook of Graph Grammars and Graph Transformation, Band 1, Kapitel 4 [66].

liebiger Java-Methoden geschehen. Allerdings muss der R¨uckgabetyp der Java-Methode dem Attributtyp entsprechen.

Zus¨atzlich k¨onnen zu jeder Regel negative Anwendbarkeitsbedingungen (NACs) hin-zugef¨ugt werden. Diese k¨onnen analog zur linken Seite der Graphtransformationsregel spezifiziert werden. W¨ahrend die linke Seite, wie bereits gezeigt, eine positive Anwend-barkeitsbedingung darstellt, d¨urfen die in den NACs geforderten Bedingungen auf keinen Fall zutreffen. Formal gesehen darf es also keine Abbildung einer NAC auf den Wirts-graphen geben. Sind mehrere NACs angegeben, darf keine von ihnen zutreffen.

Aufgrund der SPO-Fundierung des Ansatzes ist jede AGG-Transformation komplett, minimal und lokal: Transformationen f¨uhren jeden Effekt aus, der in der Transforma-tion spezifiziert wurde (komplett). Es finden auch keine zus¨atzlichen ¨Anderungen statt (minimal), ausgenommen das Entfernen der h¨angenden Kanten. Dies geschieht letztlich genau in dem Teil des Wirtsgraphen, f¨ur den der Match gefunden wurde (lokal). Es handelt sich dabei um eine ¨uberschreibende Transformation.

Da AGG selbst in Java geschrieben ist, ist es plattformunabh¨angig. Regeln k¨onnen interpretiert und schrittweise betrachtet werden. Es besteht keine M¨oglichkeit, Quelltext aus den Regeln zu generieren. Die aktuelle Version von AGG kann unter http://user.

cs.tu-berlin.de/~gragra/agg/ heruntergeladen werden. Dort befindet sich auch die Online-Dokumentation zu AGG.

Das Tiger EMF Model Transformation Framework (EMF Tiger) ist die auf EMF-Modelle spezialisierte Variante des AGG-basierten Werkzeugs TIGER. TIGER ist ein Akronym f¨ur

”TransformatIon-based Generation of modeling EnviRonments“. Das Werk-zeug wurde urspr¨unglich zur Generierung von grafischen Editoren f¨ur Eclipse gebaut, ba-sierend auf Graphtransformationsregeln und dem Graphical Editing Framework (GEF) [37]. Hierbei wurden AGG-Graphtransformationsregeln zur exogenen Ein-Ausgabe-Trans-formation einer grafischen Sprache in eine andere verwendet.

EMF Tiger spezialisiert den Gedanken der in TIGER realisierten Transformation.

Es setzt seinen Fokus auf die Strukturmodifikation von EMF-Modellen. EMF Tiger bietet ein Rahmenwerk zur endogenen, ¨uberschreibenden EMF-Modelltransformation basierend auf AGG-Graphtransformationen und wird nun anhand von Biermann et al.

[15] dargestellt.

Eine Transformation besteht in EMF Tiger aus einer Regelmenge, welche die Re-geln zur Transformation enth¨alt, sowie einem Verweis auf ein bestimmtes EMF-Modell.

Es erm¨oglicht die grafische Spezifikation von AGG-Graphtransformationsregeln, deren Elemente ¨uber dem zugeh¨origen EMF-Modell typisiert sind. Ist zudem eine optionale Startstruktur als Einstiegspunkt in die Transformation definiert, spricht man von einer EMF-Grammatik. Analog zu AGG wird die linke Seite der Regel in EMF Tiger als Vorbedingung f¨ur die Anwendung der Regel aufgefasst, die rechte Seite der Regel als Nachbedingung, die nach der Regelanwendung gelten muss. Attribute, die in den Re-geln auftreten, m¨ussen im zugeh¨origen Ecore-Modell definiert sein und d¨urfen, wie im Abschnitt ¨uber AGG beschrieben, verwendet werden. Zudem k¨onnen auch hier negati-ve Anwendbarkeitsbedingungen (NACs) definiert werden, welche die Regelanwendung

einschr¨anken. Sie stellen in EMF Tiger Objektstrukturen dar, die bei Ausf¨uhrung der Regel keinesfalls auftreten d¨urfen.

Die Attribute betreffend enthalten linke Regelseiten und NACs Bedingungen und Va-riablen, die durch Attributwerte ausgedr¨uckt werden. NACs k¨onnen bereits in der linken Regelseite genutzte Variablen wiederverwenden, oder neue Variablen, die als Eingabepa-rameter deklariert wurden. Variablen gelten immer global innerhalb einer Regel. Rechte Regelseiten k¨onnen zus¨atzlich Java-Ausdr¨ucke enthalten. In diesen darf wiederum jede g¨ultige Variable vorkommen.

Die beiden Nichtdeterminismen, die in Abschnitt 2.6 bereits besprochen wurden, wer-den in EMF Tiger eingeschr¨ankt. Die Anzahl der ¨Ubereinstimmungen einer Regel kann durch Eingabeparameter limitiert werden. Diese stellen bereits gebundene Objekte des Objektgraphen dar. Zudem kann eine Art Kontrollfluss die Reihenfolge der Regelanwen-dung steuern. Dieser Kontrollfluss wird entweder durch Java oder durch die Einf¨uhrung von Ebenen gesteuert, die den Regeln hinzugef¨ugt werden. Bez¨uglich ihrer semantischen Ausf¨uhrung werden alle Regeln einer Ebene so lange wie m¨oglich angewendet. Danach wird in die n¨achste Ebene gewechselt.

Die Anwendung einer Menge von Regeln, auch Transformation genannt, auf ein EMF-Modell erfolgt entweder Schritt f¨ur Schritt oder indem alle Regeln so oft wie m¨oglich genutzt werden. Wird bei der Mustersuche ein Muster mehrmals im Objektgraphen gefunden, so muss die Anwendungsstelle der Regel entweder vom Benutzer oder zuf¨allig ausgew¨ahlt werden.

Die Ausf¨uhrung einer Transformation kann durch Interpretation oder durch Gene-rierung von Quelltext und Ausf¨uhrung desselben erfolgen. Bei der Interpretation wird AGG genutzt.4 Dazu wird das EMF-Modell zun¨achst in einen Graphen umgewandelt.

Die Anwendung der Transformation selbst erfolgt in AGG. Der transformierte Graph wird wieder in ein EMF-Modell ¨ubersetzt. Dieses muss unter Umst¨anden konsistent ge-macht werden, indem sichergestellt wird, dass die - von EMF geforderte - Waldstruktur des Modells auch nach der Transformation erhalten ist. Es erfordert das L¨oschen aller Objekte, die nicht innerhalb des Baumes liegen.

Eine andere M¨oglichkeit zur Ausf¨uhrung der Transformation ist die ¨Ubersetzung in Java-Klassen, die auf die generierten EMF-Klassen verweisen. Dabei werden f¨ur jede Re-gel zwei Klassen generiert - Eine f¨ur die konsistente Ausf¨uhrung der Regel, die Andere f¨ur die Mustersuche. Um eine Regel anzuwenden, muss eine Instanz der Ausf¨uhrungsklasse erzeugt und dieser separat ein Objekt der Modellinstanz, auf der die Regel ausgef¨uhrt werden soll, ¨ubergeben werden. Da diese Vorgehensweise manuelles Schreiben von Java-Quelltext erfordert, k¨onnen Java-Kontrollstrukturen verwendet werden um die Aus-f¨uhrungsreihenfolge der Regeln zu steuern.

Die aktuelle Version von EMF Tiger findet sich unter https://www.uni-marburg.de/

fb12/informatik/arbeitsgebiete/swtechnik/softwaretechnik/taentzer/eclipse_emv.

4Zudem sind weitere Analysen mittels AGG auf dem Graphen m¨oglich.

Henshin - das japanische Wort f¨ur Transformation - bezeichnet hier ein Werkzeug zur endogenen, ¨uberschreibenden Transformation von EMF-Modellen.5 Es wird im Folgen-den basierend auf Arendt et al. [8] betrachtet.

Henshin benutzt Graphtransformationsregeln als elementare Bestandteile einer Trans-formation, welche durch Transformationseinheiten strukturiert werden k¨onnen. Es ba-siert ebenfalls auf dem algebraischen Ansatz und operiert direkt auf EMF-Modellen.

Henshin ist insofern der Nachfolger von EMF Tiger. Mit Henshin es m¨oglich, die Regeln in AGG zu ¨ubersetzen, so dass diese nach Konflikten und Abh¨angigkeiten bez¨uglich ihrer Anwendung und ihrer Terminierung untersucht werden k¨onnen.

Henshin erweitert die aus EMF Tiger bekannten Konzepte deutlich. Die Regeln wer-den durch Anwendbarkeitsbedingungen, Vor- und Nachbedingungen sowie durch flexi-ble Attributberechnungen basierend auf Java oder Java-Skript erg¨anzt. Zudem werden Transformationseinheiten zur Definition von Kontrollstrukturen bereitgestellt. Diese mo-dularisieren die Regelanwendung.

Das Henshin-Transformations-Metamodell ist ein EMF-Modell, welches das Ecore-Metamodell zur Typisierung verwendet. Jede Graphtransformationsregel besteht, wie in Abschnitt 2.6 beschrieben, aus einer linken und einer rechten Regelseite, die in Henshin zusammengef¨uhrt dargestellt werden. Dabei d¨urfen Attributbedingungen an die kom-plette Regel gestellt werden. Knoten referenzieren Klassen, Kanten die Referenzen und Attribute ebendiese im Ecore-Modell. Klassen aus dem Ecore-Metamodell werden zur Typisierung der Elemente der Graphtransformationsregel verwendet: Typen von Knoten einer Transformationsregel sind vom TypEClass, Typen von Kanten vom TypEReference und Typen von Attributen vom Typ EAttribute.

Die Regeln werden auf den sogenannten EMF-Graphen angewendet. Dieser gruppiert die Elemente vom TypEObjecteines Modells, die zur Mustersuche zur Verf¨ugung stehen.

Wird ein Element aus dem EMF-Graphen entnommen, so steht es nicht mehr f¨ur die Mustersuche zur Verf¨ugung, kann jedoch in einem anderen Kontext weiterhin verwendet werden.

Um die Regel an der korrekten Stelle des Graphen ausf¨uhren zu k¨onnen, werden po-sitive und negative Anwendbarkeitsbedingungen definiert. Neben der linken Regelseite und den NACs erlaubt Henshin die Definition von logischen Ausdr¨ucken erster Ord-nung ¨uber Graphbedingungen. Diese sind als atomar anzusehen. Sie fordern die (Nicht)-Existenz bestimmter Muster innerhalb des Modells und k¨onnen auch Bedingungen ¨uber Bedingungen definieren. Dabei spricht man von geschachtelten Bedingungen. In Henshin k¨onnen Graphen mit einer Formel annotiert werden, die die Anwendbarkeitsbedingungen beinhaltet. Es handelt sich dabei entweder um einen logischen Ausdruck oder um eine Erweiterung der Graphstruktur durch zus¨atzliche Knoten und Kanten. Eine Regel kann genau dann angewendet werden, wenn alle Anwendbarkeitsbedingungen erf¨ullt sind.

Die Regeln k¨onnen in Transformationseinheiten gruppiert werden, die die Regelaus-f¨uhrung durch Kontrollstrukturen steuern. Die kleinste Transformationseinheit ist die Regel selbst. Dies ist mit einer einmaligen Regelausf¨uhrung gleichzusetzen. Zudem

exis-5Henshin k¨onnte auch zur exogenen Transformation verwendet werden. Da dies nicht in Zusammen-hang mit dem ModGraph-Ansatz steht, wird von einer n¨aheren Betrachtung abgesehen.

tieren Transformationseinheiten zur nichtdeterministischen, zur priorisierten, zur se-quenziellen, zur bedingten und zur abgez¨ahlten Regelanwendung. Abgesehen von den Regeln selbst kann jede dieser Transformationseinheiten weitere Untereinheiten bein-halten. Zudem besteht die M¨oglichkeit, Werte zwischen den Transformationseinheiten mittels Parametern auszutauschen. So kann der Objektfluss zwischen den verschiedenen Regeln und Einheiten kontrolliert werden und es k¨onnen komplexe Transformationen parametrisiert werden. Die Anzahl der Parameter pro Einheit ist beliebig. Jeder Pa-rameter kann einen Wert oder ein EObject beinhalten. ParameterMappings definieren, wie die Parameter einer Transformationseinheit an deren Untereinheiten weitergegeben werden. Die Anwendbarkeit einer Einheit ist gegeben, wenn sie erfolgreich ausgef¨uhrt werden kann. Dabei ist

”erfolgreich“ vom Typ der Einheit abh¨angig. Beispielsweise ist eine sequenzielle Einheit nur dann erfolgreich, wenn alle ihre Untereinheiten in der ge-gebenen Reihenfolge erfolgreich abgearbeitet werden konnten. Eine Einheit terminiert, wenn sie erfolgreich oder gar nicht angewendet wurde.

Amalgamationseinheiten sind spezielle Transformationseinheiten. Sie spezifizieren

”f¨ ur-alle“-Operationen auf einem Modell und beinhalten keine weiteren Untereinheiten. Amal-gamationseinheiten bestehen aus genau einer Kernregel und mehreren Multiregeln. Sie definieren die Interaktion dieser beiden mittels eines Interaktionsschemas. Die Einbet-tung einer Kernregel in eine Multiregel erfolgt, indem Abbildungen zwischen der linken Seite der Kernregel und der Multiregel definiert werden. Semantisch wird dabei die Kern-regel genau einmal abgebildet und dieser Fund als gemeinsame partielle Abbildung f¨ur die Multiregeln genutzt, die ihrerseits m¨oglichst oft abgebildet werden. Damit werden die Anderungen der Kernregel genau einmal angewendet, die der Multiregeln jedoch so oft¨ wie m¨oglich. Eine Amalgamationseinheit ist damit nur anwendbar, wenn ihre Kernregel anwendbar ist.

Die Henshin-Entwicklungsumgebung basiert auf Eclipse und EMF. Sie bietet neben dem von EMF-generierten Baumeditor einen GMF-basierten grafischen Editor an. Die-ser unterst¨utzt, im Gegensatz zu den AGG- und EMF Tiger-Editoren, die zusammen-gef¨uhrte Darstellung der Regeln, wie schematisch in Abschnitt 2.6, Abbildung 2.6 rechts dargestellt. Zudem bietet Henshin die Integration von NACs in diese Darstellung. Zur Ausf¨uhrung der Modelle steht ein Interpreter zur Verf¨ugung. Eine Quelltextgenerierung ist nicht vorgesehen.

Die aktuelle Henshin Entwicklungsumgebung und deren Dokumentation findet sich unter http://www.eclipse.org/henshin/. Es handelt sich dabei um ein Eclipse-Pro-jekt.