Fachbericht
Erschienen in: E&E Juli 2008, S. 28
E&E-Spezial: EDA-Tools für das Chipdesign  |   Fachbericht

Domänenspezifisch entwerfen

Modellbasierte Softwareentwicklung erlaubt automatische Codegenerierung

Der Ruf nach steigender Produktivität bei der Softwareentwicklung wird lauter. Um dieser Herausforderung zu begegnen, suchen Unternehmen nach wirkungsvollen Methoden. Eine davon ist die domänenspezifische Modellierung (DSM). Sie ermöglicht eine automatische Codegenerierung. Wie die grundlegenden Konzepte und Vorteile einer DSM aussehen und welche Schritte notwendig sind, um eine DSM-Sprache mit einem DSM-Spracherzeugungs- und Modellierungswerkzeug zu implementieren, erläutert dieser Artikel. * James L. Hammond

Die domänenspezifische Modellierung ist ein modellbasierter Softwareentwicklungsansatz, der den Schwerpunkt auf die Verwendung von visuellen Modellen als primäre Artefakte im Entwicklungsprozess legt. DSM bewegt sich auf einem höheren Abstraktionsniveau als „normale Programmierungssprachen“, indem die Lösung direkt in einer Sprache formuliert wird, die die Konzepte und Regeln der Problemdomäne verwendet. Das Anheben des Abstraktionsniveaus war in der Vergangenheit häufig ein Katalysator für drastische Verbesserungen bei der Entwicklungsproduktivität (beispielsweise beim Übergang von Assembler zu Sprachen der dritten Generation); der mögliche Abstraktionsgewinn, der sich durch DSM erzielen lässt, stellt einen weiteren Quantensprung dar.

* Bildquellenhinweis

* Bildquellenhinweis

* Bildquellenhinweis

