Werkzeuge für domänenspezifische Sprachen

Seite 4: Microsoft DSL Tools, Oslo

Inhaltsverzeichnis

Die DSL Tools sind Microsofts erster Versuch im Bereich der DSLs, Oslo (siehe unten) ist der zweite. Von der Struktur her sind sie stark an Eclipse Modeling angelehnt. Mit dem Meta Data Framework (MDF) lässt sich die abstrakte Syntax (das Metamodell) von DSLs definieren – MDF ist von seiner Ausdrucksmächtigkeit her mit EMF vergleichbar. Danach kann man für die DSL eine grafische Box-and-Line-Syntax definieren. Die Werkzeuge sind etwas einfacher zu benutzen als die von GMF, und die erstellten Editoren lassen sich in Visual Studio integrieren. Zur Entwicklung von Codegeneratoren existieren unterschiedliche Template Engines: T3 und T4. Sie sind von ihrer Mächtigkeit allerdings nicht mit Eclipse Xpand vergleichbar.

Der Vorteil der DSL Tools liegt insbesondere in ihrer Integration in die Microsoft-Tools sowie ihrer Konsistenz. Im Gegensatz zu Eclipse Modeling gibt es in der Microsoft-Welt keinen Zoo von mehr oder weniger zusammenpassenden Komponenten, aus denen der Benutzer sich ein geeignetes Subset auswählen muss. Stattdessen sind die Bestandteile der DSL Tools aufeinander abgestimmt und funktionieren gut miteinander. Natürlich fehlt auf der anderen Seite die Flexibilität und Offenheit aus der Eclipse-Welt.

Auf der PDC im Oktober 2008 erstmals vorgestellt, ist Oslo Microsofts zweiter Versuch im Bereich DSLs. Im Gegensatz zu den DSL Tools scheint es, dass der Softwareriese in Oslo ein strategisches Vorhaben sieht. Außer ein paar Entwicklern in Cambridge schien sich bei Microsoft keiner so recht für die DSL Tools zu interessieren. Oslo besteht aus unterschiedlichen Komponenten und Sprachen. Quadrant ist das primäre Werkzeug zum Umgang mit Modellen, textuell oder grafisch. Zur Speicherung von Modellen kommt ein auf dem SQL Server aufsetzendes Repository zum Einsatz. Für die Definition von abstrakter und konkreter Syntax sowie zum Zugriff auf Modelle aus dem Quellcode wird die M-Sprachfamilie verwendet. M besteht aus drei Teilsprachen:

  • MSchema dient zur Definition von Datenstrukturen, ähnlich wie XML Schema, verwendet aber eine angenehmere Syntax. Anknüpfend an obige Erläuterungen dient MSchema zur Definition der abstrakten Syntax von Sprachen.
  • MGrammar ist eine Sprache zur Grammatikdefinition. Mit ihr legt man letztendlich die textuelle konkrete Syntax und ihre Abbildung auf MSchema fest.
  • MGraph dient letztlich der Beschreibung der tatsächlichen Nutzdaten von Modellen und entspricht damit mehr oder weniger XML.

Ein Hinweis am Rande: Die Unterscheidung in die drei Teilsprachen bleibt vermutlich nicht so klar, wie es hier scheint. In einem Interview mit "Software Engineering Radio" hat Doug Purdy erläutert, dass die Entwickler die drei Sprachen gerade mehr oder weniger in einen Formalismus überführen.

Grammatikdefinition MGrammar in Intellipad (Abb. 6)

Neben Quadrant als primärem Werkzeug für den Umgang mit Modellen gibt es zur Definition und zum Testen von abstrakter Syntax und Grammatiken ein Tool namens Intellipad. Mit ihm lassen sich interaktiv Grammatiken definieren. Es wird vermutlich mittelfristig in Quadrant integriert. Diverse Compiler und Kommandozeilen-Tools runden das Paket ab.

Bei Betrachtung der Oslo-Tools fällt auf, das nicht von Werkzeugen zum Bau von Codegeneratoren die Rede ist. Das liegt daran, dass der Hersteller derzeit vor allem Interpreter im Hinterkopf hat. Dafür gibt es zwei Gründe:

  • Zum einen hat Microsoft in der Vergangenheit gute Erfahrungen mit Plattformen gemacht, die XML Konfigurationsdateien interpretiert haben. Windows Communication Foundation (WCF) und Windows Workflow Foundation (WWF) sind Beispiele dafür. Das Problem bei diesen Plattformen war vor allem die schlechte Syntax von XML und nicht der interpretative Ansatz. Die Redmonder wollen in erster Linie diesen Ansatz auf eine solide Basis stellen, indem Oslo eine anpassbare Syntax und ein vernünftiges Repository zur Verfügung stellt.
  • Zum anderen existieren ja immer noch die DSL Tools. Sie sind für grafische DSLs optimiert und enthalten Werkzeuge zur Codegenerierung. Es drängt sich der Eindruck auf, dass sich Microsoft nicht selbst Konkurrenz machen will. Im erwähnten SE-Radio-Interview sagte Purdy auch, dass es mittelfristig eine Zusammenführung der beiden Welten geben werde, sodass man beispielsweise grafische Editoren für mit MSchema definierte abstrakte Syntax festlegen oder mit den Generator-Werkzeugen der DSL Tools Code aus MGraph generieren kann. Anzunehmen ist, dass die DSL Tools mittelfristig in Oslo landen werden.

Der aktuelle Stand von Oslo ist der einer Technology Preview. Es gibt kein Release-Datum, kein eindeutiges Produkt – es liegt auch noch nicht als Beta vor. Im Laufe der nächsten Monate oder Jahre will das Oslo-Team in regelmäßigen und recht kurzen Abständen Drops der Werkzeugkette veröffentlichen, insbesondere in Abstimmung mit Konferenzen oder anderen relevanten Events.