February 10, 2010

Best Practices für die Entwicklung von DSLs

Einen sehr interessanten Vortrag von Markus Völter auf der JAX 2009 gibt es jetzt als Video Stream. Seine Ausführungen stimmen zu sehr großen Teilen mit meinen Erfahrungen/Erkenntnissen im Bereich der modellgetriebenen Softwareentwicklung überein.

An dieser Stelle ein paar unsortierte Erkenntnisse, die mir nach dem Ansehen des Vortrags im Kopf herumschwirren. Für eine konkrete Einordnung in den Kontext sei an dieser Stelle nochmals das Video empfohlen.
  • Verwendung von Standards ≠ Verständnis
    • gutes Beispiel UML + Profil was Standard (OMG) ist, aber durch die spezifische Stereotypen etc. nicht zwingend verständlich ist
    • eine klar definierte DSL mit begrenztem Scope ist meistens die bessere Alternative, da einfach auch die Toolunterstützung bzw. die Handhabung einfacher ist (z. B. Xtext)
  • die Spezifikation eines UML Profils ist mühselig, komplex und unnötig aufwändig ebenso die Verwendung/Interpretation (bspw. in einem Generator)
  • die Verwendung von verschiedenen Tools ist problematisch, erzeugt inhaltliche Brüche und führt zu unnötigen/nervigen Problemen
  • Modell-zu-Modell (M2M) Transformationen sind sinnvoll um die Komplexität von Generatoren bzw. Templates zu reduzieren
  • Prozess von Entwicklung DSLs:
    • siehe Bild rechts (Screenshot aus den Video)
    • viele, sehr kurze Iterationszyklen
  • Textuelle DSLs sind eine pragmatische Lösung, die schnell zu ersten Ergebnissen führen
    • fühlt sich an sich wie Programmieren an
    • Benutzung von seit Jahren bewährten und ausgereiften Konzepten/Tools (z. B. Eclipse Editoren)
    • wenig Probleme hinsichtlich Zusammerarbeit, da bekannte Konzepte/Techniken für Quellcode verwendet werden können (CVS/SVN, Diff/Merge, ...) - das geht natürlich auch mit XMI (abstrakte Syntax), aber das ist wirklich nicht praxistauglich » bei textuellen DSLs funktioniert das auf der konreten Syntax!
    • einfache Skalierung, Partitionierung
    Teilschritte einer Iteration zur Entwicklung einer DSL

No comments:

Post a Comment