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:
-
Coesão Funcional:
- Todos os elementos do módulo contribuem para uma única e bem definida tarefa ou função.
- Exemplo: Uma classe
Calculadoraque possui métodos exclusivamente para operações matemáticas.
-
Coesão Sequencial:
- Os elementos do módulo estão relacionados e precisam ser executados em uma sequência específica.
- Exemplo: Uma classe
ProcessamentoDeDadosonde um método prepara dados, outro processa os dados e um terceiro grava os resultados.
-
Coesão de Comunicação:
- Os elementos do módulo trabalham juntos e operam no mesmo conjunto de dados.
- Exemplo: Uma classe
GerenciamentoDeArquivoscom métodos para abrir, ler, escrever e fechar um arquivo.
-
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
OperacoesDeInicializacaocom métodos para inicializar diferentes subsistemas.
-
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
TarefasDeStartupque executa verificações de integridade e configurações iniciais.
-
Coesão Lógica:
- Os elementos do módulo estão logicamente categorizados juntos, mas são funcionalmente independentes.
- Exemplo: Uma classe
Utilitarioscom métodos para uma variedade de pequenas tarefas não relacionadas.
-
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
Miscelaneacom 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.