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.
1.1 Motivation 5<br />
der manuell oder automatisiert mit Hilfe <strong>von</strong> Modelltransformationen abgebildet werden.<br />
Die verschiedenen Abstraktionsebenen erschweren jedoch den Umgang mit sich wandelnden<br />
Anforderungen, weil so oftmals Änderungen nachgepflegt werden müssen. Daher greift<br />
die so genannte modellgetriebene <strong>Entwicklung</strong> den Wunsch nach einer direkten Codeerzeugung<br />
aus Modellen auf. Die Integration des generierten Quellcodes erfolgt teilweise auf<br />
Codeebene, was jedoch eher eine pragmatische Lösung als ein anzustrebendes Ideal ist. Der<br />
entscheidende Nachteil ist, dass die Entwickler die Struktur der Codegenerierung verstehen<br />
müssen und sich nicht auf das Verständnis der Modelle beschränken können.<br />
Frameworks und APIs kapseln sich wiederholende Aspekte einer Implementierungsarbeit<br />
und stellen so eine Alternative zur modellgetriebenen <strong>Entwicklung</strong> dar. Gerade bei der<br />
<strong>Entwicklung</strong> <strong>von</strong> Geschäftssoftware sind Frameworks weit verbreitet, die auf der JavaEE-<br />
Spezifikation basieren. Das Hauptproblem bei der Verwendung <strong>von</strong> Frameworks und APIs<br />
ist jedoch, dass deren Freiheitsgrade durch die Modularität der gewählten Programmiersprache<br />
begrenzt sind, so dass wiederkehrende Funktionalität zum Beispiel nur in Form <strong>von</strong><br />
Klassen und Methoden bereitgestellt werden kann. Mehr Freiheit erlauben da generative<br />
Ansätze, die auch sich ähnelnden Code aus Modellen erzeugen können, der nicht gekapselt<br />
werden kann. Dabei müssen die notwendigen Informationen jedoch für den Codegenerator<br />
formuliert werden.<br />
Mit zunehmender Abstraktion einer Programmiersprache <strong>von</strong> technischen Gegebenheiten<br />
muss oftmals zwischen zwei Extremen abgewogen werden: Einerseits erleichtern abstrakte<br />
und daher kompakte Programme die Implementierung eines Softwaresystems, weil<br />
weniger Quellcode geschrieben werden muss. Dieses reduziert allein durch die Übersichtlichkeit<br />
die Anzahl der <strong>Entwicklung</strong>sfehler und verringert so die Kosten und die time-tomarket.<br />
Andererseits birgt die Abstraktion das Risiko, dass die gewählte Lösung ineffizient<br />
ist oder das genau gewünschte Verhalten nicht erreichbar ist, weil für das gegebene Problem<br />
falsch abstrahiert wurde. Diese Entscheidung kann nicht für jede Domäne generalisiert<br />
werden: Für Geschäftssoftware ist teilweise die time-to-market die entscheidende Komponente,<br />
da bei schnell wechselnden Märkten lange <strong>Entwicklung</strong>szeiten hemmend für das<br />
Geschäft sind. Bei der <strong>Entwicklung</strong> automotiver Systeme sind die Stückkosten weiterhin<br />
entscheidend, weil sich die <strong>Entwicklung</strong>skosten, die zu einer kompakteren, preisgünstigeren<br />
Hardware führen, schnell amortisieren.<br />
Die Anzahl der Anwendungsgebiete der Informatik, die auch Domänen genannt werden,<br />
steigt mit der zunehmenden Verbreitung der Informationstechnik in vielen Bereichen<br />
des alltäglichen Lebens. Die ständig steigende Leistungsfähigkeit und Kompaktheit der<br />
Hardware erlaubt dabei eine Vielzahl an neuen Anwendungen. Die in einigen Domänen bereits<br />
existierenden Notationen, um Systeme zu beschreiben, und <strong>Sprachen</strong>, die für Domänenexperten<br />
zugänglicher sind als Programmiersprachen, werden als domänenspezifische<br />
<strong>Sprachen</strong> bezeichnet. DSLs haben im Gegensatz zu allgemeinen abstrakteren Programmiersprachen<br />
weniger das Problem, dass durch die Wahl der Abstraktion eine ineffiziente<br />
Implementierung erzeugt wird, weil die Abstraktion spezifisch für die Domäne gewählt<br />
wurde und keine Allgemeingültigkeit besitzen muss. Normalerweise ist daher auch kein<br />
neues Programmiersprachenparadigma in einer DSL enthalten. Die Idee der domänenspezifischen<br />
Sprache ist in der Informatik keineswegs neu. Bereits Ende der sechziger Jahre<br />
wurde die Idee formuliert und gipfelt in [Lan66] sogar darin, dass eine Vielzahl an neuen<br />
Programmiersprachen postuliert wurde. Erfolgreich eingesetzte <strong>Sprachen</strong> wie Cobol wurden<br />
spezifisch für einen Anwendungsbereich wie die betriebswirtschaftlichen Anwendungen<br />
konzipiert und auch vor allem dort eingesetzt.<br />
Die Vorteile der Verwendung <strong>von</strong> DSLs liegen vor allem in der engen Einbindung <strong>von</strong><br />
Domänenexperten, die durch ihre Expertise das Softwaresystem selbst besser verstehen,