Você está na página 1de 62

Análise e Projeto de Software

Diagramas de Estado

Profa. Alessandra Alaniz Macedo


Slides adaptados do Prof. Dr. M. Goulão,
Ana Moreira, João Araújo e Vasco Amaral
● Diagrama de Estado
● Estado
● Exemplo: Forno de
Tópicos Microondas
● Sub-estados
● Pontos de Entrada e Saída
● Pseudo-estados
● Diagrama de Atividades
versus Diagrama de Estado
1. Diagrama de Estado
Diagrama de Sequência
Definição segundo a OMG
StateMachines
“The StateMachines package defines a set of concepts that can be used
for modeling discrete event-driven Behaviors using a finite state-machine
formalism. In addition to expressing the Behavior of parts of a system (e.g.,
the Behavior of Classifier instances), state machines can also be used to
express the valid interaction sequences, called protocols, for parts of a
system. These two kinds of StateMachines are referred to as behavior
state machines and protocol state machines respectively”
Segundo a OMG (Object Management Group)
História dos Diagramas de Estado

● Inventados por David Harel


○ Statecharts: um formalismo visual para sistemas complexos

● Tornaram-se popular com James Rumbaugh (OMT)


● State chart = state diagram = diagrama de estado
Diagrama de Estado
● Objetivo: modelar comportamento dinâmico
● Quando usar:
○ para os objetos (ou sistemas) com comportamento
complexos que necessitam de mais detalhes
○ ainda não se compreende o comportamento (ciclo de vida)
do objeto (ou sistema)
○ se o controle for fortemente influenciado por eventos
externos
Diagrama de Estado
● Não usar:
○ Quando vários objetos estão envolvidos (diagramas de
interação são melhores)
Diagrama de Estado
● Estados: abstração dos atributos e relações do
objeto. Estado é uma situação estável de um objeto
que se prolonga por um intervalo de tempo (objeto
não sofre estímulos nem atributo tem alteração de
valor)
● Eventos: algo acontece num certo momento
○ Alarme desliga
Evento - exemplo
● Evento é uma ocorrência significativa, normalmente
atômica (não consome tempo):
○ Telefone foi retirado do gancho
○ Motor foi levado para consertar
○ Carro foi acelerado
○ Freio do veículo foi pressionado
Estado - exemplo
● Estado é uma condição de um objeto em certo
momento no tempo, o tempo entre dois eventos:
○ Telefone fica no estado “ocioso” quando está no gancho e
no estado “ativo” quando retirado do gancho
○ Motor está funcionando
○ Carro está andando
○ Veículo está parado
Diagrama de Estado
● Condições: “teste” sobre atributos ou estado
○ Nível de gasolina está baixo
○ O alarme está ligado
● Transições entre estados: desencadeadas por
eventos
● Ações e Atividades: executadas em transições ou
estados
2. Estado
Estado
● Um ponto no ciclo de vida do objeto (ou sistema) que:
○ Satisfaça alguma condição
○ Onde alguma atividade está para ser realizada
○ Ou onde algum evento é esperado
● Consiste das seguintes partes:
○ Nome
○ Ações ou atividades
○ Transições internas
○ Sub-estados
○ Eventos deferidos (para adiar a resposta a um evento)
Ação
● Execuções instantânea e não-interrompível
● Onde?
○ Na transição
○ Na entrada de um estado = ação em todas as transições de
entrada
○ Na saída de um estado = ação em todas as transições de saída
○ Em eventos
Ação
● Exemplos
○ Criação ou destruição de um objeto
○ Envio de um sinal para outros objetos
Atividade
● Leva tempo, interrompível
● Onde?
○ No estado

● Exemplos
○ calcular montante a pagar por estacionamento
Evento
● Especificação de uma ocorrência significativa
○ Corresponde a um estímulo que dá início a uma transição de estados

● Eventos podem ser


○ Internos: entre objetos do sistema
■ Ex.: exceção de overflow

○ Externos: entre o sistema e os atores


■ Ex.: pressionar um botão para cancelar uma transação

● Tipos de eventos: sinal, invocação, tempo e mudança


Transição
● Relação entre dois estados, indicando que um objeto no estado fonte
executará certas ações e passará para o estado alvo, quando um conjunto
específico de eventos ocorrerem e condições forem satisfeitas
● Uma transição entre estados ocorre assim
○ O objeto está num estado fonte
○ Um evento ocorre
○ Uma ação é executada se uma condição for satisfeita (opcional)
○ O objeto entra no estado alvo

evento(atributo) [condição] /
estado fonte estado alvo
ação
Um Diagrama de Estado Simples

