Business-Type Generator
Ausgangslage
Im Finanzsoftwarepaket unseres Kunden spielen Geschäftstypen (Business Types) eine zentrale Rolle. Ein Geschäftstyp ist eine komplexe Datenstruktur, die alle für die Ausführung einer bestimmten geschäftlichen Transaktion notwendigen Informationen kapselt. Alle bestehenden Geschäftstypen (viele Dutzend) wurden bisher manuell implementiert, wobei recht strikt nach vorgegebenen, in einem Programmer’s Guide beschriebenen Patterns vorgegangen wurde.
Trotz systematischem Vorgehen weist der manuelle Ansatz grosses Optimierungspotential auf, insbesondere dann, wenn plötzlich viele Entwickler neue Business Types realisieren. Ein Programmer’s Guide ist nur so gut, wie er auch umgesetzt wird. Er kann die Einhaltung von Patterns weder verifizieren noch erzwingen.
Wegen der vielen manuell implementierten Patterns wurde es zudem mit steigender Anzahl von Implementationen immer schwieriger, Architekturänderungen zu vollziehen. Der Aufwand für entsprechende Modifikationen war so gross, dass man mangels Ressourcen am Bestehenden festhielt oder sich mit Workarounds behalf, wodurch Defizite in Wartbarkeit und Qualität des Codes entstanden.
Lösung
MDD schien ein viel versprechender Weg zu sein.
Der Vorteil eines modellbasierten Ansatzes war umso grösser, weil in der gegebenen Architektur pro Geschäftstyp eine Vielzahl kleiner, inhomogen aufeinander abgestimmter Codefragmente erzeugt werden musste. Nicht nur die Business-Logik selbst, sondern auch Datenbankdefinitionen, Zugriffsroutinen, Migrationen, etc., deren Kohärenz zur Entwicklungszeit üblicherweise nicht automatisch sichergestellt werden kann.
Realisierung
Aus den bestehenden Business-Typen und Dokumentation wurden die Patterns herausgearbeitet und durch Reverse Engineering (in mehreren Iterationen) wurden Modelle und Metamodelle erzeugt. Mangels geeigneter DSL-Tools (Domain Specific Language) im Jahre 2008, wurde ein bewährtes UML2-basiertes Tool (Rational Software Architect) als Modell-Repository gewählt. Zur Unterstützung von Modelltransformationen und Codegenerierung wurden oAW-Werkzeuge (openArchitectureWare) eingesetzt.
Es gelang, die bestehenden Geschäftstypenimplementierungen aus dem Code zu grossen Teilen in Modelle zu überführen, und aus diesen Modellen heraus dann den Code neu zu generieren.
Die Vorteile sind offensichtlich:
- Neue Business-Typen können nun, mit nur wenig Wissen über die technische Umsetzung, um den Faktor 3-5 schneller implementiert werden.
- Die Qualität ist garantiert. Es wurden sogar Fehler im manuell geschriebenen Code gefunden und ausgemerzt.
- Architektur-Änderungen, die zu Modifikationen der Implementations-Patterns führen, können jetzt sehr einfach und ohne grossen, manuellen Aufwand vollzogen und durchgehend umgesetzt werden.
- Über 60 % des Codes werden automatisch aus den Modellen generiert.