Sobald diese Modelle auf einem höheren Abstraktionsniveau erstellt sind, lässt sich aus ihnen automatisch Code generieren, wenn man dafür individuell angepasste Codegeneratoren verwendet. Auf diese Weise kann der Anwender Code für jede beliebige Programmierungssprache oder für jedes beliebige Entwicklungsparadigma erzeugen. Vorhandene Plattformen, Bibliotheken, Komponenten und auch bestehender Code können während des Generierungsprozesses verwendet werden. Und obwohl der Anwender bei DSM den gesamten Code aus den Modellen generieren kann, ist dies nicht zwingend erforderlich. Auf der anderen Seite liegt dem DSM-Ansatz die Annahme zugrunde, dass sich aus allen Modellen vollständiger Code generieren ließe, den man nicht mehr manuell bearbeiten muss. Mit dieser Modellierungsweise kann man ein einzelnes Modell verwenden, um Code für mehrere Zielplattformen und Funktionen (beispielsweise Lokalisierung, frühe Prototypen, Build-Skripte) zu erzeugen. Die automatische Codegenerierung aus den Modellen heraus ist deshalb möglich, weil diese einer bestimmten Domäne angehören: Modellierungssprache, Code-Frameworks und Generatoren sind so entworfen, dass sie zu den Erfordernissen eines einzelnen Unternehmens passen. Die Folgen dieser Spezialisierung und Automatisierung sind eine verringerte Komplexität und steigende Produktivität. Erfahrungsberichte von Anwendungsdomänen und Unternehmen wie Lucent, Panasonic, Nokia, EADS) zeigen, dass DSM fünf- bis zehnmal schneller zu Ergebnissen führt als die gegenwärtigen manuellen Entwicklungspraktiken. Der Grund: Die Softwareingenieure konzentrieren sich ausschließlich auf die zu entwickelnden Funktionen und können auf mühsame Implementierungstätigkeiten verzichten. Auch Industrie-Analysten bestätigen die Vorteile von DSM: Einer Untersuchung des amerikanischen Marktforschungsinstituts Burton Group [1] von 2004 zufolge gelten domänenspezifische Sprachen und kundenspezifische Metamodelle als stärkster Faktor, um die Produktivität zu steigern. In der Vergangenheit waren kundenspezifische Modellierungssprachen zu kosten- und zeitintensiv. Inzwischen gibt es entsprechende DSM-Werkzeuge, die den Entwicklungsprozess vereinfachen. Zentrale Aufgabe von Softwareentwicklern ist es, Qualitätsstandards aufrechtzuerhalten und zu verbessern – und dies bei stetig steigender Komplexität. Generierter Code vermeidet die Risiken von unachtsamen Fehlern, Syntaxproblemen und logischen Fehlern. Bei der manuellen Programmierung treten, während man Updates vornimmt, in der Regel häufig Fehler auf. Das passiert vor allem dann, wenn mehrere Entwickler verschiedene Änderungen an unterschiedlichen Codeabschnitten vornehmen müssen. Mit DSM stellt eine einzelne Änderung am Generator jedoch sicher, dass man hiermit alle erforderlichen Änderungen am Code simultan vornehmen kann. Eine Studie der United States Air Force von 1996 [2] vergleicht DSM mit der komponentenbasierten Entwicklung und kommt zum Ergebnis, dass domänenspezifische Sprachen und Generatoren nicht nur dreimal schneller sind als Codekomponenten, sondern dass DSM auch zu 50 Prozent weniger Fehlern führt als ein Entwicklungsprozess mit herkömmlichen Methoden. Bei einer Sprache ergibt sich im Laufe der Zeit die Notwendigkeit, diese zu verändern und zu erweitern. Diesem Unstand muss das gewählte Entwicklungswerkzeug gewachsen sein. Nicht selten stehen Unternehmen vor unbrauchbaren Modellen, die sich bei geänderten Anforderungen anpassen lassen. Ein entsprechendes Modellierungstool sollte daher das Konzept einer evolutionären Sprache komplett unterstützen. Das heißt, der Anwender muss damit Änderungen an der Modellierungssprache jederzeit und problemlos vornehmen und diese Änderungen automatisch und nicht-destruktiv an alle durch die Modellierungssprache definierten Modelle weitergeben können. Während die wichtigsten Vorteile der domänenspezifischen Modellierung – verbesserte Produktivität und Qualität – für ein Unternehmen auf der Hand liegen, ist dies bei DSM als einem Entwicklungsansatz nicht unbedingt der Fall. Entwickelt ein Unternehmen eine Anwendung oder ein Merkmal zum ersten Mal und dieses auf eine andere Art und Weise als zuvor entwickelte Anwendungen, darf man nicht annehmen, man könne diesen Prozess bereits von Anfang an automatisieren. Folglich ist es unwahrscheinlich, dass Unternehmen, die kurzfristige Projekte vornehmen und die sich der allgemeinen Anforderungen der nächsten Kunden nicht bewusst sind, mit DSM erfolgreich sein werden. Anders sieht es für jene Unternehmen aus, die eine Reihe ähnlicher Produkte entwickeln oder Applikationen, die auf einer gemeinsamen Bibliothek oder einem Framework aufsetzen (zum Beispiel Firmen mit einer Produktlinie); hier spielt ein DSM-Ansatz seine Vorteile aus.

Modellierungssprache erzeugen

Am Beispiel eines Automobil-Elektroniksystems lässt sich zeigen, wie die Definition der zu Grunde liegenden Konzepte und Begriffe beim Erstellen einer Modellierungssprache aussieht. Für diese Konzepte gibt es verschiedene Quellen – beispielsweise Produktkomponenten, Architektur, Merkmale oder die geforderten Ausgaben. Das Spracherzeugungs- und Modellierungswerkzeug Meta Edit+ von MetaCase, finnischer Anbieter von Werkzeugen für die domänenspezifische Modellierung, bietet einzelne Werkzeuge, die den Softwareentwickler dabei unterstützen, diese Konzepte in Elemente der Modellierungssprache zu überführen. Allgemein anerkannt ist, dass sich die besten Ergebnisse beim Erzeugen einer Modellierungssprache dann erzielen lassen, wenn man agil vorgeht. Will heißen: Der Meta-Modellierer definiert die Sprache inkrementell und testet diese beliebig, indem er Spezifikationen erzeugt. Im logischen Modell für die Automobilelektronik (Abbildung 1) könnten dies beispielsweise die Konzepte „Sensoren“ und „Alarmsignale“ sein.

