UML: modelagem dinâmica
2
UML: modelagem dinâmica
Prof.: Clarindo Isaías Pereira da Silva e Pádua
Synergia / Gestus
Departamento de Ciência da Computação - UFMG
Bibliografia
• Rumbaugh, J.; Jacobson, I.; Booch, G., The Unified Modeling Language Reference Manual, Addison Wesley, 2nd edition, 2004.
• Booch, G.; Rumbaugh, J.; Jacobson, I., "Unified Modeling Language User Guide", 2nd Edition, Addison Wesley, 2005.
• Eriksson, H-E, Penker, M. Lyons, B., Fado, D. UML 2 Toolkit, Wiley, 2004
UML: modelagem dinâmica
Atividade
Evento
Máquina de estado
Interação
5
O comportamento dinâmico de um objeto tem duas
dimensões:
mudanças de estado interna.
Descrevem como o objeto altera seu estado, por exemplo, mostrando o valor de seus atributos.
interações.
Descrevem o comportamento externo e sua interação com outros objetos.
UML: modelagem dinâmica
6
UML: modelagem dinâmica
Atividade
Atividade é um grafo de nodos e fluxos que
mostra o fluxo de controle (e, opcionalmente,
dados) através dos passos de uma
computação.
Atividades são mostradas em diagramas de
atividade.
7
UML: modelagem dinâmica > Atividade
Diagrama de atividade
Indica fluxo de controle de atividade em atividade.
Diagramas de interação mostram fluxo de controle de objeto a objeto – diagramas de atividade enfatizam o fluxo de controle de atividade para atividade.
Pode ser considerado um caso especial de diagramas de
estado onde os estados são estados de atividade e as transições são disparadas pelo término de uma atividade.
8
UML: modelagem dinâmica > Atividade > Diagrama de atividades
Transição
• Quando uma atividade termina, o fluxo de controle passa
imediatamente para a atividade seguinte.
• A execução começa no estado de partida e termina quando o controle atinge o estado final.
Avalia estoque
9
Desvio
• Indica caminhos alternativos de controle baseados em condições de guarda.
• Uma condição de guarda é denotada por: [expressão booleana].
• Exemplo:
Avalia estoque
Faz pedido [ Neces sita repo sição? ]
UML: modelagem dinâmica > Atividade > Diagrama de atividades
10
Separação/junção de fluxo de controle
•
Indica execução concorrente de atividades.
•
Barras de sincronização são utilizadas para indicar a
separação e a junção de fluxos de controle.
•
Um fluxo de controle pode se subdividir em dois ou
mais fluxos.
UML: modelagem dinâmica > Atividade > Diagrama de atividades Recebe pe didos Com uni ca recebim ento Analisa p edido s Localiza produtos Providencia produtos faltantes Providencia transação
UML: modelagem dinâmica > Atividade > Diagrama de atividades > Separação/junção de fluxo de controle
Raias
•
Raias podem ser usadas para indicar entidades
responsáveis pela execução de atividades.
•
Raias correspondem a entidades do mundo real, em
geral estruturas organizacionais.
UML: modelagem dinâmica > Atividade > Diagrama de atividades
13 Concepção <<Process>> Desenvolvimento do produ to <<Process>> Lançamento do produto <<Process>> Manufatura Vendas Marketing
Desenv olv imento de produtos Pesquisa
UML: modelagem dinâmica > Atividade > Diagrama de atividades > Raias
14
Fluxo de objetos
• É um tipo de fluxo de controle que representa o relacionamento entre o objeto e a atividade ou transição que o criou.
• Usa-se o relacionamento de dependência para indicar o fluxo de controle.
• Pode-se indicar o estado do objeto entre [ ]s abaixo de seu nome.
Furação : Chapa de Aço
<<Physical>>
[Nova] Placa : Chapa de
Aço <<Physi cal >>
[Furada]
UML: modelagem dinâmica > Atividade > Diagrama de atividades
15
Diretrizes
•
Um diagrama de atividades bem estruturado:
• foca na comunicação de aspectos dinâmicos do sistema;
• contêm somente os elementos essenciais para o entendimento desses aspectos;
• provê detalhes consistentes com o nível de abstração (usa somente os adornos necessários);
• não é minimalista a ponto de omitir detalhes importantes. UML: modelagem dinâmica > Atividade > Diagrama de
atividades
16
• Quando usar um diagrama de atividades: • dê-lhe um nome que comunique seu propósito;
• comece modelando o fluxo primário. Enderece concorrência, desvios e fluxo de objetos como consideração secundária, talvez até em diagramas separados;
• busque minimizar cruzamento de linhas;
• use notas e cores para chamar atenção para características importantes do diagrama.
UML: modelagem dinâmica > Atividade > Diagrama de atividades > Diretrizes
17
Eventos
• Em um sistema estático nada acontece.• Em um sistema dinâmico as “coisas” acontecem e influenciam o comportamento de outras “coisas”.
• “Coisas” acontecem disparadas por eventos internos ou externos.
• ou seja, eventos são usados para modelar essas “coisas” que acontecem.
• Um evento é a especificação de uma ocorrência significante que tem uma localização no tempo e no espaço.
UML: modelagem dinâmica
18
• Eventos podem ser internos ou externos.
• Eventos externos são aqueles que passam entre atores e o sistema.
• Por exemplo, quando o usuário aciona um comando ou quando um sensor sinaliza um situação importante (colisão de um carro).
• Eventos internos são aqueles passados entre objetos que vivem dentro de um sistema.
• por exemplo, uma exceção de overflow.
UML: modelagem dinâmica > Eventos
Disparadores
•
Disparador (trigger) é a especificação de um evento
cuja ocorrência causa a execução de um
comportamento, como por exemplo, tornar uma
transição habilidade a disparar (fire).
•
A palavra pode ser usada como um nome (como o
evento) ou um verbo (para a ocorrência do evento).
UML: modelagem dinâmica > Eventos
•
Há quatro tipos de eventos:
• sinal;
• chamada;
• tempo;
• mudança.
21
Sinal
• Um sinal é um tipo de evento que representa a especificação de um estímulo assíncrono comunicado entre objetos.
• É um meio explicito através do qual objetos podem comunicar entre si assincronamente.
• Uma ação assíncrona é uma requisição na qual o objeto
remetente não pára para esperar pelos resultados (ao contrário da ação síncrona)
UML: modelagem dinâmica > Eventos
22
• Um sinal é um classificador explicitamente nomeado como Sinal, usado para comunicação explícita entre objetos.
• Um sinal tem uma lista de parâmetros, expressos como atributos.
• Um sinal é explicitamente enviado por um objeto a outro objeto ou a um conjunto de objetos.
• O envio de uma sinal a um conjunto de objetos pode ser considerado como broadcasting (radio ou tele-difusão).
UML: modelagem dinâmica > Eventos > Sinal
23
• O remetente especifica os argumentos de um sinal quando este é enviado.
• Enviar um sinal significa instanciar um objeto sinal e transmití-lo ao conjunto de objetos alvo.
• O recebimento de um sinal é um evento que visa disparar transições na máquina de estados receptora.
• Um sinal enviado a um conjunto de objetos pode disparar uma ou nenhuma transição em cada objeto receptor independentemente.
UML: modelagem dinâmica > Eventos > Sinal
24
•
Um sinal pode ser generalizado.
• Um sinal filho herda os parâmetros do sinal pai e pode
criar parâmetros adicionais.
• Um sinal filho satisfaz um disparador que requeira um
de seus ancestrais (polimorfismo de eventos).
25
Hierarquia de eventos
UML: modelagem dinâmica > Eventos > Sinal
26
•
Um sinal pode ser representado num
diagrama de classes como uma classe
estereotipada e pode-se indicar a classe ou
operação que o gera.
UML: modelagem dinâmica > Eventos > Sinal
• Exemplo: cd diagrama-classe «signal» Colisão - Força: float Agente de mov imento - posição: int - velocidade: int
+ move Para() : void
«send»
UML: modelagem dinâmica > Eventos > Sinal
• Para usar um sinal como um disparador de uma transição, usa-se a sintax:
nome-do-sinal (lista de parâmetros),
• Onde a lista de parâmetros tem a sintax:
nome-do-parâmetro: expressão de tipo
• Exemplo: diagrama de estado mostrando um evento disparando uma transição e executando uma ação
sm diagrama-estado
Disponív el Ativ o
tel efone no gancho /cai Conexão
29
Chamada
• Uma chamada representa o despacho de uma operação de um objeto.
• Em geral, se um objeto invoca uma operação de um outro objeto que tem uma máquina de estado, o controle passa do remetente para o receptor, a operação é executada, uma transição (se houver) é disparada pela chamada, o receptor muda de estado e o controle volta para o remetente.
UML: modelagem dinâmica > Eventos
30
Evento tempo e mudança
• Um evento de tempo é um evento que representa a passagem de tempo, ou seja,
• é utilizado para modelar o tempo disparando uma transição.
• É representado por uma expressão de tempo.
• Um evento de mudança representa a satisfação de uma condição.
• É representado por when seguido de uma expressão booleana entre parênteses.
UML: modelagem dinâmica > Eventos
31
• Exemplo: diagrama de estados mostrando transição disparada por evento de tempo e de mudança.
sm diagrama-estado
Disponív el Ativ o
evento de tempo Evento de
mudança
after (2 seconds) /cai Conexão When (11:30PM) /auto Teste
UML: modelagem dinâmica > Eventos > Evento tempo e mudança
32
UML: modelagem dinâmica
Máquina de estados
A UML define dois tipos de máquinas de estados:
Máquina de estados comportamental.
Capturam o ciclo de vida de objetos, sistemas e subsistemas.
Máquina de estados de protocolo.
São usadas para expressar transições válidas que podem ocorrer em um classificador abstrato como uma interface ou porto.
Aqui consideramos apenas as máquinas de estado
33
UML: modelagem dinâmica > Máquinas de estados
Estados e transição
Um objeto passa por uma série de estados em
seu tempo de vida.
Um estado pode ser considerado uma condição
durante a vida de um objeto durante a qual ele
satisfaz alguma condição, executa uma “do
activity”ou espera por algum evento.
34
Todos os objetos têm um estado.
o estado é o resultado de atividades prévias executadas
pelo objeto.
tipicamente é determinado pelos valores de seus
atributos e links a outros objetos.
Um objeto muda de um estado para outro quando
alguma coisa, um evento, acontece.
Exemplos de evento: uma conta é paga, uma ação
aumenta de valor, um raio cai em um tranformador, etc.
UML: modelagem dinâmica > Máquinas de estados > Estados e transições
Um estado é uma condição ou situação
durante a vida de um objeto durante a qual
ele satisfaz algumas condições, executa
algumas atividades ou espera por eventos.
UML: modelagem dinâmica > Máquinas de estados > Estados e transições
Estados iniciais e finais.
Como mostrado no exemplo, são dois estados especiais
que indicam, respectivamente:
o ponto de partida de uma máquina de estado ou sub-estado.
que a execução da máquina de estado ou estado envolvente terminou.
UML: modelagem dinâmica > Máquinas de estados > Estados e transições
sm Estados iniciais e finais
Estado A
Ini tial
Estado B
Final Avali a
37
Transições
Uma transição é um relacionamento entre dois estados
indicando que o objeto no primeiro estado vai executar certas ações e entrar no segundo estado quando um evento especificado ocorrer e uma condição de guarda for satisfeita.
Ocorrendo a mudança de estados diz-se que a transição
disparou.
Um evento disparador pode ser um dos quatro tipos de
eventos mostrados anteriormente.
No caso de sinais ou chamadas, podem conter parâmetros.
UML: modelagem dinâmica > Máquinas de estados > Estados e transições
38
Sintaxe de uma transição de estados:
Assinatura de evento “[“condição de guarda “]” “/”
expressão de ação “^” cláusula de envio
Onde a assinatura de evento indica o nome do
evento e eventuais parâmetros e a cláusula de envio
indica o destinatário de possíveis eventos gerados
com ação.
UML: modelagem dinâmica > Máquinas de estados > Estados e transições > Transições
39
A condição de guarda é denotada por uma
expressão booleana entre [...].
Ela é avaliada somente depois de ocorrer o
evento disparador.
Ela é avaliada somente uma vez depois do
evento ocorrer, mas pode ser avaliada
novamente se o evento voltar a ser disparado.
UML: modelagem dinâmica > Máquinas de estados > Estados e transições > Transições
40
Uma ação é uma computação executável
atômica (indivisível).
Podem ser chamadas de operações (do objeto
que possui a máquina ou de outro objeto), a
criação ou destruição de outros objetos ou o
envio de um sinal.
No caso de envio de sinal, a palavra send deve
preceder o nome do sinal.
UML: modelagem dinâmica > Máquinas de estados > Estados e transições > Transições
41
Uma máquina de estados mostra como um objeto
reage a eventos e como ele muda seu estado interno.
Exemplo: controle de um elevador.
UML: modelagem dinâmica > Máquinas de estados
sm Statecharts Initial Primeiro andar Subindo Aguardando Descendo Retornando ao primeiro andar Chegou Tempo esgotado Desce Chegou Sobe Chegou Sobe 42
Uma máquina de estados é a especificação da
seqüencia de estados que um objeto atravessa em resposta a eventos durante sua vida, junto com suas ações como respostas.
Uma máquina de estados é associada a classes,
colaborações ou métodos fontes e especifica o comportamento das instâncias do elemento fonte.
UML: modelagem dinâmica > Máquinas de estados
Diagramas de estados mostram máquina de estados. Objetos têm um tempo de vida – nascem quando são criados
e deixam de existir quando são destruídos.
Durante seu tempo de vida, objetos que somente recebem ou enviam mensagem de maneira síncrona e cujo
comportamento não depende de seu passado, não
necessitam de uma máquina de estados para descrever seu comportamento.
UML: modelagem dinâmica > Máquinas de estados
Por outro lado, se o objeto precisa responder a sinais
(assíncronos),
por exemplo, um telefone celular responde a chamadas de
outros telefones e a eventos de seu teclado.
ou se o comportamento presente do objeto depende de seu passado,
por exemplo, o comportamento de um míssil ar-ar depende se o
avião está em terra ( o míssil não pode ser disparado) ou não ou se o míssil está calculando seu alvo (só depois ele poderia ser disparado).
seu comportamento deve ser especificado por uma máquina de estados.
45
Exemplo
Pedido criado Pedido colocado no mercado Pedido cancelado Pedido fracassado Pedidosucedido / Criar propriedade de t ítulo Pedido
recebido
do cliente Colocado no mercado Pedido casado/ marcar como concluído
Fim de dia útil Pedido cancelado / colocar
como cancelado
Colocado de volta no mercado para próximo dia
Aceito como fracasso / marcar como
cancelado
UML: modelagem dinâmica > Máquinas de estados
46
Estado e transições avançados
Um estado tem várias partes.
Nome: distingue um estado de outros;
Ações de entrada e de saída: ações executadas na entrada ou na
saída de estados.
Transições internas: transições que são trabalhadas sem
mudança de estados.
Subestados: estrutura aninhada de um estado envolvendo
sub-máquinas de estado.
Atividades: uma atividade pode ser uma nova máquina de
estados ou uma seqüencia de ações.
Estados adiados: uma lista de eventos que não são trabalhados
naquele estado – são adiados e colocados em fila para serem trabalhadas em outro estado do objeto.
UML: modelagem dinâmica > Máquinas de estados
47
Ações de entrada e de saída: são usadas para se
disparar as mesmas ações independente de onde
se veio ou para onde se vai.
Notação (dentro do estado): entry / ação ou
exit / ação
Transições internas: são usadas para se responder
a eventos sem sair do estado. Diferente de uma
auto transição, a transição interna não causa a
execução das ações de entrada ou de saída do
estado.
Notação: evento / ação
UML: modelagem dinâmica > Máquinas de estados > Estados e transições avançados
48
Subestados: estrutura aninhada de um
estado envolvendo sub-máquinas de
estado.
Notação: máquina de estados aninhada.
Um estado que contém sub-estados é chamado
de estado composto.
UML: modelagem dinâmica > Máquinas de estados > Estados e transições avançados
49
Atividades: usado para indicar uma atividade a ser realizada quando o objeto está naquele estado.
Notação: do / máquina de estados ou
do / ação 1; ação 2; ação 3
Estados adiados: usado quando um estado não prevê
transição para um evento e deseja-se manter este evento (adiado) até que se atinja um estado onde aquele evento não seja adiado.
Notação: evento / defer
UML: modelagem dinâmica > Máquinas de estados > Estados e transições avançados
50
Diagrama de Interação