Abgeschlossene Arbeiten

Studentische Arbeiten

Entwurf und Implementierung einer DSL zur Definition von präzisen und erklärbaren Graph-Constraints

Typ der Arbeit: Master-Thesis
Bearbeitungsstand: Abgeschlossene Arbeiten
Möglicher Beginn der Arbeit: 04.12.2023
Arbeit abgeschlossen am: 03.06.2024
Betreuer*in: Dr.-Ing. Lars Fritsche
Student*in: Janik Rapp

Zurück zur Übersicht

Motivation

Die Modellierung eines Systems mit Hilfe einer (abstrakten) Modellierungssprache ist der Kern der modellgetriebenen Softwareentwicklung und kann in drei Aspekte unterteilt werden. Ein Metamodell
beschreibt, welche Objektklassen im System existieren, welche Attribute sie besitzen und in welcher Beziehung sie zueinander stehen. Ein Modell ist eine Instanz eines solchen Metamodells und beschreibt
somit, welche spezifischen Objekte zu einem bestimmten Zeitpunkt im System existieren und in welchem Zustand sie sich befinden. Modelltransformationen, basierend auf Graph-Transformationen, beschreiben schließlich die Veränderungen im System. Sie geben an, wie Objekte miteinander interagieren können und welche Auswirkungen diese auf das System haben. Oftmals erfordert eine korrekte Modellierung aber weitere Bedingungen, welche allein durch Metamodelle nicht abgebildet werden können. Bei Graph-Transformationen können Positive Application Conditions (PAC) und Negative Application Conditions (NAC) die Anwendbarkeit von Transformationsregeln [1, S. 51-53] beschränken, indem zunächst der Kontext betrachtet wird. Insbesondere zählt dazu die (nicht-)Existenz eines Knotens, einer Kante oder eines Teilgraphen. Solche Graph-Transformationen können beispielsweise mit eMoflon, einem am Fachgebiet Echtzeitsysteme entwickelten Werkzeug, im Eclipse Modeling Framework (EMF) implementiert werden. Mit Graph-Constraints können hingegen Konsistenzbedingungen für vollständige Modelle unter Berück sichtigung des Kontexts definiert werden. Grundlegend kann dies auch mit eMoflon umgesetzt werden, durch die generalisierende Ausgestaltung der GT-Sprache ist jedoch zusätzlicher Aufwand nötig. Die Sprache ermöglicht zwar die Definition von Mustern sowie deren Suche im Modell, die Auswertung muss allerdings manuell implementiert werden und lässt keine präzisen Rückmeldungen zu. Einen anderen Ansatz verfolgen Nassar et al. [2] basierend auf der Object Constraint Language (OCL) als Standardsprache zur Definition von Bedingungen in der Modellierung. Sie zeigen sowohl eine Transformation von OCL-Constraints in Graph-Constraints als auch eine Optimierung von Graph-Transformationsregeln. Dadurch wird sichergestellt, dass die Transformationsregeln keine Graph-Constraints verletzen und somit keine Inkonsistenzen im Modell auftreten können. Wünschenswert wäre allerdings auch ein Ansatz, der das Auftreten von Inkonsistenzen unterstützt und präzise Rückmeldungen über die (möglicherweise) gefundenen Inkonsistenzen basierend auf präzise definierten Konsistenzbedingungen ermöglicht. Selbst bei minimalen Konsistenzproblemen bei komplexen Strukturen ist bisher oftmals keine präzise Rückmeldung möglich, da das genaue Problem schon bei der Spezifikation des Constraints nicht herausgestellt werden konnte. Beschreibt die Spezifikation einer Konsistenzbedingung stattdessen präzise, worin das verursachende Problem liegt, so kann dies von Nutzern besser nachvollzogen und eventuell automatisch korrigiert werden.

Aufgabenstellung

