Holger Krahn: Frameworkbasierte Entwicklung domänenspezifischer Sprachen
In der Informatik hat sich die UML als universelle Modellierungssprache
zur Beschreibung von Softwaresystemen etabliert. Modellgetriebene
Ansätze (model-driven development, MDD) ermöglichen es direkt aus dieser
Beschreibung ein lauffähiges System zu erzeugen. Oftmals haben sich in
verschiedenen Anwendungsgebieten, so genannten Domänen, jedoch andere
Modellierungssprachen als die UML etabliert, die von Domänenexperten
verwendet werden und sich im Einsatz bewährt haben. Somit ist die
Akzeptanz der UML bei diesen Domänenexperten oft gering und die
bewährten Notationen werden bevorzugt. Daher hat sich die Entwicklung
domänenspezifischer Sprachen (domain specific languages, DSLs) bewährt,
die aus der direkten Übernahme und Formalisierung der in der Domäne
verwendeten Notation oder durch die Zusammenfassung der in der
Anwendungsdomäne relevanten Konzepte zu einer neuen Sprache entstehen.
Im Rahmen dieses Promotionsvorhabens wurde ein Framework zur
Entwicklung von textbasierten DSLs und darauf aufbauenden
Codegenerierungen entwickelt. Dabei wurde eine kompakte Erweiterung der
Extended-Backus-Naur-Form (EBNF) entworfen, die die abstrakte und
konkrete Syntax einer Modellierungssprache definiert. Die Struktur und
die Ausdrucksmächtigkeit der abstrakten Syntax übersteigen dabei die in
Parsergeneratoren standardmäßig generierten Bäume. Insbesondere ist es
in der Sprachdefinition nicht nur möglich, die kontextfreie Syntax zu
spezifizieren, sondern es sind auch spezielle nicht-kontextfreie
Eigenschaften möglich, wie sie in der Meta-Modellierung üblicherweise
durch Assoziationen beschrieben werden.
Das entwickelte Grammatikformat bietet ein Modularitätsprinzip, bei dem
Grammatikfragmente mit Löchern, also nicht weiter definierten
Nichtterminalen, spezifiziert und in einen Parser und Klassen der
abstrakten Syntax umgesetzt werden können. Diese Fragmente können dann
in kompilierter Form miteinander kombiniert werden. Die beschriebenen
Modularitätskonzepte erlauben den effizienten Aufbau einer Bibliothek
von qualitätsgesicherten Sprachdefinitionen und -fragmenten sowie
darauf aufbauenden Codegenerierungen und Analysen. Somit lässt sich
durch ein Baukastenkonzept die Entwicklung von domänenspezifischen
Sprachen erreichen, wobei einzelne Elemente gezielt wieder verwendet
werden können. Dadurch lässt sich die Entwicklungszeit von DSLs
verkürzen und die Qualität der entstehenden Sprachen insgesamt heben.