Una máquina virtual de estados finitos ( VFSM ) es una máquina de estados finitos (FSM) definida en un entorno virtual . El concepto de VFSM proporciona un método de especificación de software para describir el comportamiento de un sistema de control utilizando nombres asignados a las propiedades de control de entrada y las acciones de salida .
El método VFSM introduce un modelo de ejecución y facilita la idea de una especificación ejecutable. Esta tecnología se utiliza principalmente en aplicaciones de control de máquinas complejas , instrumentación y telecomunicaciones .
Por qué
La implementación de una máquina de estados requiere la generación de condiciones lógicas (condiciones de transición de estado y condiciones de acción). En el entorno de hardware, donde las máquinas de estados encontraron su uso original, esto es trivial: todas las señales son booleanas . En cambio, las máquinas de estados especificadas e implementadas en software requieren condiciones lógicas que son intrínsecamente multivaluadas :
- La temperatura podría ser baja, normal o alta.
- Los comandos pueden tener varios valores: Init, Start, Stop, Break, Continue
- En un sistema de control jerárquico, las máquinas de estado subordinadas pueden tener muchos estados que se utilizan como condiciones de la máquina de estado superior.
Además, las señales de entrada pueden ser desconocidas debido a errores o fallos de funcionamiento, lo que significa que incluso las señales de entrada digitales (consideradas como valores booleanos clásicos) son en realidad 3 valores: Bajo, Alto, Desconocido.
Un álgebra lógica positiva resuelve este problema mediante la virtualización , creando un entorno virtual que permite especificar máquinas de estados para software que utilizan variables multivaluadas.
Propiedades de control
En el entorno VFSM, una variable de estado puede tener uno o más valores relevantes para el control ; en tal caso, se trata de una variable de entrada. Estos valores constituyen las propiedades de control de la variable. Las propiedades de control no son necesariamente valores de datos específicos, sino estados determinados de la variable. Por ejemplo, una variable digital podría proporcionar tres propiedades de control: VERDADERO, FALSO y DESCONOCIDO, según sus posibles valores booleanos. Una variable de entrada numérica (analógica) tiene propiedades de control como BAJO, ALTO, CORRECTO, MALO y DESCONOCIDO, según su rango de valores deseados. Un temporizador puede tener su estado FINALIZADO (tiempo de espera agotado) como su valor de control más significativo; otros valores podrían ser DETENIDO o EN EJECUCIÓN.
Comportamiento
En el entorno VFSM, otras variables de estado pueden activarse mediante acciones; en tal caso, se trata de una variable de salida. Por ejemplo, una salida digital tiene dos acciones: Verdadero y Falso. Una variable de salida numérica (analógica) tiene una acción: Establecer. Un temporizador, que es a la vez variable de entrada y de salida, puede activarse mediante acciones como: Iniciar, Detener o Reiniciar.
Entorno virtual

El entorno virtual caracteriza el entorno de ejecución en el que opera una máquina virtual . Se define mediante tres conjuntos de nombres:
- Los nombres de entrada representan las propiedades de control de todas las variables disponibles.
- Los nombres de salida representan las acciones disponibles sobre las variables.
- nombres de los estados , tal como se definen para cada uno de los estados del FSM.
Los nombres de entrada crean condiciones virtuales para realizar transiciones de estado o acciones de entrada. Estas condiciones virtuales se construyen utilizando el álgebra de lógica positiva . Los nombres de salida activan acciones: acciones de entrada, acciones de salida , acciones de entrada o acciones de transición.
álgebra de lógica positiva
Las reglas para construir una condición virtual son las siguientes:
Nombres de entrada y entrada virtual
El estado de una entrada se describe mediante nombres de entrada que crean un conjunto :
- Entrada A:
Anames = {A1, A2, A3} - Entrada B:
Bnames = {B1, B2} - Entrada C:
Cnames = {C1, C2, C3, C4, C5}
etc.
La entrada virtual VIes un conjunto de elementos mutuamente excluyentesVI de nombres de entrada. A siempre contiene el elemento always:
VI = { siempre } VI = { siempre , A1 } VI = { siempre , A1 , B2 , C4 }Operaciones lógicas sobre nombres de entrada
&La operación (AND) es un conjunto de nombres de entrada:
A1 y B3 y C2 =>{A1, B3, C2}
|La operación (OR) es una tabla de conjuntos de nombres de entrada:
A1 | B3 | C2 =>
~(Complemento) es el complemento de un conjunto de nombres de entrada:
~ A2 ={A1, A3}
Expresión lógica
Una expresión lógica es una tabla OR de conjuntos AND (una forma normal disyuntiva ):
A1 y B3 | A1 , B2 y C4 | C2 =>
Las expresiones lógicas se utilizan para expresar cualquier función lógica.
Evaluación de una expresión lógica
El valor lógico (verdadero, falso) de una expresión lógica se calcula comprobando si alguno de los conjuntos AND de la tabla OR es un subconjunto de VI.
Nombres de salida y salida virtual
El estado de una salida se describe mediante nombres de salida que crean un conjunto:
- Salida X:
Xnames = {X1, X2} - Salida Y:
Ynames = {Y1, Y2, Y3}
La salida virtual VOes un conjunto de elementos mutuamente excluyentes de nombres de salida.
Entorno virtual
El nombre virtual y la salida virtual, completados mediante nombres de estado, crean el entorno virtual VEdonde se especifica el comportamiento.
Modelo de ejecución VFSM