Sind die Modellierungskonzepte definiert, gilt es die Modellierungsregeln festzulegen. Diese Regeln bestimmen, wie die Konzepte verwendet werden und wie sie miteinander zusammenhängen. Dafür bietet das Modellierungswerkzeug eine Vielzahl vordefinierter Regel-Templates zur Auswahl, die ein breites Spektrum möglicher Szenarien repräsentieren. Außerdem kann der Anwender eigene Regeln festlegen. Durch das Festlegen dieser Policies bereits auf der Sprachebene kann man sicherstellen, dass alle Entwickler dieselben Domänenregeln befolgen – was praktisch kaum zutrifft, wenn man sich lediglich auf hausinterne Standards, Handbücher und Dokumente verlässt.Dadurch, dass der Softwareentwickler innerhalb der Modelle und der Modellierungssprache eigene Grafiken verwenden kann, kann er auch komplizierte Entwürfe designen. Die dafür notwendigen Symbole lassen sich entweder mit den integrierten Zeichen-Tools des Modellierungstools erstellen (Abbildung 2) oder im Vektor- oder Bitmap-Format importieren. Die Verwendung von Symbolen, die sich eng an den Dingen der realen Welt, die sie repräsentieren, orientieren, vereinfacht die Entwicklung für den Modellierer erheblich. Die Modelle sind außerdem für jeden Stakeholder, der mit den Domänenkonzepten vertraut ist, leicht verständlich und verbessern somit die Kommunikation. Darüber hinaus lassen sich die grafischen Darstellungen der Symbole dynamisch aktualisieren, sobald man Veränderungen an den Modellen vornimmt. Der letzte Schritt beim Erstellen einer DSM-Lösung: die Generatoren erzeugen. Genau wie bei der Modellierungssprache ist auch hier Domänenspezifität wichtig. Diese Generatoren lassen sich für eine große Bandbreite von Einsatzzwecken erstellen – beispielsweise Berichte für die Konsistenzprüfung von Modellen, die Erzeugung von Metriken, Links zu Analysemodellen, das Erstellen von Data-Dictionaries, die Erzeugung von Dokumentation, die Generierung von Code- oder Konfigurationsdaten und den Export von Modellen zu anderen Programmen wie Simulatoren oder Versionssteuerungssystemen. Der „Generator Editor“ des Tools hilft bei der Spezifikation von template-basierten Generatoren, die die Modelle bearbeiten sowie die Modellwerte und festen oder bedingtem Text ausgeben (Abbildung 3). Diese domänenspezifische Codegenerierung stellt sicher, dass der von allen Entwicklern generierte Code exakt jenen Anforderungen entspricht, den die Domänen-Experten definieren, weil diese Anforderungen direkt im Codegenerator implementiert sind. Sind Sprache und Generatoren erzeugt, kann das Unternehmen damit beginnen, Modelle zu erzeugen und von den erwähnten Produktivitäts- und Qualitätsvorteile profitieren. Die Zeit, die notwendig ist, um die Sprache und die Generatoren vollständig zu generieren, hängt von der Anwendungsdomäne ab und bewegt sich laut Hersteller zwischen ein paar Manntagen und -wochen.

• more@click-Code: EE078011

Würden Sie diesen Beitrag weiterempfehlen? - Domänenspezifisch entwerfen

Sind Sie geschäftlich hier?

Kontaktdaten

MetaCase
Ylistönmäentie 31
40500 Jyväskylä
Deutschland
T +358 14 4451 400
F +358 14 4451 405
E-Mail schreiben
zur Website
GO TOP

Ähnliche Artikel

E&E-Spezial: EDA-Tools für das Chipdesign | Fachbericht

Ganzheitlich denken

Technik & Wissen

Abenteuer Anwendung


Abenteuer Anwendung

Killerapplikation gesucht

• MEHR

Businessprofile

E&E Lexikon

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
SUCHEN