Werkzeuge für domänenspezifische Sprachen

Domänenspezifische Sprachen werden als Teil der modernen Softwareentwicklung immer wichtiger, die dazugehörige Tool-Landschaft entwickelt sich spürbar weiter.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 21 Min.
Von
  • Markus Völter
  • Alexander Neumann
Inhaltsverzeichnis

Domänenspezifische Sprachen werden als Teil der modernen Softwareentwicklung immer wichtiger, die dazugehörige Tool-Landschaft entwickelt sich spürbar weiter. Die neuesten Kandidaten sind Microsofts Oslo sowie MPS von JetBrains, die in Konkurrenz zu den bewährten Werkzeugen der Eclipse-Welt, MetaEdit+ und Microsofts DSL Tools treten.

Um mit domänenspezifischen Sprachen (Domain-Specific Languages = DSLs) effizient arbeiten zu können, braucht man Werkzeuge. Zunächst sind das solche zur Erstellung der DSLs und entsprechende Editoren. Des Weiteren benötigt man Plattformen und Tools, um Interpreter oder Codegeneratoren für die Sprachen zu erstellen. Je nach Werkzeug kommen noch Laufzeitumgebungen für die Editoren sowie mehr oder weniger skalierbare Repositories zum Speichern von großen oder vielen Modellen dazu.

Gerade beim Editieren von Programmen und Modellen – Programm und Modell wird hier synonym verwendet – sind Entwickler durch moderne Entwicklungsumgebungen (für textuelle Sprachen) und UML-Werkzeuge (für grafische Sprachen) ziemlich verwöhnt, und diesen Komfort möchte man für DSLs nicht missen. Selbstverständlich will auch derjenige, der die Sprachen und Editoren entwickelt, diesen Luxus für seine Arbeit in Anspruch nehmen. Man braucht hierfür Sprach-IDEs. Martin Fowler hat diese vor ein paar Jahren als Language Workbenches bezeichnet.

Der Artikel geht auf einige von diesen ein und zeigt ihre Stärken und Schwächen auf. Ein entscheidendes Auswahlkriterium war, an den jeweiligen werkzeugen allgemein verbindliche Eigenschaften zu zeigen. Einige sind bewährt und im rauen Alltag einsetzbar, andere noch neu oder gerade erst im Entstehen. Zunächst aber ein Überblick über die Bestandteile von DSLs.