Im vergangenen Semester habe ich im Rahmen des Projektseminars Softwaresysteme die Model Modeling Language (MML) entwickelt. Dabei handelt es sich um eine domänenspezifische Sprache (DSL) zur textuellen Definition und Instanziierung von Metamodellen. MML wurde dazu mit dem Werkzeug Langium entwickelt und aufgrund fehlender nativer Unterstützung über mehrere eigene Schnittstellen
an die Entwicklungsumgebung Eclipse angebunden.

Ziel dieser Arbeit ist die Konzeptionierung und Entwicklung einer neuen Sprache zur Definition von Konsistenzbedingungen. Aufbauend auf den Ergebnissen des Projektseminars sollen die Modelle nicht
nur textuell entsprechend einem Metamodell instanziiert, sondern auch auf ihre Konsistenz hinsichtlich textuell definierter Graph-Constraints geprüft werden. Zur Vereinfachung soll dabei die Anbindung an
Eclipse entfallen und die Sprache stattdessen mit der nativen VSIX-Unterstützung1 von Langium an VSCode angebunden werden. Diese VSCode-Erweiterung fügt damit eine vollständige Sprachunterstüt-
zung mit automatischen Vervollständigungen, Validierungen, Quick Fixes, automatischer Formatierung und semantischem Highlighting zur IDE hinzu. Analog zur bisherigen MML-Implementierung wird
sämtlicher Code zunächst serialisiert. Trotz Abkopplung von Eclipse sollen weiterhin die Dateiformate des Eclipse Modeling Frameworks (EMF) verwendet werden, da es sich dabei um das Standard-Werkzeug zur Metamodellierung handelt und somit gleichzeitig die Kompatibilität zu anderen EMF-basierten Werkzeugen erhalten bleibt. Zur Evaluation der Graph-Constraints ist Pattern-Matching auf dem zugrundeliegenden Modell nötig, wofür wir die Highly (Scalable) Incremental Pattern matching Engine (HiPE) verwenden. Da sowohl EMF als auch HiPE in Java implementiert sind, muss die Erweiterung einen JVM-Subprozess starten, welcher diese Abhängigkeiten einbindet und als Schnittstelle zur Erweiterung dient. Das serialisierte Metamodell, das Model und die Konsistenzbedingungen werden in die JVM übertragen, die zum einen Metamodell (Ecore) und Model (XMI) und zum anderen HiPE-Code generiert. Das Ausführen dieses HiPE-Codes auf Basis des dazugehörigen Modells liefert schließlich Daten über (nicht mehr) gefundene Pattern Matches als Grundlage zur Konsistenzprüfung. Schließlich können die gefundene Inkonsistenzen in Form eines Dashboards in VSCode dargestellt werden.

Konkret sollen im Rahmen der Thesis die folgenden Fragen beantwortet werden:

  • Welche Modelleigenschaften können wir für Konsistenzbedingungen betrachten und welche Aspekte können für die Nachvollziehbarkeit hervorgehoben werden?
  • Wie kann eine textuelle Definition dafür aussehen? Wie kann das Ganze in Langium als DSL umgesetzt werden?
  • Wie können die Konsistenzbedingungen in HiPE umgesetzt und ausgewertet werden? Neben Basic Constraints gehören dazu auch Nested Constraints und Attributsbedingungen.

 

Literatur

[1] Reiko Heckel und Gabriele Taentzer. Graph Transformation for Software Engineers - With Applications to Model-Based Development and Domain-Specific Language Engineering. Springer, 2020. doi: 10.1007/978-3-030-43916-3.
[2] Nebras Nassar, Jens Kosiol, Thorsten Arendt und Gabriele Taentzer. “OCL2AC: Automatic Translation of OCL Constraints to Graph Constraints and Application Conditions for Transformation Rules”. In: Graph Transformation - 11th International Conference, ICGT 2018, Held as Part of STAF 2018, Toulouse, France, June 25-26, 2018, Proceedings. Hrsg. von Leen Lambers und Jens H. Weber. Bd. 10887. Lecture Notes in Computer Science. Springer, 2018, S. 171–177. doi: 10.1007/978-3-319-92991-0_11.

Zurück zur Übersicht