Ludwig-Maximilians-Universität München, Institut für Informatik
Lehr- und Forschungseinheit für Programmierung und Softwaretechnik
http://www.pst.informatik.uni-muenchen.de/Fopra/schaefer/index.html

Fortgeschrittenenpraktikum

Java-Codegenerierung aus UML-Zustandsdiagrammen


Inhalt

Das Verhalten von Modellelementen, wie Klassen, kann durch UML-Zustandsdiagramme beschrieben werden. Sie beschreiben die möglichen Abfolgen von Zuständen und Aktionen die ein Modellelement in seinem Lebenszyklus durchlaufen kann, während es auf diskrete Ereignisse reagiert. Ein Zustandsdiagramm ist die Beschreibung einer Zustandsmaschine. Sie realisiert das im Diagramm spezifizierte Verhalten.

Aufgabe dieser Projektarbeit war es, einen Compiler zu erstellen, der ein UML-Zustandsdiagramm in eine lauffähige Zustandsmaschine übersetzt. Diese soll durch eine beliebige Klasse des Benutzers eingebunden werden können. Indem der Benutzer Ereignisse an die generierte Zustandsmaschine schickt, geht die Zustandsmaschine in die durch das Diagramm spezifizierte nachfolgende Zustandskonfiguration über und löst die nötigen Aktionen und Aktivitäten aus. Als Eingabe dient ein Zustandsdiagramm als XMI-Datei. XMI ist ein XML-Dokumenttyp zur Beschreibung von UML-Modellen. Der Benutzer kann als Aktionen einfache Java-Anweisungen in das Zustandsdiagramm schreiben. Als Bedingungen dienen Java-Ausdrücke. Diese werden bei der Generierung in die Zustandsmaschine übernommen. Ausgabe sind Java-Klassen (Version 1.2), die das eingegebene Zustandsdiagramm als Zustandsmaschine ausführen lassen.

Das Ergebnis realisiert einen großen Teil der UML-Spezifikation für Zustandsmaschinen. Um den Rahmen einer Projektarbeit nicht zu sprengen, wurden Elemente, wie Zusammengesetzte Transitionen, deferred events und Sub-Zustandsmaschinen nicht implementiert.


Materialien


Bearbeiter: Timm Schäfer
Aufgabensteller: Prof. Dr. Martin Wirsing
Betreuer: Alexander Knapp
Fertigstellung: September 2000


Diplomarbeiten und Fortgeschrittenenpraktika Lehrstuhl Institut Universität
Alexander Knapp (14.2.01)
Last modified: Fri Jun 29 16:42:48 CEST 2001