Abgeschlossene Arbeiten

Studentische Arbeiten

Implementierung eines Java-Integrationswerkzeugs mittels Tripel-Graph-Grammatiken

Typ der Arbeit: Bachelor-Thesis
Bearbeitungsstand: Abgeschlossene Arbeiten
Arbeit abgeschlossen am: 31.05.2021
Betreuer*in: M.Sc. Lars Fritsche

Zurück zur Übersicht

Motivation

Motivation

Die modellgetriebene Softwareentwicklung verfolgt das Ziel, aus formalen Modellen modellkonforme, lauffähige Programme zu erzeugen. Der Einsatz von Modellen ermöglicht es dabei, durch einen höheren Abstraktionsgrad komplexe Softwaresysteme in einer Form zu beschreiben, die der Entwicklung und Wartbarkeit zu Gute kommt, da die Spezifikationen oft kompakter und dadurch leichter verständlich sind.

Zumeist werden Systeme aber nicht nur durch ein sondern durch mehrere unterschiedliche Modelle beschrieben. Diesbezüglich wird von verschiedenen Sichten auf das System gesprochen, welche Informationen über das System unter verschiedenen Gesichtspunkten betrachten und in unterschiedlichen Strukturen darstellen. Diese Sichten unterscheiden sich dabei oft in ihrem Informationsgrad und überlappen sich somit nicht immer vollständig.

Bei Änderungen in einem Modell muss also darauf geachtet werden, dass diese erkannt und propagiert werden, sodass alle Modelle die aktuellsten Informationen tragen und keine Inkonsistenzen zwischen den Modellen bzw. zu den Systemanforderungen entstehen. Besonders komplex ist hierbei der Fall, dass nicht nur ein Modell geändert wird, sondern mehrere zur selben Zeit. Dabei kann es vorkommen, dass sich bestimmte Änderungen im Konflikt zueinander befinden, z.B. weil gleichzeitig Informationen gelöscht und erhalten werden müssten. Aus diesem Grund müssen solche Konflikte ebenfalls erkannt und aufgelöst werden.

Ein Rahmenwerk für die Konsistenzerhaltung bieten Tripel-Graph-Grammatiken (TGGen), welche einen Regelsatz definieren, aus dem verschiedene konsistenzerhaltende Operationen abgeleitet werden können. Diese Operationen erlauben es, Modelle in andere Modelle zu übersetzen, aber auch fein-granulare Änderungen zwischen bereits konsistenten Modelle zu propagieren.

In dieser Thesis sollen Modelle genutzt werden, die aus Quellcode gewonnen werden. Ähnlich zu bestehenden Werkzeugen der Versionkontrolle soll es darum gehen, verschiedene Modell-Versionen zu vereinen, indem die Änderungen von einem ins andere Modell propagiert werden und vice versa.  Konkret bedeutet dies beispielsweise, dass die Entfernung einer Klasse in einem Modell auch in der Entfernung im anderen Modell resultieren soll. Wenn nun parallel in dieser zu entfernenden Klasse eine Änderung, wie z.B. das Hinzufügen einer Methode, vorgenommen wird, würde ein Konflikt vorliegen, der erkannt und entsprechend aufgelöst werden sollte.

Gegenwärtig existiert in der Toolsuite eMoflon allein eine programmatische Schnittstelle für TGGen. Dies bedeutet, dass eine Anbindung von eMoflon an etablierte Code-Modell-Editoren, die beide Modelle nebeneinander abbilden und mit der sich die Änderungen durch die Anwendung der TGG-Regeln zeigen lassen, noch nicht vorhanden ist.

Ziel dieser Abschlussarbeit ist die Entwicklung eines Demonstrators, mit dem sich zwei Java-Code-Modelle abbilden lassen. Der Code soll in den Editoren bearbeitet und zwischen den Modellen synchronisiert werden können. Hierbei sollen mithilfe von TGGen Änderungen von einer Seite auf die andere Seite propagiert werden. Dabei entstehende Konflikte sollen, wenn möglich, im Demonstrator hervorgehoben werden, damit sie entsprechend aufgelöst werden können. Letztlich soll der Demonstrator an echten, beispielsweise von GitHub bezogenen Java-Projekten auf seine Eigenschaften getestet und evaluiert werden.

 

Aufgabenstellung

Erstellung einer Java-Zu-Java-TGG

Extrahierung von Java-Modellen via Xtext

Entwicklung eines Editors, um Java-Modelle und Java-Code synchron zu halten

 

Zurück zur Übersicht