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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!