Coesao e Acoplamento

12
4.5.1 Acoplamento O Acoplamento mede o grau de interdependência entre os módulos do diagrama. O que se deseja são módulos de baixo acoplamento para diminuir o máximo possível o efeito em cadeia quando um módulo for alterado. Os tipos de Acoplamento são: Dados Imagem Controle Comum Conteúdo 1) Acoplamento de Dados Corresponde a comunicação de dados necessária entre módulos. Uma vez que os módulos têm que se comunicar, a ligação de dados é inevitável, e não é crítica desde que mantidas as taxas mínimas. Deve-se tomar cuidado com o chamado dado migrante (um grupo de informações que vagueia pelo sistema), indesejável e sem sentido para a maioria dos módulos pelos quais passa. A figura 19 ilustra um Acoplamento de Dados.

Transcript of Coesao e Acoplamento

Page 1: Coesao e Acoplamento

4.5.1 Acoplamento

O Acoplamento mede o grau de interdependência entre os módulos do diagrama.O que se deseja são módulos de baixo acoplamento para diminuir o máximopossível o efeito em cadeia quando um módulo for alterado.

Os tipos de Acoplamento são:

• Dados• Imagem• Controle• Comum• Conteúdo

1) Acoplamento de Dados

Corresponde a comunicação de dados necessária entre módulos. Uma vez queos módulos têm que se comunicar, a ligação de dados é inevitável, e não é críticadesde que mantidas as taxas mínimas. Deve-se tomar cuidado com o chamadodado migrante (um grupo de informações que vagueia pelo sistema), indesejável esem sentido para a maioria dos módulos pelos quais passa.

A figura 19 ilustra um Acoplamento de Dados.

Page 2: Coesao e Acoplamento

Figura 12:Exemplo de Acoplamento de Dados

2) Acoplamento de Imagem

Dois módulos apresentam Acoplamento por Imagem se eles fazem referência auma mesma estrutura de dados. Este tipo de Acoplamento tende a fornecer maisdados do que o necessário a um módulo.

A figura 20 ilustra um exemplo de Acoplamento por Imagem.

Figura 13: Exemplo de Acoplamento de Imagem

3) Acoplamento de Controle

Dois módulos são acoplados por controle se um passa um grupo de dados(controle) para o outro para controlar sua lógica interna.

A figura 21 ilustra um Acoplamento de Controle.

Page 3: Coesao e Acoplamento

Figura 14: Exemplo de Acoplamento de Controle

No primeiro exemplo, o acoplamento não é tão crítico uma vez que o controleindica uma validação, porém o segundo exemplo exige que o módulo que enviouo controle (validar pedido) conheça o outro módulo.

4) Acoplamento Comum

Dois módulos possuem Acoplamento Comum quando fazem referência a umaárea global de dados (ex. Working Storage Section da linguagem Cobol).

A figura 22 apresenta um exemplo de Acoplamento Comum.

Page 4: Coesao e Acoplamento

Figura 15: Exemplo de Acoplamento Comum

Este tipo de Acoplamento não é desejável, pois:

• Um erro em uma área global pode se propagar por diversos módulos;• Programas com muitos dados globais são de difícil entendimento;• Fica difícil descobrir que módulos devem ser alterados quando um dado é

modificado.

5) Acoplamento de Conteúdo

Dois módulos apresentam Acoplamento de Conteúdo (ou patológico) se um fazreferência ou desvia a seqüência de instruções para o interior de um outro módulo(GOTO). Tal Acoplamento torna o conceito de caixas-pretas sem sentido.

A figura 23 ilustra um exemplo de Acoplamento de Conteúdo.

Page 5: Coesao e Acoplamento

Figura 16: Exemplo de Acoplamento de Conteúdo

4.5.2 Comparação dos Tipos de Acoplamento

Os tipos de Acoplamento especificados abaixo são apresentados em ordemdescrescente (do melhor para o pior tipo).

• Dados• Imagem• Controle• Comum• Conteúdo

4.5.3 Coesão

Coesão mede a intensidade da associação funcional dos elementos de ummódulo. Deseja-se módulos altamente coesos, cujos elementos são relacionadosum com os outros. Por outro lado, os elementos de um módulo não devem serfortemente relacionados com os elementos de outros módulos, pois isto levaria aum forte acoplamento entre eles. Ter certeza de que todos os módulos têm boacoesão é a melhor forma de minimizar o acoplamento.

Os tipos de Coesão são:

• Funcional• Sequencial• Comunicacional

Page 6: Coesao e Acoplamento

• Procedural• Temporal• Lógica• Coincidental

