Im Juli 2008 habe ich meine Diplomarbeit abgeschlossen. Hier sind einige theoretische Details dazu und Reflexionen nach mehr als 15 Jahren.
Das Hauptziel meiner Diplomarbeit war die Implementierung einer vollständigen Spring-Architektur unter Verwendung des Model-Driven Architecture (MDA) Ansatzes.
Die Arbeit war damals innovativ, da es keine einzige wissenschaftliche Arbeit gab, die eine vollständige Modell-zu-Modell- und Modell-zu-Code-Transformation für Spring-Anwendungen durchführte.
Einflüsse und Danksagungen
Meine Haupteinflüsse waren damals Markus Voelter und einige großartige Entwickler bei itemis, einem Unternehmen, das sich auf modellgetriebene Generierungsansätze spezialisierte. Ich möchte allen Entwicklern danken, die dieses Thema mit mir erkundet und sowohl praktischen als auch theoretischen Input geliefert haben.
Die klassische Spring-Architektur
Was ist eine klassische Spring-Architektur? Es ist das Best-Practice-Setup, das Entwicklern und Architekten bekannt ist. Die ersten Skizzen dafür finden sich in Rod Johnsons Büchern über Spring.
Klassische Spring-Architektur (2008)
Controller, Views
Geschäftslogik, Transaktionen
DAOs, Repositories
Entitäten, Value Objects
Da es 2008 kaum Code-Generierung innerhalb des Spring-Frameworks gab, wir aber ein konsistentes Muster für jeden Entity-CRUD-Zyklus hatten, machte es viel Sinn, die entsprechende Architektur aus einem gegebenen UML-Modell zu generieren.
Das OAW-Framework
Das OAW-Framework (openArchitectureWare) erschien am Horizont mit großartigen Fähigkeiten für textuelle Editoren innerhalb der Eclipse-IDE und bot eine Möglichkeit, modellgetriebene Generierung praktisch umzusetzen.
Was damals noch fehlte, war der Teil der Modell-zu-Modell-Generierung. Die Motivation dahinter war, die Geschäftsdomäne von der technischen Domäne auf der UML-Modellebene zu abstrahieren — und dies wurde ein Kernbestandteil meiner Diplomarbeit.
Der Zwei-Modell-Ansatz
Ich implementierte einen klassischen Zwei-Modell-Ansatz, der Anliegen trennt:
Platform Independent Model (PIM)
Geschäftsdomänen-Entitäten und Beziehungen, definiert in reinem Text mittels einer domänenspezifischen Sprache
Platform Specific Model (PSM)
Technisches Architekturmodell mit Spring-spezifischen Implementierungsdetails
Hauptmerkmale der Implementierung
Textueller DSL-Editor
Eine domänenspezifische Sprache, die UML-Level-Modelle in reinem Text definiert. Dies war äußerst nützlich für Versionskontrollsysteme und das Zusammenführen von Änderungen im Team.
Code-Autovervollständigung
Volle IDE-Unterstützung innerhalb von Eclipse, einschließlich Syntaxhervorhebung und intelligenter Code-Vervollständigung für das textuelle Modell.
Massive Code-Generierung
Der generierte Code-Output war enorm und deckte die gesamte Best-Practice-Spring-Architektur ab — alles aus einer einzigen textuellen Modelleingabe.
Was wurde generiert
Aus einer einzigen textuellen Modelldefinition generierte das System:
- ✓ Domänen-Entitäten mit JPA-Annotationen
- ✓ Data Access Objects (DAOs) mit CRUD-Operationen
- ✓ Service-Layer-Interfaces und Implementierungen
- ✓ Spring-Konfigurationsdateien
- ✓ Controller-Gerüste für die Präsentationsschicht
Reflexionen nach 15+ Jahren
Was kann ich mehr als 15 Jahre nach dem Schreiben dieser Diplomarbeit sagen?
Die Architektur besteht fort
Die Spring-Architektur ist im Wesentlichen immer noch dieselbe, mit einigen Variationen. Der geschichtete Ansatz bleibt der Goldstandard für Enterprise-Java-Anwendungen.
Convention over Configuration
Ich habe nach dieser Diplomarbeit nie mehr mit modellgetriebener Generierung gearbeitet, da ich in den E-Commerce-Bereich gewechselt bin. Moderne Spring-Features generieren heute die Datenbankschicht vollständig. "Convention over Configuration" hat viel des nötigen Konfigurationsaufwands eliminiert und macht Code-Generierung für einen großen Teil der Entwicklungsarbeit obsolet.
Immer noch relevant für komplexe Domänen
Ich sehe immer noch gute Anwendungsfälle speziell für OAW-Tooling wie Xtext für sehr komplexe Geschäftsdomänen, wie zum Beispiel Elektronik. In diesen Fällen kann ein Domänenexperte einen benutzerdefinierten Editor erstellen, um Software-Ingenieure bei ihrer Arbeit zu unterstützen.
Die vollständige Diplomarbeit herunterladen
Wenn Sie tiefer in meine Diplomarbeit eintauchen möchten, können Sie das vollständige Dokument herunterladen. Es ist auf Deutsch verfasst.
(Download-Link auf Anfrage verfügbar)