Marcio Alexandre's Blog !

Algo sobre tecnologia… =)

Métricas – Complexidade Ciclomática (Java Cyclomatic Complexity)

E aí pessoal…tudo certo?

Hoje me deparei com uma métrica bastante utilizada na Engenharia de Software. Realmente achei bastante útil, e olhando para trás, vejo que muitas empresas, em que trabalhei, seriam bastante beneficiadas pelo conceito desta métrica.

Trata-se da Complexidade Ciclomática (CC). Uma métrica que calcula, basicamente, a complexidade de seu algoritmo, estabelecendo “pontos” para cada item “complexo” utilizado.

A CC tem níveis de “riscos”, onde podemos estabelecer que entre 1-10 um possível efeito colateral é baixo (5%), entre 11 e 20 baixo-moderado (10%), entre  21 e 30 é moderado (20%), entre 31 e 40 é moderado-alto (30%), entre 41 e 80 é alto (40%) e acima de 80 considerado muitíssimo alto (60%) e de certa forma não viável (Altamente complexo e não testável).

Tecnicamente falando:
Método da classe = 1pt (cada); if = 1 pt (para cada condição); for = 1 pt; while = 1pt; switch = 1pt (para cada case, lembrando que o default é zero), catch = 1 pt…enfim, não lembro todos .

Exemplificando no código (Java, mas poderia ser qualquer outra):
public boolean primo(int x){ // +1
if (x ==1 || x == 2) { // +2
return true;
}
int raiz = (int) Math.sqrt((double) x);
for (int i = 2; i <= raiz; i++){ // +1
if (x%i ==0){ // +1
return false;
}
}
return true;
}
}
Resultado: Complexidade ciclomática 5.

Para comunidade Java – Caso vocês estejam se perguntando como calcular a CC em sistemas grandes, então aqui vai uma dica, um plugin para o Eclipse, que mensura a complexidade de seu algoritmo: http://metrics2.sourceforge.net.

Dada a idéia, boas métricas para todos!!! =D

17/11/2011 Publicado por | Engenharia de Software, Java, Java Avançado, PHP, Software Livre, Tecnologia | , , , | Deixe um comentário

   

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.