• Nenhum resultado encontrado

Diagramas de Sequência

N/A
N/A
Protected

Academic year: 2021

Share "Diagramas de Sequência"

Copied!
15
0
0

Texto

(1)

Unified Modeling Language

Diagramas de Sequência

José Correia, Abril 2006

(http://paginas.ispgaya.pt/~jcorreia/)

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

(2)

José Correia UML - Diagramas de Sequência 3

Diagramas de interacção

„ Um diagrama de interacçãomostra 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ênciadão ênfase à ordem temporal de transmissão das mensagens

- ou seja, realçam a ordem pela qual as coisas acontecem

• diagramas de colaboraçãodã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”

(3)

José Correia UML - Diagramas de Sequência 5

Objectos e Linhas de Vida

„ Cada objectoparticipante é 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

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

(4)

José Correia UML - Diagramas de Sequência 7

Mensagens condicionais, iteradas e com

retorno

„ O valor de retornode 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)

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

(5)

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 Xno 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

Mensagens

„ Mensagens (chamadas) recursivasou 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

(6)

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çãodo 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

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

(7)

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 sinalentre 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.

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 executar

(8)

José 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:

Exemplo: Fazer chamada telefónica

restrição temporal

quem é chamado: Pessoa quem 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 tocar pára sinal de chamada

poisa auscultador conexão terminada

poisa auscultador

conexão terminada a

{b-a < 10 seg.}b

marca temporal

nesta altura decorre a conversação

(9)

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

Requisição de teste-diagnóstico: uma possível

solução...

(10)

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

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

(11)

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 Cliente Comprar 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.»

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)

(12)

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

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

(13)

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)

Emissor : Maq Fax : Central Receptor : Maq Fax

enviar(numero)

estabelecerLigacao() LigacaoEstabelecida() LigacaoEstabelecida()

enviar(fax)

desligar

ConexaoTerminada() ConexaoTerminada()

ImprimirReportConfirmacao()

(14)

José Correia UML - Diagramas de Sequência 27

Diagramas de Sequência:

Resumo da notação

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

(15)

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

Referências

Documentos relacionados

Pois este tipo de família, que antes (1992), representava mais da metade do número das famílias do quintil inferior do estado do Rio de Janeiro, passou, em 1999, a ser quase

A Resolução 3.427 em seu artigo terceiro determina que as Instituições Financeiras devem manter estrutura de governança compatível com o seu porte, a natureza

a) Havendo no momento da convocação para ascensão ao cargo, mais de uma vaga, efetiva ou temporária, do mesmo cargo e região, caberá ao candidato mais bem classificado

Effects of different solutions irrigation or protocols to prevent the chemical precipitates formed by interaction between sodium hypochlorite and chlorhexidine gluconate and

SELEÇÃO PARA BOLSISTAS NO PROGRAMA DE EDUCAÇÃO TUTORIAL -PET/CONEXÕES DE SABERES: ACESSO E SUCESSO NO ENSINO SUPERIOR (PET ACESSO).. A

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

O Presente Contrato De Prestação De Serviços Se Fundamenta E Se Rege Pelas Disposições Contidas No Artigo 2º Inciso Ii Da Lei Municipal N.º 1013 De 30 De Novembro De 2015,

tidos para o Coefi ciente de Efi cácia Protéica para o leite de búfala, vaca e caseína como padrão, verifi caram que a caseína e o leite de vaca, não apresentaram diferença