1) Coesão Funcional

Um módulo apresenta Coesão Funcional quando suas funções internascontribuem para a execução de uma e apenas uma tarefa relacionada aoproblema.

A figura 24 ilustra módulos com Coesão Funcional.

Figura 17: Exemplo de Coesão Funcional

2) Coesão Seqüencial

Um módulo apresenta Coesão Seqüencial quando suas funções internas estãoenvolvidas em atividades de tal forma, que os dados de saída de uma atividadesirvam como dados de entrada para a próxima. Este fluxo estabelece umaseqüência de execução das funções, no entanto, não se pode caracterizar oconjunto delas como uma única tarefa.

A Figura 25 ilustra um módulo com Coesão Seqüencial. No exemplo, verifica-seque exibir consulta executa duas atividades bem distintas e que poderiam serrepresentadas pelos módulos:

• Obter registro• Exibir dados

Page 7: Coesao e Acoplamento

Figura 18: Exemplo de Coesão Seqüencial

Um módulo com Coesão Seqüencial caracteriza-se por ser de fácil manutenção,porém de baixa reutilização, pois contém atividades que são utilizadas juntas.

3) Coesão Comunicacional

Um módulo possui Coesão Comunicacional quando suas funções internas estãorelacionadas por utilizarem as mesmas informações, ou seja, utilizam a mesmaentrada ou mesma saída. Nesta situação o módulo fornece mais informações queo necessário.

A figura 26 ilustra um módulo com Coesão Comunicacional. No exemplo ObterDetalhes Cliente recebe um mesmo parâmetro de entrada Num-Conta e executaduas atividades distintas que poderiam ser representadas pelos módulos:

• Obter nome cliente• Obter resultado empréstimo

Page 8: Coesao e Acoplamento

Figura 19: Exemplo de Coesão Comunicacional

Módulos com Coesão Comunicacional e Sequencial são semelhantes, pois amboscontém atividades organizadas em torno dos dados do problema original. Aprincipal diferença entre eles é que um módulo sequencialmente coeso operacomo uma linha de montagem onde suas atividades são executadas em umaordem específica. Já em um módulo com coesão comunicacional a ordem deexecução não é importante.

4) Coesão Procedural

Um módulo possui Coesão Procedural quando suas funções internas executamatividades diferentes e não correlacionadas, exceto por serem executadas emuma mesma ordem, nas quais o controle flui (e não os dados) de uma atividadepara outra. É comum em um módulo com Coesão Procedural que os dados deentrada e saída tenham pouca relação. É típico também que tais módulosdevolvam resultados parciais, tais como: flags, chaves, etc.

A figura 27 ilustra o módulo Tratar Saque isolado (parte esquerda da figura) comCoesão Procedural, e sua fatoração para módulos funcionalmente coesos naparte mais a direita da figura.

Page 9: Coesao e Acoplamento

Figura 20: Exemplo de Coesão Procedural

5) Coesão Temporal

Um módulo possui Coesão Temporal quando suas funções internas executamatividades que estão relacionadas apenas com o tempo (as atividades não estãorelacionadas entre si). A ordem de execução de atividades é mais importante emmódulos procedurais do que em módulos temporais.

A Figura 28 ilustra um módulo com Coesão Temporal.

Figura 21: Exemplo de Coesão Temporal

6) Coesão Lógica

Um módulo possui Coesão Lógica quando suas funções internas contribuem paraatividades da mesma categoria geral, onde a atividade é selecionada fora do

Page 10: Coesao e Acoplamento

módulo. Desta forma, módulos logicamente coesos apresentam uma interfacedescaracterizada.

A figura 29 ilustra um módulo com Coesão Lógica.

Figura 22: Exemplo de Coesão Lógica

7) Coesão Coincidental

Um módulo possui Coesão Coincidental quando suas funções não possuemnenhuma correlação entre si, não há uma ordem específica de execução, nemsempre todas as funções são ativadas e a ativação das funções é decidida forado módulo. A figura 30 ilustra uma Coesão Coincidental.

Page 11: Coesao e Acoplamento

Figura 23: Exemplo de Coesão Coincidental

4.5.4 Determinação do Tipo de Coesão

A figura 31 mostra uma estratégia para identificar o tipo de Coesão de umdeterminado módulo.

Figura 24: Estratégia para identificação dos tipos de Coesão

Page 12: Coesao e Acoplamento

Comparando os tipos de Coesão, podemos classificá-los em ordem, comodescrito abaixo (do melhor para o pior tipo):

• Funcional• Sequencial• Comunicacional• Procedural• Temporal• Lógica• Coincidental