30.06.2014 Aufrufe

MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...

MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...

MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

34 Kapitel 2 – Entwurf und Einsatz <strong>von</strong> DSLs in der Softwareentwicklung<br />

Erweiterbare Compiler erlauben die Erweiterung <strong>von</strong> GPLs ähnlich zu eingebetteten<br />

DSLs, wobei jedoch komplexe Codegenerierungen eingebunden werden können, da<br />

keine direkte Reduktion auf die GPL notwendig ist.<br />

Erweiterbare Modellierungssprachen wie die UML mit ihrer Profilbildung erlauben<br />

in begrenztem Umfang, domänenspezifische Varianten vorhandener Elemente durch<br />

Spezialisierung zum Sprachumfang hinzuzufügen.<br />

Eigenständige DSL-Definitionen bezeichnen die Realisierung <strong>von</strong> DSLs, ohne dass eine<br />

direkte vorhandene Programmiersprache als Umgebung genutzt wird.<br />

Die Methoden besitzen jeweils verschiedene Vor- und Nachteile, die bei der Auswahl einer<br />

Methodik zur Realisierung einer DSL gegeneinander abgewogen werden müssen, was insbesondere<br />

den Aufwand für die Realisierung mit einschließt. In der vorliegenden Arbeit liegt<br />

der Fokus auf der eigenständigen DSL-Definition. Die wesentlichen Gründe hierfür sind:<br />

• Die eigenständige DSL-Definition erlaubt völlige Freiheit in der Gestaltung der Sprache<br />

und so eine optimale Annäherung an die Konzepte der Domäne. Dies lässt sich<br />

mit Profilbildung, eingebetteten DSLs oder erweiterbaren Compilern oft nur schwer<br />

erreichen, weil meistens die Elemente der Basissprache noch zur Verfügung stehen<br />

und die Syntax sich nur bedingt anpassen lässt.<br />

• Eingebettete DSLs werden direkt in eine ausführbare Form innerhalb einer GPL überführt.<br />

Dadurch ergeben sich verschiedene Einschränkungen, die einen DSL-Einsatz<br />

erschweren. Erstens ist nur eine einzige Verwendungsform möglich und die Modelle<br />

können nicht, wie in Kapitel 1 dargestellt, die Grundlage für mehrere Codegenerierungen<br />

sein. Zweitens ist eine Erzeugung <strong>von</strong> Dokumentation und Analysen auf<br />

diesem Weg kaum möglich, da sich diese nicht als ausführbarer Programmcode darstellen<br />

lassen. Drittens ist die Programmierung komplexer Codegenerierungen, deren<br />

Ergebnis sich aus mehreren Dateien der Hostsprache zusammensetzt, meistens nur<br />

sehr umständlich zu realisieren.<br />

• Die Evolution eines Systems, das mit eingebetteten DSLs realisiert ist, beinhaltet<br />

keine klare Trennung <strong>von</strong> Domänenmodellen und technischer Realisierung innerhalb<br />

des Produkts im Sinne einer Trennung in plattformspezifische und plattformunabhängige<br />

Anteile (vergleiche auch [OMG03]). Dadurch lässt sich beispielsweise die<br />

Zielplattform oder Hostsprache nicht einfach austauschen, da die Modelle meistens<br />

eine Mischung aus Hostsprache und DSL sind.<br />

• Die Verwendung <strong>von</strong> Makros eignet sich nicht für die Implementierung komplexer Codegenerierungen<br />

und bietet keine Analyse vor der Verarbeitung, um den Entwickler<br />

mit erklärenden Fehlermeldungen bei fehlerhaften Eingaben zu unterstützen.<br />

• Die Realisierung zusammengesetzter Modellierungssprachen ist mit eingebetteten<br />

DSLs kaum möglich, weil keine geeignete Hostsprache verfügbar ist. Sollen zum Beispiel<br />

Klassendiagramme um Invarianten der OCL ergänzt werden, können diese nicht<br />

auf Elemente des Klassendiagramms zurückgeführt werden, weil die Invarianten genau<br />

die Defizite in der Ausdrucksmächtigkeit der Klassendiagramme kompensieren<br />

sollen. Die Rückführung ist aber ein essentielles Merkmal eingebetteter DSLs.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!