Representação tabular de Máquinas de estado

Fonte: IEEE 802.17 (2005)

Descrição Geral

As máquinas de estado podem ser representadas em formato tabular. A tabela é organizada em duas colunas: na coluna da esquerda estão listados todos os estados possíveis da máquina de estado e todas as condições (para cada estado) que possibilita transições desses estados para outro qualquer; na coluna da direita estão listados todos os possíveis estados de destino assim como as ações a serem executadas em caso de transicionar para aquele estado destino. A sintaxe das expressões segue o padrão da linguagem C e não existe um tempo associado com as transições.

Na Figura abaixo é apresentada uma máquina de estados onde os estados estão representados por circulos, as condições de transição estão representadas por expressões em verde e as ações associadas às transições estão representadas em vermelho.


Figura 1: Diagrama gráfico de uma máquina de estados

Essa mesma máquina de estados pode ser representada em formato tabular, conforme aparece na tabela abaixo.


Tabela 1: Representação da máquina de estados em formato tabular

Cada combinação de estado atual, próximo estado e condição de transição corresponde a uma linha da tabela e é identificada por um número. Cada linha da tabela, quando lida da esquerda para a direita, fornece o nome do estado atual, a condição que pode causar uma transição do estado atual, a ação a ser executada (se a condição for verdadeira) e o estado de destino da transição. Note o símbolo "" que aparece na coluna das ações. Esse símbolo indica que essa transição não tem uma ação correspondente.

Nessa representação, caso nenhuma das condições seja verdadeira, a máquina de estados permanece no estado atual. Essa condição (se não houver nenhuma condição que seja verdadeira) é chamada de condição padrão (default) e é considerada verdadeira sempre que todas as outras são falsas. Se fosse necessário apresentar, explicitamente, as condições padrões, a Tabela 2 deveria ser alterada para a forma apresentada na Tabela 2. Note o símbolo "" que aparece na última condição da lista de condições de cada estado.


Tabela 2: Representação da máquina de estados, com as condições default

Finalmente, as condições são verificadas na ordem em que são escritas, ou seja, de cima para baixo. Assim, a primeira condição que for verdadeira será aquela que corresponderá a transição a ser executada. Dessa forma, percebe-se porque a condição default é a última na lista de condições de cada estado.

Não esquecer que vale a regra de que, em caso de não haver condição verdadeira, a máquina deve permanecer no estado atual. Assim, em geral, quando a transição default corresponde a permanecer no estado, pode-se não indicá-la.

O início da operação da máquina de estados é, sempre, o estado de nome "START", mesmo que este não esteja no início da tabela.

Para completar a descrição da máquina de estados, pode-se acrescentar ao final da mesma uma série de descrições textuais onde as várias condições e ações serão comentadas. A numeração que aparece em cada linha da tabela serve para facilitar a referência no texto às condições e ações que formam a máquina de estados.

Sub-máquinas

O estado de nome RETURN é sempre um estado de destino (não aparece na coluna do estado atual). As máquina que têm esse estado como "próximo estado" devem ser "chamadas" por outras máquinas de estado.

Quando o estado RETURN é alcançado, a máquina de estados encerra sua execução e deixa de existir. Essa máquina só voltará a existir se for chamada em outra oportunidade. Notar que não fica nenhum tipo de informação de uma execução para a outra: não existem variáveis estáticas (persistentes) que "sobrevivam" ao encerramento e reinicialização.

Da mesma forma que foi explicado anteriormente, o estado de inicio dessas máquinas de estado também é o START.