Universal Application (UA) vs. MDA,
100 Prozent Codegenerierung
CASE-Systeme der Achtziger Jahre hatten noch den Anspruch verfolgt, vollständige, fertige Programme aus abstrakten Modellen heraus zu generieren. Dieses Ziel wurde, wie allgemein bekannt, niemals in zufriedenstellender Weise erreicht, weil sich die zahlreichen, für ein ergonomisches Arbeiten unverzichtbaren Ausgestaltungsdetails einfach nicht, bzw. nicht mit vertretbarem Aufwand, modellieren lassen. Wenn die Modelle umfangreicher und undurchschaubarer werden als der daraus generierte Programmcode, dann stellt sich die Frage, ob das Ganze überhaupt noch sinnvoll ist. An diesem Problem war der CASE-Ansatz gescheitert.
Die daraufhin in den Neunziger Jahren in Mode gekommene 'Model-driven Architecture', oder besser gesagt, modellgetriebene Softwareentwicklung, hat daraus den zunächst richtigen Schluss gezogen, auf eine durchgängige, finale Codegenerierung zu verzichten. Statt dessen generiert man aus noch halbwegs überschaubaren Modellen Roh-Programmcode, der anschließend vom Programmierer manuell weiterentwickelt wird. Da sich zu dieser Zeit zufällig UML als Modellierungsprache durchsetzte, wurde UML auch als Grundlage der Codegenierung zum Standard, obwohl UML bei genauerer Betrachtung dafür nicht optimal geeignet ist. Aber wie dem auch sei, modellgetriebene Softwareentwicklung mit leistungsfähigen Codegeneratoren dahinter ist ein gut funktionierender Weg, die Arbeit des Programmierers zu wirkungsvoll unterstützen.
Nun stellt sich aber die Frage, ob man das einstige Ziel, finalen Programmcode zu generieren, gänzlich aufgeben muss. Viele neuere Ansätze verfolgen die unterschiedlichsten Ideen, um irgendwie doch zu einem finalen Codegenerieren zu kommen, natürlich mit dem Ziel, Software rationeller zu entwickeln und flexibler zu machen.
Einer dieser Ansätze ist das „Universal Application“- Konzept, welches von Scopeland maßgeblich mitentwickelt wurde und das heute bereits von mehreren innovativen Herstellern favorisiert wird. Dieser basiert darauf, die zweifelsohne notwendige Finanlisierung der generierten Programme nicht am generierten Quelltext vorzunehmen, sondern durch interaktive und iterative Modellverfeinerung durch leistungsfähige, intelligente Werkzeuge. Nach jeder Veränderung wird der Code neu generiert, ohne dass er manuell verändert worden wäre. Auf diese Weise wird erreicht, dass alles jederzeit auf Modellebene verändert werden kann, ohne dass manuell geschriebener bzw. finalisierter Programmcode dabei verloren ginge.
Außerdem, dies hat sich mittlerweise herausgestellt, ist die Entwicklerproduktivität mit dem UA-Ansatz so enorm viel höher, dass einige Hersteller von UA-Produkten sogar von einem „Faktor 10“ sprechen. Es geht also nicht nur um mehr Flexibilität, sondern auch um eine deutliche Verkürzung der Entwicklungszeiten und eine damit verbundene Kostenreduktion.
Der mit SCOPELAND generierte Programmcode kann alternativ auch jederzeit manuell weiterentwickelt werden, dann aber verzichtet man auf den Vorteil, das Ganze jederzeit neu generieren zu können. In diesem Fall reduziert sich eine UA- Umgebung auf eine MDA-Entwicklungsplattform…





