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.

A figura 21 ilustra um Acoplamento de Controle.Figura 12:Exemplo de Acoplamento de Dados 2) Acoplamento de Imagem Dois módulos apresentam Acoplamento por Imagem se eles fazem referência a uma mesma estrutura de dados. Este tipo de Acoplamento tende a fornecer mais dados 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. .

Figura 14: Exemplo de Acoplamento de Controle No primeiro exemplo. Working Storage Section da linguagem Cobol). o acoplamento não é tão crítico uma vez que o controle indica uma validação. A figura 22 apresenta um exemplo de Acoplamento Comum. 4) Acoplamento Comum Dois módulos possuem Acoplamento Comum quando fazem referência a uma área global de dados (ex. porém o segundo exemplo exige que o módulo que enviou o controle (validar pedido) conheça o outro módulo. .

Figura 15: Exemplo de Acoplamento Comum Este tipo de Acoplamento não é desejável. A figura 23 ilustra um exemplo de Acoplamento de Conteúdo. • Fica difícil descobrir que módulos devem ser alterados quando um dado é modificado. • Programas com muitos dados globais são de difícil entendimento. 5) Acoplamento de Conteúdo Dois módulos apresentam Acoplamento de Conteúdo (ou patológico) se um faz referência ou desvia a seqüência de instruções para o interior de um outro módulo (GOTO). . pois: • Um erro em uma área global pode se propagar por diversos módulos. Tal Acoplamento torna o conceito de caixas-pretas sem sentido.

Por outro lado. pois isto levaria a um forte acoplamento entre eles. Os tipos de Coesão são: • Funcional • Sequencial • Comunicacional . os elementos de um módulo não devem ser fortemente relacionados com os elementos de outros módulos. Deseja-se módulos altamente coesos. cujos elementos são relacionados um com os outros.5.2 Comparação dos Tipos de Acoplamento Os tipos de Acoplamento especificados abaixo são apresentados em ordem descrescente (do melhor para o pior tipo).3 Coesão Coesão mede a intensidade da associação funcional dos elementos de um módulo. Ter certeza de que todos os módulos têm boa coesão é a melhor forma de minimizar o acoplamento. • • • • • Dados Imagem Controle Comum Conteúdo 4.5.Figura 16: Exemplo de Acoplamento de Conteúdo 4.

Este fluxo estabelece uma seqüência de execução das funções. A Figura 25 ilustra um módulo com Coesão Seqüencial. não se pode caracterizar o conjunto delas como uma única tarefa. A figura 24 ilustra módulos com Coesão Funcional. verifica-se que exibir consulta executa duas atividades bem distintas e que poderiam ser representadas pelos módulos: • Obter registro • Exibir dados . que os dados de saída de uma atividade sirvam como dados de entrada para a próxima. 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ão envolvidas em atividades de tal forma. no entanto.• • • • Procedural Temporal Lógica Coincidental 1) Coesão Funcional Um módulo apresenta Coesão Funcional quando suas funções internas contribuem para a execução de uma e apenas uma tarefa relacionada ao problema. No exemplo.

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ão relacionadas por utilizarem as mesmas informações. No exemplo Obter Detalhes Cliente recebe um mesmo parâmetro de entrada Num-Conta e executa duas atividades distintas que poderiam ser representadas pelos módulos: • Obter nome cliente • Obter resultado empréstimo . utilizam a mesma entrada ou mesma saída. ou seja. porém de baixa reutilização. A figura 26 ilustra um módulo com Coesão Comunicacional. Nesta situação o módulo fornece mais informações que o necessário.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.

. exceto por serem executadas em uma mesma ordem. É comum em um módulo com Coesão Procedural que os dados de entrada e saída tenham pouca relação. chaves. e sua fatoração para módulos funcionalmente coesos na parte mais a direita da figura. nas quais o controle flui (e não os dados) de uma atividade para outra. 4) Coesão Procedural Um módulo possui Coesão Procedural quando suas funções internas executam atividades diferentes e não correlacionadas. A figura 27 ilustra o módulo Tratar Saque isolado (parte esquerda da figura) com Coesão Procedural. A principal diferença entre eles é que um módulo sequencialmente coeso opera como uma linha de montagem onde suas atividades são executadas em uma ordem específica. tais como: flags. etc.Figura 19: Exemplo de Coesão Comunicacional Módulos com Coesão Comunicacional e Sequencial são semelhantes. pois ambos contém atividades organizadas em torno dos dados do problema original. Já em um módulo com coesão comunicacional a ordem de execução não é importante. É típico também que tais módulos devolvam resultados parciais.

A Figura 28 ilustra um módulo com Coesão Temporal.Figura 20: Exemplo de Coesão Procedural 5) Coesão Temporal Um módulo possui Coesão Temporal quando suas funções internas executam atividades que estão relacionadas apenas com o tempo (as atividades não estão relacionadas entre si). onde a atividade é selecionada fora do . A ordem de execução de atividades é mais importante em módulos procedurais do que em módulos temporais. 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 para atividades da mesma categoria geral.

. A figura 29 ilustra um módulo com Coesão Lógica. módulos logicamente coesos apresentam uma interface descaracterizada.módulo. não há uma ordem específica de execução. 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 possuem nenhuma correlação entre si. Desta forma. A figura 30 ilustra uma Coesão Coincidental. nem sempre todas as funções são ativadas e a ativação das funções é decidida fora do módulo.

5.Figura 23: Exemplo de Coesão Coincidental 4. Figura 24: Estratégia para identificação dos tipos de Coesão .4 Determinação do Tipo de Coesão A figura 31 mostra uma estratégia para identificar o tipo de Coesão de um determinado módulo.

como descrito abaixo (do melhor para o pior tipo): • • • • • • • Funcional Sequencial Comunicacional Procedural Temporal Lógica Coincidental . podemos classificá-los em ordem.Comparando os tipos de Coesão.

Sign up to vote on this title
UsefulNot useful