Mittwoch, 19. Mai 2010

Warum XText?

Für die Verwendung des XText-Frameworks zur Umsetzung des Fachsprachsystems gibt es mehrere gute Gründe. Einerseits lassen sich damit externe DSLs (Domain Specific Languages) erstellen. Diese können eine völlig neu definierte Syntax besitzen, was von Vorteil ist, wenn so eine Sprache von einem Domänen-Experten benutzt werden soll und nicht von einem Softwareentwickler. Im Gegensatz dazu ist man bei einer internen DSL von deren Wirtsprache abhängig. Beim Testen von verschiedenen Ansätzen hat sich XText als sehr geeignet für das System herausgestellt, wodurch es dabei geblieben ist. Deshalb wird hier nun nicht weiter auf interne DSLs eingegangen.

Wer mehr über interne und externe DSLs erfahren möchte, dem empfehle ich die Homepage von Martin Fowler. Hier findet man einen kurzen Artikel über DSLs; mehr Informationen findet man in seinem Work-In-Progress Buch "Domain Specific Languages", welches auch über die Seite erreichbar ist.

Das Einsatzgebiet das Fachsprachsystems für Akzeptanztests sind datenbankbasierte Applikationen. Da XText sehr eng mit dem Eclipse Modeling Framework (EMF) integriert ist, kann man die gesamte damit verbundene Technologie zur modellgetriebenen Entwicklung mit verwenden, von der Erstellung eines Domänen-Modells bis hin zur Persistenz. Diese Schritte werden nach und nach in diesem Blog dokumentiert werden.

Davon abgesehen ist die Verwendung einer Plattform wie Eclipse im Allgemeinen von Vorteil. Hier besteht die Möglichkeit, ein Plugin oder eine RCP-Anwendung zu erstellen, mit welchem der Domänen-Experte Tests formulieren kann und der Softwareentwickler diese in seiner Arbeitsumgebung verwenden kann bzw. die Funktionalität dazu implementiert.


Zusammenfassung

Weshalb verwende ich XText:
  • Externe DSL mit frei definierbarer Syntax
  • Anbindung an Eclipse Modeling Framework
  • Nutzung der Eclipse Plattform
Alles zu XText findet man auf dessen Projektseite auf Eclipse.org. Im nächsten Post möchte ich die Installation von XText etwas genauer beschreiben.