Você está na página 1de 37

Princpios de Anlise

e Projeto de Sistemas
com UML
2 edio
Eduardo Bezerra
Editora Campus/Elsevier

Captulo 9
Modelagem de estados

Todos os adultos um dia foram crianas, mas poucos se lembram


disso.
--O Pequeno Prncipe, Antoine de Saint-Exupry

Tpicos

Introduo
Diagramas de transio de estados
Identificao dos elementos de um diagrama de estados
Construo de diagramas de transio de estados
Modelagem de estados no processo de desenvolvimento

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

Introduo
Objetos do mundo real se encontram em estados particulares a cada
momento.
uma jarra est cheia de lquido
uma pessoa est cansada.

Da mesma forma, cada objeto participante de um sistema de software


orientado a objetos se encontra em um estado particular.
Um objeto muda de estado quando acontece algum evento interno ou
externo ao sistema.
Durante a transio de um estado para outro, um objeto realiza
determinadas aes dentro do sistema.
Quando um objeto transita de um estado para outro, significa que o sistema
no qual ele est inserido tambm est mudando de estado.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

9.1 Diagramas de transio de


estados

Diagrama de transio de estado


Atravs da anlise das transies entre estados dos objetos de um sistema
de software, podem-se prever todas as possveis operaes realizadas, em
funo de eventos que possam ocorrer.
O diagrama da UML que utilizado para realizar esta anlise o diagrama
de transio de estado (DTE).

A UML tem um conjunto rico de notaes para desenhar um DTE.

Estados
Transies
Evento
Ao
Atividade
Transies internas
Estados aninhados
Estados concorrentes

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

Estado
Situao na vida de um objeto em que ele satisfaz a alguma
condio ou realiza alguma atividade. funo dos valores
dos atributos e (ou) das ligaes com outros objetos.
O atributo reservado deste objeto livro tem valor verdadeiro.
Uma conta bancria passa para o vermelho quando o seu saldo fica negativo.
Um professor est licenciado quando no est ministrando curso algum durante
o semestre.
Um tanque est na reserva quando nvel de leo est abaixo de 20%.
Um pedido est atendido quando todos os seus itens esto atendidos.

Estados podem ser vistos como uma abstrao dos atributos e


associaes de um objeto.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

Estados inicial e final


O estado inicial indica o estado de um objeto quando ele
criado. S pode haver um estado inicial em um DTE.
Essa restrio serve para definir a partir de que ponto um DTE deve comear a
ser lido.

O estado final representado como um crculo eclipsado e


indica o fim do ciclo de vida de um objeto.
opcional e pode haver mais de um estado final em um DTE.

Notao da UML para estados:

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

Transies
Os estados esto associados a outros pelas transies.
Uma transio mostrada como uma linha conectando
estados, com uma seta apontando para um dos estados.
Quando uma transio entre estados ocorre, diz-se que a
transio foi disparada.
Uma transio pode ser rotulada com uma expresso da
seguinte forma:

evento (lista-parmetros) [guarda] / ao

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

Eventos
Uma transio possui um evento associado.
Um evento algo que acontece em algum ponto no tempo e
que pode modificar o estado de um objeto:
Pedido realizado
Fatura paga
Cheque devolvido

Os eventos relevantes a um sistema de software podem ser


classificados em nos seguintes tipos.
1.
2.
3.
4.

Evento de chamada: recebimento de uma mensagem de outro objeto.


Evento de sinal: recebimento de um sinal.
Evento temporal: passagem de um intervalo de tempo predefinido.
Evento de mudana: uma condio que se torna verdadeira.
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

10

Tipos de Evento
Evento de chamada
corresponde ao recebimento de uma mensagem de outro objeto.
Pode-se pensar neste tipo de evento como uma solicitao de servio de
um objeto a outro.

Evento de sinal
Neste evento o objeto recebe um sinal de outro objeto que pode faz-lo
mudar de estado.
A diferena bsica entre o evento de sinal e o evento de chamada que
neste ltimo o objeto que envia a mensagem fica esperando a execuo
da mesma.
No evento de sinal, o objeto remetente continua o seu processamento aps
ter enviado o sinal.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

11

