Complexidade Ciclomática
Esta é provavelmente a métrica complexa mais usada em engenharia de software e continua a ser um tema recorrente de discussão. Ainda assim continua a ser um assunto obscuro para muitos programadores, coordenadores e gestores. A complexidade ciclomática foi definida por Thomas McCabe (em finais de 1976) e, de uma forma resumida, mede a complexidade estrutural de um processo. Traduzindo para o mundo da arquitetura de software a CC mede a complexidade estrutural de um método, de uma classe ou de qualquer unidade lógica que possa ser encontrada num sistema de software.
Complexidade Ciclomática – CC
A CC define-se como o somatório de todas as decisões acrescido de 1. CC = Número de decisões + 1. Entenda-se por decisão todas as operações condicionais:
Operação
Efeito no CC if +1 else if
+1
else
0
select case
+1 para cada caso select default
0
for/foreach
+1
do while
+1
do
0
while
+1
catch
+1
Se analisarmos com atenção o seguinte exemplo de código destas estas regras:
public boolean metodo(int param1, int param2) { if (param1 > 0 && param2 > 0 && param1 < param2 ) { return true; } return false;
}
Verificamos que a complexidade das operações lógicas não é contabilizada, e, no entanto, é um fator fundamental na complexidade do método. Assim surge uma variação à CC denominada de Complexidade Ciclomática Extendida – CC2 ou ECC.
Complexidade Ciclomática Extendida – CC2
A CC2 não é mais que a extensão da CC por adição dos operadores booleanos.
CC2 = CC + Número de operadores booleanos
Existem mais variantes à CC mas a CC2 é a métrica mais usada e é sobre ela que a restante análise incide. A análise da CC2 é tão útil para o programador como para o coordenador ou gestor. É assumido que qualquer programador deve sempre procura melhorar: codificar melhor, de forma mais eficiente, de forma mais estruturada e procurando sempre produzir código de qualidade. O uso da CC2 é precisamente