Statemaschines
Einführung
Das rosoftlab Framework fuer Statemachines besteht aus einer kompletten Reihe von Wekzeugen die das Entwickeln von Statemachines von der Modellierung bis hin zur Visualisierung und zum Debugging unterstuetzen.
Die Systemkomponenten sind in folgender Abbildung dargestellt.
Visualisierung und Modellierung
Dieses auf .net Aufgebaute Tool wird zur Visualisierung modellierter Statemachines verwendet. Folgende Abbildung zeigt das Tool waehrend einer Debug-Sitzung.
Es koennen gleichzeitig alle Statemachines des Systems visualisiert werden. Der aktuelle Zustand wird dabei rot markiert und Zustandsuebergaenge sind in Echtzeit beobachtbar, d.h. waehrend die Anwendung auf der Zielplatform lauft.
Fuer das Anzeigen der Modellierten Statemachines kommt eine Opensource Graph-layout und Visualisierungs-Library zum Einsatz.
Im Log-Fenster koennen die Ausgegebenen Logs der Zielanwendung verfolgt werden. Dabei ist es Moeglich ueber einen oder mehrere Regulaere Ausdruecke, bestimmte Zeilen zu suchen oder die ganze Log-ausgabe zu filtern (fuer UNIX Kenner: geschachtelte greps).
Aktuell in Arbeit ist die neue Generation des Visualisierungs- und Modellierungstool. Dieses baut auf WPF/.net 3.5 und es gibt nun die Moeglichkeit, Statemachines und andere Domaenen-Spezifische Modelle direkt in Graphischer form zu bearbeiten, parallel oder alternativ zur Bearbeitung des XML-Modells.
Das hier Vorgestellte Tool haengt stark mit dem rosoftlab OGenerator Framework fuer Codegenerierung zusammen, welches in einem Separaten Whitepaper beschrieben ist.
Codegenerator für Statemaschines
Der Codegenerator fuer Statemachines ist ein Tool welches auf das OGenerator Framework fuer Codegenerierung aufbaut. Es unterstuetzt unter anderem die Modellierung von:
• Zustandsmaschinen
• Zustaende
• Ereignisse (Events)
• Zustandsuebergaenge bei Ereignisse oder bei Methondenaufrufe
• Bedingungen fuer Zustandsuebergaenge
• Beliebig geschachtelte Unterzustaende
• Event pipes
• Threads in denen die Zustandsmaschinen laufen
• Klassen die Zustandsmaschinen enthalten (mit Members, Methoden, Vererbung, etc.)
Aus diesem Modell wird die Implementierung der Zustandsmaschinen (aktuell C++) generiert. Der erzeugte Quellcode ist fertig instrumentiert um mit dem Visualisierungstool zu funktionieren. Round trip engineering wird unterstuetzt.