Máquina estatal

En general, una máquina de estado es cualquier dispositivo que almacena el estado de algo en un momento dado y puede operar en la entrada para cambiar el estado y / o provocar una acción o salida para cualquier cambio dado. Una computadora es básicamente una máquina de estado y cada instrucción de la máquina es una entrada que cambia uno o más estados y puede causar que se lleven a cabo otras acciones. El registro de datos de cada computadora almacena un estado. La memoria de solo lectura desde la que se carga un programa de arranque almacena un estado (el programa de arranque en sí es un estado inicial). El sistema operativo es en sí mismo un estado y cada aplicación que se ejecuta comienza con algún estado inicial que puede cambiar a medida que comienza a manejar la entrada. Por lo tanto, en cualquier momento, un sistema informático puede verse como un conjunto muy complejo de estados y cada programa en él como una máquina de estados. En la práctica, sin embargo, las máquinas de estado se utilizan para desarrollar y describir interacciones de programas o dispositivos específicos.

Para resumirlo, una máquina de estados se puede describir como:

  • Un estado inicial o registro de algo almacenado en algún lugar
  • Un conjunto de posibles eventos de entrada.
  • Un conjunto de nuevos estados que pueden resultar de la entrada
  • Un conjunto de posibles acciones o eventos de salida que resultan de un nuevo estado.

En su libro Modelado orientado a objetos en tiempo real, Bran Selic y Garth Gullekson ven una máquina de estado como:

  • Un conjunto de eventos de entrada
  • Un conjunto de eventos de salida
  • Un conjunto de estados
  • Una función que mapea estados y entrada a salida
  • Una función que mapea estados y entradas a estados (que se llama función de transición de estado)
  • Una descripción del estado inicial.

Una máquina de estados finitos es aquella que tiene un número limitado o finito de estados posibles. (Se puede concebir una máquina de estados infinitos, pero no es práctica). Una máquina de estados finitos se puede utilizar como herramienta de desarrollo para abordar y resolver problemas y como una forma formal de describir la solución para desarrolladores y mantenedores de sistemas posteriores. Hay varias formas de mostrar las máquinas de estado, desde tablas simples hasta ilustraciones gráficamente animadas.