Introdução: O objectivo da fase de Design no Ciclo de Vida do Desenvolvimento de Software é produzir uma solução para um problema dado no documento SRS(Software Requirement Specification). A saída da fase de desenho é Sofware Design Document (SDD).

Basicamente, o desenho é um processo iterativo em duas partes. A primeira parte é o Design Conceptual que diz ao cliente o que o sistema vai fazer. A segunda é o Desenho Técnico que permite aos construtores do sistema compreender o hardware e software reais necessários para resolver o problema do cliente.

Desenho conceptual do sistema:

  • Escrito em linguagem simples ou seja, linguagem compreensível pelo cliente.
  • Explicação detalhada sobre as características do sistema.
  • Descreve a funcionalidade do sistema.
  • Independentemente da implementação.
  • Ligado com documento de requisitos.

Desenho técnico do sistema:

  • Componente de hardware e desenho.
  • Funcionalidade e hierarquia do componente de software.
  • >

  • Arquitectura de software
  • Arquitectura de rede
  • >

  • Estrutura de dados e fluxo de dados.
  • >

  • Componente I/O do sistema.
  • >

  • Mostra interface.
  • >

>

Modularização: Modularização é o processo de dividir um sistema de software em vários módulos independentes onde cada módulo funciona independentemente. Há muitas vantagens da Modularização na engenharia de software. Algumas delas são dadas abaixo:

  • Fácil de entender o sistema.
  • Manutenção do sistema é fácil.
  • Um módulo pode ser usado muitas vezes como suas necessidades. Não é necessário escrevê-lo repetidamente.

Acoplamento: Acoplamento é a medida do grau de interdependência entre os módulos. Um bom software terá baixo acoplamento.

Tipos de Acoplamento:

  • Acoplamento de Dados: Se a dependência entre os módulos é baseada no fato de que eles se comunicam apenas passando dados, então os módulos são ditos como dados acoplados. No acoplamento de dados, os componentes são independentes entre si e se comunicam através dos dados. As comunicações entre os módulos não contêm dados de tramp. Exemplo de sistema de faturamento do cliente.
  • Acoplamento de carimbo No acoplamento de carimbo, a estrutura de dados completa é passada de um módulo para outro módulo. Portanto, ela envolve dados de tramp. Pode ser necessário devido a fatores de eficiência – esta escolha foi feita pelo designer perspicaz e não por um programador preguiçoso.
  • Acoplamento de controle: Se os módulos comunicam passando informação de controlo, então diz-se que estão acoplados ao controlo. Pode ser mau se os parâmetros indicarem um comportamento completamente diferente e bom se os parâmetros permitirem o factoring e a reutilização da funcionalidade. Exemplo – função de ordenação que toma a função de comparação como argumento.
  • Acoplamento externo: No acoplamento externo, os módulos dependem de outros módulos, externos ao software que está sendo desenvolvido ou a um tipo particular de hardware. Ex- protocolo, arquivo externo, formato do dispositivo, etc.
  • Acoplamento comum: Os módulos têm dados compartilhados, tais como estruturas de dados globais. As mudanças nos dados globais significam rastreamento de volta a todos os módulos que acessam esses dados para avaliar o efeito da mudança. Portanto, tem desvantagens como dificuldade em reutilizar módulos, capacidade reduzida para controlar os acessos aos dados e capacidade reduzida de manutenção.
  • Acoplamento de conteúdo: Em um acoplamento de conteúdo, um módulo pode modificar os dados de outro módulo ou o fluxo de controle é passado de um módulo para o outro módulo. Esta é a pior forma de acoplamento e deve ser evitada.

Cohesion: A coesão é uma medida do grau em que os elementos do módulo estão funcionalmente relacionados. É o grau em que todos os elementos dirigidos para a realização de uma única tarefa estão contidos no componente. Basicamente, a coesão é a cola interna que mantém o módulo unido. Um bom desenho de software terá alta coesão.

Tipos de Coesão:

  • Coesão Funcional: Cada elemento essencial para um único cálculo está contido no componente. Uma coesão funcional executa a tarefa e as funções. É uma situação ideal.
  • Coesão Sequencial: Um elemento produz alguns dados que se tornam a entrada para outro elemento, ou seja, o fluxo de dados entre as partes. Ocorre naturalmente em linguagens de programação funcional.
  • Coesão Comunicacional: Dois elementos operam com os mesmos dados de entrada ou contribuem para os mesmos dados de saída. Exemplo – atualização de registro na base de dados e envio para a impressora.
  • Coesão de Procedimentos: Elementos de coesão procedimental asseguram a ordem de execução. As ações ainda estão fracamente conectadas e é pouco provável que sejam reutilizáveis. Ex- calcular a GPA do estudante, imprimir registro do estudante, calcular a GPA cumulativa, imprimir GPA cumulativa.
  • Coesão Temporal: Os elementos estão relacionados pelo seu tempo envolvido. Um módulo conectado com a coesão temporal todas as tarefas devem ser executadas no mesmo intervalo de tempo. Esta coesão contém o código para inicializar todas as partes do sistema. Muitas atividades diferentes ocorrem, todas no init time.
  • Coesão Lógica: Os elementos são relacionados logicamente e não funcionalmente. Ex- Um componente lê entradas a partir de fita, disco e rede. Todo o código para estas funções está no mesmo componente. As operações estão relacionadas, mas as funções são significativamente diferentes.
  • Coesão Coincidental: Os elementos não estão relacionados(não relacionados). Os elementos não têm outra relação conceitual além da localização no código fonte. É acidental e a pior forma de coesão. Ex- imprima a próxima linha e inverta os caracteres de uma string em um único componente.

Leitor de presença! Não pare de aprender agora. Obtenha todos os conceitos importantes da Teoria CS para entrevistas SDE com o Curso de Teoria CS a um preço amigável para os alunos e fique pronto para a indústria.

Etiquetas de artigos :

Deixe uma resposta

O seu endereço de email não será publicado.