Freitag, 5. April 2013

STC 2013 Berlin - Modelltransformation mit .NET

Heute bin ich auf der Student Technologie Conference 2013 in Berlin und versuche mich mal an kurzem Liveblogging.

Die erste Session die ich besuche ist von Georg Hinkel zum Thema Modelltransformationen (M2M) mit .NET



Nach einer kurzen Einführung was Modelle, Metamodell und Modelltransformationen sind geht es los mit NMF. 

NMF Trnasformations bezieht sich dabei auf Modellltransformationen und stellt eine Bibliothek für Regelbasierte M2M Transformationen dar. 

Die Bibliothek ist in C# implementiert und ermöglicht es damit die Transformationsregeln in jeder beliebigen Sprache auf CLR-basis zu schreiben. 

Was bedeutet es Transformationen in C# zu schreiben? 
 - Volle IDE unterstützung 
 - Modularisierung wird unterstützt
 - Geringerer Lernaufwand 
 - Bessere Integration in bestehende Ecosysteme. 

Für mich persönlich sind die beiden letzten Punkte von besonderer Bedeutung  denn die etablierten Werkzeuge in der Modeltransformation finden sich im Java- und Eclipse-Umfeld.

Jetzt führt Georg ein Beispiel ein und zeigt uns ein Metamodell zu einem endlichen Zustandsautomaten und einem Petrinetz - das ganze scheint begründet mit seiner aktuellem Forschungsdomäne in Kooperation mit ABB. 



Die Transformation soll dann vom Zustandsautomaten hin zum Petrinetz führen. 



Nach der Vorstellung des Beispiels gibt es jetzt Code-Insight zu NMF. 

Eine Transformation wird bei NMF durch eine klasse repräsentiert, für das Beispiel erstellt Georg eine Klasse welche von ReflectiveTransformation erbt. 

In diese Klasse wird eine weitere Klasse eingebettet welche von einer SimpleTransformationRule<FiniteStateMachine> abgeleitet wird, in der nur eine Methode (Transform) überschrieben wird, diese Methode hat drei Parameter - Input, Output und einen Transformationskontext, wobei Input und Output unsere Modelle darstellen.

Mit einer zweiten Klasse soll ein Zustand der Statemachine in einen Platz des Petrinetzes transformiert werden. 

Beim Ausführen der Transformation startet eine Konsolenanwendung und gibt einen kurzen Statusbericht welche Elemente wie umgewandelt wurden.

Es geht weiter mit Requrements die für einen Transformationsreglen (Klassen) definierte werden können.

Ich schreibe jetzt hier nicht weiter über den Code des Beispiels, sondern hoffe, dass Georg diesen im Anschluss bereitstellt. - Update: Das gezeigte Beispiel ist auch Teil der mit NMF ausgelieferten Bespiele oder zumindest online verfügbar - In der Nachbereitung werden ich dann auch einen Link hier einstellen.

In der aktuellen Version von NMF gibt es noch kleine Schwierigkeiten beim Intellisens (etwas größere mit dem ReSharper) - aber ein Update was hier Hilfe verschafft soll bald folgen.

Mit Hilfe des Transformationskontext der überschriebenen "Transform"-Methode lässt sich z.B. bei einer Transition feststellen von welchem Zustand ich komme und zu welchem Zustand die Transition führt.

Ein Vorteil den Georg nennt ist die gute Lesbarkeit und Übersicht über den Code - für mich ist das gerade alles zu neu um das entsprechend abschätzen zu können, die Beispieltransformationen waren aber sehr gut verständlich.

So nach dem Beispiel folgt nun eine kleine Zusammenfassung:
Wir haben eine bestehende Sprache mit starker Toolunterstützung und einen funktionierenden Debugger. Gerade das Debuggen von Transformationen kann beim EMF doch sehr anstrengend werden.

Durch die Basis des .NET Frameworks ist es möglich bestehende Bibliotheken innerhalb der Transformationsregeln zu verwenden.

NMF Transformationen arbeiten bisher nur mit "InMemoryModellen" und erzeugt am Ende Objekte - was wir mit diesen Objekten machen ist natürlich vollkommen offen wir könnten sie im XMI Format serialisieren.

Damit ist der sehr informative Vortrag beendet -Danke Georg!






Keine Kommentare:

Kommentar veröffentlichen