Medindo a complexidade ciclomática em aplicativos Java

Filed Under (Qualidade de software, Teste de software) by Antonio Passos on 28-01-2009

Tagged Under : , , ,

"Qualquer tolo consegue escrever código que um computador entenda. Bons programadores escrevem código que humanos possam entender", afirma Martin Fowler no clássico Refatoração: aperfeiçoando o projeto de código existente. Como o entendimento do código depende de quão complexo ele seja, fica a pergunta: como medir a complexidade de um código?

O recorte abaixo é do artigo original de Thomas J. McCabe, A Complexity Measure, em que ele apresenta sua teoria da complexidade ciclomática.

A complexidade ciclomática é uma métrica importante que estima a complexidade lógica de um trecho do programa, como um método de uma classe Java.

Dado o grafo de fluxo de controle de um método, o número ou valor da complexidade lógica desse método, também chamado de métrica de McCabe, é obtido pela fórmula:

 v(G) = e – n + p

onde…

  • e representa o número de arestas ou arcos do gráfico,
  • n o número de nodos ou nós do gráfico e
  • p o número de componentes ligados

Embora tenha nome pomposo, o número da complexidade ciclomática (CCN) mede algo simples: a quantidade de caminhos lógicos de um código. Por isso, ele é influenciado pela presença de comandos que provocam desvios, como, por exemplo, if, while, case etc, no caso de aplicativos Java.

Podemos inferir do CCN a dificuldade para entender um código e seu grau de manutenibilidade e testabilidade, ou ainda…

Read the rest of this entry »