Modelagem Dinâmica – Diagrama de Sequência Toacy. Oliveira - PESC/COPPE/UFRJ
Modelagem Dinâmica Todo sistema tem uma estrutura estática e um comportamento dinâmico A UML provê diagramas para capturar e descrever os aspectos estáticos e dinâmicos A modelagem dinâmica serve para demonstrar como os objetos se interagem dinamicamente em diferentes momentos da execução de um sistema Toacy. Oliveira - PESC/COPPE/UFRJ
Diagramas Diagramas de Interação Seqüência Colaboração Diagrama de Estados Diagrama de Atividades Toacy. Oliveira - PESC/COPPE/UFRJ
Diagramas de Interação Usados quando se deseja representar o comportamento de vários objetos dentro de um único caso de uso, a partir das mensagens que são passadas entre eles. Objetivo: definir um contexto de caso de uso, estabelecer os objetos que interagem e seus relacionamentos. É um termo genérico que se aplica a dois tipos de diagramas que enfatizam interações entre objetos: seqüência e colaboração. Seqüência: foco no na seqüência temporal das mensagens Colaboração: foco no relacionamento entre os objetos que trocam mensagens
DIAGRAMAS DE INTERAÇÃO Cenários são utilizados para descrever como os casos de uso são realizados como interações entre objetos. São desenvolvidos para auxiliar a identificar os objetos e as interações necessárias entre os mesmos para a ocorrência das funcionalidades especificadas em um caso de uso. Documentam decisões sobre como as responsabilidades especificadas em um caso de uso são distribuídas entre os objetos/classes no sistema. Servem de meio de comunicação entre os desenvolvedores e os usuários para a definição do comportamento desejado do sistema. Cada caso de uso é representado por uma rede de cenários - cenário primário (Seqüência Típica de Eventos do caso de uso) e cenários secundários (Seqüências Alternativas do caso de uso). Toacy. Oliveira - PESC/COPPE/UFRJ
Duas formas de representação Expressam informações bastante similares mas de maneira diferente Diagrama de seqüência: Interação enfatizando o tempo de seqüência Mostra os objetos participando em interações de acordo com suas linhas de vida e as mensagens que trocam Diagrama de colaboração: Interação enfatizando o relacionamento entre os objetos Toacy. Oliveira - PESC/COPPE/UFRJ
Diagramas de Sequência
Toacy. Oliveira - PESC/COPPE/UFRJ Diagrama de sequência Tempo (top-down) ObjetoA ObjetoB [se novo] > mensagem mensagem (auto delegação) valor de retorno > (caixa de)ativação condição de guarda mensagem síncrona objeto símbolo de destruição linha de vida
Toacy. Oliveira - PESC/COPPE/UFRJ Termos e conceitos Objetos Linhas de vida Mensagens Focos de controle
Toacy. Oliveira - PESC/COPPE/UFRJ Objetos Apresentados na dimensão horizontal do diagrama A ordem dos objetos não é considerada. Pode dispô-los de forma a tornar o diagrama “mais legível”. Objetos tem nomes - obj:Classe Ex.: joão:Dentista :Floricultor (um objeto floricultor não identificado)
Toacy. Oliveira - PESC/COPPE/UFRJ Objetos
Linhas de Vida Dimensão vertical do diagrama Apresentam o tempo de vida dos objetos Pode apresentar a ativação ou a desativação dos objetos Indicam que os objetos estão executando algo (foco de controle) Caixas de ativação podem ser empilhadas indicando chamadas recursivas (ver objeto jose no slide anterior) Podem representar a criação... ...e a destruição de objetos
Toacy. Oliveira - PESC/COPPE/UFRJ Linhas de Vida Linhas de vida new() (Caixas de) Ativação kill() Criação Destruição
Toacy. Oliveira - PESC/COPPE/UFRJ Mensagens Objetos interagem através da troca de mensagens Setas sólidas que vão do objeto solicitante para o solicitado (ou para o próprio objeto: auto-delegação) São rotulados com os nomes dos estímulos mais os argumentos (ou valores dos argumentos) do estímulo
Toacy. Oliveira - PESC/COPPE/UFRJ Mensagens - Tipos Tipos de ação que uma mensagem pode representar: Chamada Invocação a uma operação em um objeto Um objeto pode mandar uma chamada para si próprio Resultando na execução local de uma operação Retorno Representa o retorno de um valor para o objeto que chamou a operação. Pode ou não ser representada. Criação Destruição new() > kill() >
Toacy. Oliveira - PESC/COPPE/UFRJ Mensagens - Representações SímboloSignificado Mensagem simples que pode ser síncrona ou assíncrona Mensagem de retorno (opcional) Mensagem síncrona Mensagem assíncrona ou
Toacy. Oliveira - PESC/COPPE/UFRJ Mensagens mensagens Auto-delegação
Toacy. Oliveira - PESC/COPPE/UFRJ Mensagens – Condições de Guarda Podem apresentar condições de guarda:condições em que a mensagem é enviada [condição de guarda] :Aluno:Sistema :Impressora login() sistemaOk matricula() turmaCheia [sem vaga] matriculado imprimirRelatório() [com vaga] Matrícula
Toacy. Oliveira - PESC/COPPE/UFRJ Mensagens - Iteração Uma mensagem pode ser enviada repetidas vezes * mensagem(...)
Toacy. Oliveira - PESC/COPPE/UFRJ Diagrama de Objetos
Toacy. Oliveira - PESC/COPPE/UFRJ Diagrama de Colaboração Descreve como os objetos se interagem, da mesma forma que o diagrama de sequência O foco deste diagrama é um conjunto específico de objetos (espaço de objetos) O diagrama de seqüência foca o tempo Apresenta os objetos e suas ligações, como também a forma como as mensagens são enviadas entre os objetos ligados
Toacy. Oliveira - PESC/COPPE/UFRJ objeto 1: nome da classe objeto 2 objeto 3: nome da classe :nome da classe 1: evento 2: operação 3: operação (lista de parâmetros) 4: operação (lista de parâmetros) 5: operação (lista de parâmetros) Diagrama de Colaboração Objetos Ligações Mensagens 2: operação
Toacy. Oliveira - PESC/COPPE/UFRJ Fluxo de mensagem uma ligação pode ter uma mensagem associada a sintaxe da mensagem é: predecessor condição-guarda expressão-sequência valor_retornado := assinatura exemplo: 1.1 *[x=1..10]: façaAlgo( )
Toacy. Oliveira - PESC/COPPE/UFRJ Fluxo de mensagem predecessor É uma expressão para sincronização de threads e caminhos, indicando que mensagens devem ser executadas antes do envio da mensagem corrente sintax: numero_sequencial ‘,’ … ‘/’ exemplo: 1.1a, 1.1b / 1.2: continue()
Toacy. Oliveira - PESC/COPPE/UFRJ É uma expressão inteira ou caracter que representa a ordem de execução das mensagens sintax: [inteiro | nome] [recorrencia] ‘:’ exemplo: 1: mostraJanela() 1.1: criarLista() 1.2: selecionarItem() Fluxo de mensagem expressão- sequencial
Toacy. Oliveira - PESC/COPPE/UFRJ recorrência representa uma execução condicional ou interativa sintaxe recorrência: ‘*’ ‘[‘ cláusula-iteração ‘]’ ‘[‘ cláusula-condição ‘]’ exemplo com cláusula-iteração: 1.1 *[x= 1..n]: primo = nextPrimo(primo) Fluxo de mensagem expressão- sequencial
Toacy. Oliveira - PESC/COPPE/UFRJ exemplo com cláusula-condição: 1.1 [saldo < 0]: bloquearSaque() 1.2 [saldo > 0]: efetuarSaque() esta cláusula deve ser usada para especificar desvios Tanto a cláusula-iteração como a cláusula- condição podem ser expressas como pseudo- códigos ou com a sintaxe da linguagem de programação usada Fluxo de mensagem expressão- sequencial
Toacy. Oliveira - PESC/COPPE/UFRJ Equivalência Diagramas de Interação são semanticamente equivalentes, ou seja, indicam a “mesma” interação.
Toacy. Oliveira - PESC/COPPE/UFRJ DIAGRAMA DE SEQUÊNCIA Ob1 : Cl1Ob2 : Cl2Ob3 : Cl3Ob4 : Cl4 metodo21( ) metodo31( ) metodo32( ) metodo41( ) metodo22( )
Toacy. Oliveira - PESC/COPPE/UFRJ DIAGRAMA DE COLABORAÇÃO Ob1 : Cl1 Ob2 : Cl2 Ob3 : Cl3 Ob4 : Cl metodo32( ) 1. metodo21( ) 2. metodo22( )1.1. metodo31( ) metodo41( )
Toacy. Oliveira - PESC/COPPE/UFRJ Exemplo Um Sistema de Blog
Toacy. Oliveira - PESC/COPPE/UFRJ Blog: Casos de uso
Toacy. Oliveira - PESC/COPPE/UFRJ Blog: Diagrama de Classes
Toacy. Oliveira - PESC/COPPE/UFRJ Diagramas de Seqüência Criar blog Criar Nota Ler conteúdo e Criar comentário Remover Nota Remover Comentário
Toacy. Oliveira - PESC/COPPE/UFRJ Criar blog
Toacy. Oliveira - PESC/COPPE/UFRJ Criar Nota
Toacy. Oliveira - PESC/COPPE/UFRJ Ler conteúdo e Criar comentário
Toacy. Oliveira - PESC/COPPE/UFRJ Remover Nota
Toacy. Oliveira - PESC/COPPE/UFRJ Remover Comentário
Toacy. Oliveira - PESC/COPPE/UFRJ Diagrama de Estados
Engenharia de Software A / Engenharia de Software I Introdução É um diagrama que representa uma máquina de estados, enfatizando o fluxo de controle de estado para estado. Uma máquina de estados é um gráfico de estados e transições que descrevem a resposta de um objeto ao receber um estímulo externo. Enfatiza o comportamento interno de um objeto, de acordo com um conjunto de eventos: estados possíveis de um objeto, seu relacionamento com eventos. Um Diagrama de Estados é composto por: estados simples e/ou estados compostos transições, incluindo eventos e ações
Engenharia de Software A / Engenharia de Software I Diagrama de Estados Exemplo para um objeto Venda início transição estado fim Em andamento Encerrada Paga Cancelada venda aberta / criarVenda fim produtos venda / tornarseCompleta pagamento recebido / registrarPagamento desistência cliente / cancelarVenda inclusão novo produto / adicionarLinhaItemVenda
Engenharia de Software A / Engenharia de Software I Diagrama de Estados Em princípio, cada classe de um diagrama de classes possui um diagrama de estados correspondente. Na prática, escolhe-se as classes com comportamento complexo ou importante no sistema e deriva-se os diagramas de estados correspondentes. Finalidade do diagrama de estados: extrair operações na classe correspondente.
Engenharia de Software A / Engenharia de Software I Eventos Um evento é a ocorrência de algum fenômeno que é reconhecido pelo objeto. Exemplos: clique de mouse, botão do teclado pressionado, mudança de ano, chamada de uma operação, etc. envolve a ocorrência de um estímulo que pode disparar uma transição de estado. é considerado instantâneo. Eventos externos: são aqueles trocados entre o sistema e seus atores. Eventos internos: são aqueles trocados entre os objetos do sistema.
Engenharia de Software A / Engenharia de Software I Tipos de Eventos Sinal Especificação de uma comunicação assíncrona entre objetos o objeto emissor não depende de retorno do objeto destino para continuar o seu fluxo de controle. Um sinal pode ser enviado: a partir de uma ação em um transição de estado, a partir da execução de uma operação. Usa-se a assinatura do evento para rotular a transição.
Engenharia de Software A / Engenharia de Software I Tipos de Eventos Chamadas Especificação de uma comunicação geralmente síncrona, representando a requisição de uma operação. Quando um objeto invoca uma operação em outro objeto, o controle passa para o receptor, onde: a transição é disparada em função do evento, a operação requisitada é completada, o objeto assume um novo estado, ao término da execução da operação, o controle é devolvido ao gerador do evento. Usa-se a assinatura da operação para rotular o evento
Engenharia de Software A / Engenharia de Software I Tipos de Eventos Tempo Um evento de tempo é um evento que representa a passagem de tempo. Mudança Um evento mudança é um evento que representa uma mudança no estado ou a satisfação de uma condição. Ativo Inativo quando(12:00pm) / autoTeste() após(10 segundos) / desconectar() Evento de Tempo Evento de Mudança
Engenharia de Software A / Engenharia de Software I Estado Um estado é uma condição ou situação na vida de um objeto durante a qual ele esta satisfazendo alguma condição, realizando alguma ação ou esperando por algum evento. O estado de um objeto é verificado pelo valor de seus atributos e relacionamentos.
Engenharia de Software A / Engenharia de Software I Nome entry / ação exit / ação do / atividade nome_evento / ação nome_evento / defer Realizada na entrada do estado Realizada na saída do estado Realizada enquanto estiver no estado Auto-transição: realizada na chegada do evento, sem sair, nem entrar novamente no estado Evento adiado: caso o evento chegue durante uma ação, ele é “enfileirado” e tratado mais tarde. Opcionais Estado Representação gráfica: Nome do estado
Engenharia de Software A / Engenharia de Software I Estado Exemplo de um Estado: Inicializando entry / inicializar_atributos exit / iniciar_cronômetro do / verificar_entrada tecla_pressionada / atualizar_tela clique_de_mouse / defer Ao chegar a este estado a ação (operação) inicializar_atributos é executada. Ao sair a este estado a ação (operação) iniciar_cronômetro é executada. Enquanto estiver no estado a atividade (operação) verificar_entrada é executada. Caso o evento tecla_pressionada ocorra, a ação (operação) atualizar_tela é imediatamente executada. Caso o evento clique_de_mouse chegue, enquanto alguma ação estiver sendo executada, ele é guardado para ser tratado após a execução da ação.
Engenharia de Software A / Engenharia de Software I Componentes de um Estado Componentes de um Estado Ações de Entrada/Saída : ações a serem executadas ao entrar e sair do estado Ação: execução de um processamento atômico que resulta em uma mudança de estado ou o retorno de um valor. Uma ação é atômica por não poder ser interrompida por um evento, devendo ser executado até a sua conclusão. Atividade : execução de um processamento não atômico que consome tempo para ser completado, podendo ser interrompido pela ocorrência de um evento. Uma atividade pode envolver a execução de um conjunto de ações. Uma atividade (ou ação) é representada por uma operação na classe correspondente.
Engenharia de Software A / Engenharia de Software I Componentes de um Estado Transição interna : lista de ações ou atividades internas ao estado a serem executadas em resposta a eventos recebidos enquanto o objeto encontra-se no estado. Quando da ocorrência de transições internas, as ações de entrada/saída não são executadas, não havendo portanto mudança de estado.
Engenharia de Software A / Engenharia de Software I Estado inicial : identifica o local padrão de início do diagrama de estados. Representação gráfica : Estado final (opcional): indica o último estado do objeto. Um diagrama de estados pode possuir mais de um estado final. Representação gráfica : Estado
Engenharia de Software A / Engenharia de Software I Transição Uma transição é uma relação entre dois estados, indicando que um objeto no primeiro estado irá executar certas ações e entrará no segundo estado quando houver a ocorrência de um evento específico e condições particulares sejam satisfeitas. Indicam a mudança/alteração de estado do objeto. É a passagem de um estado para outro dependendo de alguma condição. Uma transição deve conectar apenas um estado com outro estado.
Engenharia de Software A / Engenharia de Software I Transição Representação Gráfica: Nome_do_evento ( parâmetro ) [ condição ] / ação Informação trazidas pelo evento Condição a ser satisfeita para mudar de estado Ação a ser realizada na mudança de estado Mudança de estado devido a chegada de um evento Opcionais
Engenharia de Software A / Engenharia de Software I Transição clique_de_mouse (botão) [botão = esquerdo] / apresentarMenu Mudança de estado caso o evento clique_de_mouse ocorra. A informação trazida pelo evento é qual o botão foi pressionado. A condição para mudança de estado é se o botão do mouse pressionado for o esquerdo. Caso a transição ocorra a operação apresentarMenu é executada. Exemplo de uma transição:
Engenharia de Software A / Engenharia de Software I Componentes de uma Transição Estado fonte: o estado afetado pela transição. Evento gatilho: evento cuja recepção pelo objeto quando no estado fonte pode determinar a sua mudança de estado, desde que a sua condição de guarda seja satisfeita. Condição de Guarda: expressão a ser avaliada quando da recepção pelo objeto de um evento gatilho. Se for verdadeira, a transição deve ocorrer. É possível ter-se diversas transições de estado a partir de um mesmo estado fonte para um mesmo evento gatilho. Portanto, caso nenhuma das transições que possam ser disparadas a partir da recepção de um mesmo evento gatilho tenham suas condições de guarda satisfeitas, este evento é perdido.
Engenharia de Software A / Engenharia de Software I Componentes de uma Transição Ação: execução de um processamento atômico. Uma ação pode ser: uma chamada de uma operação do objeto ou de outro objeto visível; a criação ou destruição de um outro objeto; o envio de um sinal para um objeto. Estado Alvo: o estado que é ativado quando a transição é completada.
Engenharia de Software A / Engenharia de Software I Transição de Estados Estado Fonte Evento gatilho Ação Estado Alvo Condição de Guarda Exemplo para um objeto Conta Corrente
Engenharia de Software A / Engenharia de Software I Aplicação Tipicamente, o uso de Diagramas de Estado aplica-se para a modelagem dos aspectos dinâmicos: modelagem de objetos individuais, em particular, que tenham comportamento reativo modelagem da evolução de um objeto através de seus vários casos de uso não se obrigue a encontrar um diagrama de estados por objeto, use apenas quando for interessante do sistema como um todo; de um subsistema; de um cenário associado a um caso de uso.
Engenharia de Software A / Engenharia de Software I Modelagem A modelagem do comportamento de (um objeto de) uma classe pode ser realizada de dois modos: estabelecer todos os estados possíveis de um objeto durante seu ciclo de vida, e depois conectá-los através de transições (abordagem usada quando não há muitos estados possíveis) OU modelar o ciclo de vida “normal” de um objeto (desde a sua criação até a sua destruição) e depois derivar todos os estados extraordinários, secundários ou de exceção (abordagem usada quando há diversos estados possíveis).
Engenharia de Software A / Engenharia de Software I Elaborando um Diagrama de Estados Dicas: Identifique todos os estados do objeto, representados-os graficamente, e continuamente identifique as mudanças de estado (transições) conectando os estados envolvidos. Comece pelo estado inicial do objeto, modelando todos os estados intermediários considerando um funcionamento normal até o estado final. Posteriormente identifique os estados excepcionais (suas condições e tratamentos), conectando-os ao caminho de funcionamento normal.