La complejidad ciclomática se basa en el recuento del número de caminos lógicos individuales contenidos en un programa. Para calcular la complejidad del software, Thomas McCabe utilizó la teoría y flujo de grafos. Para hallar la complejidad ciclomática, el programa se representa como un grafo, y cada instrucción que contiene, un nodo del grafo. Las posibles vías de ejecución a partir de una instrucción (nodo) se repesentan en el grafo como aristas. Por ejemplo, el código que se muestra a continuación con 2 sentencias selectivas anidadas genera el siguiente grafo:
![]() |
A partir de este grafo se encuentran 3 caminos posibles para llegar de la sentencia 1 a la sentencia 8:
Camino 1 (si ambos IF’s son verdad): Sentencias 1, 2, 3, 4, 6, 7, 8
Camino 2 (si el primer IF es verdad y el segundo es falso): Sentencias 1, 2, 3, 5, 6, 7, 8
Camino 3 (si el primer IF es falso): Sentencias 1, 2, 7, 8
Este programa tiene una complejidad ciclomática de 3.
La complejidad ciclomática se puede calcular de otras maneras. Se puede utilizar la fórmula:
v(G) = e - n + 2
donde e representa el número de aristas y n el número de nodos.
Otra forma de calcular la complejidad ciclomática consiste en aplicar la siguiente fórmula:
v(G) = número de regiones cerradas en el grafo + 1





