SE-lab

Startseite

Für Studenten

Für Unternehmen

Projekte

Forum

Bewerbung

Kontakt


SE

RWTH Aachen

MontiCore: Agile Entwicklung von domänenspezifischen Sprachen im Software-Engineering

Domänenspezifische Sprachen (engl. domain specific language - DSL) sind Sprachen der Informatik, mit denen kompakte Problemlösungen aus eng umrissenen fachlichen oder technischen Anwendungsgebieten formuliert werden können. Durch die Nutzung einer fachspezifischen Notation gelingt die Integration von Experten einfacher als bei einer herkömmlichen Softwareentwicklung, weil die Modelle von ihnen besser verstanden werden.Die automatische Erzeugung von Produktivcode aus domänenspezifischen Modellen ist eine effektive Form der modellgetriebenen Entwicklung.

Die derzeitige DSL-Entwicklung erschwert aufgrund der fehlenden zentralen Sprachreferenz, die die abstrakte und konkrete Syntax umfasst, und der unzureichenden Modularisierung eine agile und effiziente Vorgehensweise. Es mangelt an Methoden und Referenzarchitekturen, um komplexe modellbasierte Werkzeuge strukturiert entwerfen und in der Softwareentwicklung einsetzen zu können.

In dieser Arbeit wird daher die DSL-Entwicklung mit dem MontiCore-Framework beschrieben, das die modulare Entwicklung von textuellen DSLs und darauf basierten Werkzeugen erlaubt. Die wichtigsten wissenschaftlichen Beiträge lassen sich wie folgt zusammenfassen:
- Die Definition von textuellen domänenspezifischen Sprachen wird durch ein kompaktes grammatikbasiertes Format ermöglicht, das sowohl die abstrakte als auch die konkrete Syntax einer Sprache definiert und so als zentrale Dokumentation für die Entwickler und Nutzer einer DSL fungiert. Die entstehende abstrakte Syntax entspricht etablierten Metamodellierungs-Technologien und erweitert übliche grammatikbasierte Ansätze.
- Die Wiederverwendung von Teilsprachen innerhalb der modellgetriebenen Entwicklung wird durch zwei Modularitätsmechanismen vereinfacht, da so existierende Artefakte auf eine strukturierte Art und Weise in neuen Sprachdefinitionen eingesetzt werden können. Grammatikvererbung erlaubt die Spezialisierung und Erweiterung von Sprachen. Einbettung ermöglicht die flexible Kombination mehrerer Sprachen, die sich auch in ihrer lexikalischen Struktur grundlegend unterscheiden können.
- Das MontiCore-Grammatikformat ist modular erweiterbar, so dass zusätzliche Informationen als so genannte Konzepte spezifiziert werden können und darauf aufbauend weitere Infrastruktur aus der Sprachdefinition generiert werden kann. Die Erweiterungsfähigkeit wird durch Konzepte zur deklarativen Spezifikation von Links in der abstrakten Syntax und durch ein Attributgrammatiksystem demonstriert.
- Die Entwicklung von Codegeneratoren und Analysewerkzeugen für DSLs wird durch die Bereitstellung einer Referenzarchitektur entscheidend vereinfacht, so dass bewährte Lösungen ohne zusätzlichen Entwicklungsaufwand genutzt werden können. Die Qualität der entstehenden Werkzeuge wird damit im Vergleich zu existierenden Ansätzen gehoben.
- Es wird demonstriert, wie compilierbare Templates ein integriertes Refactoring der Templates und einer Laufzeitumgebung ermöglichen. Darauf aufbauend wird eine Methodik definiert, die aus exemplarischem Quellcode schrittweise einen Generator entwickelt, dessen Datenmodell automatisiert abgeleitet werden kann.

Die beschriebenen Sprachen und Methoden sind innerhalb des Frameworks MontiCore implementiert. Ihre Anwendbarkeit wird durch die Entwicklung des MontiCore-Frameworks im Bootstrapping-Verfahren und durch zwei weitere Fallstudien demonstriert.