Tipos de Evento (cont.)


Evento de temporal
Corresponde passagem de um intervalo de tempo predefinido.
O objeto pode interpretar a passagem de um certo intervalo de tempo como sendo
um evento.

especificado com a clusula after seguida de um parmetro que especifica um


intervalo de tempo.
after(30 segundos): indica que a transio ser disparada 30 segundos aps o objeto
ter entrado no estado atual.

Evento de mudana
Corresponde a uma condio que se torna verdadeira.
representado por uma expresso de valor lgico (verdadeiro ou falso) e
especificado utilizando-se a clusula when.
when(saldo > 0): significa que a transio disparada quando o valor do atributo
saldo for positivo.

Eventos temporais tambm podem ser definidos utilizando-se a clusula when.


when(data = 13/07/2002)
when(horrio = 00:00h)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

12

Exemplo (ContaBancria)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

13

Exemplo (OfertaDisciplina)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

14

Eventos resultando em eventos


A ocorrncia de um evento A relevante pode ocasionar a
ocorrncia de um evento B relevante para outro objeto.
No exemplo a seguir, alm da transio de estados, o evento
OutroEvento (relevante a objetoAlvo) tambm disparado.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

15

Condio de guarda
uma expresso de valor lgico que condiciona o disparo de
uma transio.
A transio correspondente disparada se e somente se o evento
associado ocorre e a condio de guarda verdadeira.
Uma transio que no possui condio de guarda sempre disparada quando o
evento ocorre.

A condio de guarda pode ser definida utilizando-se


parmetros passados no evento e tambm atributos e
referncias a ligaes da classe em questo.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

16

Aes
Ao transitar de um estado para outro, um objeto pode realizar
uma ou mais aes.
Uma ao uma expresso definida em termo dos atributos,
operaes, associaes da classe ou dos parmetros do evento
tambm podem ser utilizados.
A ao associada a uma transio executada se e somente se
a transio for disparada.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

17

Atividades
Semelhantes a aes, atividades so algo que deve ser
executado.
No entanto, uma atividade pode ser interrompida (uma ao
no pode).
Por exemplo, enquanto a atividade estiver em execuo, pode acontecer
um evento que a interrompa.

Outra diferena: uma atividade sempre est associada a um


estado (ao contrrio, uma ao est associada a uma transio).

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

18

Ponto de juno
Pode ser que o prximo estado de um objeto varie de acordo
com uma condio.
Se o valor da condio for verdadeiro, o objeto vai para um
estado E1; se o valor for falso, o objeto vai para outro estado E2.
como se a transio tivesse bifurcaes, e cada transio de
sada da bifurcao tivesse uma condio de guarda.

Essa situao pode ser representada em um DTE atravs de um


ponto de juno
Pontos de juno permitem que duas ou mais transies
compartilhem uma trajetria de transies.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

19

Ponto de juno
De uma forma geral, pode haver um nmero ilimitado de
transies saindo de um ponto de juno.
Pode haver tambm uma transio de sada que esteja rotulada
com a clusula else.
Se as outras condies forem falsas, a transio da clausula else
disparada.

Pontos de juno permitem que duas ou mais transies


compartilhem uma trajetria de transies.
De uma forma geral, pode haver um nmero ilimitado de
transies saindo de um ponto de juno.
Pode haver tambm uma transio de sada que esteja rotulada
com a clusula else.
Se as outras condies forem falsas, a transio da clausula else
disparada.
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

20

Exemplo de ponto de juno

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

21

Clusulas
No compartimento adicional de um retngulo de estado
podem-se especificar aes ou atividades a serem executadas.
Sintaxe geral: evento / [ao | atividade]
H trs clusulas predefinidas: entry,exit,do
Clusula entry
Pode ser usada para especificar uma ao a ser realizada no momento em que o
objeto entra em um estado.
A ao desta clusula sempre executada, independentemente do estado do
qual o objeto veio.
como se a ao especificada estivesse associada a todas as transies de entrada
no estado.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

22

Clusulas
Clusula exit
Serve para declarar aes que so executadas sempre que o objeto sai de um
estado.
sempre executada, independentemente do estado para o qual o objeto vai.
como se a ao especificada estivesse associada a todas as transies de
sada do estado.

