UTFPR – Campus Curitiba - DAELN
Cursos de Eng. Eletrônica/Eng. da Computação
IF62C - Fundamentos de Programação
Semana 11 – Parte II: Coesão e Acoplamento
Prof.a Tânia Preto / Prof. Robinson Vida
Coesão e Acoplamento – Características (i/iii)
Aspectos relacionados com produtividade e qualidade do
processo de desenvolvimento de software;
 Métricas definidas para avaliar e auxiliar a subdivisão de
sistemas;
 Acoplamento:

◦ O quanto uma unidade funcional (método, função ou uma classe)
depende de outra para funcionar;
◦ Quanto maior a dependência entre as unidades funcionais, mais
fortemente acopladas elas estão;
◦ Uma das formas de se medir o acoplamento de um método, por
exemplo, é a quantidade de parâmetros de entrada e suas respectivas
complexidades. Quanto mais parâmetros e mais complexos eles forem,
maior o acoplamento do método;
Coesão e Acoplamento – Características (i/iii)

Acoplamento (continuação):
◦ Acoplamento fraco é o estado desejável de ter classes que sejam bem
encapsuladas, minimizar as referências a si e limitar a amplitude do uso
do sistema;
◦ Problemas decorrentes do forte acoplamento:
 Mudanças em uma classe relacionada força mudanças locais à classe;
 A classe é mais difícil de entender isoladamente;
 A classe é mais difícil de ser reutilizada, já que depende da
presença de outras classes.
Coesão e Acoplamento – Características (ii/iii)

Coesão:
◦ A coesão está ligada à responsabilidade única da unidade funcional;
◦ Demonstra coerência e unidade conceitual no relacionamento com os
outros componentes da unidade funcional;
◦ Um método coeso realiza uma única função conceitual, servindo a
apenas um propósito específico, sendo bem focalizadas e favorecendo a
reutilização;
◦ Uma forma simples de medir coesão é o número de linhas de um
método, sendo essa uma medida parcial que serve apenas como ponto
de partida;
◦ Classes com alta coesão são mais fáceis de manter (e menos
frequentemente alteradas) do que as classes com baixa coesão;
Coesão e Acoplamento – Características (ii/iii)

Coesão (continuação):
◦ Baixa coesão reflete por exemplo classes cujos membros suportam
múltiplas regras ou responsabilidades desfocadas.
◦ Problemas decorrentes da baixa coesão:
 Difícil de entender
 Difícil de reusar
 Difícil de manter;
 Fragilidade: facilmente afetada por outras mudanças;
Coesão e Acoplamento – Características (iii/iii)

Coesão X Acoplamento:
◦ É desejável ao se desenvolver um módulo, método ou função que o
mesmo seja altamente coeso e com o mais baixo acoplamento possível;
◦ Métodos com muitas linhas de códigos são possíveis candidatos a
serem melhorados/otimizados (refactoring), dada a possibilidade de baixa
coesão. O mesmo pode ser aplicado para métodos com muitos
parâmetros;
◦ Baixo acoplamento e alta coesão estão diretamente ligados. Se seu
método não for de baixo acoplamento, dificilmente terá alta coesão.
Download

IF62C - Fundamentos de Programação