Un subconjunto de todos los nombres de entrada definidos, que solo puede existir en una situación determinada, se denomina entrada virtual o VI. Por ejemplo, la temperatura puede ser "demasiado baja", "buena" o "demasiado alta". Aunque se definen tres nombres de entrada, solo uno de ellos puede existir en una situación real. Este construye el VI.
Un subconjunto de todos los nombres de salida definidos, que solo puede existir en una situación determinada, se denomina salida virtual o VO. Esta se construye mediante la(s) acción(es) actual(es) de la máquina de estados finitos virtual (VFSM).
La especificación del comportamiento se construye mediante una tabla de estados que describe todos los detalles de todos los estados de la máquina de estados finitos virtual (VFSM).
El ejecutor VFSM se activa mediante VIel estado actual del VFSM. En consideración de la especificación de comportamiento del estado actual, se VOestablece.
La figura 2 muestra una posible implementación de un ejecutor VFSM. A partir de esta implementación, se deben considerar las características de comportamiento típicas.
Tabla de estados
Una tabla de estados define todos los detalles del comportamiento de un estado de una máquina de estados finitos virtual (VFSM). Consta de tres columnas: la primera nombra el estado, la segunda enumera las condiciones virtuales construidas a partir de los nombres de entrada utilizando el álgebra de lógica positiva, y la tercera columna contiene los nombres de salida:
Lea la tabla de la siguiente manera: las dos primeras líneas definen las acciones de entrada y salida del estado actual. Las líneas siguientes, que no especifican el siguiente estado, representan las acciones de entrada. Finalmente, las líneas que especifican el siguiente estado representan las condiciones y acciones de transición de estado. Todos los campos son opcionales. Una máquina de estados finitos combinatoria pura solo es posible cuando se utilizan acciones de entrada, pero no se definen transiciones de estado. La acción de transición puede sustituirse por el uso adecuado de otras acciones.
Herramientas
- StateWORKS : una implementación del concepto VFSM.
- PlayMaker : implementa el concepto VFSM como un método de "programación visual" para el motor de juegos Unity.
Referencias
- Wagner, F., "Máquinas virtuales de estados finitos: especificación ejecutable del flujo de control", Rosa Fischer-Löw Verlag, 1994, ISBN 3-929465-04-3
- Wagner, F., «Modelado de software con máquinas de estados finitos: un enfoque práctico», Auerbach Publications, 2006, ISBN 0-8493-8086-3
- Especificación ejecutable de VFSM , Actas de CompEuro 1992
- Malentendidos sobre las máquinas de estados , revista del IEE "Computing and Control Engineering", 1997
- El paradigma de diseño e implementación de máquinas virtuales de estados finitos , Revista técnica de Bell Labs, 1997
- Una herramienta moderna de diseño de software en tiempo real: Aplicando las lecciones aprendidas de Leo , revista del IEE "Computing and Control Engineering", 2003
- Modelado y construcción de software fiable y reutilizable. , Actas de la conferencia Engineering of Computer-Based Software 2003 (ECBS'03)
- Cerrando la brecha entre el modelado de software y el código , Actas de la conferencia Engineering of Computer-Based Software 2004 (ECBS'04)
- Wagner, T., "VFSMML - Estándar XML para VFSM", 2004
- Modelos de computación