Deterministische Zustandsautomaten sind seit Jahrzehnten in der Softwareentwicklung üblich, erreichen aber schnell große Komplexität, wenn sehr viele Zustände zusammen in einem Modell betrachtet werden. Diese Komplexität reduziert die Lesbarkeit des Zustandsdiagramms. Eine bedeutende Erweiterung um die Komplexität zu reduzieren wurde daher von Harel für Zustandsautomaten entwickelt:
Ein Zustand kann zusammengesetzt sein aus anderen Zuständen, damit kann eine Hierarchie von Zuständen erstellt werden. Zwei oder mehr Zustände können parallel verarbeitet werden, was es ermöglicht parallele Prozesse abzubilden. Weiterhin kann ein Zustand seine aktuelle Zustandskonfiguration beim Verlassen des Zustands abspeichern. Wenn der Zustand dann erneut aktiv wird, kann die vorher gespeicherte Zustandskonfiguration wiederhergestellt werden.
SCXML greift die Ideen von Harel auf, denn es basiert auf Harel statecharts und CCXML (Call Control XML). Bei SCXML handelt es sich unabhängig von Human Machine Interfaces um eine Möglichkeit einen Prozess zu steuern. Es bietet die Möglichkeit Verhaltenslogik über einen Zustandsautomaten abzubilden und gehört zum Bereich Model-Driven Development. SCXML verarbeitet automatisch Zustände, Zustandsübergänge sowie Ereignisse und ermöglicht parallele Abläufe.
Einige Anwendungsszenarien sind:
– SCXML als neu zu verwendender Standard für CCXML 2.0 eingesetzt bei VoiceXML;
– Multimodale Anwendungen als Interaktionsmanager;
– Entwicklung von Benutzerschnittstellen;
– Hardwareprogrammierung/VHDL;
– Als allgemeine Steuerungssprache für Prozesse;
– Protokollverarbeitung mit endlicher Anzahl Zustände
Ziel dieses Papers ist die Evaluation von SCXML zur Nutzung in Model-Driven Development anhand der Implementierung des Qt Creators und Qt Frameworks. Dafür wurde die bestehende Implementierung in Qt gezielt nach Stärken und Schwächen untersucht und ein Praxisbeispiel als Widget-basierte Qt-Anwendung entwickelt um die Anwendbarkeit im Kontext für HMI-Design zu testen. Es soll herausgefunden werden, ob man eine Qt-Anwendung durch einen Zustandsautomaten steuern kann, ohne dass die Verhaltenslogik zusätzlich in C++ ausgedrückt werden muss.
Inhaltsverzeichnis
- 1 Einleitung
- 2 Grundlagen
- 2.1 Dateiformat und Notation
- 2.2 Deklarative Elemente in einem SCXML-Dokument
- 2.3 Imperative Elemente in einem SCXML-Dokument
- 2.4 Ausführungsumgebung
Zielsetzung und Themenschwerpunkte
Dieses Paper evaluiert die Eignung von SCXML für Model Driven Development im Kontext des Qt Creator und Qt Frameworks. Es untersucht die Implementierung von SCXML in Qt hinsichtlich Stärken und Schwächen und präsentiert ein Praxisbeispiel, um die Anwendbarkeit im HMI-Design zu testen. Die zentrale Fragestellung ist, ob Qt-Anwendungen mittels Zustandsautomaten gesteuert werden können, ohne zusätzliche Verhaltenslogik in C++ formulieren zu müssen.
- Evaluation von SCXML in der Qt-Implementierung
- Anwendbarkeit von SCXML im HMI-Design
- Model Driven Development mit SCXML und Qt
- Vergleich von SCXML mit anderen Zustandsautomatenmodellen
- Integration von deklarativer (SCXML) und imperativer (C++) Logik
Zusammenfassung der Kapitel
1 Einleitung: Dieses Kapitel führt in die Thematik der Zustandsautomaten und deren Komplexität ein. Es beschreibt die Vorteile der von Harel entwickelten Erweiterung für Zustandsautomaten und stellt SCXML als eine darauf basierende, vom W3C empfohlene Sprache vor. Es werden verschiedene Anwendungsszenarien von SCXML genannt, bevor die Zielsetzung des Papers, die Evaluation von SCXML für Model Driven Development mit Qt, präzise formuliert wird. Der Fokus liegt auf der Untersuchung der bestehenden Qt-Implementierung und der Entwicklung eines Praxisbeispiels zur Überprüfung der Anwendbarkeit im HMI-Design.
2 Grundlagen: Dieses Kapitel erklärt die Grundlagen von SCXML, beginnend mit dem Dateiformat und der Notation, die auf XML basiert und keine Layoutinformationen enthält. Es werden die wichtigsten deklarativen Elemente wie Zustände (
Schlüsselwörter
SCXML, State Chart XML, Qt SCXML, Qt Creator, Qt Framework, UML Statechart, UML State Machine, Model Driven Development, HMI Design, Zustandsautomat, deterministische Ausführung, parallele Verarbeitung, deklarative Programmierung, imperative Programmierung, C++
Häufig gestellte Fragen (FAQ) zu "Evaluation von SCXML für Model Driven Development mit Qt"
Was ist der Inhalt dieses Papers?
Dieses Paper evaluiert die Eignung von SCXML (State Chart XML) für Model Driven Development im Kontext des Qt Creator und Qt Frameworks. Es untersucht die Implementierung von SCXML in Qt, analysiert Stärken und Schwächen und präsentiert ein Praxisbeispiel zur Anwendbarkeit im HMI-Design. Der Fokus liegt darauf, ob Qt-Anwendungen mittels Zustandsautomaten gesteuert werden können, ohne zusätzliche Verhaltenslogik in C++ schreiben zu müssen.
Welche Themen werden im Paper behandelt?
Das Paper umfasst eine Einleitung, Grundlagen von SCXML (Dateiformat, deklarative und imperative Elemente, Ausführungsumgebung), eine Zusammenfassung der Kapitel, sowie eine Diskussion der Zielsetzung und der wichtigsten Themenschwerpunkte. Es werden die Anwendbarkeit von SCXML im HMI-Design, Model Driven Development mit SCXML und Qt, sowie ein Vergleich mit anderen Zustandsautomatenmodellen behandelt. Die Integration von deklarativer (SCXML) und imperativer (C++) Logik spielt ebenfalls eine wichtige Rolle.
Welche Kapitel umfasst das Paper?
Das Paper besteht mindestens aus zwei Kapiteln: einer Einleitung und einem Kapitel zu den Grundlagen von SCXML. Die Einleitung führt in die Thematik der Zustandsautomaten ein, stellt SCXML vor und definiert die Zielsetzung des Papers. Das Kapitel "Grundlagen" erklärt das Dateiformat, die Notation, die deklarativen und imperativen Elemente von SCXML und die Ausführungsumgebung.
Was sind die wichtigsten deklarativen Elemente in SCXML?
Zu den wichtigsten deklarativen Elementen in SCXML gehören Zustände (<state>), Zustandsübergänge (<transition>), Ereignisse (<send>), parallele Zustände (<parallel>) und historische Zustände (<history>). Das Paper beschreibt diese Elemente detailliert inklusive ihrer Eigenschaften und Funktionalitäten.
Wie wird imperative Logik in SCXML mit Qt integriert?
Das Paper beschreibt die Integration von imperativer Logik, insbesondere die Verwendung von C++ in Qt, innerhalb des SCXML-Frameworks. Es wird gezeigt, wie deklarative (SCXML) und imperative (C++) Logik kombiniert werden können.
Welche Schlüsselwörter sind relevant für dieses Paper?
Schlüsselwörter sind: SCXML, State Chart XML, Qt SCXML, Qt Creator, Qt Framework, UML Statechart, UML State Machine, Model Driven Development, HMI Design, Zustandsautomat, deterministische Ausführung, parallele Verarbeitung, deklarative Programmierung, imperative Programmierung, C++.
Was ist die zentrale Forschungsfrage des Papers?
Die zentrale Fragestellung ist, ob Qt-Anwendungen mittels Zustandsautomaten (mittels SCXML) gesteuert werden können, ohne zusätzliche Verhaltenslogik in C++ formulieren zu müssen.
Für wen ist dieses Paper relevant?
Dieses Paper ist relevant für Entwickler, die sich mit Model Driven Development, Zustandsautomaten, dem Qt Framework und SCXML auseinandersetzen. Es ist besonders interessant für diejenigen, die an der Entwicklung von HMIs (Human Machine Interfaces) interessiert sind.
- Quote paper
- Bernd Noetscher (Author), 2018, Human Machine Interface Design mit State Chart XML, Munich, GRIN Verlag, https://www.grin.com/document/424857