Clusula do
Usada para definir alguma atividade a ser executada quando o objeto passa para
um determinado estado.
Ao contrrio da clusula entry, serve para especificar uma atividade, em vez de
uma ao.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

23

Clusula do - exemplo

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

24

Clusulas entry e exit - exemplo

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

25

Clusula do - exemplo

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

26

Exemplo (Despertador)

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

27

9.2 Identificao dos elementos de um


diagrama de estados

Identificao de elementos do DTE


Um bom ponto de partida para identificar estados analisar os
possveis valores de seus atributos e as ligaes que ele pode
realizar com outros objetos.
No entanto, a existncia de atributos ou ligaes no
suficiente para justificar a criao de um DTE.
O comportamento de objetos dessa classe deve depender de tais atributos ou
ligaes.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

29

Identificao de elementos do DTE


J que transies dependem de eventos para ocorrer, devem-se
identificar estes eventos primeiramente.
Alm disso, deve-se examinar tambm se h algum fator que
condicione o disparo da transio.
Se existir, este fator deve ser modelado como uma condio de
guarda da transio.

Um bom ponto de partida para identificar eventos a


descrio dos casos de uso.
Os eventos encontrados na descrio dos casos de uso so
externos ao sistema.
Contudo, uma transio pode tambm ser disparada por um
evento interno ao sistema.
Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

30

Identificao de elementos do DTE


De uma forma geral, cada operao com visibilidade pblica
de uma classe pode ser vista como um evento em potencial.
Uma outra fonte para identificao de eventos associados a
transies analisar as regras de negcio.
Um cliente do banco no pode retirar mais de R$ 1.000 por dia de
sua conta.
Os pedidos para um cliente no especial devem ser pagos
antecipadamente.
O nmero mximo de alunos por curso igual a 30.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

31

9.3 Construo de diagramas de


transio de estados

Um DTE para uma classe


Os diagramas de estados so desenhados por classe.
Desvantagem: dificuldade na visualizao do estado do sistema como
um todo.
Essa desvantagem parcialmente compensada pelos diagramas de
interao.

Nem todas as classes de um sistema precisam de um DTE.


Somente classes que exibem um comportamento dinmico relevante.
Objetos cujo histrico precisa ser rastreado pelo sistema so tpicos
para se construir um diagrama de estados.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

33

Procedimento para construo


1.
2.
3.
4.
5.
6.
7.
8.

Identifique os estados relevantes para a classe.


Identifique os eventos relevantes. Para cada evento, identifique qual a
transio que ele ocasiona.
Para cada estado: identifique as transies possveis quando um evento
ocorre.
Para cada estado, identifique os eventos internos e aes correspondentes.
Para cada transio, verifique se h fatores que influenciam no seu
disparo. (definio de condies de guarda e aes).
Para cada condio de guarda e para cada ao, identifique os atributos e
ligaes que esto envolvidos.
Defina o estado inicial e os eventuais estados finais.
Desenhe o DTE.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

34

9.4 Modelagem de estados no


processo de desenvolvimento

Modelagem de estados no PDS


Os DTEs podem ser construdos com base nos diagramas de
interao e nos diagramas de classes.
Durante a construo do DTE para uma classe, novos atributos
e operaes podem surgir.
Essas novas propriedades devem ser adicionadas ao modelo de classes.

A construo de um DTE freqentemente leva descoberta de


novos atributos para uma classe
principalmente atributos para servirem de abstraes para estados.

Alm disso, este processo de construo permite identificar


novas operaes na classe
pois os objetos precisam reagir aos eventos que eles recebem.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

36

Modelagem de estados no PDS


O comportamento de um objeto varia em funo do estado no
qual ele se encontra.
Pode ser necessria a atualizao de uma ou mais operaes de
uma classe para refletir o comportamento do objetos em cada
estado.
Por exemplo, o comportamento da operao sacar() da classe
ContaBancria varia em funo do estado no qual esta classe
se encontra
saques no podem ser realizados em uma conta que esteja no estado
bloqueada.

Princpios de Anlise e Projeto de Sistemas com UML - 2 edio

37

Você também pode gostar