MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
28 Kapitel 2 – Entwurf und Einsatz <strong>von</strong> DSLs in der Softwareentwicklung<br />
• Eine Definition der Domäne, die den Anwendungsbereich festlegt.<br />
• Eine Domänenterminologie, die die wichtigsten Begriffe der Domäne enthält.<br />
• Eine Beschreibung der Konzepte der Domäne.<br />
• Feature-Modelle, die die Gemeinsamkeiten und Unterschiede der Domänenkonzepte<br />
und ihre Abhängigkeiten untereinander beschreiben.<br />
Die Ergebnisse einer Domänenanalyse sind hilfreich, um eine DSL zu entwickeln oder<br />
existierende DSLs zu identifizieren. Sie bieten jedoch keine Unterstützung zur konkreten<br />
Ausgestaltung einer DSL. Die Verfahren sind stark auf die Ausgestaltung einer Software-<br />
Produktlinie ausgerichtet und fokussieren sich daher nur auf einen kleinen Teil der möglichen<br />
DSLs, die relativ grob-granular die Variabilität einer Familie <strong>von</strong> Produkten beschreiben.<br />
Insbesondere ist die Verwendung <strong>von</strong> Feature-Diagrammen als Grundlage für eine DSL<br />
wenig hilfreich. Sie stellen zwar prinzipiell den variablen Teil der Produkte dar und strukturieren<br />
somit die Informationen, die die DSL-Modelle beinhalten müssen, sind aber wenig<br />
geeignet, um komplexe Zusammenhänge zwischen Konzepten zu beschreiben. Durch fehlende<br />
Elemente wie zum Beispiel Kardinalitäten können sie nur schwer konstruktiv in eine<br />
DSL entwickelt werden. Eher geeignet sind Klassendiagramme, die die konzeptuellen Zusammenhänge<br />
der Domänenkonzepte beschreiben und im Entwurf in die abstrakte Syntax<br />
einer DSL weiterentwickelt werden können.<br />
Eine effiziente Form der <strong>Entwicklung</strong> <strong>von</strong> DSLs ist die Wiederverwendung existierender<br />
DSL-Definitionen aus einer Sprachbibliothek. Die dort abgelegten Eigenschaften der DSLs<br />
können mit den Anforderungen verglichen werden, um so zu ermitteln, ob eine passende<br />
DSL für die Problemlösung bereits existiert. Wird dabei eine ähnliche DSL identifiziert,<br />
sollten die Unterschiede zwischen den Anforderungen und den Eigenschaften analysiert<br />
und dokumentiert werden. Dieses erleichtert im Entwurf die Wiederverwendung und Weiterentwicklung<br />
existierender <strong>Sprachen</strong>.<br />
2.3.2 Entwurf<br />
Der Entwurf einer DSL legt die genaue Struktur der Sprache fest. Dabei werden die Elemente<br />
der Domänenanalyse in eine nutzbare DSL überführt, die <strong>von</strong> einem Entwickler<br />
verwendet werden kann. Wurden in der Analyse Ähnlichkeiten zu einer existierenden DSL<br />
gefunden, können die in [MHS05] identifizierten Entwurfsmuster Spezialisierung und Erweiterung<br />
zur Modifikation einer Sprache oder Huckepack zur Verwendung <strong>von</strong> Sprachteilen<br />
benutzt werden. Somit wird der Entwurfsaufwand reduziert und es etablieren sich langfristig<br />
qualitativ hochwertige DSLs.<br />
Grundsätzlich ist der <strong>Sprachen</strong>twurf eine komplexe Angelegenheit, die eine enge Zusammenarbeit<br />
mit den Domänenexperten erfordert. Hilfreich hierfür sind allgemeine Prinzipien<br />
zum <strong>Sprachen</strong>twurf <strong>von</strong> Programmiersprachen wie zum Beispiel [Hoa73] und [Wir74],<br />
Hinweise für Modellierungssprachen [POB99] sowie die dokumentierten Erfahrungen <strong>von</strong><br />
David Wile beim DSL-Entwurf [Wil04].<br />
Die Ausgestaltung der automatischen Verarbeitung <strong>von</strong> DSL-Modellen umfasst die<br />
Grundentscheidung, ob ein generatives Vorgehen, eine Interpretation oder eine Analyse<br />
der DSL gewünscht wird. Bei der Generierung muss zusätzlich entschieden werden, welche<br />
Teile durch die Generierung entstehen sollen und welche Teile in einer Laufzeitumgebung<br />
allgemeingültig programmiert werden können. Soll die DSL dabei so eingesetzt werden,<br />
dass aus ihr Software erzeugt wird, die direkt in das Produkt integriert wird, so sollten