Agile Modellierung mit
UML
Loading

5.6 Zusammenfassung zur Codegenerierung

Kapitel 4 und dieses Kapitel diskutieren zunächst grundsätzliche Fragestellungen zur Codegenerierung, beginnend mit der Ausdrucksmächtigkeit der UML/P bis hin zu einer sinnvollen Architektur eines Codegenerators, der die notwendige Flexibilität und Parametrisierbarkeit besitzt, um verschiedenen Zielplattformen und unterschiedlichen Einsatzgebieten der UML/P gerecht zu werden. Statt einer tatsächlichen Darstellung der Skripte und Templates wurde eine abstrakte, an den Darstellungen von Regelkalkülen orientierte Form gewählt, um Transformationen darzustellen. Dabei wurde der pragmatische Ansatz unvollständiger und verkürzender Transformationsregeln in Kombination mit erklärendem Text gewählt. Die Umsetzung der einzelnen UML/P-Notationen in Code werden auf Basis dieser Transformationsregeln in diesem Kapitel beschrieben.

Ausblick zur Codegenerierung

Die Ansätze der ersten Generation von CASE-Werkzeugen zeigen, dass bei der Verwendung von Codegenerierung neben den in diesem Kapitel beschriebenen Vorteilen auch einige Nachteile in Kauf zu nehmen sind. So ist die Wartbarkeit eines mit Codegenerierung entwickelten Systems davon abhängig, ob der Codegenerator in der verwendeten oder einer aufwärtskompatiblen Form während des Einsatzzeitraums des Produktionssystems zur Verfügung steht. Ist das nicht der Fall, ist der einzige Ausweg, den generierten Code manuell weiterzubearbeiten. Wird zum Beispiel die technische Plattform migriert, so ist es darüber hinaus notwendig, dass Entwickler mit Fähigkeiten zur Anpassung („Programmierung“) des Generators zur Verfügung stehen.

Wird ein Codegenerator daher im eigenen Projekt entwickelt, dann sollte er sehr einfach sein geschrieben und seine Verwendung wenn bei Wartung und Evolution des Systems notwendig wieder rekonstruierbar sein. Die Komplexität der heutigen Quellsprachen wie UML steht aber im Widerspruch zu diesem Wunsch. Als vernünftige Alternative steht daher ein extern entwickelter, produktreifer Codegenerator zur Diskussion, der eine ausreichende Stabilität aufweist, um auch in der Wartungsphase noch zur Verfügung zu stehen. Um Inkompatibilitäten bei Versionswechseln zu verhindern oder wenigstens zu minimieren, ist hier eine Standardisierung ähnlich der Standardisierung von Compilern und der Semantik der zugrunde liegenden Sprachen geboten. Eine für diese Zwecke ausreichend detaillierte Standardisierung ist in der UML-Standardisierungsdiskussion derzeit nicht zu finden. Dennoch könnte die Interoperabilität heutiger UML-Werkzeuge einen gewissen Standardisierungseffekt für die Codegenerierung bewirken.


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012