Para matar a questão:
Acoplamento e coesão são conceitos fundamentais da Engenharia de Software. O livro do Pressman apresenta-os de forma clara e sucinta. Vamos revisá-los.
Coesão: é a medida da “força funcional” relativa de um módulo. Um módulo coeso realiza uma única tarefa dentro de um procedimento de software, requerendo pouca ou nenhuma interação com procedimentos sendo realizados em outras partes de um programa. O ideal é buscar uma alta coesão.Há vários tipos de coesão, alguns menos desejáveis do que outros.
Tipos indesejáveis de coesão:
Coesão coincidental: ocorre quando um módulo realiza um conjunto de tarefas frouxamente relacionadas.
Coesão lógica: ocorre quando um módulo realiza um conjunto de tarefas que estão relacionadas logicamente. (letra e)
Coesão temporal: ocorre quando um módulo realiza um conjunto de tarefas que devem ser executadas dentro do mesmo decurso de tempo. Tipos intermediários de coesão:
Coesão procedural: ocorre quando os elementos de processamento do módulo são relacionados e devem ocorrer em uma ordem específica.
Coesão de comunicação: ocorre quando todos os elementos de processamento do módulo se concentram em uma única área de uma estrutura de dados.
Coesão desejável
Coesão funcional: quando um módulo realiza uma única tarefa procedural distinta. (letra c)
Acoplamento: é a medida de interconexão entre módulos em uma estrutura de software. Depende da complexidade de interface entre eles, o ponto no qual a entrada ou referência é feita a um módulo e que dados passam pela interface. O ideal é buscar o mais baixo acoplamento.
Também, assim como Coesão, há vários tipos de Acomplamento, em diferentes níveis.
Tipos indesejáveis de Acoplamento:
Acoplamento comum: quando um conjunto de módulos acessa uma área global de dados
Acoplamento por conteúdo: ocorre quando um módulo faz uso de estruturas de dados ou de controle mantidas no escopo de outro módulo (letra d)
Tipo intermediário de Acoplamento:
Acoplamento por controle: quando módulo passa decisões de controle a outro módulo
Tipo desejável de acoplamento:
Acomplamento de dados: ocorre quando apenas uma lista de dados simples é passada como parâmetro de um módulo para o outro, com uma correspondência um-para-um de itens.