Baixe o app para aproveitar ainda mais
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
Compartilhar