Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise e Projeto de Sistemas Análise OO / UML Renata Araujo Ricardo Storino Ciclo de Vida de Software Definição dos requisitos Análise Documentos são gerados a cada fase e servem de entrada para a fase seguinte Projeto Implementação Teste/Avaliação Implantação Manutenção 2 Ciclo de Vida - Modelo Cascata Definição de Requisitos Intenções Transformações Requisitos do Software Análise Especifica ção do Software Projeto Projeto do Software Documentos gerados durante o ciclo de vida Implementação Código do Software Teste Sistema pronto para operar 3 Definição de Requisitos Desejos Intenções Procedimentos Dados Identificar Organizá-los de forma coerente Definir de uma forma geral Requisitos do Software 4 desejos, intenções, procedimentos atuais e dados; o que será tratado pelo software interface com o que fica de fora do software Análise do Software Entendimento e Representação Requisitos do Software Especificação do Software 5 Domínio do problema Conceitos Funcionalidades Casos de uso Baseado nos fatores críticos de sucesso do software Análise Orientada a Objetos Objetivos Representar todos os conceitos do mundo real que são relevantes para o sistema Modelagem do Sistema segundo o paradigma OO Descrever a estrutura de classes do sistema Produtos Modelo/representação do software Modelo de Análise do Sistema Documentação 6 Representação gráfica do diagrama de classes do Sistema e das interações entre os objetos destas classes Detalhamento e complementação do diagrama de classes do sistema Análise Orientada a Objetos 7 Diagramas da UML Visão Externa Diagrama de Casos de Uso Visão de Interação Visão Estrutural (Estática) Diagrama de Classes Visão Comportamental (Dinâmica) 8 Diagrama de Sequência Diagrama de Colaboração Diagrama de Estado Diagrama de Atividade Visão da Arquitetura (Implementação) Diagrama de Componentes Diagrama de Implantação Diagrama de Pacotes Diagramas de Caso de Uso Especificam a visão externa do sistema Descrevem como o sistema é percebido por seus usuários Descrevem as interações entre os usuários e o sistema Consulta de saldo Solicitação de extrato Ator 9 Interações Diagramas de Classe Descrevem a parte estática do sistema, ignorando seu processamento Apresentam Classes (objetos) Atributos Relacionamentos 10 Herança Agregação Associação Serviços Diagramas de Estado Apresentam as sequências de estados que um objeto assume em sua existência em resposta a estímulos recebidos Classe Pedido Pedido enviado Pedido Registrado Pedido para análise requisitado Pedido em Análise Complemento das descrições estáticas de classes Pedido para aprovação Pedido em Aprovação 11 Relacionam os possíveis estados que os objetos de uma classe podem ter e quais os eventos que causam mudanças em seu estado. Aprovação emitida Pedido Aprovado Pedido será atendido Diagramas de Sequência Apresentam a interação entre os objetos no decorrer do tempo Janela Vendedor 1: situação financeira do cliente Pedido Mostra a sequência de mensagens entre objetos Nota Fiscal 2: obter pedidos (cliente) 3: obter notas fiscais (pedido) 4: obter faturas vencidas (nota fiscal) 5: obter faturas a vencer (nota fiscal) 6: obter limite de crédito (cliente) 12 Fatura Cliente Diagrama de Classes 13 Passos para confecção Identificação de Classes Identificação de relacionamentos Definição de atributos Definição de serviços Identificação de Classes O domínio do problema Os requisitos da aplicação 14 Um determinado domínio de problemas inclui informações relativas ao mundo real Considerados os objetivos da aplicação a ser construída, apenas um subconjunto dessas informações necessita ser representado Identificação de Classes No mundo real Cliente 15 Em uma dada aplicação/sistema Nome Endereço Altura Peso Idade Sexo Renda Mensal Cor dos Cabelos Número de Dependentes ... Cliente Nome Endereço Idade Sexo Renda Mensal Número de Dependentes Identificação de Classes No mundo real Numa aplicação/sistema Cliente Cliente Nome Time Nome Endereço Carro Endereço 16 Dependentes Identificação de Classes O que procurar? Objetos Agentes Ex. cliente, atendente etc. Unidades organizacionais Ex. Pessoas, clientes, turmas, cursos, produtos etc. Ex. local para entrega, setor etc. Eventos Reclamação do cliente, pedido pago etc. “Quaisquer conceitos que serão armazenados e “lembrados” pelo sistema.” 17 Identificação de Classes O que Considerar? Armazenamento necessário Mais de um objeto em uma classe É possível identificar facilmente os objetos desta classe? Evite classes que representem um só objeto Atributos sempre aplicáveis 18 O sistema precisará armazenar informações sobre os objetos desta classe? Todos os atributos identificados para a classe são aplicáveis a todas as suas instâncias? Identificação de Classes Notação de classe Nome da Classe <lista de atributos> <Lista de serviços/operações> 19 Identificação de Classes Recomendações Nomenclatura de classes Nome da classe deve descrever claramente o conceito representado Uso de termos de conhecimento de todos Evitar abreviaturas Estabelecimento de padrões para nomeação de classes Evitar ambigüidades (dupla interpretação) Prática 20 Uso Fast Case Definição de Atributos Objetivo O que considerar? 21 Identificar e formalizar a definição dos atributos de cada classe presente no diagrama de classes Necessidade do sistema em armazenar as características das instâncias das classes Definição de Atributos Representação gráfica Nome da Classe <lista de atributos> <Lista de serviços/operações> 22 Definição de Atributos Notação de atributos Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade} Visibilidade: Critério de acesso ao atributo Opcional + visibilidade pública (default) # visibilidade protegida Atributo é acessado apenas pelos serviços da própria classe ou por serviços de classes dentro de um mesmo pacote - visibilidade privada 23 Atributo pode ser acessado por todos, inclusive por serviços de outras classes Atributo é acessado por operações da própria classe Definição de Atributos Notação de atributos Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade} Visibilidade: Aluno + Nome # Endereço - Créditos 24 Definição de Atributos Notação de atributos Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade} Nome do atributo Obrigatório!!!! Necessidade de padronização Clareza de significado Evitar abreviaturas Aluno + Nome # EndereçoDoAluno - CréditosObtidos 25 Definição de Atributos Notação de atributos Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade} Tipo de Expressão Opcional Tipo de implementação do atributo Inteiro String Real ... Aluno + Nome: string # EndereçoDoAluno: string - CréditosObtidos: int 26 Definição de Atributos Notação de atributos Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade} Valor Inicial Valor inicial do atributo Opcional Aluno + Nome: string # EndereçoDoAluno: string - CréditosObtidos: int = 0 27 Definição de Atributos Notação de atributos Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade} Propriedade Opcional Maior detalhamento do atributo Descrição Tipo 28 Estático Constante Variável Domínio de Valores Aluno + Nome: string # EndereçoDoAluno: string -CréditosObtidos: int = 0 -NumMáximoDeCréditos: int = 70 {constant} Definição de Atributos Notação de atributos Nome da Classe Atributo Atributo:tipo do dado Atributo:tipo do dado = valor inicial 29 Exemplo Aluno Nome Endereço:string Créditos:inteiro = 0 Prática Uso Fast Case Definição de Serviços Objetivo O que considerar? 30 Identificar e formalizar a definição das operações de cada classe presente no diagrama de classes Necessidade de cada classe em realizar operações que atendam às funcionalidades do sistema Definição de Serviços Representação Gráfica Nome da Classe <lista de atributos> <Lista de serviços/operações> 31 Definição de Serviços Notação de serviços Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade} Visibilidade: Critério de acesso ao serviço Opcional + visibilidade pública (default) # visibilidade protegida Serviço é acessado apenas pelos serviços da própria classe ou por serviços de classes dentro de um mesmo pacote - visibilidade privada 32 Serviço pode ser acessado por todos, inclusive por serviços de outras classes Serviço é acessado por operações da própria classe Definição de Serviços Notação de serviços Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade} Visibilidade: Aluno Nome Endereço Créditos + InformarNome( ):string # InformarEndereço( ):string - CancelarCréditos( códigoCadeira ) 33 Definição de Serviços Notação de serviços Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade} Nome do serviço Obrigatório!!!! Necessidade de padronização Clareza de significado Evitar abreviaturas Aluno Nome Endereço Créditos + InformarNome( ):string # InformarEndereço( ):string - CancelarCréditos( códigoCadeira ) 34 Definição de Serviços Notação de Serviços Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade} Parâmetros Lista de valores utilizados pelo serviço Aluno Nome Endereço Créditos 35 + InformarNome( ):string # InformarEndereço( ):string -CancelarCréditos( códigoCadeira ) -AtualizarCréditos( códigoCadeira, ano, número de Créditos ) Definição de Serviços Notação de serviços Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade} Expressão de tipo de retorno Tipo do valor de retonor do serviço Aluno Nome Endereço Créditos 36 + InformarNome( ):string # InformarEndereço( ):string -CancelarCréditos( códigoCadeira ) -AtualizarCréditos( códigoCadeira, ano, número de Créditos ) Definição de Atributos Notação de serviços Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade} Propriedade 37 Prés e pós condições Exceções Propriedades dependentes da linguagem de programação Opcional Maior detalhamento do serviço Classificação Construtor: incializam/constroem instâncias da classe Destrutor: destróem instâncias da classe Modificador de atributos: modificam valores de atributos Seletor de atributos: utilizam mas não modificam valores de atributos Aluno Nome Endereço Créditos + CriarAluno( nome ) { construtor } + InformarNome( ):string # InformarEndereço( ):string -CancelarCréditos( códigoCadeira ) { modificador } -AtualizarCréditos( códigoCadeira, ano, número de Créditos ) Definição de Serviços Persistência Construtores e Destrutores 38 Objetos Persistentes – armazenado no banco de dados Objetos transientes – em memória Coleta automática de lixo Serviços para acesso a atributos Prática Uso Fast Case Identificação de Relacionamentos Objetivo O que considerar? Necessidade do sistema em “lembrar” relacionamentos entre as classes O que procurar? 39 Identificar associações, agregações e relacionamentos de generalização/ especialização (herança) entre classes Todos os relacionamentos entre instâncias de classes que sejam relevantes para o sistema Identificação de Relacionamentos 40 Associação Relacionamentos simples entre instâncias de classes Descrevem algum vínculo, relacionamento ou interdependência entre instâncias de classes Identificação de Relacionamentos Associação - Representação Unária Pessoa 0..* É pai de 1..2 Binária Aluno Cadeira 0..* Cursa 0..* 41 Identificação de Relacionamentos Associação - Representação N-ária Avaliação * Funcionário 42 * Projeto * Quesito Identificação de Relacionamentos Agregação Relacionamentos com uma semântica bem definida: a de composição Relacionamentos que representem: montagens e suas partes Ex. Um carro e suas partes (motor, chassi, rodas …) recipientes e seus conteúdos conjuntos e seus membros 43 Ex. Vôo e passageiros Ex. Turma e alunos Identificação de Relacionamentos Agregação - notação Departamento Empresa 1 1..* “Parte” 44 “Todo” Identificação de Relacionamentos Herança O que procurar? Diferenças e similaridades entre classes Várias classes com características comuns Notação Veículo Ano Cor Carro Ano Cor No de Portas 45 Ônibus Ano Cor No de Assentos Caminhão Ano Cor Capacidade Generalização / Especialização O que procurar? (cont.) Uma classe com atributos aplicáveis apenas a subconjuntos de suas instâncias Funcionário Nome Nasc Salário Projeto Gerente Projeto 46 Funcionário_Maria Funcionário_João Nome = ‘Maria’ Nome = ‘João’ Nasc = ‘16/02/70’ Nasc = ‘10/05/65’ Salário = 2500 Salário = 3000 Projeto = ‘’ Projeto = ‘Call Center’ Identificação de Relacionamentos Nome/Semântica do relacionamento Multiplicidade 1 * 0..* 0..1 1..* M..N 47 somente um muitos (zero ou mais) muitos (zero ou mais) opcional (zero ou um) maior ou igual a um sequência específica Ex. 1..27 (de um a 27), 23..* (acima de 23) Papéis Navegabilidade Restrições Prática Uso Fast Case Diagramas de Estado Objetos de uma classe possuem um “ciclo de vida” 48 São gerados Assumem posições (estados) Dão origem a outros objetos Deixam de existir (são destruídos) O estudo dos diferentes estados de um objeto de uma classe e das transições entre estes estados permite o levantamento de serviços adicionais a serem incorporados na classe Diagramas de Estado Notação Estado: condição ou situação durante a vida de um objeto no qual satisfaz alguma condição, executa alguma atividade em resposta a um evento ou espera pela ocorrência de algum evento. <nome do estado> Início Fim 49 Diagramas de Estado Notação Evento: Ocorrência que deve ser reconhecida e gerar uma reação pelo sistema em estudo. A ocorrência de um evento provoca a transição entre estados de instâncias de alguma classe pertencente ao sistema evento Estado 1 Estado 2 50 Diagramas de Estado Exemplo – Classe PedidoDeCompra Envio de pedido Prática Pedido Registrado Pedido Atendido Requisição de análise de pedido Atendimento a Pedido Pedido é aprovado Pedido em Análise Pedido não pode ser atendido neste momento Pedido Aprovado Pedido já pode ser atendido Pedido cancelado Pedido Pendente Pedido cancelado 51 Pedido cancelado Pedido cancelado Uso Fast Case Diagramas de Sequência 52 Objetivo Identificar o envio de mensagens entre os objetos das diversas classes do diagrama em resposta a cada caso de uso Um diagrama de sequência mostra interações de objetos organizadas em uma sequência de tempo e de mensagens trocadas Diagrama de Sequência Tempo (top-down) ator um objeto (evento) criar outro objeto mensagem retorno ativação excluir Linha de vida 53 Símbolo de exclusão Diagrama de Sequência Prática Janela Pedido Nota Fiscal Vendedor 1: situação financeira do cliente 2: obter pedidos (cliente) 3: obter notas fiscais (pedido) 4: obter faturas vencidas (nota fiscal) 5: obter faturas a vencer (nota fiscal) 6: obter limite de crédito (cliente) 54 Fatura Uso Fast Case Cliente