Um diagrama de máquina de estado é um comportamento que especifica a sequência de estados que um objeto visita durante seu tempo de vida em resposta a eventos, juntamente com suas respostas a esses eventos.
Estado
Um estado é uma condição durante a vida de um objeto durante o qual ele satisfaz alguma condição, realiza alguma atividade ou espera por algum evento externo.
Exemplo:
Características do Estado
- Estado representam as condições dos objetos em determinados pontos no tempo.
- Objetos (ou Sistemas) podem ser vistos movendo-se de estado para estado
- Um ponto no ciclo de vida de um elemento de modelo que satisfaz alguma condição, onde alguma ação particular está sendo executada ou onde algum evento é esperado
A Figura abaixo mostra uma descrição detalhada de um estado. O estado é estendido com ações internas (faça, ajude). Ao contrário de outras ações, essas ações podem ser interrompidas. Se ”cancelar” acontecer, as ações do ou help são interrompidas. As ações internas são executadas após a seção “entry” e são abortadas quando o estado é deixado.
Estados iniciais e finais
- O estado inicial de um diagrama de máquina de estados, conhecido como pseudoestado inicial, é indicado com um círculo sólido. Uma transição deste estado mostrará o primeiro estado real
- O estado final de um diagrama de máquina de estados é mostrado como círculos concêntricos. Uma máquina de estado de malha aberta representa um objeto que pode terminar antes que o sistema termine, enquanto um diagrama de máquina de estado de malha fechada não tem um estado final; se for o caso, então o objeto vive até que todo o sistema termine.
Exemplo:
Evento
Um evento é a especificação de uma ocorrência significativa. Para uma máquina de estado, um evento é a ocorrência de um estímulo que pode desencadear uma transição de estado.
Transição
Uma transição é uma relação entre dois estados indicando que um objeto no primeiro estado irá, quando um conjunto especificado de eventos e condições forem satisfeitos, executar determinadas ações e entrar no segundo estado.
Uma transição tem: Componentes de transição que incluem (1) um estado de origem (2) gatilho de evento (3) uma ação (4) um estado de destino
Autotransição
Uma autotransição é uma transição cujos estados de origem e destino são os mesmos
Açao
Uma ação é uma computação executável, atômica (com referência à máquina de estado). As ações podem incluir operações, a criação ou destruição de outros objetos ou o envio de sinais para outros objetos (eventos)
Exemplo de biblioteca
A Figura abaixo mostra um diagrama de máquina de estado simples. Os principais componentes de tal diagrama são:
- Estado: o exemplo tem dois estados: ”Em empréstimo” e ”Na prateleira”.
- Estado inicial: este é o estado em que o sistema inicia.
- Transições: as transições descrevem possíveis mudanças de estado. O diagrama tem duas transições: de ”Em empréstimo” para ”Na prateleira” e vice-versa.
- Eventos: os eventos são rotulados nas transições. Eles representam o evento realizado em uma transição. Ao passar do estado ”Em empréstimo” para o estado ”Na prateleira”, o evento ”retornado()” é executado.
As ações são modificações das variáveis de estado. No exemplo abaixo, as ações são especificadas nas transições. Quando a transição de “Na prateleira” para “Em empréstimo” é feita, os livros de variável de estado são reduzidos.
As ações podem ser especificadas em transições, mas também em estados. Nesse caso, pode-se especificar se a ação deve ser realizada ao entrar ou sair do estado. Na Figura abaixo mostra essas opções.
- A primeira opção mostra a especificação das ações quando uma transição é realizada. A ação é executada na mudança de estado.
- A segunda opção mostra a especificação de uma ação em um estado. A palavra-chave ”entry” indica que a ação deve ser executada quando o estado é inserido.
- Finalmente, a terceira opção mostra como especificar que uma ação é executada ao sair de um estado. Observe a palavra-chave “exit”.
Notação de diagrama de máquina de estado simples
Diagrama de Máquina de Estado — Conceitos Avançados
Restrições
É possível adicionar restrições às transições. Considere a Figura abaixo. As restrições ”[not last copy]” e ”[last copy]” são usadas para distinguir as duas transições com o evento ”copyBorowed()”. A semântica é que uma transição é habilitada quando a restrição é verdadeira.
Subestados
Um estado simples é aquele que não tem subestrutura. Um estado que possui subestados (estados aninhados) é chamado de estado composto. Os subestados podem ser aninhados em qualquer nível. Uma máquina de estado aninhada pode ter no máximo um estado inicial e um estado final. Os subestados são usados para simplificar máquinas de estado plano complexas, mostrando que alguns estados só são possíveis dentro de um contexto específico (o estado envolvente).
Exemplo de Subestado – Aquecedor
Diagramas de máquina de estado são frequentemente usados para derivar casos de teste, aqui está uma lista de ideias de teste possíveis:
- O estado ocioso recebe o evento Too Hot
- Estado ocioso recebe evento Too Cool
- O estado de resfriamento/inicialização recebe o evento Compressor Running
- O estado de resfriamento/pronto recebe o evento de funcionamento do ventilador
- O estado de resfriamento/funcionamento recebe o evento OK
- O estado de resfriamento/execução recebe o evento de falha
- O estado de falha recebe o evento Failure Cleared
- Estado de aquecimento recebe evento OK
- Estado de aquecimento recebe evento de falha
Estados da história
A menos que especificado de outra forma, quando uma transição entra em um estado composto, a ação da máquina de estado aninhada recomeça no estado inicial (a menos que a transição tenha como alvo um subestado diretamente). Os estados do histórico permitem que a máquina de estado entre novamente no último subestado que estava ativo antes de sair do estado composto. Um exemplo de uso do estado do histórico é apresentado na figura abaixo.
Estado simultâneo
Como mencionado acima, os estados nos diagramas de máquina de estado podem ser aninhados. Os estados relacionados podem ser agrupados em um único estado composto. Aninhar estados dentro de outros é necessário quando uma atividade envolve subatividades simultâneas. O diagrama de máquina de estados a seguir modela um leilão com dois subestados simultâneos: processamento do lance e autorização do limite de pagamento.
Exemplo de diagrama de máquina de estado simultâneo – Processo de leilão
Neste exemplo, a máquina de estado que entra primeiro no Leilão requer uma bifurcação no início em dois encadeamentos de início separados. Cada subestado tem um estado de saída para marcar o fim do encadeamento. A menos que haja uma saída anormal (Cancelado ou Rejeitado), a saída do estado composto ocorre quando ambos os subestados tiverem saído.
Links Relacionados
Exemplos de diagramas de estado do tipo faça você mesmo com o Visual Paradigm Online
- Exemplos e templates gratuitos de State Machine Diagram editáveis em um software de State Machine Diagram online: Visual Paradigm Online .
- Use os modelos como ponto de partida para criar seu próprio Diagrama de Máquina de Estado.
Ferramenta de software UML gratuita
Você aprendeu o que é um diagrama de máquina de estado e como desenhar um diagrama de máquina de estado. É hora de desenhar seu próprio Diagrama de Máquina de Estado. Obtenha o Visual Paradigm Community Edition, um software UML gratuito e crie seu próprio diagrama de máquina de estado com a ferramenta gratuita de diagrama de máquina de estado. É fácil de usar e intuitivo.