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
-
Arquivos
- janeiro 2012 (1)
- novembro 2011 (2)
- maio 2011 (1)
- janeiro 2008 (1)
- outubro 2007 (3)
- junho 2007 (2)
- maio 2007 (3)
-
Categorias
-
RSS
RSS Entradas
RSS Comentários