Konzeptionierung und implementierung einer konflikterkennung fürmodel-to-model-transformationen im open source MDA-generatorandromda
Abstract
Die Diplomarbeit beschäftigt sich mit den Möglichkeiten und potentiellen Schwierigkeiten, die durch den Einsatz von Modelltransformationen entstehen können. Insbesondere die Erkennung von Konflikten, die hierbei entstehen können wird untersucht. Im Rahmen der Arbeit wird eine prototypische Lösung für die Validierung von Modellen innerhalb einer Transformationskette entwickelt. Das Vorhaben Im Rahmen einer Diplomarbeit wurden Möglichkeiten und potentielle Problemstellungen, die der Einsatz von Model to Model Transformationen mit sich bringen könnten untersucht. Das Auftreten von Konflikten durch die Verwendung von unterschiedlichen Modellen wird hierbei gesondert herausgehoben. Diese Problemstellung wird sowohl allgemein als auch konkret vor der Hintergrund der von AndroMDA verwendeten Technologie beleuchtet. Die Diplomarbeit ist abgeschlossen, die dabei entwickelten Ergebnisse werden in die zukünftige Entwicklung von AndroMDA einfließen. Modellgetriebene Softwareentwicklung und Modelltransformationen Die Intention aus Modellen Software komplett oder teilweise zu erzeugen, wird vor allem mit dem Begriff Model Driven Architecture (MDA) verbunden. Richtiger und umfassender ist die Beschreibung als modellgetriebene Softwareentwicklung (MDSD). Die verschiedenen Ansätze im Bereich der MDSD werden verglichen und der von AndroMDA verfolgte Ansatz wird in die existierende Begriffshierarchie eingeordnet. 341 AndroMDA plant weiterhin ein pragmatisches und unabhängiges Framework zu bleiben und wird auch Model to Model Transformationen für verschiedene Transformationsengines und Metametamodelle unterstützen. AndroMDA wird entgegen der Spezifikation der OMG für MDA keine Änderungen an den Zwischenmodellen der Model to Model Transformationskette erlauben. Diese Herangehensweise wird als Forward-Only-Ansatz bezeichnet und bietet den Vorteil, dass dieser Ansatz sehr gut beherrschbar ist und technisch ausgereifte Transformationsengines1 zur Verfügung stehen. Andere mögliche Ansätze, wie die inkrementelle Generierung (Änderungen in Zwischenmodellen bleiben erhalten) und die bidirektionale Transformation werden beschrieben und eingeordnet, sind jedoch zum Betrachtungszeitpunkt noch nicht ausgereift genug, um für den Einsatz in Frage zu kommen2. Auftreten und Erkennung von Konflikten Durch den Einsatz der Model to Model Transformationen können Konflikte in den entstehenden Zwischenmodellen auftreten. Die Entstehung dieser Konflikte wird untersucht und Möglichkeiten ihrer Erkennung werden entwickelt und bewertet. Konflikte entstehen anders als Fehlmodellierungen durch das Zusammentreffen mehrerer Modellelemente, die möglicherweise durch verschiedene Transformationsschritte erzeugt wurden. Ein Beispiel für das Auftreten eines Konfliktes wäre es, wenn in einem Modell von Java-Klassen durch verschiedene Transformationsschritte zwei Klassen entstehen, die gleich heißen und sich im gleichen Package befinden. Konflikte können auch dann auftreten, wenn alle vom Anwender erstellten Modelle für sich genommen fehlerfrei sind. Die Erkennung dieser Konflikte ist dadurch aufwendig und erfordert es, jedes Modell zu überprüfen. Diese Prüfung sollte keine Annahmen über nachfolgende Transformationen machen und lediglich die Korrektheit des Modells auf seinem Abstraktionsniveau prüfen. Dadurch, dass die Validierung auf jeder Abstraktionsebene ausgeführt wird, kann auch die Erkennung von Fehlmodellierungen auf der jeweils geeignetsten Ebene durchgeführt werden. Gleichzeitig wird die Kopplung von Metamodellen, zu denen auch die Validierungsregeln zu zählen sind, und von Transformationen weiter reduziert. Diese Kopplung würde sich negativ auf die Wiederverwendbarkeit von Transformationsschritten und die Flexibilität der Generierung auswirken. Für die Validierung der verschiedenen Modelle wird eine prototypische Validierungskomponente entwickelt, die in der Lage ist, die Modelle anhand verschiedener Constraints zu prüfen. Die Definition dieser Constraints lässt sich sowohl in der Object Constraint Language, als auch mithilfe von Javacode umsetzen.
Full Text: PDF