Codegenerierung auf Anwendungsgebiet abgestimmt

Die Produktivitätssteigerung durch neue Programmiersprachen ist bescheiden. Einen großen Schub hingegen verspricht der Wechsel zu einem höheren Abstraktionsgrad durch die modellorientierte Entwicklung. Domänenspezifische Modellierung löst dieses Versprechen ein, weil dadurch die vollautomatische Codegenerierung Wirklichkeit wird.

Die Produktivitätssteigerung durch neue Programmiersprachen ist bescheiden. Einen großen Schub hingegen verspricht der Wechsel zu einem höheren Abstraktionsgrad durch die modellorientierte Entwicklung. Domänenspezifische Modellierung löst dieses Versprechen ein, weil dadurch die vollautomatische Codegenerierung Wirklichkeit wird.

INHALT:
Ein Fallbeispiel: Scheibenwischersteuerung
Spezifikation von Konsistenz- und Korrektheitsregeln
Eine Notation als Abschluss der Sprachdefinition
Die Geburt des Codegenerators
Mehr Produktivität und Qualität
Autoren

Seit der Einführung von Assembler führte das immer höhere Abstraktionsniveau der Programmiersprachen zu Produktivitätssteigerungen in der Software-Entwicklung. Dennoch, die Verbesserungen bei der Anhebung des Abstraktionsgrades – und damit auch der Produktivität – durch neuere Programmiersprachen müssen als relativ bescheiden angesehen werden. Heutzutage scheint sich der Beitrag einer Programmiersprache zur Produktivität auf die Bereitstellung von Bibliotheken und Frameworks zu beschränken, während sich in den letzten 20 Jahren die Mechanismen zur Steigerung des Abstraktionsgrades von den Programmiersprachen hin zu den Modellierungssprachen verschoben haben.

Die meisten etablierten Modellierungssprachen, wie UML, setzen den Akzent lediglich auf die Visualisierung des Codes. Daher scheitern sie, wenn es darum geht, eine wesentliche Produktivitätssteigerung im Vergleich zur Programmierung in C, C++ oder Java zu erzielen. Darüber hinaus sind Modellierungswerkzeuge, die diese Sprachen unterstützen, so konstruiert, dass Code, der mit ihnen aus Modellen generiert wurde, einer manuellen Vervollständigung bedarf – was die ohnehin geringen Produktivitätsvorteile weiter verringert.

Es gibt jedoch einen alternativen Ansatz zur Modellierung und Codegenerierung: Domain-Specific Modeling (DSM) ermöglicht eine vollständige Codegenerierung aus hochgradig abstrakten Modellen. Ein Schlüsselelement für den Erfolg dieses Ansatzes ist die Konzentration auf Modelle der Anwendungsdomäne statt auf Abstraktionen der Software-Konstruktionsmechanismen. Da die Regeln der „Problem-Domäne“ als Randbedingungen in die Modellierungssprache eingefügt werden können, kann das Spezifizieren unerlaubter oder unerwünschter Entwürfe (Modelle) ausgeschlossen werden. In fast allen Fällen, in denen Unternehmen diesen Ansatz auf eine Plattform oder ein Framework übertragen, können sie fertige Produkte automatisch und vollständig aus den High-Level Spezifikationsmodellen generieren. Möglich wird dies, weil sowohl die Modellierungssprache als auch der Codegenerator lediglich auf eine Problem-Domäne und ihre Implementierungsumgebung abgestimmt sein müssen. Und da es die versierteren Entwickler eines Unternehmens sind, die die Sprachen und Codegeneratoren spezifizieren (Bild 1), ist der generierte Code besser als der von Hand geschriebene Code der meisten Entwickler.