Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Trabalhe em equipe com uma ampla variedade de diagramas UML

Modelo de Diagrama de Sequência UML

Entenda a ordem na qual os eventos dentro de uma sequência interagem e mapeie-os facilmente usando o Modelo de Diagrama de Sequência UML online.

Modelo de Diagrama de Classes UML

Planeje sistemas orientados a objetos em um board online, fomentando a colaboração e a inovação ao usar o Modelo de Diagrama de Classes UML.

Modelo de Diagrama de Atividades UML

Planeje, analise e otimize atividades, dividindo-as em subprocessos e decisões constituintes com nosso modelo de Diagrama de Atividades UML online.

Modelo de Diagrama UML

Modele e desenvolva seu projeto de software à vontade. O Modelo de Diagrama UML permite que sua equipe visualize processos, desenvolvimento e comportamento com uma linguagem unificada.

Perguntas e Respostas - Diagrama de Transição de Estados UML

A UML(Unified Modeling Language) prevê um diagrama específico para modelar os diversos estados de um objeto durante o seu ciclo de vida. Tal diagrama é chamado de diagrama de estados.

Muito utilizado na área de eletrônica digital e em engenharia de software, um diagrama de estado é a representação de um estado ou situação em que um objeto se encontra no decorrer da execução dos processos de um sistema. É uma maneira eficiente e clara de descrever todos os possíveis estados de um sistema, assim como quais eventos levam transição de um estado para outro.

Os diagramas de estado representam uma alternativa para o diagrama de casos de uso. Geralmente, os diagramas de caso de uso são utilizados durante a etapa de análise do sistema, e os diagramas de estados, durante a etapa de projeto do sistema. O foco principal dos diagramas de estados reside na identificação dos valores que os atributos de uma classe podem assumir, assim como os eventos ou mensagens enviadas para o objeto que efetivamente implicará na atribuição dos valores.

Diagramas de estados podem ser concebidos englobando diversos objetos, porém, o ideal é modelar diagramas de estados individuais para cada objeto e utilizar outros diagramas para ilustrar como diferentes objetos interagem durante a execução do sistema.

Elementos de um Diagrama de Estados

Estado Inicial – Ponto de entrada da utilização do objeto, pode ser sua instanciação ou sua reinicialização do mesmo para um estado estável inicial.

Estado Final – Ponto de saída da utilização do objeto, pode ser sua destruição ou o ato de deixar de ser utilizado.

Estado – Possível estado que o objeto pode se encontrar em cada momento. É definido como sendo a identificação dos atributos que o compõe. Um estado pode demonstrar a espera pela ocorrência de um evento, a reação a um estímulo, a execução de alguma atividade ou a satisfação de alguma condição.

Evento – Também chamado de transição, representa uma ação externa sobre o objeto.

Verificação de um Diagrama de Estados

Após a criação de um diagrama de estados, precisamos verificar se o mesmo é consistente, como cada verificação é específica para cada diagrama, pois depende diretamente da mecânica da classe e do problema se se propõe a resolver, podemos verificar de uma forma sistemática cada diagrama de estados respondendo às seguintes perguntas:
1 – Todos os estados podem ser atingidos?
2 – A partir de qualquer estado, existe um caminho que leve para o estado final?
3 – Todos os estados possíveis que o objeto pode assumir foram definidos?
4 – Cada estado reage adequadamente a todos os possíveis eventos?

Exemplos de Diagramas de Estados

Um exemplo simples seria um semáforo onde cada estado corresponde a uma situação que ocorrerá. Quando verde, os carros podem prosseguir na via. Passado um tempo, é acionada a tarefa de mudar para amarelo. Então o semáforo passa de verde para amarelo. Aqui os carros ficam em estado de atenção e já aguardam a próxima transição.
O próximo passo é passar para vermelho. Nesse estado, os carros estão parados na via. De vermelho, o próximo estado somente será verde, assim, os carros podem voltar a trafegar na via.

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Outro exemplo simples seria a troca de estações do ano. Onde cada estação possui seu tempo de duração, após esse tempo ter se esgotado, uma transição de estados ocorre e a estação passa ao seu próximo estado, com sua determinada duração.

Diagrama de Atividade

Oriundo do Diagrama de Máquina de Estados, este diagrama enfatiza a sequência e condições para descrever um processo computacional completo de uma atividade. Como já observado, é um dos mais detalhistas diagramas da UML, muito semelhante aos fluxogramas utilizados para lógica de programação. Está sempre associado a um Caso de Uso, descrevendo as atividades executadas pelo Ator e pelo Sistema. Composto por estados que representam as atividades e ações que representam as transições, já foi considerado uma parte especial do Diagrama de Gráficos de Estados, porém a partir da versão 2.0 da UML, tornou-se totalmente independente.

