Modelagem Dinâmica Toda a ação é designada em termos do fim que procura atingir. Niccolo Maquiavel O pensamento é o ensaio da ação. Sigmund Freud
Modelagem Dinâmica Identifica e modela os aspectos do sistema de software que podem mudar durante a sua execução, devido à ocorrência de eventos. Foco no comportamento que o sistema deve apresentar. Usa os diagramas dinâmicos da UML (seqüência, colaboração, atividade e estado). Especifica uma versão inicial das interfaces públicas das classes de análise. Foco no domínio do problema!
Eventos Ocorrências dignas de modelagem envolvendo algum tipo de troca de informação. O evento não é a informação trocada e sim o fato de alguma informação ter sido trocada. O tipo de evento mais comum encontrado durante a análise é a interação entre um ator e o sistema. Modelamos o comportamento do sistema através de eventos e das ações executadas em resposta a eles.
Atividades da Modelagem Dinâmica Identificar eventos do sistema Construir diagramas de seqüência para os cenários primários dos casos de uso Construir um único diagrama de colaboração para o sistema, combinando os diagramas de seqüência Atualizar a interface pública das classes (operações) Construir diagramas de estados
Atividade1- Identificar eventos do sistema Deve ser realizada uma nova análise textual nas especificações dos casos de uso, prestando-se atenção aos pontos nos quais trocas de informação ocorrem. Normalmente, esses pontos estão associados a verbos. Informações relevantes: verbos e os contextos nos quais aparecem.
Exemplo: UC1- Emprestar Exemplar Fluxo Básico : 1. O cliente solicita empréstimo de um exemplar de alguma publicação (livro, periódico, tese ou manual), fornecendo o seu número de registro e o número de tombo da publicação desejada. 2. A atendente solicita o empréstimo ao sistema, fornecendo o código do cliente e o tombo da publicação 3. O sistema valida o cliente e verifica o seu status no sistema de cadastro ( Normal ou Suspenso ) através de seu número include de registro.(<< >> Validar Usuário)
4. O sistema verifica se existe algum exemplar disponível da publicação desejada. 5. Se o status do cliente for Normal e algum exemplar da publicação estiver disponível 5.1. O sistema altera status do livro para emprestado; 5.2. O sistema verifica o período do empréstimo, que depende do tipo de usuário - 7 dias para alunos e 15 para professores 5.3. O sistema gera registro do empréstimo. 5.4. O sistema comunica o sucesso do empréstimo.
Fluxo Alternativo 1 : No passo 5, se o usuário estiver suspenso, o sistema informa a atendente de sua proibição de retirar exemplares e o empréstimo não é realizado. Fluxo Alternativo 2 : No passo 5, se todas as cópias da publicação estiverem emprestadas ou reservadas, o sistema informa a atendente que a publicação não está disponível, não sendo possível realizar o empréstimo.
Eventos identificados O cliente solicita empréstimo de um exemplar de alguma publicação; O cliente fornece o seu número de registro e o número de tombo da publicação; A atendente solicita o empréstimo ao sistema; A atendente fornece o número de registro do cliente e o número de tombo da publicação; O sist. valida o cliente e verifica o seu status; O sist. verifica se existe algum exemplar disponível da publicação desejada; O sist. altera status do livro para emprestado; O sist. verifica o período do empréstimo; O sist. gera registro do empréstimo; O sist. comunica o sucesso do empréstimo; (A1) O sist. informa a atendente da proibição de retirar exemplares; (A2) O sist. informa a atendente que não será possível realizar o empréstimo- publicação indisponível.
Eliminando Redundancias... O cliente solicita empréstimo O cliente não de é um um ator exemplar desse sistema, de alguma apenas o publicação; atendente, O cliente fornece o seu perceba número que esses de registro eventos indicam e o número comunicação de tombo entre da cliente e atendente e não com o sistema... publicação; A atendente solicita Consiste o empréstimo em um evento ao sistema; onde solicita o empréstimo já A atendente fornece informando o número de de registro do cliente e tombo e o número da publicação de tombo da publicação; O sist. valida o cliente e verifica o seu status; O sist. verifica se existe algum exemplar disponível da publicação desejada; O sist. altera status do livro para emprestado; O sist. verifica o período do empréstimo; O sist. gera registro do empréstimo; O sist. comunica o sucesso do empréstimo; (A1) O sist. informa a atendente da proibição de retirar exemplares; (A2) O sist. informa a atendente que não será possível realizar o empréstimo- publicação indisponível.
Atividade2-Construir o Diagrama de Seqüência O objetivo principal desse diagrama é: determinar a ordem em que os eventos ocorrem, as mensagens que são enviadas, os métodos que são chamados, como os objetos interagem entre si dentro de um determinado processo.
Construir o Diagrama de Seqüência Primeiro constrói-se o diagrama de seqüência de sistema relativo a cada caso de uso, usando-se os eventos identificados na Atividade 1.
Diagrama de Seqüência de Sistema
Refinando o Diagrama de Seqüência Em seguida refina-se esse diagrama, construindo o diagrama de seqüência de análise substituindo-se o objeto Sistema pelas classes de análise de fronteira, controle e entidade que o materializam.
Comunicação entre classes Para cada tipo de classe de análise, existe um estereótipo. Classes de Fronteira Classes de Controle Classes de Entidade <<boundary>> <<control>> <<entity>> Interações devem ser organizadas da seguinte maneira: Fronteira Controle Entidade
Diagrama de Seqüência de Análise
Diagrama de Seqüência de Análise O controlador de alguma forma sabe achar os objetos.abstrai a busca (se vai buscar em arquivo, em vetor, em banco... Depois de carregado o objeto posso enviar mensagens Instanciou novo objeto empréstim o não tinha linha de vida anterior Métodos privados do controlador
Detalhando... Com os exemplos anteriores vocês puderam ter uma noção do diagrama de seqüência, mas para construí-lo precisamos detalhar seus elementos
Elementos do Diagrama de seqüência Atores: Os atores são exatamente os mesmos descritos no Diagrama de Casos de Uso, ou seja, entidades externas que interagem com o sistema e que solicitam serviços, gerando dessa forma eventos que iniciam processos. Normalmente os atores são os usuários que utilizam o sistema, mas podem representar outro software, como um sistema integrado ou um hardware especial. Esses atores costumam ser apresentados como bonecos magros idênticos aos usados no diagrama de casos de uso, porém contendo uma linha de vida.
Elementos do Diagrama de seqüência Linha de Vida: A linha de vida representa o tempo em que um objeto existiu durante um processo. As linhas de vida são representadas por linhas finas verticais tracejadas partindo do retângulo que representa o objeto. A linha de vida é interrompida com um X quando o objeto é destruído.
Elementos do Diagrama de seqüência Objetos: Objetos representam as instâncias das classes envolvidas no processo ilustrado pelo Diagrama de Seqüência. Os objetos são apresentados como retângulos (ou símbolo do estereótipo da classe)contendo um texto que identifica primeiramente o nome do objeto, em minúsculo, e depois o nome da classe, com as letras iniciais maiúsculas, a qual o objeto pertence. Essas duas informações são separadas por um símbolo de dois pontos. Os objetos também contém uma linha de vida, tracejada e vertical que surge a partir do objeto.
Elementos do Diagrama de seqüência Objetos Criação de objeto é representada por mensagem dirigida à própria caixa que representa o objeto (em vez de ser dirigida à linha de vida). Mensagem de criação pode ter estereótipo «create» Destruição de objeto é representada por um X no fim da linha de vida do objeto. Mensagem de destruição pode ter estereótipo «destroy». ob1:c1 ob1:c1
Elementos do Diagrama de seqüência Foco de controle ou Ativação: Indica os períodos em que um determinado objeto está participando ativamente do processo, ou seja, identifica os momentos em que um objeto está executando um ou mais métodos utilizados em um processo específico. Aparece sobre a linha de vida do objeto quando o mesmo recebe um estímulo. Chamadas recursivas provocam barras empilhadas
Elementos do Diagrama de seqüência Mensagem: Uma mensagem é uma comunicação entre objetos (emissor e receptor) que veicula informação na expectativa de provocar uma resposta (ação ou atividade). Uma ação de um objeto capaz de provocar uma resposta em outro objeto pode ser modelada como uma mensagem do primeiro para o segundo objeto. Uma mensagem é representada por uma seta horizontal, do emissor para o receptor, com o nome e possíveis argumentos
Elementos do Diagrama de seqüência Tipos de mensagens síncrona - o emissor fica parado à espera de resposta corresponde tipicamente a chamada de operação/procedimento no receptor retorno de mensagem síncrona São opcionais assíncrona - o emissor não fica parado à espera de resposta corresponde tipicamente a envio de sinal entre dois objetos concorrentes simples - não define se é síncrona, de retorno ou assíncrona usadas normalmente na modelagem de interações na fronteira do sistema (entre atores e o sistema representado por um ou mais objetos)
Elementos do Diagrama de seqüência Mensagens iteradas (loop) e com retorno O valor de retorno de uma mensagem síncrona pode ser indicado na chamada, das duas formas a seguir, ou na mensagem de retorno ret := msg(args) msg(args):ret Uma mensagem iterada(loop) é indicada com asterisco *, seguido ou não de uma fórmula de iteração Exemplo: *[i:=1..n] update(i)
Elementos do Diagrama de seqüência Mensagens condicionais Uma mensagem condicional é indicada por uma condição de guarda entre colchetes [ ] Exemplo: [x<0] invert(x,color) A mensagem só é enviada se a condição for verdadeira Condições permitem mostrar várias sequências alternativas num único diagrama
Tipos de Transação Identificadas no caso de uso e transportadas para o primeiro nível do diagrama de seqüência (dos atores para a aplicação/interface): Evento e Resposta de sistema Colocadas no segundo nível (da aplicação interface para o controle/domínio), são métodos que efetivamente realizam a funcionalidade do sistema: Operação e Consulta de sistema
Evento de Sistema Informação flui de um dos atores para a aplicação
Resposta do Sistema Informação flui do sistema para o ator
Conseqüências - Métodos Eventos e respostas do sistema têm conseqüências na camada de aplicação de um sistema. Essas conseqüências são procedimentos (métodos) de entrada e saída que terão que ser analisadas, projetadas e implementadas para realizar os casos de uso.
Conseqüência de um evento Operação de Sistema, quando se tratar de entrada de dados ou controle:
Notação Operação (abstrata) especificação Método (concreto) implementação Apenas operações de sistema e consultas de sistema são métodos (chamadas de procedimento). Ou seja, apenas fluxos da aplicação para o controle precisam usar a notação nome(parametros)
Exercícios Estudo de caso: Sistema de Folha de Pagamento 1. Construa o diagrama de seqüência representando o cenário primário de sucesso dos casos de uso Adicionar evento e Gerar Demonstrativo do Funcionário
Adicionar evento
Diagrama de colaboração Semelhante ao Diagrama de Seqüência. Diferença é: diagrama de seqüência seqüência temporal em que os eventos ocorrem mensagens que são chamadas, diagrama de colaboração organização estrutural dos objetos como os objetos estão vinculados mensagens que objetos trocam entre si.
Diagrama de colaboração Representam como os eventos fluem de um objeto para outro. Visão geral das trocas de informação entre objetos do sistema Destaca necessidade de associação entre classes.
Componentes do diagrama de colaboração Objetos: instâncias de classes que participam de um processo. Conta1:Conta Vínculos: ligações existentes entre os objetos envolvidos, ocorre sempre que dois objetos colaboram entre si, seja pelo envio ou recebimento de mensagens. conta1:conta hist1:histórico
Componentes do diagrama de colaboração Mensagens:geralmente representam chamadas a métodos. A numeração das mensagens indica a ordem em que elas ocorrem. A direção da seta indica a direção para onde a mensagem foi enviada, a ponta da seta indica o objeto que receberá a mensagem. O exemplo a seguir ilustra o envio da mensagem solicitando o disparo do método Gravar, transmitida a partir do objeto conta1 para o objeto hist1 conta1:conta 1:Gravar() hist1:histórico
Componentes do diagrama de colaboração Atores: os mesmos do diagrama de caso e uso e diagrama de seqüência 1:ConCPF() fisica1:física 2:Gravar() Condições: podem ser inseridas nas mensagens 1:[Se necessário]gravar() fisica1:física
Exemplo Diagrama de colaboração
Atualizar Diagrama de classes Depois de construir os diagramas de sequencia e de colaboração, devemos associar os eventos às classes de análise e atualizar o diagrama de classes, para que passe a incluir essa informação. Os eventos recebidos por uma classe se transformam em operações de sua interface pública. Eventos produzidos por um objeto podem indicar tanto uma resposta para um evento recebido quanto o fato de que uma classe usa algum serviço oferecido por outra.
Exercícios Estudo de caso: Sistema de Folha de Pagamento 1. Construa um diagrama de colaboração representando o cenário primário de sucesso do caso de uso Gerar Demonstrativo do Funcionário