Diagrama de maquina

Visa especificar as sequências de estados que uma entidade do sistema pode assumir durante o seu tempo de vida. Considere um simples objeto “telefone”, a seguir e um diagrama de Máquina de Estados, que modela o seu comportamento:



Os elementos básicos de um diagrama de Máquina de Estados são:

· Estado – representa a configuração de um objeto, que satisfaz alguma condição, realiza alguma atividade ou aguarda algum evento, durante o seu tempo de vida; o exemplo acima possui 10 estados, dentre eles: “DialTone”, “Dialing” e “Connecting”. Além dos estados, existem os pseudo estados, como o Estado Inicial (“Idle” e “DialTone”), que indica o início da execução de uma máquina de estados.

· Evento – especifica a ocorrência (de estímulo) significativa no tempo e no espaço, disparando transições em máquinas de estados. Pode ainda incluir elementos como: chamada, passagem do tempo e condições booleanas. No diagrama anterior, temos o evento “dial digit(n)”, que representa uma chamada de operação; “after (15 sec.)” que representa passagem do tempo, mais precisamente, após 15 segundos, na ausência de eventos, deve-se mudar o estado; Condições booleanas podem ser encontradas nas transições “connected” e “busy”, por exemplo.

· Ação – representa uma computação atômica (não pode ser interrompida) executável, que resulta na mudança de estado ou no retorno de algum valor; pode incluir chamadas de operações, criação e destruição de objetos, dentre outros. Um estado pode ter ações (internas) executadas continuamente, para isso, utiliza-se “do / ação”. No exemplo acima, a ação “play ringing tone” é executada enquanto o objeto telefone estiver no estado “Ringing”.

· Guarda – representa uma expressão booleana. Por exemplo, na transição “dial digit(n)[valid] / connect”, a guarda valid é avaliada após a ocorrência do evento “dial digit(n)”.

· Transição – representa um relacionamento entre dois estados. Indica mudança de estado quando ocorre um evento específico ou quando condições são satisfeitas; uma transição é formada por pelo menos um Estado Origem, Evento(s), Condição(ões), Ação(ões) e pelo menos um Estado Destino. No exemplo acima, tem-se a transição entre os estados “Dialing” e “Connecting”, representado por “dial digit(n)[valid] / connect” (evento [guarda] / ação).

O diagrama de Máquina de Estados pode conter ainda outros elementos, como: Sinal (evento pra representar estímulo assíncrono), Região (parte de um estado ou de uma máquina), Bifurcação (divide uma transição em várias outras), Junção (une várias transições em uma única).