Este diagrama preocupa-se em descrever os passos a serem percorridos para a conclusão de um método ou algoritmo específico, ou seja, tem como objetivo principal a especificação do comportamento do software do ponto de vista funcional e das suas funcionalidades e não um processo completo como é o diagrama de sequência, e possui três estados obrigatórios:

  • Estado Inicial;
  • Estado de Ação;
  • Estado Final.

É também utilizado para modelar dois tipos específicos de fluxos, o Fluxo de Controle e o Fluxo de Objetos.

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 1 – Esquema exemplificando o Diagrama de Atividade

Principais Elementos de Utilização

Estados Iniciais e Finais: Todos os diagramas de atividades possuem pelo menos um estado inicial e pelo menos um estado final. O Estado inicial indica o início do processo enquanto o estado final indica o fim do processo:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 2 – Exemplo de Estado inicial e final

Atividades: Representados por um retângulo com as bordas arredondadas, equivalem as atividades ou ações que devem ser feitas. Quando a referida ação é finalizada, transfere a execução para a próxima atividade:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 3 – Exemplo de Atividade

Transições: Setas contínuas que representam o fluxo de trabalho de uma atividade para outra, ou seja, o “caminho” a ser seguido para a conclusão do processo:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 4 – Exemplo de Transição entre Atividades

Ponto de Decisão / Desvio: Representa uma escolha entre dois ou mais fluxos em que um dos fluxos será escolhido em detrimento dos outros. É representado pela figura de um losango:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 5 – Exemplo de nó de decisão

Condição de Guarda: Condiciona a ocorrência de uma transição para a execução de uma atividade, geralmente é utilizada após um ponto de decisão:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 6 – Exemplo de Condição de Guarda

Barras de Sincronização – Bifurcação/ União: Representam a execução de atividades concorrentes e independentes. Na condição de Bifurcação ou Fork, as atividades associadas continuam seu processamento paralelo. Já na condição de União ou Join, as atividades concorrentes são novamente sincronizadas em um único processo:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 7 – Exemplo de Fork e Join

Raias: Representam uma forma de organização lógica das atividades. Podem estar associadas a objetos, componentes ou atores do sistema:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 8 – Exemplo da utilização de Raias

Eventos: Eventos são mudanças de estado instantâneas que propiciam o início de uma outra ação. Existem basicamente três representações para eventos: únicos, periódicos e deliberados:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 9 – Exemplo de utilização de Eventos

Nós de Objetos: Representam a instância de uma classe, que pode estar disponível em um determinado momento da atividade. É útil para mostrar o fluxo de dados acontecendo em um processo, e foi inserido a partir da versão 2.0 da UML:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 10 – Exemplo de utilização de objetos

Exemplo Ilustrativo de Utilização do Diagrama de Atividade

Basicamente, temos referências a dois módulos nas duas Raias (Cadastro de Cliente e E-mail Marketing), e trata-se de um fluxo do sistema, onde um cliente após ser cadastrado sofre uma avaliação, e dependendo do resultado da avaliação (feita através do software) o fluxo pode tomar caminhos diferentes. Se todo o fluxo se completar, antes de encerrar-se, o cliente vai para uma situação de “espera”, onde outro fluxo, por exemplo, tratará o envio de uma nova oferta ao cliente que passou em todas as etapas:

Para que serve um diagrama de máquina de estado em um projeto de desenvolvimento de software?

Figura 11 – Exemplo completo de Diagrama de Atividade

Podemos identificar que o uso do Diagrama de Atividade é uma excelente opção para a especificação funcional de um software, desde que sua utilização seja empregada ao fim a que se destina. Mapear processos de forma que o desenvolvedor possa visualizar a funcionalidade isolada propicia um nível de controle e de abstração perfeitos de cada ponto do sistema e o deixa bem próximo do negócio. Também, dentro de suas limitações, pode ser utilizado por pessoas menos técnicas e até mesmo usuários para o entendimento dos processos de funcionamento gerais.

Qual o propósito do diagrama de máquina de estados?

Um diagrama de estados (statechart), também conhecido por diagrama de transição de estado ou por máquina de estados, permite modelar o comportamento interno de um determinado objeto, subsistema ou sistema global.

O que é um diagrama de máquina de estado?

Um diagrama de máquina de estado é uma representação gráfica da seqüência de estados de um objeto, dos eventos que causam uma transição de um estado para outro e as ações que resultam de uma alteração no estado.

Qual o objetivo do diagrama de estados em UML?

O foco principal dos diagramas de estados reside na identificação dos valores que os atributos de uma classe podem assumir, assim como os eventos ou mensagens enviadas para o objeto que efetivamente implicará na atribuição dos valores.

Por que precisamos de diagramas no processo de desenvolvimento de software?

Eles indicam um caminho para a análise e compreensão do sistema como um todo sem a preocupação com o seu funcionamento interno. Esses diagramas criam uma forma clara e simples de comunicação e especificação entre usuários (pessoas que utilizarão o sistema) e membros da equipe de desenvolvimento.