Modelo de Análise e Projeto Luiz Felipe Libório [email protected] Contexto Documento de Requisitos Modelo de Casos de Uso ◦ Precisamos converter os casos de uso especificados em um modelo de sistema. Análise Análise - Objetivos Encontrar as classes iniciais do sistema (classes de análise) e distribuir comportamento dos casos de uso entre elas; Para cada classe, descrever as responsabilidades, atributos e relacionamentos Análise - Fases Para cada caso de uso: ◦ Encontrar classes de análise ◦ Identificar persistência Para cada classe: ◦ Distribuir comportamento entre as classes ◦ Descrever responsabilidades ◦ Descrever atributos e associações Revisar os Resultados Identificando as Classes As classes são identificadas baseadas na separação em três tipos: ◦ Fronteira; Representa a interface de um ator com o caso de uso. Esteriótipo: <<boundary>> ◦ Entidade; Representa as informações que são manipuladas pelo sistema, que podem ser persistentes ou não. Esteriótipo: <<entity>> ◦ Controle; Representa o controle do fluxo de eventos do caso de uso; Esteriótipo: <<control>> Identificar Persistência Se houver a necessidade de persistência de alguma informação, é criada uma nova classe de análise, que representa um conjunto de entidades. Esteriótipo: <<entity collection>> Diagramas de Interação Diagramas de interação (colaboração e seqüência) modelam interações do sistema com seus atores; A interação é iniciada por um ator e envolve instâncias (objetos) das classes; Diagramas de interação capturam a semântica do fluxo de eventos do caso de uso ◦ Auxiliam a identificar classes, responsabilidades e relacionamentos; Exemplo: Efetuar Login [UC-01] Efetuar Login Usuários: Cliente Entradas: Login do cliente, senha do cliente Pré-condições: Nenhuma Pós-condições: Um usuário válido é logado e sua sessão é registrada no sistema. Fluxo Principal: 1. O cliente informa login e senha. 2. O sistema verifica se o login e a senha são válidos (verifica se o login e senha pertencem a uma conta). 3. O sistema registra o início de uma sessão de uso. Sub-Fluxos: - No passo 2, se o login ou a senha forem inválidos, o sistema exibe uma mensagem e volta ao passo 1. Exemplo: Efetuar Login Classes de Análise Exemplo: Efetuar Login Diagrama de Sequência Exemplo: Efetuar Login Diagrama de Colaboração Descrever Responsabilidades Baseado no diagrama de sequência (ou de colaboração), são identificadas as responsabilidades das classes. Descrever Atributos Os atributos das classes são identificados, sem especificar tipos. Identificar Relacionamentos Identifica como as classes estão relacionadas dentro do contexto do caso de uso. Projeto Objetivo e Fases Melhoramento do modelo de análise, com o objetivo de gerar facilmente o modelo da implementação do sistema. Fases: ◦ Refinar o modelo de classes; ◦ Projetar a Arquitetura; ◦ Dividir o sistema em pacotes; Refinar o Modelo de Classes Eliminar os estereótipos de análise; Mapear associações em atributos; Analisar a possibilidade de utilizar herança; Definir os tipos dos atributos; Adicionar modificadores de visibilidade aos métodos e atributos; Detalhar assinatura dos métodos ◦ definir todos os parâmetros dos métodos, seu tipos e o tipo de retorno dos métodos Exemplo: Efetuar Login Refinar o Modelo de Classes Analisar se é necessário criar novas classes ou remover classes existentes; Juntar todas as classes em um só diagrama; Identificar padrões de projeto ◦ Ex: Fachada Revisar as classes; Projetar a Arquitetura Maneira mais comum: dividir o sistema em camadas. ◦ Modularidade; ◦ Dimunição de Dependências; ◦ Facilidade de troca de camadas; Arquitetura em Camadas Interface Comunicação Negócio Dados Dividir o sistema em pacotes Agrupar as classes em pacotes, baseados em algum critério: ◦ Camadas; ◦ Lógica do sistema; ◦ Subsistemas. Dividir o sistema em pacotes PRÁTICA Ferramenta: ◦ JUDE Java and UML Developer Environment Exercício: ◦ Analisar e Projetar os casos de uso “Comprar Ações” e “Efetuar Pagamento do QIB Card” Referências Engenharia de Software e Sistemas – IF682 ◦ www.cin.ufpe.br/~if682 Análise e Projeto de Sistemas – IF718 ◦ www.cin.ufpe.br/~if718