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.

1.5 Der <strong>MontiCore</strong>-Ansatz 13<br />

• Die Strukturierung <strong>von</strong> komplexen und erweiterbaren DSL-Werkzeugen und darin<br />

realisierten Codegenerierungen, die über die Verwendung <strong>von</strong> Modelltransformationen<br />

und einer Template-basierten Codeerzeugung hinausgehen, erfolgt individuell für<br />

jede DSL und es wird keine allgemeingültige Lösung verwendet.<br />

• Die aufeinander abgestimmte Weiterentwicklung <strong>von</strong> DSL-Definitionen, DSL-Modellen,<br />

Laufzeitumgebungen und Generatoren ist in den existierenden Ansätzen nicht<br />

systematisch möglich.<br />

1.5 Der <strong>MontiCore</strong>-Ansatz<br />

In dieser Arbeit wird das Paradigma der generativen DSL-<strong>Entwicklung</strong> entwickelt, das<br />

heißt, für die DSLs werden jeweils Generatoren entwickelt, die zur agilen modellgetriebenen<br />

Softwareentwicklung beitragen. Dabei besteht die Eingabe der Generatoren aus Sätzen,<br />

die konform zur Grammatik der Sprache sind und im Folgenden einheitlich als Modelle<br />

bezeichnet werden.<br />

Wird aus den DSLs Produktionscode erzeugt, dann muss er nicht zwangsläufig eine<br />

komplette in sich lauffähige Software sein. Vielmehr wird üblicherweise ein fixer Teil extrahiert,<br />

der den für alle Modelle gleichen und damit vom Modell unabhängigen Code<br />

enthält, und ein variabler Teil, der das Ziel der Generierung ist. Der fixe Teil der Software<br />

kann eine Sammlung <strong>von</strong> Klassen (Laufzeitumgebung) sein, auf die sich der variable Teil<br />

durch Unterklassenbildung oder Methodenaufruf bezieht. Alternativ kann der fixe Teil eine<br />

komplette Software sein, die dann über den variablen Anteil nur noch parametrisiert wird.<br />

Die Generatoren erzeugen aus diesen Modellen eine Menge an Artefakten wie zum Beispiel<br />

Produktivcode. Die Abbildung 1.3 zeigt mögliche Nutzungsformen <strong>von</strong> DSLs.<br />

Dynamische Analyse<br />

Statische Analyse<br />

Framework-Parametrisierung<br />

Dokumentation<br />

Automatisierte Tests<br />

DSL Modelle<br />

Rapid Prototyping<br />

Produktionscode<br />

Transformationen<br />

Refactoring<br />

Abbildung 1.3: Nutzungsformen <strong>von</strong> DSLs bei agiler modellgetriebener <strong>Entwicklung</strong><br />

<strong>MontiCore</strong> ist ein Framework, das für die agile modellgetriebene Softwareentwicklung<br />

eingesetzt werden kann. Dafür werden die Teile einer Software identifiziert, für die sich<br />

der Einsatz einer DSL mit einer Codegenerierung lohnt. Dabei ist insbesondere eine kompakte<br />

Beschreibung eines Sachverhalts gegenüber einer umfangreichen Implementierung in<br />

einer Programmiersprache wünschenswert. Es wird nicht die vollständige Erzeugung eines<br />

Softwaresystems aus Modellen als Ziel definiert, sondern die Ergänzung des manuell implementierten<br />

Quellcodes. Dieses gründet sich auf der Tatsache, dass es bestimmte Teile einer<br />

Software gibt, die sich in einer Programmiersprache knapp und eindeutig implementieren<br />

lassen, und somit keine DSL existiert, die hier eine Effektivitätssteigerung ermöglicht. Dieses<br />

deckt sich mit der Empfehlung in [Wil03], eine 80%-Lösung in Zusammenhang mit<br />

DSLs anzustreben.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!