Buscar

4 UML DiagramasSequencia

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Unified Modeling Language
Diagramas de Sequência
José Correia, Abril 2006
(http://paginas.ispgaya.pt/~jcorreia/)
José Correia UML - Diagramas de Sequência 2
UML: modelação do comportamento
? A modelação do comportamento de um sistema de software consiste, 
segundo a abordagem orientada por objectos, em dois tipos distintos 
de especificações:
• na modelação do comportamento inter-objectos
- identificação dos seus padrões de trocas de mensagens - diagramas de 
interacção
• na modelação do comportamento intra-objecto
- identificação dos estados em que um objecto se pode encontrar ao longo do 
seu ciclo de vida, dos eventos envolvidos, bem como dos seus algoritmos de 
implementação - diagramas de estados e de actividades
? A modelação de um sistema de software com base em diagramas de 
classes e de objectos traduz apenas as suas relações estruturais e 
estáticas
José Correia UML - Diagramas de Sequência 3
Diagramas de interacção
? Um diagrama de interacção mostra um padrão de interacção entre 
vários objectos, com objectos e mensagens trocadas entre esses 
objectos por uma certa ordem
• diagramas de sequência dão ênfase à ordem temporal de transmissão 
das mensagens
- ou seja, realçam a ordem pela qual as coisas acontecem
• diagramas de colaboração dão ênfase ao relacionamento entre os 
objectos
• os diagramas de sequência e diagramas de colaboração são 
colectivamente designados diagramas de interacção
- os diagramas de interacção são usados para modelar casos de uso, 
operações, etc.
? A seguir é apresentado um exemplo de um diagrama de sequência, 
correspondente à execução de uma reserva num hotel
• exemplo extraído de “Practical UML: A Hands-On Introduction for Developers”
José Correia UML - Diagramas de Sequência 4
José Correia UML - Diagramas de Sequência 5
Objectos e Linhas de Vida
? Cada objecto participante é representado por uma caixa em cima 
duma linha vertical a traço interrompido (linha de vida)
• no exemplo apresentado, os objectos participantes são instâncias de 
janela de reservas (Reservation window), cadeia de hotéis 
(HotelChain) e hotel
? Podem aparecer actores (objectos externos ao sistema), a iniciar
interacções
• no exemplo, o objecto que inicia a sequência de mensagens é uma janela 
de reservas
? Cada linha tracejada vertical é uma linha de vida (lifeline), 
representando o tempo em que um objecto existe
? O tempo cresce de cima para baixo
José Correia UML - Diagramas de Sequência 6
Mensagens
? Uma mensagem é uma comunicação entre objectos (emissor e 
receptor) que veicula informação na expectativa de provocar uma 
resposta (acção ou actividade)
? Uma mensagem é representada por uma seta horizontal do emissor 
para o receptor, com um nome e possíveis argumentos
• uma janela de reservas envia uma mensagem makeReservation()
para uma cadeia de hotéis (HotelChain)
• de seguida, a cadeia de hotéis envia uma mensagem
makeReservation() para um Hotel. Se o Hotel tiver quartos livres, 
então faz uma reserva e uma confirmação
objecto1:Classe1 objecto2: :Classe3
mensagem
José Correia UML - Diagramas de Sequência 7
Mensagens condicionais, iteradas e com 
retorno
? O valor de retorno de uma mensagem síncrona pode ser indicado na 
chamada, com atribuição :=, ou na mensagem de retorno
• exemplo: isRoom := available()
• “isRoom” poderá (e, neste caso é) ser usado em mensagens e condições 
a seguir
• Também se pode escrever “isRoom” na mensagem de retorno
? Uma mensagem condicional é indicada por uma condição de guarda 
entre parêntesis rectos [ ]
• exemplo: [isRoom] new
• a mensagem só é enviada se a condição se verificar
• condições permitem mostrar várias sequências num único diagrama, 
possivelmente com bifurcações de controlo
? Uma mensagem iterada é indicada com asterisco *, seguido ou não 
de uma fórmula de iteração
• exemplo: *[i:=1..n] update(i)
José Correia UML - Diagramas de Sequência 8
Activação ou Foco de controlo
? Uma activação (ou foco de controlo) mostra o período de tempo 
durante o qual um objecto está a executar uma acção, quer 
directamente quer indirectamente (através de um procedimento 
subordinado)
? Notação: barra rectangular fina sobre a linha de vida do objecto (barra 
de activação) 
• a sua indicação é opcional
? Uma seta vai de um emissor para o topo da barra de activação da 
mensagem na linha de vida do receptor
• a barra de activação representa a duração da execução da mensagem
• o retorno de chamada é implícito quando o objecto perde o foco de 
controlo
José Correia UML - Diagramas de Sequência 9
Criação e destruição de objectos 
? Criação de objecto é representada por mensagem dirigida à própria 
caixa que representa o objecto (em vez de ser dirigida à linha de vida)
• a mensagem de criação pode ter estereótipo «create»
? Destruição de objecto é representada por um X no fim da linha de 
vida do objecto
• mensagem de destruição pode ter estereótipo «destroy»
• pode ocorrer na recepção de mensagem ou no retorno de chamada
• objecto pode auto destruir-se
ob1:C1
ob1:C1
José Correia UML - Diagramas de Sequência 10
Mensagens
? Mensagens (chamadas) recursivas ou auto-chamadas
• no exemplo apresentado, o Hotel lança uma chamada a si próprio, para 
determinar se há algum quarto livre. Se houver, então o Hotel cria uma 
reserva e uma confirmação
• o asterisco na auto-chamada significa iteração (para ter a certeza que 
existe um quarto livre em cada um dos dias da estadia no hotel)
• as chamadas recursivas provocam barras empilhadas
? Em geral, uma acção de um objecto capaz de provocar uma resposta 
noutro objecto pode ser modelada como uma mensagem do primeiro 
objecto para o segundo objecto
? As mensagens podem ser síncronas, assíncronas ou indiferenciadas
José Correia UML - Diagramas de Sequência 11
Mensagens síncronas
? Mensagem síncrona: o emissor fica parado à espera de resposta
? Corresponde normalmente a chamada de operação do receptor
• o Receptor pode ser o mesmo objecto que o Emissor
? Origina fluxo de controlo encaixado, com sub-sequências de 
mensagens 
• a execução da operação chamada pode envolver a emissão de uma sub-
sequência de mensagens
? Notação: seta cheia
? Opcionalmente, pode-se indicar o retorno de uma mensagem síncrona 
com linha a traço interrompido
José Correia UML - Diagramas de Sequência 12
Exemplo: Tratar Pedido de Stock
[e=“sim"]retirar(q)
:Janela de Selecção 
de Pedidos :Pedido
:Linha de 
Pedido
e2:Encomenda
tratar()
* tratar()
:Item de 
Stock
e:=existe?(q)
b:=baixo?()
[b=“sim”] criar()
[e=“não”] criar()
e1:Encomenda
Para cada 
linha do 
pedido
Quantidade pedida
Para repor stock
Para poder 
satisfazer 
pedido
Bifurcação 
de 
controlo
Sincronização 
de controlo
Mensagem
Objecto
José Correia UML - Diagramas de Sequência 13
Mensagens assíncronas
? Mensagem assíncrona: o emissor não fica parado à espera de 
resposta.
? Uma mensagem é assíncrona se permitir que o seu emissor envie 
mensagens adicionais enquanto a mensagem original estiver a ser 
processada.
? Corresponde normalmente a envio de sinal entre dois objectos 
concorrentes (em processos ou threads separados). 
? Originam fluxo de controlo concorrente, com sequências de 
mensagens concorrentes.
? Notação:
? O timing de uma mensagem assíncrona é independente do timing das 
mensagens intervenientes.
José Correia UML - Diagramas de Sequência 14
Exemplo: Executar transacção com sub-
transacções concorrentes
Adormecida à
espera de sinal 
de sub-
transacção
t: Transacção
criar s1: Sub-transacção
s2: Sub-transacção
criar
criar
restam sub-
transacções?
ok
restam sub-
transacções?
ok
auto-destruição
do objecto
e executarJosé Correia UML - Diagramas de Sequência 15
Mensagens indiferenciadas
? Mensagem indiferenciada (ou mensagens simples): não se decide 
se é síncrona ou assíncrona
? Normalmente são usadas na modelação de interacções na fronteira 
do sistema
• entre actores e o sistema representado por um ou mais objectos
? Originam fluxo de controlo plano (flat), com sequência simples de 
mensagens
? Notação:
José Correia UML - Diagramas de Sequência 16
Exemplo: Fazer chamada telefónica
restrição 
temporal
quem é chamado: Pessoaquem chama: Pessoa :Rede telefónica
levanta auscultador
dá sinal de marcar
marca (1)
termina sinal de marcar
marca (1)
marca (2)
dá sinal de chamada toca o telefone
levanta auscultador
pára de tocarpára sinal de chamada
poisa auscultador
conexão terminada
poisa auscultador
conexão terminada
a
b
{b-a < 10 seg.}
marca 
temporal
nesta altura 
decorre a 
conversação
José Correia UML - Diagramas de Sequência 17
Exemplo: Requisição de teste-diagnóstico
? Nota: Exemplo extraído de “Practical UML: A Hands-On Introduction for Developers”
? O diagrama de sequência seguinte, ilustra a acção de uma enfermeira 
(nurse), requisitando um teste-diagnóstico num laboratório médico (medical 
lab), o qual depende da aprovação de uma companhia de seguros (insurance 
company)
? Existem duas mensagens assíncronas a partir da Enfermeira:
• pedir ao Laboratório Médico para reservar uma data para o teste
• pedir à Companhia de Seguros para aprovar o teste
• a ordem pela qual estas mensagens são enviadas, ou completadas, é irrelevante
? Se a Companhia de Seguros aprovar o teste (valor de retorno OK=True), 
então a Enfermeira marcará o teste ( schedule(t,d) ) para a data (d) 
fornecida pelo Laboratório Médico
José Correia UML - Diagramas de Sequência 18
Requisição de teste-diagnóstico: uma possível 
solução...
José Correia UML - Diagramas de Sequência 19
Exemplo: Falha de sub-transacção
t: Transacção
criar s1: Sub-transacção
s2: Sub-transacção
criar
criar
matar sub-
transacções
falhou
matar
desfazer 
alterações
José Correia UML - Diagramas de Sequência 20
Relação com diagramas de casos de uso
? Tipicamente, um diagrama de interacção captura um comportamento 
possível de um único caso de uso
• mostra exemplos de objectos participantes e mensagens que são 
trocadas entre esses objectos no âmbito do caso de uso
? A um caso de uso podem-se associar vários diagramas de sequência
• para sequências normais e sequências excepcionais de funcionamento
? Actores podem aparecer em diagramas de sequência, como objectos 
externos ao sistema
• normalmente iniciam as interacções
José Correia UML - Diagramas de Sequência 21
Repor Bebidas de
acordo com Vendas
Abrir a Máquina
Fechar a Máquina
Agente do 
Fornecedor
Repor Bebidas
<<extend>> <<include>>
<<include>>
Retirar Dinheiro
<<include>>
<<include>>
Dono
ClienteComprar Bebida
Extension Point
encher prateleiras
? Desenhe o diagrama de sequência (representando as barras de activação) 
correspondente ao caso de uso “Comprar Bebida”.
? Considere que a máquina de bebidas é composta por três objectos principais: Interface
(painel de interface com o utilizador), Registadora (caixa registadora que guarda o 
dinheiro) e Dispensa (armário onde são guardadas as bebidas) e o seguinte cenário 
ideal (em que tudo corre bem, i.e., existe a bebida pretendida, há troco, etc): «O cliente 
insere o dinheiro na ranhura existente no painel de interface da máquina e, de seguida, 
selecciona o tipo de bebida. O dinheiro cai na caixa registadora e o painel de interface 
pede a bebida à dispensa. A dispensa envia a bebida seleccionada para o painel de 
interface, o qual a entrega ao cliente juntamente com o troco.»
José Correia UML - Diagramas de Sequência 22
Exemplo: Comprar bebida (cenário ideal)
 : Interface : Cliente : Registradora : Dispensa
Inserir(dinheiro)
Selecionar(tipoBebida)
Guardar(dinheiro)
Pedir(tipoBebida)
Entregar(bebida)
Entregar(bebida)
Troco(dinheiro)
DevolveTroco(dinheiro)
José Correia UML - Diagramas de Sequência 23
Diagramas de classes vs. Interacções: Operações
? O comportamento de uma classe é representado pelas suas 
operações...
... mas as operações podem ser encontradas a partir dos diagramas de 
interacção
RegistrationManager
addCourse(Student,Course)
:Registration
form
add course(joe, math 01)
:Registration
manager
José Correia UML - Diagramas de Sequência 24
Diagramas de classes vs. Interacções: Relações
? Existem 3 tipos de relações entre objectos:
• associações
• agregações
• dependências
? As relações fornecem um caminho para a comunicação entre objectos
• as relações podem ser encontradas a partir dos diagramas de interacção
... mas para dois objectos “falarem” tem de haver uma ligação entre eles
RegistrationManager
: Registration
manager
add student(joe)
Math 101: 
Course
Course
José Correia UML - Diagramas de Sequência 25
Exemplo: Envio/Recepção de faxes
? Num contexto de envio/recepção de faxes, considere um sistema 
composto pelos seguintes objectos:
• Emissor (máquina de onde o fax é enviado)
• Receptor (máquina onde o fax é recebido)
• Central (central que encaminha faxes e chamadas telefónicas)
? Desenhe o diagrama de sequência (representando as barras de 
activação) correspondente ao cenário em que tudo corre bem (envio 
do número, estabelecimento da ligação, envio do fax, desligar, etc)
José Correia UML - Diagramas de Sequência 26
Emissor : Maq Fax : Central Receptor : Maq Fax
enviar(numero) estabelecerLigacao()
LigacaoEstabelecida()
LigacaoEstabelecida()
enviar(fax)
desligar
ConexaoTerminada()
ConexaoTerminada()
ImprimirReportConfirmacao()
José Correia UML - Diagramas de Sequência 27
Diagramas de Sequência: Resumo da notação
José Correia UML - Diagramas de Sequência 28
Diagramas de Sequência: Resumo
? Um diagrama de sequência é um diagrama de interacção que 
detalha como as operações são levadas a cabo
• que mensagens são enviadas (entre objectos) e quando
? Os diagramas de sequência são organizados de acordo com o tempo
• mostram interacções de objectos ordenados numa sequência de tempo
• o tempo progride à medida que descemos na página
• os objectos envolvidos na operação são listados da esquerda para a 
direita, de acordo com a altura em que tomam parte na sequência de 
mensagens
• captura o comportamento dinâmico (time-oriented)
? Objectivo dos diagramas de sequência:
• modelizar o fluxo de controlo
• ilustrar cenários típicos
José Correia UML - Diagramas de Sequência 29
Referências
Estes apontamentos foram baseados em:
? “UML – Unified Modeling Language”, Curso em Tecnologia de 
Objectos, FEUP, Novembro 2000
Ademar Aguiar, Gabriel David, João Pascoal Faria
? “UML – Diagramas de Interacção”, ISPGaya, Novembro 1998
César Toscano
? “Practical UML: A Hands-On Introduction for Developers”,
TogetherSoft Corporation
? “UML, Metodologias e Ferramentas CASE”, Alberto Rodrigues da 
Silva, Carlos Videira, Maio 2001

Outros materiais