Complejidad ciclomática

 ¿Qué es la complejidad ciclomática?

La complejidad ciclomática es una métrica para software,para observar lo complicado de un código y por ende su mantenimiento. Entre mas complejo, menos mantenible es.

 

Ahora, veremos como aplicarlo a un código (python) de ejemplo:

 
horas = int(input("Número de horas: "))
y = 1
res = 12000

if(horas > 40):
  while(y < horas):
    if(y <= 39):
      res += 5000
    elif(y > 39):
      res += 6250
    y += 1
else:
  while(y < horas):
    res += 5000
    y += 1

print("Pago total: ")
print(res
 

Al tener nuestro código, ahora haremos un grafo sobre el mismo (los grafos son una representación gráfica, por ejemplo, redes neuronales):


 Para obtener la complejidad tenemos 3 formas diferentes de hacerlo:

Aristas y nodos:

Contamos la cantidad de aristas (son las lineas que van de los círculos a otros) y los nodos ( son los círculos) y luego sumamos 2; la formula:

        V(G) = (aristas - nodos) + 2 

Con el ejemplo:

V(G) = (13 - 10) +2

= 5

Nodos predicado:

Contamos los nodos que tienen 2 o mas líneas salientes del mismo, como el nodo de inicio y 3; y sumamos 1; la formula:

        V(G) = nodos predicado + 1

Con el ejemplo:

        V(G) = 4 + 1

        V(G) = 5

 

Regiones:

Son las áreas que se generan entre nodos y aristas, en nuestro grafo tenemos como ejemplo el area que esta entre los nodos 2,3,4,5; y luego sumamos uno. La formula:

        V(G) = áreas + 1

Con el ejemplo:

        V(G) = 4 + 1

        V(G) =5


 

Resultados

Pero... ¿Qué significan esos números? Seguiremos una tabla para conocer la complejidad de nuestro código.

    Resultado    Observación

    1 - 10            Riesgo bajo, código sencillo.

    11 - 20          Riesgo moderado, código regular.

    21 - 50          Riesgo alto, código malo.

    mas de 50    Riesgo muy alto, código muy malo no estable.

Con nuestro ejemplo, vemos que obtuvimos 5 en todas las pruebas, recomiendo hacer usar al menos 2 formulas para verificar el resultado, eso significa que el código es de bajo riesgo. Entonces es un código de fácil mantenimiento.

Ahora, que sabemos la complejidad de nuestro código, se recomienda que nuestro código este entre un riesgo medio y bajo, para cumplir buenos estándares en la programación, sí no cumple, se tendrá que mejorar.



Bibliografía

Complejidad ciclomatica

Como elaborar un grafo de código