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.

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,

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!