PROJETO (OU DESIGN) DO SOFTWARE Diagrama de Estrutura Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 1
PROJETO (OU DESIGN) DO SOFTWARE Na fase de projeto (ou design) do software, a preocupação é propor uma solução arquitetônica viável para cumprir os objetivos do sistema. O processo do projeto converte o que o sistema deve fazer (os requisitos levantados na fase de análise) para o como os requisitos serão projetados (ou desenhados ), de uma forma a serem construídos na fase de implementação. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 2
PROJETO (OU DESIGN) DO SOFTWARE Principais conceitos Abstração - É a descrição de um problema com um nível de generalização que permite concentrar nos aspectos principais do problema, sem se perder nos detalhes. Uma boa abstração esconde os detalhes desnecessários. Ponto de vista de quem irá utilizar ponto de vista do seu comportamento de funcionamento Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 3
PROJETO (OU DESIGN) DO SOFTWARE Principais conceitos Refinamento - Diz respeito à forma de modelar as abstrações do projeto em sucessivos níveis de refinamento de detalhes. Para a modelagem de sistema usando casos de uso, dois diagramas em níveis de detalhes são utilizados: o contexto do sistema e o modelo de casos de uso. Modularidade - É a divisão do software em partes menores, normalmente chamadas de módulos. Entretanto, dependendo do nível de granularidade (tamanho) dessas partes podem ser chamadas também de sistema (o maior módulo), subsistemas (os submódulos ) e componentes (as unidades de implementação). As partes devem ser integradas para atenderem aos requisitos do problema. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 4
INDEPENDÊNCIA FUNCIONAL Um produto direto da modularidade e dos conceitos de abstração e ocultação da informação. Um software com módulos independentes é mais fácil de ser desenvolvido e mais fácil de ser mantido; fundamental para um bom projeto. Critérios de qualitativos: ALTA COESÃO e BAIXO ACOPLAMENTO. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 5
Acoplamento (baixa) DIAGRAMA DE ESTRUTURA COESÃO x ACOPLAMENTO Cidade A A B Cidade B B Cidade A Cidade B Coesão (alta) A B Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 6 B
Módulos de Pequenos Tamanho Independência Modular Característica de Caixa-Preta Modelagem Conceitual Isolamento de Detalhe Refinar o projeto e corrigir suas falhas antes da implementação Servir de referência aos programadores no estágio de implementação Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 7
O gráfico de DE mostra : O particionamento em módulos. A hierarquia e organização dos módulos. Interface ( entrada e saída) entre módulos. Funções dos módulos. Por outro lado o gráfico não mostra : Procedimento interno dos módulos. Os dados internos dos módulos. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 8
ACOPLAMENTO Mede o grau de interdependência entre os módulos Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 9
ACOPLAMENTO No projeto seguindo a abordagem orientada a objetos, o acoplamento é o nível de ligação do objeto com objetos fora de suas fronteiras, por meio de chamada de operações (entre métodos) e troca de dados (atributos públicos e passagem por referência de objetos). O baixo acoplamento pode ser alcançado ao se evitar chamar métodos de outras classes e evitando a troca de dados (atributos) de outros objetos externos de forma direta, a não ser por meio de métodos públicos de acesso, definidos na interface da classe. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 10
ACOPLAMENTO TIPOS DE ACOPLAMENTO Acoplamento de Dados Acoplamento de Imagem Acoplamento de Controle Acoplamento Comum Acoplamento de Conteúdo (melhor) (pior) Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 11
ACOPLAMENTO ACOPLAMENTO BAIXO : eliminando relações desnecessárias. reduzindo o número de relações necessárias. enfraquecendo a dependência das relações necessárias. VANTAGENS : menor a chance do efeito cadeia. trocar um módulo com um mínimo de risco de ter de trocar outro módulo Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 12
ACOPLAMENTO DE DADOS Comunicam-se por parâmetros Qte_emprestada Calcular Total Conta prazo Calcular Reembolso taxa_reembolso passar para um módulo somente os dados necessários. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 13
ACOPLAMENTO DE IMAGEM Mais dados do que precisa Reg._aluguel de carro Calcular Taxa de Aluguel Básico Gerar Conta de Aluguel de Carro taxa_aluguel_básico Reg_aluguel_cliente consumo_gasolina Calcular Consumo de Gasolina Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 14
ACOPLAMENTO DE IMAGEM Reduzir o acoplamento de imagem não criar itens de dados compostos contendo muitas partes de dados não relacionadas logicamente. Agrupe em uma estrutura de dados apenas itens relacionados. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 15
ACOPLAMENTO DE CONTROLE Controla lógica interna O que fazer Juntar Registro Cliente Reg_mestre Controle E/S do Sistema Reg_transação eliminar sinalizadores. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 16
nome_material DIAGRAMA DE ESTRUTURA ACOPLAMENTO COMUM Encontrar Número de Material Tabelas de Materiais Usam a mesma área de dados novo_ núm_unid núm_ unid_anterior não_existe Controle E/S do Sistema Flag. de Erro estoque_ insuficient e evite dados compartilhados. é preciso ter-se definido, e muito bem, que somente um módulo pode fazer manutenção na área de dados. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 17
ACOPLAMENTO CONTEÚDO Faz referência ao interior do outro A B Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 18
Qualidade dos Tipos de Acoplamento Tipo de Acoplamento Suscetib. ao Erro Possibilidade de Alteração Compreensão Util. Módulo Outros Sist. Conteúdo Ruim Ruim Ruim Ruim Comum Fraco Média Ruim Ruim Controle Média Fraco Fraco Fraco Imagem Variavel Média Média Média Dados Variavel Boa Boa Boa Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 19
COESÃO mede a força de ligação entre os módulos Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 20
COESÃO TIPOS DE COESÃO : Coesão Funcional Coesão Sequencial Coesão Comunicacional Coesão Procedural Coesão Temporal Coesão Lógica Coesão Coincidental (melhor) (pior) Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 21
COESÃO FUNCIONAL É quando o módulo possui elementos diferentes, porém todos eles são necessários e suficientes para executar uma e somente uma função. Calcular o coseno de um ângulo Ex. LEIA registro de cliente CALCULE prêmio normal de seguro DEDUZA taxas federais Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 22
COESÃO SEQUENCIAL É quando o módulo possui funções diferentes, executadas seqüencialmente, e o resultado do processamento da primeira, será a entrada para o processamento da segunda. X A Y B Z Ex. CALCULAR salário bruto; CALCULAR deduções; CALCULAR salário liquido. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 23
COESÃO COMUNICACIONAL É quando o módulo executa varias tarefas e se utiliza da mesma entrada ou da mesma saída. X A B Y Z Ex. OBTER preço do livro; OBTER titulo do livro; OBTER autor do livro; OBTER editora do livro Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 24
COESÃO PROCEDURAL É quando o módulo possui elementos que cumprem funções diferentes, e muitas vezes não relacionadas, nas quais o controle é passado de uma a outra. LER GRAVAR Neste tipo de coesão só ocorre a passagem de controle, sem nenhuma passagem de dados. EDITAR Ex. Verificar se o limite de crédito do cliente foi atingido; e Se o limite foi atingido, bloquear o pedido Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 25
COESÃO TEMPORAL Quando os procedimentos que executa estiveram relacionados com o tempo, e não com o tipo de função que executam. imprimir fechar arquivo Neste módulo, as instruções necessitam ser executadas ao mesmo tempo, sem portanto, a necessidade de ordem ou vinculo entre elas. encerrar execução Ex. FORMATAR e imprimir totais gerais; FECHAR arquivos; ENCERRAR execução. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 26
COESÃO LÓGICA Quando os elementos que formam um módulo, destinam-se ao tratamento de uma mesma categoria. R1 A R1 A1 R1 A2 Ex. Tratamento de Erros EMISSÃO de Mensagem; EXECUÇÃO de processo especifico; Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 27
COESÃO COINCIDENTAL Este tipo ocorre quando os procedimentos internos dos módulos estão dispostos de tal forma que não existe nenhuma ligação lógica entre eles. C1 C A1 A B1 B Ex. Tratamento de Erros LER Pedido GERAR aviso de cobrança; ATUALIZAR dados cadastrais de cliente; EMITIR tabela de preço aos vendedores; Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 28
O módulo pode ser considerado como executando uma função relacionada ao problema? COESÃO USANDO A ÁRVORE DE DECISÃO relacionamento das atividades dados controle nenhuma SIM A seqüência é importante? A seqüência é importante? 1. Funcional 2. Seqüencial 3. Comunicacional 4. Procedural 5. Temporal NÃO Mesma categoria? 6. Lógica 7. Coincidente Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 29
Qualidade dos Tipos de Coesão Tipo de Coesão Grau Indep. Outros Módulos Suscetibilidade a erros Compreensão Util. Módulo Outros Sist. Coincidental Baixo Alto Baixo Baixo Lógica Médio Alto Médio Médio Temporal Baixo Médio Médio Baixo Procedural Medio Baixo Baixo Baixo Comunicac. Medio Baixo Médio Médio Sequencial Alto Médio Médio Alto Funcional Alto Baixo Alto Alto Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 30