Ranking de Coesão

O ranking de coesão é um sistema de classificação usado para avaliar o grau de coesão em módulos ou classes dentro de um software.

Coesão refere-se à medida em que os elementos de um módulo (como métodos e variáveis) estão relacionados entre si. Um alto nível de coesão é geralmente desejável, pois indica que um módulo é focado e bem definido em termos de funcionalidade. Existem várias categorias de coesão, listadas do melhor ao pior:

  1. Coesão Funcional:

    • Todos os elementos do módulo contribuem para uma única e bem definida tarefa ou função.
    • Exemplo: Uma classe Calculadora que possui métodos exclusivamente para operações matemáticas.
  2. Coesão Sequencial:

    • Os elementos do módulo estão relacionados e precisam ser executados em uma sequência específica.
    • Exemplo: Uma classe ProcessamentoDeDados onde um método prepara dados, outro processa os dados e um terceiro grava os resultados.
  3. Coesão de Comunicação:

    • Os elementos do módulo trabalham juntos e operam no mesmo conjunto de dados.
    • Exemplo: Uma classe GerenciamentoDeArquivos com métodos para abrir, ler, escrever e fechar um arquivo.
  4. Coesão Procedural:

    • Os elementos do módulo estão relacionados apenas porque fazem parte de um procedimento, mesmo que não compartilhem os mesmos dados.
    • Exemplo: Uma classe OperacoesDeInicializacao com métodos para inicializar diferentes subsistemas.
  5. Coesão Temporal:

    • Os elementos do módulo estão relacionados pelo fato de serem executados no mesmo período de tempo, como durante a inicialização ou finalização.
    • Exemplo: Uma classe TarefasDeStartup que executa verificações de integridade e configurações iniciais.
  6. Coesão Lógica:

    • Os elementos do módulo estão logicamente categorizados juntos, mas são funcionalmente independentes.
    • Exemplo: Uma classe Utilitarios com métodos para uma variedade de pequenas tarefas não relacionadas.
  7. Coesão Acidental ou Coincidental:

    • Não existe uma relação clara entre os elementos do módulo, estando juntos por acaso ou conveniência.
    • Exemplo: Uma classe Miscelanea com uma coleção aleatória de métodos e dados.

Cada tipo de coesão tem suas implicações para a manutenção, compreensibilidade e extensibilidade do software. Idealmente, os módulos devem ser altamente coesos, preferencialmente com coesão funcional, sequencial ou de comunicação, para garantir clareza e foco em suas responsabilidades.