Der nächste logische Schritt
Als Verfechter von gut strukturierten Softwareentwicklungsprozessen und sorgfältig designten Softwaremodulen sind wir vor einiger Zeit auf die
Unified Modeling Language (UML) der
OMG gestoßen. Endlich gab es eine formale grafische Sprache zur Modellierung von Struktur und Verhalten von Softwareapplikationen. Wir führten bereits vor einigen Jahren in unseren Projekten die Verwendung von UML zur Modellierung von verschiedenen Aspekten der zu entwickelnden Software ein.
Je mehr in unseren Projekten modelliert wurde und je klarer wir unsere Zielarchitektur definierten, desto deutlicher wurde die Redundanz bei der Erstellung der eigentlichen Quellcodes. Immer mehr Code schien schematisch und immer gleich zu sein. Wir entwickelten einen Blick dafür, welche Codeteile technischer Code sind (also bei klar definierter Architektur quasi redundant sind) und welche Codeteile inhaltlicher Natur sind, also die eigentliche Geschäftslogik abbilden.
Der nächste Schritt war nun, die Erstellung des technischen Codes zu automatisieren. Aus der Kombination der UML-Modelle und der (formalen) Definition der Zielarchitektur lässt sich eine automatisierbare Model-To-Code-Transformation ableiten.
Genau hier setzt die
Model Driven Architecture (MDA), ebenfalls von der
OMG spezifiziert, an. Aus UML-Modellen, die zunächst plattformunabhängig sind (PIM = Platform Independent Model) lassen sich automatisch plattformspezifische Modelle (PSM = Platform Specific Model) oder auch Code generieren. Der Generator (oder auch Transformer) kennt also das Eingangsmodell (PIM) sowie die Zielarchitektur. Durch das "Markieren" des PIM über Stereotypen und Tagged Values können den Modellelementen des PIM platformspezische Eigenschaften zugeordnet werden. So kann also z.B. eine Klasse als "Entity" oder auch als "FrontendSessionObject" modelliert werden. Intern verfügt der Transformer über ein Mapping von den markierten Quellelementen auf tatsächliche Komponenten der Zielarchitektur.
Wir sehen in der MDA eine große Bedeutung für die objektorientierte Softwareentwicklung. Es ist einfach der nächste logische Schritt, wenn man auf gutes Softwaredesign und klar definierte Architekturen setzt.