Diagrama de Máquina de Estados
Por Natã Melo
(nata.venancio.melo@gmail.com)
Revise alguns conceitos sobre Máquina de Estados da linguagem de modelagem UML, por meio de um exemplo bem simples, retirado de sua especificação.



O processo de modelagem é essencial, principalmente para o desenvolvimento de software considerado de médio e grande porte. Nos últimos anos, a indústria de Engenharia de Software adotou UML (Unified Modeling Language) como a linguagem (orientada a objetos) padrão para modelagem de software.

No total, UML dá suporte a 13 diagramas, cada um podendo ser expresso sob diferentes níveis de precisão e possuindo funções específicas. Por exemplo, o diagrama de Casos de Uso modela as funcionalidades do sistema, o diagrama de Sequências descreve as iterações entre as classes por meio das trocas de mensagens ao longo do tempo.

Focaremos em Máquina de Estados, diagrama comportamental que 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:

Diagrama de máquina de estados para um objeto “telefone”.

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).

Para conferir mais detalhes sobre diagrama de Máquina de Estados, confira na especificação de UML ou consulte as fontes de pesquisa abaixo.




Fontes de pesquisa:

· Material de aula da disciplina de Sistemas de Informação 2 do professor Franklin Ramalho;

. Máquina de Estados também podem ser usadas para a construção de circuitos lógicos sequencias. Veja (http://www.dsc.ufcg.edu.br/~joseana/OAC_NA13.rar) no site da disciplina de OAC, ministrada pela professora Joseana Macêdo.

· Sobre diagramas UML;

· Máquina de Estado.

Jornal PETNews - Edição: Caio Paes - Revisão: Janderson Jason e Joseana Fechine
Grupo PET Computação UFCG, 2011. All rights reserved.