Um den objektorientierten Softwareentwurf mit UML (Unified Modelling Language) zu unterstützen, wird im Rahmen dieser Diplomarbeit ein UML Case Tool realisiert dessen Werkzeuge die Funktionalitäten von Forward Engineering sowie von Reverse Engineering anbieten (in einem Wort: Round-trip Engineering). Unter Forward Engineering versteht man in diesem Zusammenhang die Transformation von UML statischen Strukturen in Java code und unter Reverse Engineering die Rückgewinnung der UML statischen Struktur aus Java code. Diese Werkzeuge werden in einem eigens dafür entwickelten Editor integriert um komfortable Nutzung sicherzustellen und ein einheitliches autonomes Werkzeug zu konstituieren. Es handelt sich dabei um einen graphischen Editor zur Darstellung von UML statischen Strukturen. Der Editor bietet auch Werkzeuge zur Erstellung von UML statischen Strukturen. Beim Erzeugen und hinzufügen eines neuen Modellelements in einer UML Struktur startet das entspechende Programm zunächst eine Überprüfung der daraus resultierenden Struktur, ob sie konform zu UML sei. Der Editor bietet auch die Funktionalität zum Öffnen/Speichern von UML statischen Strukturen unter Benutzung von XMI (XML Metadata Interchange).
Um die Werkzeuge zur Transformation von UML statischen Strukturen in Java oder aber auch in die umgekehrte Richtung (Reverse Engineering) zu ermöglichen muß eine Lösung auf ein markantes Problem angeboten werden: die Modellierungssprache UML ist in ihre Syntax mächtiger als die Java Syntax. Das bedeutet daß nicht alle UML Konstrukte eins zu eins in Java übersetzt werden. In diesem Sinne wird ein von UML abgeleitetes Metamodell entworfen (UML-Light Modell) das quasi wie eine Schnittstelle zwischen UML und Java fungiert. Zum Beispiel wird eine UML Mehrfachvererbung zuerst in UML-Light transformiert (aufgelöst in Einfachvererbungen) und anschließend daraus in Java code übersetzt. Ähnlich wird mit der Transformation einer UML n-ären Assoziation verfahren. Zunächst findet ihre Transformation in UML-Light statt (aufgelöst in binären Assoziationen) und anschließend ihre Übersetzung in Java code. Beim Reverse Engineering wird analog verfahren. Zunächst gilt es, den gegebenen Java code gemäß einer Java Grammatik zu parsen. Mit Hilfe von speziellen Kommentaren die bereits während der Transformation in Java code hinzugefügt wurden, kann aus dem resultierenden Syntaxbaum code das entsprechende UML-Light Diagramm erstellt werden. Anschließend wird daraus das UML Diagramm gebildet und mit Hilfe eines zu diesem Zweck entwickelten Repräsentationsmodells auf der Editoroberfläche visualisiert.
Bearbeiter:
Dimitrios Bairaktaris
Aufgabensteller:
Prof. Dr. Martin Wirsing
Betreuer:
Dr. Alexander Knapp
Fertigstellung:
30. September 2001