Codegenerierung auf Anwendungsgebiet abgestimmt

13. Juli 2007, 10:44 Uhr | Cord Giese und Dr. Juha-Pekka Tolvanen
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Codegenerierung auf Anwendungsgebiet abgestimmt

Code-Patterns können entsprechend der Struktur des Metamodells zu Hierarchien verknüpft werden. Im Einzelnen umfasst ein Code-Pattern eine oder mehrere Implementierungen, z.B. für unterschiedliche Zielsprachen. Eine Hierarchie von Code-Pattern-Implementierungen wird als „Rendering“ bezeichnet, weil sie die Modelldaten in Zielcode übersetzt. Für jedes zu generierende Codemodul wird ein Rendering definiert. Zusammen mit dem Metamodell bilden sie bereits den domänenspezifischen Generator – es ist nicht nötig, diesen manuell zu schreiben. Auch wenn ein domänenspezifischer Generator nur einmal für eine ausgewählte Domäne implementiert werden muss, gilt dabei: Es hängt von der Anzahl der zu generierenden Varianten ab, ob sich dieser Aufwand lohnt. Eine Reduzierung dieses Aufwands führt zu einer Erweiterung des Anwendungsbereichs des DSM-Ansatzes.

Der Codegenerator wird eingesetzt, um den Zielcode für das spezifizierte, konkrete Modell zu erzeugen. Auf technischer Ebene bedeutet dies, dass das Modell aus MetaEdit+ in HyperSenses importiert wird und anschließend die entsprechenden Renderings angewandt werden. Das Modell stellt hier bereits die Konfiguration des Codegenerators dar. Lediglich der „Generate“-Button ist dann noch zu betätigen.

Mehr Produktivität und Qualität

Generatoren und Modellierungssprachen wirken sich auf Automation und Qualität positiv aus. Dabei resultieren Qualitätsverbesserungen insbesondere aus der Durchsetzung von Regeln bereits in der Entwurfsphase. Das Scheibenwischer-Beispiel umfasst lediglich statische Variationspunkte. Dabei ist der DSM-Ansatz genauso gut für dynamische Variationspunkte verwendbar. Beispielsweise kann eine veränderte Reihenfolge der Wischmodi oder eine andere Art der Verarbeitung von Sensordaten mittels einer Modellierungssprache spezifiziert werden, die auf die Verhaltensaspekte von Softwaresystemen ausgerichtet ist. Codegeneratoren können dann, um den Zielcode zu erzeugen, die Daten auf die gleiche Weise lesen wie oben beschrieben.

Domänenspezifische Modellierung ist nur in Kombination mit einer domänenspezifischen Codegenerierung sinnvoll. Domänenspezifische Modelle sind technisch in den Entwicklungszyklus eingebunden und werden so zu erstklassigen Entwicklungsartefakten. Neben den mit Automation einhergehenden Produktivitätssteigerungen ist zu erwarten, dass generierter Code eine deutlich bessere Qualität als handgeschriebener aufweist: Er enthält weniger Fehler, und diese sind zudem leichter zu finden. Abhängig von der Anzahl der generierten Produktvarianten wird der Aufwand für die Entwicklung einer domänenspezifischen Sprache und eines domänenspezifischen Codegenerators eine lohnenswerte Investition. Diese Gewinnschwelle wird noch schneller erreicht, wenn eine umfassende Werkzeugunterstützung für diese Aufgaben verfügbar ist. Joachim Kroll

Dr. Juha-Pekka Tolvanen ist CEO der Firma MetaCase. Er ist weltweit als Methodenberater tätig und Autor zahlreicher Artikel zum Thema Methoden-Engineering. Er erwarb seinen Doktortitel an der Universität von Jyväskylä in Finnland. Seine Dissertation wurde 1999 mit dem Prädikat „Beste Dissertation des Landes“ ausgezeichnet.
jpt@metacase.com

Cord Giese ist bei Delta Software Technology für Forschung und Entwicklung im Bereich generativer Basistechnologien verantwortlich. Er präsentiert Forschungsergebnisse aus diesem Bereich auf Konferenzen und in Fachartikeln. Derzeit stehen neue Methoden und Technologien für die Automatisierung der Software-Entwicklung im Mittelpunkt seiner Arbeit.
cgiese@d-s-t-g.com


  1. Codegenerierung auf Anwendungsgebiet abgestimmt
  2. Codegenerierung auf Anwendungsgebiet abgestimmt
  3. Codegenerierung auf Anwendungsgebiet abgestimmt
  4. Eine Notation als Abschluss der Sprachdefinition
  5. Ein Fallbeispiel: Scheibenwischersteuerung

Jetzt kostenfreie Newsletter bestellen!