Eine eigene Programmiersprache mit Xtext modellieren

Fazit

Anzeige

Die bei der Umsetzung der obigen DSLs gemachten Erfahrungen lassen sich wie folgt zusammenfassen.

Vorteile:

  • DSLs vereinfachen komplexe Sachverhalte durch prägnanten Quellcode, und wiederkehrende Probleme lassen sich mit wenig Aufwand lösen.
  • Durch kurze Definitionen innerhalb einer DSL lässt sich bei gleichem Ergebnis auf viel Boilerplate-Code verzichten.
  • Die definierten DSLs kann man fachbereichstauglich gestalten.
  • Den zu generierenden Code können erfahrene Entwickler vorgeben, sodass er den Qualitätsanforderungen des Unternehmens entspricht.
  • Sie können mehrere definierte DSLs referenzieren, die so miteinander arbeiten.
  • Xtext wird aktiv weiterentwickelt, und der Umfang der Features wächst mit jedem Release.

Nachteile:

  • DSLs lösen bestimmte Probleme gut, sind aber kein Allheilmittel für die Softwareentwicklung.
  • Die Xtext-Entwicklungsumgebung büßt bei großem Projektumfang etwas Geschwindigkeit ein.
  • Für den Einsatz von Xtext sind zwei neue Sprachen (Xtext und Xtend) zu lernen.
  • Der automatische Build ohne Eclipse für Continuous Integration ist noch optimierungswürdig.
  • Die Entwicklung einer DSL erfordert abstrakteres Denken, um Probleme allgemeiner zu formulieren.

DSLs bieten eine gute Möglichkeit, von technischen Problemen zu abstrahieren und sie dadurch fachlicher und verständlicher auszudrücken. Damit ist nicht mehr sichtbar, wie etwas passiert; der Fokus liegt allein darauf, was geschieht.

Ein prominentes Beispiel für diese deklarative Beschreibung eines Problems anhand einer DSL ist SQL. Hier wird beispielsweise geschrieben, was gelesen werden soll. Wie das geschieht, entscheidet jedoch die Datenbank. Das hat den Vorteil, dass sich die Implementierung wahlweise ändern lässt, ohne die Problembeschreibung anpassen zu müssen. Beispielsweise könnte man das obige sprechende Datenmodell behalten und lediglich den Java-Generator (POJO) durch einen C#-Generator (POCO) ersetzen und damit die komplette zugrunde liegende Technologie austauschen.

Xtext eignet sich gut zur einfachen Umsetzung von DSLs, da sich aufgrund der Nähe zu Java ein schneller Lernerfolg einstellt. Anhand eines 15-Minuten-Tutorials werden die wichtigsten Grundlagen zur Grammatik vermittelt und nach weiteren 15 Minuten ist man in der Lage, einen Generator zu schreiben, seine DSL zu testen und somit einen Produktivitätsgewinn zu erzielen. (ane)

Markus Amshove
ist Softwareentwickler und dualer Student der Wirtschaftsinformatik bei der Alten Oldenburger Krankenversicherung AG. In seinen aktuellen Projekten hat er mehrere domänenspezifische Sprachen mit Xtext erstellt.

Stefan Macke
ist Softwareentwickler und -architekt bei der Alten Oldenburger Krankenversicherung AG. Seit 2007 ist er dort außerdem Ausbilder für Anwendungsentwickler. In seinen aktuellen Projekten beschäftigt er sich mit der
Modernisierung von Altanwendungen auf Basis einer serviceorientierten Architektur mithilfe von Java.

Anzeige