Von den über 50 Projekten und Subprojekten des Eclipse-Galileo-Releases befassen sich allein 22 mit Modell-getriebener Softwareentwicklung. Gerade im Bereich Modeling scheint Eclipse zurzeit die Plattform zu sein, welche die innovativsten Lösungen hervorbringt. Xtext, das Framework zur Entwicklung domänenspezifischer Sprachen, gehört zu den neueren Modeling-Projekten, die zum ersten Mal in einem Eclipse Simultaneous Release vertreten sind. Wir sprechen mit Xtext-Entwickler Dr. Jan Köhnlein über das Xtext-Projekt und die Zukunft von MDD.
JAXenter: Hallo Herr Dr. Köhnlein. Können Sie zu Beginn kurz das Eclipse-Projekt Xtext vorstellen?
Dr. Jan Köhnlein: Xtext ist ein Framework für die Entwicklung textueller domänenspezifischer Sprachen (DSLs). Der User schreibt eine erweiterte Grammatik, aus der das Framework eine komplette, sprachspezifische IDE generiert: Ein Ecore-Modell für die abstrakte Syntax, einen Parser, einen Lexer, einen reichhaltigen Texteditor mit Syntax-Highlighting, Auto-Vervollständigung und Navigation etc. Ein Code-Generator kann ebenfalls leicht angeschlossen werden, sodass man mit Xtext extrem schnell produktiv wird.
JAXenter: Auf welche typischen Situationen im Entwicklungsprozess ist Xtext zugeschnitten?
Dr. Jan Köhnlein: Wenn die Verwendung von Frameworks zu geschwätzigem, stereotypem Code führt, wenn die eigentliche Information des Codes durch technische Details verdeckt wird oder wenn ein spezieller Viewpoint der Architektur eines Softwaresystems redundant und über viele Softwareartefakte verteilt implementiert werden muss. Kurz: Immer wenn die Abstraktionsmöglichkeiten der verwendeten Programmiersprache nicht mehr ausreichen, um Dinge präzise, redundanzfrei, suggestiv und nach Belangen getrennt zu formulieren, dann lohnt es sich, über den Einsatz von DSLs und damit Xtext nachzudenken.
JAXenter: Und was kann hier Xtext, was andere Modellierungswerkzeuge nicht können?
Dr. Jan Köhnlein: Zunächst fokussiert Xtext textuelle DSLs: Diese fühlen sich für den Programmierer natürlicher an und fügen sich oft besser in die existierende Tool-Welt ein als beispielsweise graphische DSLs. Xtext ist außerdem in den Grundkonzepten leicht zu erlernen, und die generierten Defaults decken die meisten Anwendungsfälle gut ab.
Darüber hinaus ist Xtext von vornherein auf Erweiterbarkeit hin gebaut, sodass sich Anpassungen fast überall sehr einfach und elegant vornehmen lassen.
JAXenter: Welche Neuerungen bringt die Galileo-Version von Xtext?
Dr. Jan Köhnlein: Für Galileo wurde die openArchitectureWare-Version von Xtext von Grund auf neuimplementiert. Besonderes Augenmerk lag dabei auf höherer Skalierbarkeit und Performanz. Viele vormals Xtend-basierte APIs wurden daher durch Java-Implementierungen abgelöst. Außerdem wurde die Integration mit EMF verbessert, sodass man Xtext jetzt beispielsweise auch als Serialisierungsformat für EMF-basiert Modelle benutzen kann. Zur Verbindung der funktionalen Bausteine benutzen wir jetzt Dependency Injection mit Google Guice.
JAXenter: Xtext wird als Subprojekt des Textual Modeling Frameworks (TMF) bei Eclipse aufgeführt. Wie ist der Zusammenhang zwischen Xtext und TMF?
Dr. Jan Köhnlein: Xtext ist derzeit die einzige lebendige Komponente im TMF-Projekt.
JAXenter: Spricht man mit verschiedenen Entwicklern über Model Driven Development, so bekommt man den Eindruck, dass viele dem MDD eher kritisch gegenüberstehen, weil sie das Gefühl haben, dabei die Kontrolle über den Code aus der Hand zu geben. Was sagen Sie zu solchen Kommentaren?
Dr. Jan Köhnlein: Das Problem mit vielen MD* Ansätzen ist, dass viele Versprechen gemacht und niemals eingelöst wurden. Stattdessen wurden eine Reihe von Standards ohne Referenzimplementierung etabliert, die sich als wenig praxistauglich erwiesen haben und auch mit schwergewichtigen, kommerziellen Tools schlecht handhabbar bleiben.
Ich bin der festen Meinung, dass Software-Entwickler und -Architekten selbst am besten wissen, welche Abstraktionen für ihre Architektur geeignet sind. Wenn diese mit den Mitteln der Programmiersprache nicht mehr abbildbar sind, benötigt man Werkzeuge, mit denen man seine eigenen DSLs und Code-Generatoren einfach umsetzen kann und die man selbst iterativ weiter entwickeln kann. Dieses Credo verfolgen wir schon seit openArchitectureWare und leben es jetzt im Eclipse-Projekt weiter.
Durch die Verwendung von Open-Source-Werkzeugen wird außerdem die Abhängigkeit von einzelnen Anbietern minimiert.
JAXenter: Welche Vorteile bringt die Beteiligung von Xtext am Eclipse Galileo Release Train?
Dr. Jan Köhnlein: Galileo hat uns einen festen Releaseplan und ein Minumium an Entwicklungsprozessen geliefert. Das hat uns manchmal auch die notwendige Disziplin verliehen, Dinge wirklich zu Ende zu bringen.
Außerdem fühlt es sich nicht nur gut an, ein Teil eines größeren Projektes zu sein, sondern verleiht auch eine gewisse Sichtbarkeit und Relevanz.
JAXenter: Wie wird Xtext nach Galileo weiterentwickelt?
Dr. Jan Köhnlein: Pläne gibt es viele: So wollen wir mit Xtext selbst domänenspezifische Sprachen für konfigurierbare Teilaspekte der IDE wie Validierung oder Scope-Definition erstellen. Die Spracherweiterung soll von Einfachvererbung auf Grammar-Mixins erweitert werden. Eine weitere Idee ist die Entwicklung einer nach Java kompilierbaren DSL für Expressions, da wir festgestellt haben, dass DSLs an dieser Stelle oft aus rein technischen Gründen abbrechen. Noch nichts davon ist fest beschlossen, aber es verspricht spannend zu bleiben.
JAXenter: Vielen Dank für dieses Gespräch.
Dr. Jan Köhnlein arbeitet als Software-Architekt und Berater bei der itemis AG in Kiel (Germany). Seine Spezialisierung liegt in der Entwicklung von Werkzeugen für modellgetriebene Software-Entwicklung. Er ist Committer für das Eclipse Modeling Projekt und für oAW.

























Kommentare