● Evento é gerado
fora do objeto
modelado e
origina uma
transição
● Ação é
executada
durante a
transição
Diagrama de Estado: jogo de xadrez
Diagrama de Estado: livro na biblioteca
Estados (avançados)
● Estado é retângulo com lados nome do estado
arredondados com identificador
e compartimento para descrever variáveis
as operações executadas naquele
estado ações e
● Estado avançado inclui variáveis atividades
Eventos Temporais
● Um evento temporal representa a passagem do tempo
● Um evento de mudança representa uma mudança de
estado ou a satisfação de uma condição
Estados Compostos/Sub-estados

● Especificação de uma ocorrência significativa


○ Corresponde a um estímulo que dá início a uma transição de estados

● Eventos podem ser


○ Internos: entre objetos do sistema
■ Ex.: exceção de overflow

○ Externos: entre o sistema e os atores


■ Ex.: pressionar um botão para cancelar uma transação

● Tipos de eventos: sinal, invocação, tempo e mudança


Exemplo: Estados Compostos

● Initial e Process
são sub-estados de
On, e “herdam” a
transição
switchOff
Exemplo: Estados Compostos

● Objeto despertador

tocando
Estados Compostos Concorrentes
(Paralelos)
● Regiões: partes independentes concorrentes de um estado composto.
São ativadas ao mesmo tempo (quando o estado composto é ativado).
Estados Compostos: regras para
entrar
● Entrar em um estado composto: tem que haver um sub-estado inicial em cada região
● Entrar em um sub-estado: tem que haver um sub-estado todas as outras regiões
Estados Compostos: regras para
entrar
● Transição concorrente: Notação alternativa para entrar em um estado composto
● Usa pseudo-estado “fork” e “join”
Estado com Memória (history state)
● Shallow (H): recorda história do estado composto (recorda o último sub-estado ativo, mas não os sub-estados deste)
● Deep (H*): recorda também história dos sub-estados (recorda a configuração de estados ativa antes de o estado composto ser
abandonado)
Estado com Memória (history state)
Pontos de Sincronização (Sync
state)
● Permite a sincronização de regiões
● Usado em combinação com fork e join
Pontos de Junção (junction)

● Permite a junção de regiões


Pontos de Junção (junction)

● Exemplo sem o ponto de


junção

● Exemplo com o ponto de


junção
Exercício
Diagrama de Estado
Exercícios
● Faça um diagrama de estado para uma máquina de
venda de bebidas considerando
○ Inserção de moedas
○ Seleção de produtos
■ Pode não estar disponível
○ Verificação da quantia
○ Fornecer a bebida
○ Cancelar a operação
3. Exemplo: Forno de
Microondas
Exemplo: Forno de Microondas

● Especificar um diagrama de estado com base nos


estados e transições descritos a seguir
Descrição dos Estados de um
Microondas
Estímulos de um Microondas
Termostato
4. Sub-estados
Sub-
estados
Sub-estados
5. Pontos de Entrada e Saída
Ponto de Entrada
Ponto de Saída
Pontos de Entrada e Saída
Pontos de Entrada e Saída
6. Pseudo-estados
Pseudo-estado de Escolha
Pseudo-estado de Fusão
Pseudo-estado de Terminação
7. Diagrama de Atividades
versus Diagrama de Estado
Diagrama de Atividades versus
Diagrama de Estado
● Diagrama de Atividades modela aspectos
comportamentais considerando atividades.
○ Concentra-se no processo

● Diagrama de Estado modela comportamento


discreto considerando estado.
○ Concentra-se no objeto
Diagrama de Atividades versus
Diagrama de Estado
● Semelhança: notação
● Diferença: o resto !!!
○ A semântica é bastante diferente
■ No Diagrama de Atividades, o comportamento está expresso
no nós e no diagrama de estado nos arcos
■ No Diagrama de Estado, o estado (abstração dos atributos e
relações) é representado nos nós e no diagrama de
atividades nos arcos
Diagrama de Atividades

● Atividade= sequência de ações controladas por decisões (com condições


de guarda mutuamente exclusivas) e sincronismos
Diagrama de Estado
MATERIAL EXTRA
Tutoriais e Documentos
● Documento de especificação UML
○ https://www.omg.org/spec/UML/2.5.1/PDF

● Vídeo em inglês resumindo tudo de Diagrama de


Estado:
○ UML State Machine Diagram - Ave Corders
○ https://youtu.be/obLemkvbWr0
Ferramentas
● Lucidchart: Editor online de diagramas (com modelos
UML, inclusive Diagrama de Sequência)
○ https://www.lucidchart.com
Análise e Projeto de Software
Diagramas de Estado

Profa. Alessandra Alaniz Macedo


Slides adaptados do Prof. Dr. M. Goulão,
Ana Moreira, João Araújo e Vasco Amaral

Você também pode gostar