Showing posts with label MDA. Show all posts
Showing posts with label MDA. Show all posts

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

April 15, 2009

Kurzüberblick DSL-Frameworks

Erschien schon vor einiger Zeit, bietet aber einen guten, kurzen Überblick über das aktuelle Leistungsvermögen von Entwicklungsumgebungen zur Definition von DSLs.

June 3, 2008

openarchitectureware 4.3

Seitdem ich mich im Rahmen meiner Diplomarbeit intensiv mit openarchitectureware (oaw) 4.1.2 auseinandergesetzt habe, gab es mittlerweile zwei neue Releases. Demzufolge interessieren mich die Neuerungen bzw. Verbesserungen. Einige möchte ich nun hier in komprimierter Form wiedergeben:

  • Konfiguration von Workflows (XVar)

  • XWeave zur aspektorientierten Modellierung

  • Aspektorientiert Programmierung für Xtend (siehe Referenz)

  • Veränderte Einbindung von Advices für Templates in der Generatorkomponente
    <advices value='example::Advices1, example::Advices2'/>


  • neuer Editor zur Bearbeitung von Modellen (Generic Editor), der nur die wesentlichen Eigenschaften übersichtlich darstellt und anpassbar ist (Validierung, Icons & Labels, Vervollständigung)

  • Validierung von Check-Regeln in Standard-EMF-Editoren

  • Erzeugen von Recipe-Checks per Ant

  • Integration der Recipe-Fehler in die Eclipse Entwicklungsumgebung

  • Erweiterungen der textuellen Metamodellierung (Xtext)

  • Speichern von temporären Eigenschaften an einem Objekt
    extension org::openarchitectureware::util::stdlib::elementprops;

    setProp(Object o) :
    o.setProperty('myProp', 123);

    Object getProp(Object o) :
    o.getProperty('myProp');


  • Globale Variablen
    org::openarchitectureware::util::stdlib::globalvar


  • Eindeutige Id eines Elements
    org::openarchitectureware::util::stdlib::uid


  • Tracing von Modell-zu-Text und Modell-zu-Modell Transformationen in einem Tracing-Modell, woraus ein HTML-Report erstellt werden kann