Máquinas de Estados (SDL)
En la actualidad prácticamente cualquier dispositivo de electrónico (lavadoras, relojes, estéreos, etc.)
contienen elementos de software, que se puede considerar el elemento más complejo y caro de estos sistemas.
El lenguaje de especificación y descripción (SDL) nos permite visualizar un sistema a través de sus estados,
entradas, salidas, procesos y decisiones. Es un lenguaje fácil de entender y se puede transportar fácilmente
a un lenguaje de programación de alto nivel.
La especificación que generamos en el SDL se puede almacenar directamente en memoria utilizando estructuras
de datos convenientes, como tablas y listas. Un mecanismo especial o intérprete nos permitirá tener acceso
a las tablas y listas y se llevará a cabo un proceso determinado al intrepretar los datos de dichas tablas y listas.
Esto se puede considerar como un software manejado por datos o manejado por eventos.
Dependiendo de determinada entrada (evento) se realizarán ciertas acciones.
Podemos definir como intérprete a cualquier pieza de software que tome instrucciones y realice las acciones requeridas.
En la programación utilizando máquina de estados, podemos decir que mientras que el flujo de control es dirigido por
las estructuras de datos (tablas y listas), los procedimientos se podrán implementar con funciones. Todas las señales que
puedan ocurrir en un estado dado son representados por nodos de una lista encadenada de la siguiente forma:
Un programa implementado bajo el esquema de una Máquina de Estados puede estar limitado ya que las transiciones entre estados
no son siempre determinadas por la señal de entrada; en ocasiones es necesario tomar alguna decisión dentro de una función.
En ese caso, el valor que regrese dicha función se usará como un "offset" para pasar a un siguiente estado o realizar
una segunda tarea.
Máquinas Finitas de Estados
Un programa que realice la interpretación directa de un diagrama SDL es un ejemplo específico de una Máquina Finita de Estados.
Las características de este modelo son:
-
Cualquier sistema digital debe residir en uno de un número de estados en cualquier momento del tiempo
-
Las transiciones entre estados se dan como consecuencia de eventos externos
-
El estado en cualquier momento depende de los estímulos actuales y de los estímulos anteriormente aplicados