Subordinado (Módulo B executa sua função e o controle retorna ao comando em A imediato ao da chamada de B)
A seguir é apresentado um exemplo de estrutura de programa utilizando a notação descrita acima. Módulos que contém duas linhas são módulos que estão sendo reusados.
III.3.2 QUALIDADE DE UM BOM PROJETO
A qualidade do projeto pode ser avaliada através dos seguintes critérios:
-
Coesão
-
Acoplamento
-
Fatoração
-
Divisão da decisão
-
Fan-out
-
Fan-in
a) Coesão
É a medida de quanto os elementos de um módulo estão relacionados.
A idéia é que os componentes de um sistema reunidos num módulo sejam muito relacionados entre si.
Tipos de coesão:
Os elementos não se relacionam, parecendo que foram organizados de forma arbitrária. O motivo pode ser, por exemplo, para se ter um tempo de resposta melhor.
Os elementos foram logicamente colocados juntos. Isto é eles executam uma classe de funções similares ou relacionadas,.
Ex: módulo de entrada de dados, de tratamento de erros, de validação
Conseqüência: Passagem de parâmetros de controle. Provoca acoplamento de controle.
Os elementos do módulo estão relacionados logicamente no tempo, ou seja, estão reunidos por serem realizados num mesmo momento. Esta coesão é melhor que a lógica porque neste caso todos os elementos são executados.
Os elementos do módulo realizam funções diferentes e estão unidos por afinidade de controle. Os elementos estão juntos para aproveitar por exemplo um loop. Os dados passados e os dados recebidos possuem pouca ou nenhuma relação entre si.
Os elementos do módulo operam o mesmo arquivo ou dados de entrada e saída.
Requer passagem de controle.
Ex: módulo que lê, inclui, exclui e modifica registro em um arquivo.
Atividades do módulo podem ser independentes e executadas em qualquer ordem.
Os elementos cumprem funções diferentes nas quais os dados de saída de um elemento são a entrada para o elemento seguinte.
Ex: ler dados, calcular salário e imprimir
Os elementos executam uma só função.
Ex: calcular fatorial
b) Acoplamento
É o grau de interdependência entre dois módulos.
O objetivo é minimizar o acoplamento, tornando os módulos tão independentes quanto possível. Um acoplamento baixo, entre módulos, indica um sistema bem particionado.
Pode ser obtido de 3 maneiras:
-
Eliminando relações desnecessárias
-
Reduzindo o número de relações necessárias
-
Enfraquecendo a dependência das relações necessárias
Para que se quer acoplamento fraco ?
-
Quanto menos conexões entre módulos, menor a chance do efeito em cadeia (um erro num módulo aparece como sintoma num outro).
-
Queremos ser capazes de trocar um módulo com um mínimo de risco de trocar outro módulo
Tipos de acoplamento:
Quando os módulos se comunicam por parâmetros, sendo cada parâmetro um dado único ou uma tabela homogênea (uma tabela na qual cada entrada contém o mesmo tipo de informação)
Dois módulos são ligados por imagem se eles se referem à mesma estrutura de dados (um grupo composto de dados, como um registro)
Problema: quando envio para um módulo um registro completo no qual só alguns itens de dados serão usados estou arriscando que os outros itens sofram alteração. O ideal é enviar somente o que é necessário a cada módulo.
Dois módulos são acoplados por controle se um passa para o outro um grupo de dados destinados a controlar a lógica interna do outro.
Quando dois módulos se referem a mesma área de dados. O fato de vários módulos poderem acessar a mesma área de dados dificulta a manutenção já que quando há um erro fica difícil saber quem foi o responsável. Dificulta também a reutilização porque o módulo usa um nome de variável fixo.
Se o tamanho de um dado global tem que ser mudado, como saber os módulos que serão afetados ?
Quando um módulo desvia a seqüência de instruções para dentro de outro ou quando um módulo altera um comando do outro.
c) Fatoração:
É a separação de uma função contida em um módulo em um novo módulo próprio.
Objetivos:
-
Evitar de se ter a mesma função em mais de um módulo
-
Tornar o sistema mais compreensível
-
Permitir modificações mais localizadas
d) Divisão da decisão
Uma decisão tem duas partes:
-
O reconhecimento de qual ação tomar
-
A execução da ação
Quando o reconhecimento e a ação não se encontram no mesmo módulo há uma divisão da decisão.
Recomendação: A execução deve ser mantida tão perto quanto possível do reconhecimento para que a informação reconhecida não tenha que percorrer um longo caminho (normalmente como um flag migrante) para ser processada.
e) Fan-out
Representa o número de subordinados de um módulo. Recomenda-se um número de 7 + 2 subordinados.
f) Fan-in
Representa o número de superiores imediatos que um módulo possui. Quanto maior o número de superiores melhor.
Dostları ilə paylaş: