Acoplamento de módulo
Em engenharia de software, o acoplamento é o grau de interdependência entre os módulos de software. Dois módulos que estão firmemente acoplados são fortemente dependentes um do outro. No entanto, dois módulos que são acoplados frouxamente não são dependentes um do outro. Os módulos desacoplados não têm nenhuma interdependência dentro deles.
Os vários tipos de técnicas de acoplamento são mostrados na fig:
Um bom design é aquele que tem baixo acoplamento. Acoplamento é medido pelo número de relações entre os módulos. Ou seja, o acoplamento aumenta conforme o número de chamadas entre os módulos aumenta ou a quantidade de dados compartilhados é grande. Assim, pode-se dizer que um projeto com alto acoplamento terá mais erros.
Tipos de Acoplamento de Módulo
1. Sem Acoplamento Direto: Não há acoplamento directo entre M1 e M2.
Neste caso, os módulos são subordinados a diferentes módulos. Portanto, não há acoplamento direto.
2. Acoplamento de dados: Quando os dados de um módulo são passados para outro módulo, isto é chamado de acoplamento de dados.
3. Acoplamento de carimbo: Dois módulos são acoplados por carimbo se comunicarem usando itens de dados compostos, tais como estrutura, objetos, etc. Quando o módulo passa uma estrutura de dados não global ou toda a estrutura para outro módulo, eles são chamados de acoplamento de carimbo. Por exemplo, passando variável de estrutura em C ou objeto em linguagem C++ para um módulo.
4. Acoplamento de controle: Acoplamento de controle existe entre dois módulos se os dados de um módulo forem usados para direcionar a estrutura de execução de instrução em outro.
5. Acoplamento Externo: O Acoplamento Externo surge quando dois módulos compartilham um formato de dados imposto externamente, protocolos de comunicação ou interface de dispositivos. Isto está relacionado com a comunicação com ferramentas e dispositivos externos.
6. Acoplamento Comum: Dois módulos são acoplados comumente se eles compartilham informações através de alguns itens de dados globais.
7. Acoplamento de Conteúdo: Acoplamento de conteúdo existe entre dois módulos se eles compartilham código, por exemplo, um ramo de um módulo para outro módulo.
Coesão de módulo
Na programação de computador, a coesão define até o grau em que os elementos de um módulo pertencem juntos. Assim, a coesão mede a força das relações entre os elementos de funcionalidade dentro de um determinado módulo. Por exemplo, em sistemas altamente coesivos, a funcionalidade está fortemente relacionada.
Cohesion é um tipo de medida ordinal e é geralmente descrita como “alta coesão” ou “baixa coesão”.
Tipos de Coesão de Módulos
- Coesão Funcional: A Coesão Funcional é dita existir se os diferentes elementos de um módulo, cooperam para alcançar uma única função.
- Coesão Sequencial: Diz-se que um módulo possui coesão sequencial se o elemento de um módulo formar os componentes da seqüência, onde a saída de um componente da seqüência é entrada para o próximo.
- Coesão Comunicacional: Diz-se que um módulo possui coesão comunicacional, se todas as tarefas do módulo se referirem ou actualizarem a mesma estrutura de dados, por exemplo, o conjunto de funções definidas num array ou numa pilha.
- Procedural Cohesion: Um módulo é dito como coesão de procedimentos se o conjunto de funções do módulo são todas partes de um procedimento no qual uma seqüência particular de passos tem que ser executada para atingir um objetivo, por exemplo, o algoritmo para decodificar uma mensagem.
- Coesão Temporal: Quando um módulo inclui funções que estão associadas pelo fato de que todos os métodos devem ser executados ao mesmo tempo, diz-se que o módulo exibe coesão temporal.
- Coesão Lógica: Diz-se que um módulo é logicamente coeso se todos os elementos do módulo realizarem uma operação similar. Por exemplo, manipulação de erros, entrada e saída de dados, etc.
- Coesão Coincidental: Diz-se que um módulo tem coesão coincidente se executa um conjunto de tarefas que estão associadas umas às outras de forma muito solta, se é que tem alguma.
Diferenciar entre Acoplamento e Coesão
Acoplamento | Cohesion |
---|---|
Acoplamento também é chamado Intra-Módulo de Ligação. | Cohesion também é chamado Intra-Módulo de Ligação. |
Acoplamento mostra as relações entre os módulos. | Cohesion mostra a relação dentro do módulo. |
Acoplamento mostra a independência relativa entre os módulos. | Cohesion mostra a força funcional relativa do módulo. |
Acoplamento deve apontar para baixo acoplamento, ou seja dependência entre os módulos deve ser menor. | A criação deve visar uma alta coesão, ou seja, um componente/módulo coeso foca uma única função (ou seja, uma única mente) com pouca interacção com outros módulos do sistema. |
No acoplamento, os módulos estão ligados aos outros módulos. | >Na coesão, o módulo foca uma única coisa. |