Análise e Concepção de Sistemas de Informação Unified Modeling Language (UML) - Modelação do Comportamento - Alberto Manuel Rodrigues da Silva Prof. DEI/IST/UTL Modelação da Dinâmica do Comportamento Use Cases Diagramas de Use Case Interacções Diagramas de Interacção Diagramas de Estado Diagramas de Actividade «…qualquer sistema minimamente interessante os objectos não estão estáticos, mas interagem entre si através da troca de mensagens …» ACSI/UML-Dynamic, Copyright, Alberto Silva 2 Use Cases (Casos de Utilização) O modelo de use-case captura os requisitos de um sistema, através do detalhe de todos os cenários que os utilizadores podem realizar. O modelo do comportamento (ou da dinâmica) de um sistema começa com a análise de use-cases. Os use-cases, mais que iniciar a modelação do comportamento de um sistema, dirigem/conduzem esse mesmo modelo. ACSI/UML-Dynamic, Copyright, Alberto Silva 3 Use Cases Use case ... é uma sequência de acções que um ou mais actores realizam num sistema para obter um resultado particular Deve ser representado por uma frase na voz activa, com um verbo no infinitivo. E.g., “Gerar relatórios”, “Criar factura”, “Calibrar roda” ACSI/UML-Dynamic, Copyright, Alberto Silva 4 Use Cases Use case ... é uma sequência de acções que um ou mais actores realizam num sistema para obter um resultado particular Note-se que tendo em consideração a definição de caso de utilização “Validar Utilizador” não deverá ser encarado como um “verdadeiro” caso de utilização, já que por si só não produz qualquer “resultado particular” para o sistema. Contudo, nalgumas circunstâncias estes “pseudo” casos de utilização aparecem no modelo de forma a explictar comportamentos comuns a vários casos de utilização. (Tais comportamentos poderão alternativamente ser especificados através de assunções, ao nível de cada caso ou mesmo ao nível geral do modelo.) ACSI/UML-Dynamic, Copyright, Alberto Silva 5 Use Cases e Cenários Um use-case descreve o que faz um sistema (ou parte deste), mas não como é que tal é realizado. Foco na visão externa do sistema Um use case é uma colecção de cenários Um cenário é uma determinada sequência de acções que ilustra um comportamento do sistema. – Numa definição mais abstracta, pode-se entender um cenário como uma instância de um caso de utilização, – é normal que um caso de utilização possa ser descrito por dezenas de possíveis cenários ACSI/UML-Dynamic, Copyright, Alberto Silva 6 Use Cases – Especificação Textual Pode-se especificar o comportamento de um use-case descrevendo textualmente o fluxo de eventos, de modo que um utilizador não técnico o possa entender. Tal especificação deve incluir: – – – – Assunções Pré-condições Inicialização: como e quando o caso de utilização começa Diálogo: quando é que o caso de utilização interactua com os actores – Conclusão: como e quando o caso de utilização termina – Pós-condições Outras formas: – Actores que iniciam, que beneficiam... – Diagramas de sequência e/ou de actividades... ACSI/UML-Dynamic, Copyright, Alberto Silva 7 Use Cases – Exemplo ATM Descrição textual de um use case Validar Utilizador Fluxo de Eventos Principal O caso de utilização inicia-se quando o sistema apresenta um écran a pedir ao cliente o seu cartão electrónico. O cliente introduz o seu cartão MB e, através de um pequeno teclado, o seu PIN. Note-se que o cliente pode limpar a introdução do seu PIN inúmeras vezes e reintroduzir um novo número antes de activar o botão “Entrar”. O cliente activa o botão “Entrar” para confirmar. O sistema lê o PIN e a respectiva identificação do cartão MB, e verifica se é válido. Se o PIN for válido o sistema aceita a entrada e o caso de utilização termina. ACSI/UML-Dynamic, Copyright, Alberto Silva 8 Use Cases - Exemplo ATM (cont.) Validar Utilizador Cenário Alternativo 1 (Cliente cancela operação) O cliente pode cancelar a transação em qualquer momento activando o botão “Cancelar”, implicando a reinicialização do caso de utilização. Não é realizada qualquer alteração à conta do cliente. Cenário Alternativo 2 (PIN inválido) Se o cliente introduz um PIN inválido, o cartão MB é ejectado e o caso de utilização reinicializado. Se tal ocorrer 3 vezes consecutivas, o sistema cativa (i.e., “recolhe”) o cartão MB e cancela a transação; não permitindo qualquer interacção nos 2 minutos seguintes. ACSI/UML-Dynamic, Copyright, Alberto Silva 9 Use Cases vs. Cenários Um use case descreve uma gama de sequências de acções; não apenas uma única. Cada uma dessas sequências designase por cenário. Um cenário é uma sequência de acções específica que ilustra um determinado comportamento. Um cenário é uma instância de um use case Um use case pode ter ser descrito por vários cenários. ACSI/UML-Dynamic, Copyright, Alberto Silva 10 Use Cases - Organização Os use cases podem ser organizados nas seguintes formas: através do seu agrupamento em packages pela especificação de inter-relações do tipo generalização, inclusão (include) e extensão (extend) ACSI/UML-Dynamic, Copyright, Alberto Silva 11 Use Cases - Generalização Uma relação de generalização entre casos de utilização permite definir casos à custa de outros já existentes, pelo mecanismo de especialização, ou alternativamente, permite definir casos mais abstractos a partir de casos concretos pelo mecanismo da redução ou generalização O use case filho herda o comportamento e semântica do seu pai; o filho pode substituir especificações definidas no seu pai. ACSI/UML-Dynamic, Copyright, Alberto Silva 12 Use Cases - Inclusão A relação de inclusão entre casos de utilização corresponde a uma relação típica de delegação, significando que o caso base incorpora o comportamento do outro caso relacionado. Usa-se a relação de inclusão para evitar descreverem-se os mesmos fluxos de eventos inúmeras vezes… (reutilização) ACSI/UML-Dynamic, Copyright, Alberto Silva 13 Use Cases - Inclusão Obter Extracto de Conta «include» Validar Utilizador Use case “Obter Extracto de Conta” Nome: Obter Extracto de Conta Cenário Principal Incluir caso de utilização “Validar Utilizador”. Obter e verificar o número da conta.. Seleccionar todas as linhas de movimentos realizados nos últimos 30 dias. Produzir uma lista resumo com esses movimentos, apresentando a data, o tipo de movimento (débito ou crédito), uma breve descrição e o valor do movimento. Produzir o saldo corrente da conta. Emitir um documento com essa informação, ejectando no terminal de multibanco o referido documento. Apresentar mensagem no visor do terminal para o cliente retirar o extracto. Registar na conta do cliente que esta operação foi realizada com sucesso. ACSI/UML-Dynamic, Copyright, Alberto Silva 14 Use Cases - Extensão Uma relação de extensão entre casos de utilização significa que o caso base incorpora implicitamente o seu comportamento num local especificado indirectamente pelo caso que é usado. Ou seja, o caso destino pode ser estendido com o comportamento de outro(s) caso(s). Uma relação de extensão permite representar: – A parte de um caso que um utilizador vê como opcional, ou como existindo várias alternativas. – Um subfluxo de acções que é executado apenas se determinadas condições se verificarem. – Vários fluxos de acções que podem ser inseridos num determinado ponto de extensão, de forma controlada, através de uma interacção explícita com um actor. O use case de base é estendido em 1 ou mais pontos, designados por “pontos de extensão”. ACSI/UML-Dynamic, Copyright, Alberto Silva 15 Use Cases - Extensão ACSI/UML-Dynamic, Copyright, Alberto Silva 16 Use Cases - Extensão Nome: Obter Extracto de Conta Pontos de Extensão: Nº de dias Cenário Principal Incluir caso de utilização “Validar Utilizador”. Obter e verificar o número da conta. Seleccionar o n.º de dias com base no qual se produz o extracto. (N.º de dias). Por omissão são seleccionados os últimos 30 dias. Produzir uma lista resumo com esses movimentos, apresentando a data, o tipo de movimento (débito ou crédito), uma breve descrição e o valor do movimento. Produzir o saldo corrente da conta. Emitir um documento com essa informação produzida ejectando no terminal de multibanco o referido documento. Apresentar mensagem no visor do terminal para o cliente retirar o extracto. Registar na conta do cliente que esta operação foi realizada com sucesso. ACSI/UML-Dynamic, Copyright, Alberto Silva 17 Use Cases - Extensão Nome: Selecciona N.º de Dias Tipo: Abstracto Cenário Principal É apresentado um écran em que o utilizador pode especificar o n.º de dias desejado, através da marcação em vários botões numéricos (de ‘0’ a ‘9’). Há uma caixa de texto construída dinamicamente que vai apresentando o valor corrente. Por fim, o utilizador marca o botão “Confirmar” e o valor construído é retornado ao caso destino no seu respectivo ponto de extensão. Cenário Alternativo 1 Idêntico ao cenário principal. Em qualquer momento o utilizador pode marcar sobre o botão “Apagar” de modo a apagar o algarismo introduzido mais recentemente. Cenário Alternativo 2 Idêntico ao cenário principal. Quando o utilizador marca “Confirmar” e o valor introduzido fôr superior a 59 dias é apresentada uma mensagem de aviso que o número máximo é 59, e o caso é reiniciado. Cenário Alternativo 3 Idêntico ao cenário principal. Em qualquer momento o utilizador pode seleccionar o botão “Cancelar”- O caso termina e é retornado o valor 1 (dia) por omissão.. ACSI/UML-Dynamic, Copyright, Alberto Silva 18 Diagramas de Use Cases Um diagrama de Casos de Utilização é um diagrama que ilustra um conjunto de Casos de Utilização, de Actores, e suas relações. Estes diagramas têm duas aplicações comuns: - - Modelação do contexto de um sistema; ênfase na identificação da fronteira do sistema, dos seus actores e no significado das suas funções. Modelação dos requisitos de um sistema; consiste na identificação do que o sistema deve fazer, independentemente de como o sistema o deve realizar. ACSI/UML-Dynamic, Copyright, Alberto Silva 19 Diagramas de Use Cases Um diagrama de Casos de Utilização é utilizado para ilustrar que os actores e os casos de utilização interagem pelo envio reciproco de “estímulos”. Uma associação de comunicação entre um actor e um caso de utilização implica uma interacção entre ambos. Cada função nesta associação tem uma propriedade de navegação, que indica a direcção da comunicação. Se for bidireccional omite-se a representação da direcção. Use Case A Actor ACSI/UML-Dynamic, Copyright, Alberto Silva 20 Diagramas de Use Cases - Actores Actor (~ perfil de utilizador) … representa uma função (ou papel) que um utilizador pode desempenhar relativamente ao sistema a modelizar. … o conjunto total de actores de todos os use cases reflecte todos os elementos que interactuam com o sistema. … um determinado utilizador pode desempenhar diferentes papéis, podendo, por conseguinte, representar diferentes actores. generalização de actores Cliente Cliente VIP ACSI/UML-Dynamic, Copyright, Alberto Silva 21 Diagramas de Use Cases - Exemplo A Máquina de Bebidas Comprar Bebida Cliente Repôr Bebidas Agente do Fornecedor Dono Retirar dinheiro Colector ACSI/UML-Dynamic, Copyright, Alberto Silva 22 Diagramas de Use Cases - Exemplo Inclusão... A Máquina de Bebidas Comprar Bebida Cliente Agente do Fornecedor Repôr bebidas «include» «include» Dono Abrir a Máquina «include» Retirar dinheiro Colector «include» ACSI/UML-Dynamic, Copyright, Alberto Silva Fechar a Máquina 23 Diagramas de Use Cases - Exemplo Extensão... A possibilidade da reposição de bebidas na máquina depender agora de um algoritmo dependente das marcas e do número de latas vendidas... A Máquina de Bebidas «include» Agente do Fornecedor Abrir a Máquina Repôr Bebidas Dono Extension Point encher prateleiras «include» «extend» (encher prateleiras) Fechar a Máquina Repôr latas de acordo com as vendas ACSI/UML-Dynamic, Copyright, Alberto Silva 24 Diagramas de Use Cases - Exercício Indique 2 vantagens da visualização de um use case. (1) permitir melhor dialogar com o utilizador/cliente (2) combiná-lo com outros tipos de diagramas Quais as semelhanças e diferenças entre classes e use cases? Semelhanças: São ambos elementos estruturais, e.g., ambos suportam relações de herança. Diferenças: As classes consistem em atributos e operações; os uses cases consistem em cenários, e cada cenário numa sequência de passos. A classe dá uma visão estática de uma parte do sistema; o use case dá uma visão do seu comportamento. A classe pode ilustrar os detalhes internos do sistema; o use case providencia a visão externa do sistema ACSI/UML-Dynamic, Copyright, Alberto Silva 25 Diagramas de Use Cases – Exercício-1 Esboçe um diagrama de use cases para um controlo remoto de TV. Garanta que incluie todas as funções do controlo remoto como use cases do seu modelo… Descreva textualmente os use case “Ligar TV” e “Seleccionar Canal” Variante: considere que a TV pode ter um mecanismo de controlo de acesso (com password) de forma a evitar que as crianças estejam “agarradas” à TV... ACSI/UML-Dynamic, Copyright, Alberto Silva 26 Diagramas de Use Cases – Exercício-2 Considere, relativamente ao sistema GTTI, os seguintes diagramas de casos de utilização relativamente ao utilizador membro. Discuta justificadamente a versão do diagrama que considera mais adequada. Sem o Caso “Valida Acesso” Com o Caso “Valida Acesso” <<include>> Configura Opções Pessoais <<include>> Configura Opções Pessoais Consulta Termos Propostos Consulta Termos Propostos <<extend>> <<extend>> <<extend>> UMembro Valida Acesso <<include>> <<extend>> Submete Opinião sobre Proposta UMembro Submete Opinião sobre Proposta Propõe Termo Recebe Automaticamente Novos Termos Oficiais <<include>> Propõe Termo Temporizador ACSI/UML-Dynamic, Copyright, Alberto Silva Recebe Automaticamente Novos Termos Oficiais Temporizador 27 Diagramas de Use Cases Uma Proposta de Metodologia… 1 Identificar os actores do sistema 2 Identificar, para cada actor, os seus casos de utilização principais – Note-se que podem existir casos que envolvam a participação de mais que um actor. 3 Factorizar: identificar relações de inclusão – Com base nos casos de utilização originais, identificar, factorizar e colocar em evidência casos de utilização que sejam recorrentes em mais que um dos casos originais. – Nessa situação, cria-se o novo caso de utilização (em geral é um caso abstracto) e os casos originais envolvidos estabelecem uma relação de inclusão com o dito caso. – Repetir o processo até não se conseguir identificar qualquer outro caso a reutilizar ACSI/UML-Dynamic, Copyright, Alberto Silva 28 Diagramas de Use Cases Uma Proposta de Metodologia… 4 Flexibilizar: identificar relações de extensão – Para tratar casos de utilização que pretendam ser flexíveis e versáteis, definir pontos de extensão (ou de variabilidade) e conjuntamente definir um ou mais casos de utilização (abstractos) que os permitam estender nesses pontos. – Nesta situação, cria-se uma relação de extensão do caso abstracto para o caso estendido. 5 Especificar textualmente cada caso de utilização – segundo um determinado formato previamente definido. – não esquecer nesta especificação textual a explicitação dos pontos de extensão e de inclusão anteriormente identificados ACSI/UML-Dynamic, Copyright, Alberto Silva 29 Modelação do Comportamento Objectivos Especificar o comportamento inter-objectos Diagramas de interacção Diagrama de Sequência Diagrama de Comunicação Diagrama da visão geral da interacção (interaction overview diagram) Diagrama temporal (timming diagram), Especificar o comportamento intra-objecto Diagrama de Estados (statemachine diagram) ACSI/UML-Dynamic, Copyright, Alberto Silva 30 Interacções Uma interacção é a especificação do comportamento de um conjunto de objectos, representado pela sua troca de mensagens, num determinado contexto, e com vista à concretização de um dado objectivo. Uma mensagem é a especificação de comunicação entre objectos. Sempre que existe uma ligação (link) entre objectos, pode ocorrer uma ou mais interacções. ACSI/UML-Dynamic, Copyright, Alberto Silva 31 Interacções - Relação entre Diagramas Diagrama de Classes classe associação Pessoa * 1..* Empresa objecto Diagrama de Objectos link :Pessoa :Empresa mensagem Diagrama de Interacção objecto afecta(desenvolvimento) :Pessoa ACSI/UML-Dynamic, Copyright, Alberto Silva :Empresa 32 Interacções - Objectos e Links mensagem objecto afecta(desenvolvimento) :Pessoa :Empresa link Pode-se encarar um diagrama de objectos como a representação dos aspectos estáticos de uma interação. Contudo, uma interacção vai mais longe, ao introduzir uma sequência dinâmica de mensagens que podem fluir entre os links que ligam esses objectos. Assim, os diagramas de interacções devem ser considerados como uma extensão aos diagramas de objectos. Um link traduz uma relação semântica/estrutural entre objectos. Sempre que existe uma associação entre 2 classes também deve existir um link entre instâncias dessas classes ACSI/UML-Dynamic, Copyright, Alberto Silva 33 Interacções - Mensagens mensagem afecta(desenvolvimento) :Pessoa :Empresa Uma mensagem é o estabelecimento de uma comunicação entre objectos que veicula informação com a expectativa de determinada actividade ser realizada. Sintaxe de uma mensagem [attribute =] signal-or-operation-name [ (arguments)] [: return-value] | ´*´ arguments ::= argument [, arguments] argument ::= [parameter-name= ] argument-value | attribute::= out-parameter-name [:argument-value] | - Exemplos cancela(), envio de uma operação sem valores em argumentos e sem retorno. cancelaProposta(data=31/12/2006, -):void, envio de uma operação com o primeiro argumento com valor “31/12/2006”, o segundo argumento sem valor; e com retorno do tipo “void”. ACSI/UML-Dynamic, Copyright, Alberto Silva 34 Interacções - Mensagens Tipos de Mensagens: (Notar no entanto que diferentes ferramentas CASE podem suportar diferentes representações gráficas deste tipo de setas.) ACSI/UML-Dynamic, Copyright, Alberto Silva 35 Interacções - Mensagens Em UML estão predefinidos diferentes tipos de mensagens: Call: invoca uma operação de um objecto (é o tipo de msg mais usual) Return: devolve um valor para o “chamador” Send: envia um sinal para o objecto Create: cria um objecto Destroy: destroi um objecto (um objecto pode auto-destruir-se) ACSI/UML-Dynamic, Copyright, Alberto Silva 36 Interacções - Sequência de Mensagens Quando um objecto envia uma mensagem a outro objecto, este por sua vez pode enviar uma outra mensagem a outro objecto, e assim sucessivamente. Cria-se, deste modo, sequências de mensagens, em geral, executadas sobre o mesmo processo ou actividade de execução. 1: add() :X :Y 2: modify() 3: update() :Z ACSI/UML-Dynamic, Copyright, Alberto Silva número da mensagem mensagem 37 Interacções - Sugestões Uma Interacção bem estruturado é: Simples: Contexto bem definido: pode representar uma interacção de objectos no contexto de uma operação, uma classe, ou o sistema como um todo Eficiente deve incluir apenas os objectos necessários que conjuntamente realizam um determinado comportamento deve executar o seu comportamento com um compromisso óptimo entre tempo e recursos Comprensível não deve ter efeitos co-laterais escondidos, ou semântica obscura ACSI/UML-Dynamic, Copyright, Alberto Silva 38 Diagramas de Interacção Um diagrama de interacção ilustra uma interacção, apresentando as mensagens trocadas entre objectos na realização de um caso de utilização. Tipos de Diagramas – Diagrama de sequência: é um diagrama de interacção com ênfase na ilustração temporal das mensagens trocadas entre os objectos – Diagrama de comunicação: é um diagrama de interacção com ênfase na ilustração da organização estrutural dos objectos que trocam mensagens entre si. – Diagrama da visão geral da interacção (interaction overview diagram): é um diagrama de interacção com ênfase na ilustração de alto nível do fluxo de controlo lógico das interacções relevantes. Pode ser encarado como um diagrama de actividade, em que os seus nós são interacções definidas com detalhe através dos diagramas de sequência e ou de comunicação. – Diagrama temporal (timming diagram): é um diagrama opcional que permite especificar restrições de tempo associadas a mensagens trocadas no decurso de uma interacção. ACSI/UML-Dynamic, Copyright, Alberto Silva 39 Diag. de Interacção - Diag. de Sequências Os diagramas de sequência descrevem um padrão de interacção entre objectos, apresentado de uma forma cronológica. Conceitos – objectos e sua linha de vida – mensagens – âmbito de execução – numeração de mensagens hierárquica – scripts Não mostra as associações entre objectos. Definir o “melhor” percurso para as férias em Malta... ACSI/UML-Dynamic, Copyright, Alberto Silva 40 Diag. de Interacção - Diag. de Sequências Diagrama de sequência correspondente à “Subscrição de Membro” do sistema GTTI. Especificação de alto nível ... ACSI/UML-Dynamic, Copyright, Alberto Silva 41 Diag. de Interacção - Diag. de Comunicação Os diagramas de comunicação descrevem um padrão de interacção entre objectos, apresentando os objectos que participam na interacção com ligações entre si, e as mensagens que enviam. Conceitos representados – objectos – ligações – mensagens ACSI/UML-Dynamic, Copyright, Alberto Silva 42 Diag. de Interação - Equival. Semântica Diagrama de Sequências Diagrama de Comunicação O que não significa que ambos os diagramas apresentem explicitamente a mesma informação ACSI/UML-Dynamic, Copyright, Alberto Silva 43 Diags Sequência vs Diags Comunicação Diagramas de sequência mostram a sequência explicita das mensagens melhores para visualizar o fluxo global de aplicação melhores para especificações de tempo real e para cenários complexos Diagramas de comunicação mostram relações, adicionalmente às interacções melhores para visualizar padrões de colaboração entre objectos melhores para visualizar todos os efeitos num dado objecto mais fáceis de utilizar em reuniões Devem-se utilizar diagramas de interacção sempre que se pretende representar o comportamento de vários objectos num único caso de utilização. São adequados para representar a colaboração entre objectos, mas não para a representação exacta do comportamento. ACSI/UML-Dynamic, Copyright, Alberto Silva 44 Diag. de Interação - Exemplo (1) Criação de “Conta” – diag. Seq. nível desenho em ASP.NET... ACSI/UML-Dynamic, Copyright, Alberto Silva 45 Diag. de Interação - Utilizações Comuns Para modelizar o fluxo de controlo segundo uma perspectiva temporal – Usar diagramas de sequências particularmente útil para detalhar um cenário de um use case melhores para especificar situações complexas, bem como múltiplos e concorrentes fluxos de controlo (sistemas de tempo real), ... Para modelizar o fluxo de controlo segundo uma perspectiva organizacional – Usar diagramas de comunicação ênfase nas relações estruturais entre as instâncias de uma interacção mais adequados para especificar situações simples, desenho procedimental ACSI/UML-Dynamic, Copyright, Alberto Silva 46 Diag. de Interação - Exercício (1) Enviar Fax Operador Considere-se o melhor cenário para o use case “Enviar Fax” (o cenário em que tudo corre bem”) Considere que um sistema composto, entre outros, pelos seguintes objectos: máquina que envia; máquina que recebe; uma central que encaminha faxes e chamadas telefónicas Desenhe o diagrama de sequências respectivo. ACSI/UML-Dynamic, Copyright, Alberto Silva 47 Diag. de Interação - Exercício (2) Comprar Bebida Cliente Considere-se o cenário mais usual para o use case “Comprar Bebida”: o cenário em que “tudo corre bem”, i.e., há a bebida seleccionada, o dinheiro introduzido está correcto, … Considere apenas os “objectos”: “cliente” e “máquina” Variante: considere que a máquina é constituída pelos objectos: “painel-interface”, “caixa-registradora”, “despensa-frigorifico”… Desenhe o diagrama de sequências/comunicação respectivo. ACSI/UML-Dynamic, Copyright, Alberto Silva 48 Diag. de Interação - Exercício (2) Considerem-se outros cenários para o use case “Comprar Bebida” O utilizador introduziu mais dinheiro que o valor da bebida, e a máquina tem dinheiro para troco O utilizador introduziu mais dinheiro que o valor da bebida, e a máquina não tem dinheiro para troco Desenhe os respectivos diagramas de sequências, e de comunicação. ACSI/UML-Dynamic, Copyright, Alberto Silva 49 Diag. de Interação - Exercício (3) Considere a seguinte interacção entre objectos Java de acesso a BD usando o package java.sql.* Connection con; Statement stmt; ... Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:BD1"); stmt = con.createStatement(); ... stmt.executeUpdate(“INSERT …”); ... stmt.executeUpdate(“UPDATE …”); Desenhe o respectivo diagrama de sequências e de colaboração. ACSI/UML-Dynamic, Copyright, Alberto Silva 50 Diag. de Interação – Diag. Temporal Um diagrama temporal (timing diagram) é um diagrama de interacção com objectivos específicos de ilustrar os eventos que ocorrem num determinado objecto ao longo de um período de tempo. Pode ser considerado como uma combinação entre um diagrama de interacção e um diagrama de estados, com a capacidade de explicitação de restrições de tempo e de duração. Diagrama temporal para a classe “Termo” no contexto do sistema GTTI ACSI/UML-Dynamic, Copyright, Alberto Silva 51 Diagramas de Estado O que são? Um modo de representar as alterações de um sistema. I.e., os seus objectos mudam de estado como resposta a eventos e à passagem de tempo. Exemplos: Quando se liga/desliga um interruptor Depois da passagem de um determinado período de tempo, a máquina de lavar termina o seu programa de lavagem, e inicia o de secagem Um diagrama de estado também é designado por “máquina de estados” ACSI/UML-Dynamic, Copyright, Alberto Silva 52 Diagramas de Estado O que descrevem? – O ciclo de vida de instâncias de uma classe – a execução de uma operação de uma instância de uma classe representam: – os estados possíveis das instâncias de uma classe – as possíveis transições entre estados – os eventos que fazem desencadear as transições – as operações (acções e actividades) que são executadas dentro de um estado ou durante uma transição ACSI/UML-Dynamic, Copyright, Alberto Silva 53 Diagramas de Estado Como são representados? X Estado inicial Estado final transição Visão de um Estado com detalhes Estado X Nome Operações ACSI/UML-Dynamic, Copyright, Alberto Silva 54 Diagramas de Estado Exemplo: “lâmpada” Acesa Desligar (off) Ligar (on) Danificada Apagada ACSI/UML-Dynamic, Copyright, Alberto Silva 55 Diagramas de Estado - Acções e Actividades Acção: – atómica e não interrompível Actividade: – complexa (eventualmente descrita por um outro diagrama de estado aninhado) e interrompível Clausulas: – entry/actions acção(ões) é executada quando se entra no estado – exit/actions acção (ões) é executada quando se sai do estado – do/activities actividade(s) é executada, são permitidos parâmetros – Internal event/actions evento é tratado dentro de um estado, não provoca mudanca de estado – Event /defer evento é diferido para ser tratado fora do estado ACSI/UML-Dynamic, Copyright, Alberto Silva 56 Diagramas de Estado - Acções e Actividades Exemplo: O ciclo de vida de um “termo”... No WebGTTI ACSI/UML-Dynamic, Copyright, Alberto Silva 57 Diagramas de Estado - Acções e Actividades ACSI/UML-Dynamic, Copyright, Alberto Silva 58 Diagramas de Estado - Acções e Actividades Ordem de realização das operações quando ocorre um evento que provoca uma transição 1. Caso exista uma actividade em execução no estado corrente, esta deverá ser interrompida (de preferência de forma graciosa, i.e., sem provocar incoerência no estado do objecto). 2. Caso existam, executar as acções de saida, definidas na cláusula “exit”. 3. Caso existam, executar as acções definidas na transição de estado. 4. Caso existam, executar as acções de entrada, definida na cláusula “entry”, do novo estado. 5. Caso existam, começar a executar as actividades do novo estado. ACSI/UML-Dynamic, Copyright, Alberto Silva 59 Diagramas de Estado - Acções e Actividades Auto-transições – Situações em que um objecto recebe um evento que não provoca a sua mudança de estado, mas que corresponde a uma interrupção de facto do seu estado. – Este tipo de evento é suficientemente significativo pois força o objecto a interromper a sua actividade corrente, forçando-o a sair do seu estado corrente e a retornar ao mesmo estado, provocando de facto uma re-entrado no estado corrente. ACSI/UML-Dynamic, Copyright, Alberto Silva 60 Diagramas de Estado Eventos e Acções ACSI/UML-Dynamic, Copyright, Alberto Silva 61 Diagramas de Estado Condições com Guarda Uma transição de estado realiza-se se: o evento ocorre; e a guarda é verdadeira. Sintaxe completa de uma transição: evento [condição com guarda] / acção ACSI/UML-Dynamic, Copyright, Alberto Silva 62 Diagramas de Estado Sub-Estados Um estado pode ser melhor descrito por um conjunto (sequencial e/ou concorrente) de outros estados, designados por “sub-estados”. Ou seja, um conjunto de estados podem ser agregados num único estado... potencia o mecanismo de abstracção/decomposição... ACSI/UML-Dynamic, Copyright, Alberto Silva 63 Diagramas de Estado Sub-Estados Sub-Estados Concorrentes ACSI/UML-Dynamic, Copyright, Alberto Silva 64 Diagramas de Estado - Exercícios (1) Desenhe o diagrama de estados de uma tostadeira. Defina os diferentes estados do pão na tostadeira, sem esquecer de especificar os necessários eventos, acções, e condições com guarda. (2) Desenhe o diagrama de estados de um relógio digital. Considere que o relógio tem um visor, dois botões (E e D) e dois modos básicos de funcionamento: mostrar horas (e minutos) e acertar as hora (e minutos). O acerto de horas tem dois sub-modos: acertar horas e acertar minutos. O botão E serve para seleccionar os modos de funcionamento segundo a sequência cíclica: mostrar; acertar horas, acertar minutos, mostrar, ... Dentro dos modos de acertar, o botão D serve para adiantar os valores correspondentes (a horas ou a minutos). ACSI/UML-Dynamic, Copyright, Alberto Silva 65 Diagramas de Actividade Um diagrama de actividades pode ser visto como um caso particular de um diagrama de estados – no qual todos ou a maioria dos estados são “estados de actividades” e – todas ou a maioria das transições são desencadeadas pela conclusão das actividades dos estado anteriores. Diagrama de actividades vs. de estados vs. de interação: – Um diagrama de actividades ilustra o fluxo de controlo (e de objectos) entre actividades, – Um diagrama de estados ilustra o fluxo de controlo entre estados. – Um diagrama de interacção ilustra o fluxo de controlo entre objectos. ACSI/UML-Dynamic, Copyright, Alberto Silva 66 Diagramas de Actividade Utilizações Comuns Para modelizar os aspectos de comportamento funcional (e.g., o algoritmo) de um sistema como um todo, de um subsistema, de uma operação ou de uma classe. Pode-se também associar um diagrama de actividade a um caso de utilização (para modelizar um cenário) ou a uma colaboração (para modelizar o comportamento de um conjunto de objectos genéricos). Para modelizar processos (workflows) com diferentes participantes ACSI/UML-Dynamic, Copyright, Alberto Silva 67 Diagramas de Actividade O que são? estado inicial Diagramas que fornecem uma visão transição simplificada do fluxo de controlo de um caso de utilização, operação ou de um processo Mostra o fluxo entre actividades (e adicionalmente tb o fluxo de informação) ~ Fluxogramas, na sua forma de aplicação simples ... Actividade 1 Actividade 2 estado final ACSI/UML-Dynamic, Copyright, Alberto Silva 68 Diagramas de Actividade Contém genericamente: Calcular Factura Acções: execuções atómicas, não index:= a+b+f(c); interrompíveis, com tempo de execução irrelevante. Actividades: execuções não atómicas (decompostas), interrompíveis, em que o tempo de execução é normalmente relevante. Emitir Factura Transições. Objectos. Nós (ou pontos) de decisão e de junção. Reunião com o Cliente Nós de difusão (fork) e de junção ou sincronização (join). entry / apresentar credenciais ACSI/UML-Dynamic, Copyright, Alberto Silva 69 Diagramas de Actividade A actividade “Submeter Opinião” , WebGTTI ACSI/UML-Dynamic, Copyright, Alberto Silva 70 Diagramas de Actividade Decisões (“… ou …”) Duas formas equivalentes de se representar uma decisão ACSI/UML-Dynamic, Copyright, Alberto Silva 71 Diagramas de Actividade Caminhos Concorrentes... Conjunto de actividades realizadas concorrentemente, independentemente da sua ordem de execução Todas as actividades são realizadas concorrentemente ACSI/UML-Dynamic, Copyright, Alberto Silva 72 Diagramas de Actividade - algoritmos Utilizações Típicas dos Diagramas de Actividade: Para especificar uma operação – permite especificar detalhadamente um algoritmo Para especificar um processo de negócio – permite especificar detalhadamente uma sequência de actividades existentes num processo de negócio ACSI/UML-Dynamic, Copyright, Alberto Silva 73 Diagramas de Actividade - algoritmos Especificação de uma operação ACSI/UML-Dynamic, Copyright, Alberto Silva Exemplo: Série de Fibonacci 74 Diagramas de Actividade – Exercício (1) Desenhe o diagrama de actividades correspondente ao algoritmo do factorial de “n”. n! = ACSI/UML-Dynamic, Copyright, Alberto Silva 1, se n <= 1; = n*(n-1)!, se n > 1 75 Diagramas de Actividade – Exercício (2) middle.jsp <%@ page import="puc.util.Flow" %> <% String flow = (String)session.getAttribute(Flow.FLOW_KEY); if (flow.equals(Flow.CONNECTION_ERROR)) { %> <jsp:include page="/genericJSP/connectionError.jsp" flush="true" /> <% } else if (flow.equals(Flow.NEW_SUBSCRIBE)) { %> <jsp:include page="/subscribeJSP/newSubscribe.jsp" flush="true" /> <% } else if (flow.equals(Flow.NEW_SUBSCRIBE_RESULT)) { %> <jsp:include page="/subscribeJSP/newSubscribeResult.jsp" flush="true" /> ... } %> ACSI/UML-Dynamic, Copyright, Alberto Silva 76 Diagramas de Actividade - workflows Especificação de um processo de negócio Preparar Proposta (Empresa de Serviços) partições Partições - permitem separar o diagrama em segmentos paralelos, em que cada um apresenta as actividades de cada interveniente no processo global ACSI/UML-Dynamic, Copyright, Alberto Silva 77 Diagramas de Actividade - workflows A partição de actividades pode representar uma ou mais dimensões do problema Mas, solução não é escalável… ACSI/UML-Dynamic, Copyright, Alberto Silva 78 Diagramas de Actividade - workflows Alternativa escalável… ACSI/UML-Dynamic, Copyright, Alberto Silva 79 Diagramas de Actividade - workflows Actividades e Objectos ACSI/UML-Dynamic, Copyright, Alberto Silva 80 Diagramas de Actividade - Exercício Especifique o seguinte processo de negócio: “gestão de encontros com clientes” (1) Um vendedor telefona ao cliente e marca uma reunião. (2) Se a reunião é na empresa, os técnicos da empresa preparam a sala de conferências para a apresentação. (3) Se a reunião é for a da empresa (no escritório do cliente) um consultor prepara a apresentação num laptop. (4) O consultor e o vendedor reunem-se com o cliente no local e hora combinada. (5) O vendedor envia ao cliente uma carta a resumir o “sucesso” da reunião. (6) Se a reunião resultou na identificação de um problema, o consultor escreve uma proposta e envia-a para o cliente. Variante: Captar o local onde se realiza a actividade ACSI/UML-Dynamic, Copyright, Alberto Silva 81