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.