# Virtueller endlicher Automat

Ein endlicher Automat, definiert in virtueller Umgebung, heißt virtueller endlicher Automat (englisch virtual finite state machine, VFSM). VFSM ist eine Spezifikationstechnik, eingesetzt, um das Verhalten von logischen Systemen mit Hilfe von Eingabe-Steuerungseigenschaften und Ausgabe-Aktionen zu beschreiben.
VFSM führt ein Logik-Ausführungsmodell ein und ermöglicht die Realisierung einer ausführbaren Spezifikation. Diese Technologie wird hauptsächlich in komplexen Maschinensteuerungen, Messtechnik und Telekommunikationsanwendungen eingesetzt.

## Steuerungseigenschaften

Eine Variable in der Umgebung einer VFSM kann einen oder mehrere Werte haben, die relevant für die Steuerung sind – dann handelt es sich um eine Eingabevariable. Diese Werte werden als Steuerungseigenschaften dieser Variable bezeichnet. Die Steuerungseigenschaften sind nicht notwendigerweise spezifische Datenwerte, sondern meistens bestimmte Zustände der Variable. Zum Beispiel kann eine digitale Variable entsprechend der möglichen booleschen Datenwerte die Steuerungseigenschaft WAHR oder FALSCH, aber auch UNBEKANNT haben. Eine numerische analoge Variable hat Steuerungseigenschaften wie NIEDRIG, GUT, HOCH oder UNBEKANNT entsprechend dem vorgegebenen Wertebereich. Ein Timer wird ÜBERLAUF als die wichtigste Steuerungseigenschaft haben, andere könnten STEHT oder LÄUFT sein.

## Aktionen

Eine Variable in der Umgebung einer VFSM kann durch Aktionen aktiviert werden – dann handelt es sich um eine Ausgabe-Variable. Zum Beispiel kennt eine digitale Variable zwei Aktionen: Wahr und Falsch. Eine numerische analoge Variable kennt eine Aktion: Setzen. Ein Timer, der zugleich eine Eingabe- und Ausgabevariable ist, kann aktiviert werden durch Aktionen wie Start, Stopp oder Zurücksetzen.

## Virtuelle Umgebung

Die Virtuelle Umgebung charakterisiert eine Umgebung, in der die VFSM wirkt und die durch drei Mengen von Namen definiert ist:
* Eingabenamen repräsentieren die Steuerungseigenschaften aller Variablen
* Ausgabenamen repräsentieren alle möglichen Aktionen, die auf die Variablen ausgeübt werden können
* Zustandsnamen, wie für die Zustände der FSM definiert
Die Eingabenamen werden benutzt, um virtuelle Bedingungen zu bauen und um Zustandsübergänge und Eingabeaktionen zu kontrollieren. Die virtuellen Bedingungen werden unter Zuhilfenahme der Positive Logic Algebra erstellt. Die Ausgabenamen werden benutzt, um Aktionen auszulösen (Eingangsakationen, Ausgangsaktionen, Eingabeaktionen und Übergangsaktionen).

## Positive Logic Algebra

Um virtuelle Bedingungen zu bauen, werden die booleschen Operatoren AND und OR verwendet. Der NOT-Operator ist nicht erlaubt, weil die Eingabenamen nicht negiert werden können, auch wenn sie offensichtlich boolesche Variablen beschreiben. Sie existieren einfach oder sie existieren nicht.

## VFSM-Ausführungsmodell

Eine Untermenge aller definierten Eingabenamen, die nur in einer bestimmten Situation existieren kann, wird als Virtuelle Eingabe bezeichnet (eng. Virtual Input, VI). Zum Beispiel, die Temperatur kann entweder nur zu niedrig, gut oder zu hoch sein. Obwohl drei Eingabenamen definiert sind, kann nur einer von ihnen in einer bestimmten Situation existieren. Dieser Name gehört zum VI.
Eine Untermenge aller definierten Ausgabenamen, die nur in einer bestimmten Situation existieren kann, wird als Virtuelle Ausgabe bezeichnet (eng. Virtual Output, VO). VO besteht aus den aktuellen Aktionen der VFSM.
Die Spezifikation des Verhaltens, die sämtliche Zustände der VFSM beinhaltet, wird durch eine Zustandstabelle beschrieben.
Die VFSM-Ausführung wird durch VI und den aktuellen Zustand bestimmt. Unter Berücksichtigung der Spezifikation des Verhaltens des aktuellen Zustandes wird VO gesetzt.
Die Grafik zeigt eine mögliche Implementierung der VFSM-Ausführung. Ausgehend von der Implementierung ergibt sich ein typisches Verhalten des Systems.

## Zustandstabelle

Eine Zustandstabelle definiert alle Einzelheiten eines Zustandes einer VFSM. Sie besteht aus drei Spalten: in der ersten Spalte werden Zustandsnamen benutzt, in der zweiten Spalte die virtuellen Bedingungen aus Eingabenamen unter Zuhilfenahme der Positive Logic Algebra gebaut und in der dritten erscheinen die Ausgabenamen.
Zustandstabelle :
| Zustandsname | Bedingung VI | Aktion VO |
| Aktueller Zustand | Eingangsaktion | Ausgabeaktion |
| Aktueller Zustand | Ausgangsaktion | Ausgabeaktion |
| Aktueller Zustand | Virtuelle Bedingung | Ausgabeaktion |
| Aktueller Zustand | ... | ... |
| Nächster Zustand | Virtuelle Bedingung | Ausgabeaktion(en) |
| Nächster Zustand | Virtuelle Bedingung | Ausgabeaktion(en) |
Die Tabelle wird wie folgt gelesen: die ersten zwei Zeilen definieren die Ein- und Ausgangsaktionen des aktuellen Zustandes. Die folgenden Zeilen zum gleichen Status repräsentieren die Eingabeaktionen. Die Zeilen für weitere Zustände beschreiben deren Zustandsübergänge und Übergangsaktionen. Alle Felder sind optional.
Eine kombinatorische VFSM wird gebaut, indem nur die Zeilen für die Eingabeaktionen benutzt werden. Die Übergangsaktionen können durch entsprechenden Einsatz der anderen Aktionen ersetzt werden.

## Tools

* StateWORKS – Eine Implementierung des VFSM Konzeptes (englisch)

## Referenzen

* Wagner, F., "The Virtual Finite State Machines: Executable Control Flow Specification", Rosa Fischer-Löw Verlag, 1994, ISBN 3-929465-04-3
* Wagner, F., "Modeling Software with Finite State Machines: A Practical Approach", Auerbach Publications, 2006, ISBN 0-8493-8086-3
* VFSM Executable Specification, CompEuro 1992 Proceedings (englisch; PDF;)
* State machine misunderstandings, IEE journal "Computing and Control Engineering", 1997 (englisch; PDF;)
* The Virtual Finite State Machine Design and Implementation Paradigm, Bell Labs Technical Journal, 1997 (englisch; PDF;)
* A Modern Real-Time Software Design Tool: Applying Lessons from Leo, IEE journal "Computing and Control Engineering", 2003 (englisch; PDF;)
* Modelling and Building Reliable, Re-usable Software., Engineering of Computer -Based Software 2003 (ECBS'03) Proceedings (englisch; PDF;)
* Closing the Gap Between Software Modelling and Code, Engineering of Computer -Based Software 2004 (ECBS'04) Proceedings (englisch; PDF;)
* , Wagner, T., "VFSMML - XML standard for VFSM", 2004 (englisch)