Codegenerierung aus UML-Diagrammen

Abgeschlossene Projekte

Projektteam: Tobias Keh, Norbert Kunstek, Thomas Fox

Wenn Diagramme zur Konzeption/Dokumentation einer Anwendung mit Hilfe eines UML-Werkzeugs erstellt werden und der darauf basierende Code manuell implementiert wird, müssen Elemente doppelt (in UML und im Code) definiert werden. Außerdem muss nach der initialen Erstellung manuell sichergestellt werden, dass UML-Diagramme und Code synchron bleiben. Ideal wäre es, wenn Dokumentation und Code automatisch synchron wären und die entsprechenden Strukturen nur einmal erzeugt werden würden.

In diesem Projekt wurde untersucht, wie aus UML-Modellen Code generiert werden kann. Dabei ging es weniger um prinzipielle Fragen, sondern darum, in einem konkreten technologischen Umfeld Erfahrungen bei der praktischen Umsetzung der Codegenerierung zu sammeln. Insbesondere sollte als UML-Werkzeug Sparx Systems Enterprise Architect (im folgenden EA genannt) eingesetzt werden. Die Codegenerierung sollte nicht im UML-Werkzeug, sondern durch ein Java-Programm geschehen, um die volle Kontrolle über den Codegenerierungsprozess zu behalten.

Als Domäne für die Codegenerierung wurde die Estellung eines Datenbankschemas gewählt. Das Datenbankschema wird als Klassendiagramm im EA gezeichnet; diese Daten werden dazu verwendet, um eine Schemadate für ein OR-Mapping Tool (in unserem Fall Apache Torque) zu erzeugen.

Während des Projektes war die Hauptschwierigkeit, eine geeignete Methode zu finden, um das UML-Modell im Java Code einzulesen. Es wurden verschiedene Ansätze für Export aus dem EA und Import in den Java Code evaluiert:

  1. Export im Ecore Format und Import mit Eclipse EMF
  2. Export im XMI Format und Import mit Eclipse EMF
  3. Export im XMI Format und Import mit Eclipse UML2
  4. Export im XMI Format und manuelles Parsen des Exports
  5. Direktes Einlesen der EA Datei über die EA Java API
     

Die für den Benutzer einfachste Lösung ist sicherlich 5), weil dabei kein gesonderter Export im EA stattfinden muss. Allerdings gab es zum Zeitpunkt der Projektdurchführung verschiedene Randbedingungen (es musste ein 32 Bit Java5 verwendet werden, die EA Java API ist nur unter Windows verfügbar), die diese Option unattraktiv machte. Daher wurde als Lösungsansatz 3) gewählt. Damit der Import funktioniert, muss die exportierte XMI vor dem Einlesen noch transformiert werden (z.B. weil EA eigene Attributstypen verwendet und weil Primärschlüssel als Custom Profile gespeichert werden).

Als Projektergebnis wurde ein Tool entwickelt, das es erlaubt, exportierte EA Dateien zu lesen und daraus ein Torque Schema zu generieren. Darin funktioniert das Mapping von Tabellen, Spalten, Primärschlüsseln und Beziehungen (Fremdschlüsseln). Die Angabe von Feldlängen und der Einsatz von Vererbung ist derzeit noch nicht implementiert.

Der Quelltext des entwickelten Tools ist auf Github verfügbar.

Dieses Projekt wurde im Sommersemester 2013 durchgeführt.