Explicando la complejidad ciclomática mediante gráficos

Como una imagen vale más que mil palabras, esta es la mejor forma que he encontrado de  explicar a mis compañeros que es al complejidad ciclomática de forma rápida,concisa y sobre todo impactante.

En primer lugar, una pequeña introducción

La Complejidad Ciclomática (en inglés, Cyclomatic Complexity) es una métrica del software que proporciona una medición cuantitativa de la complejidad lógica de un programa.

El resultado obtenido en el cálculo de la complejidad ciclomática define el número de caminos independientes dentro de un fragmento de código y determina la cota superior del número de pruebas que se deben realizar para asegurar que se ejecuta cada sentencia al menos una vez, (es decir, mira if, else, for, while, etc)

En segundo lugar donde la pueden visualizarla en el Sonar

En el Sonar esto se puede ver en el cuadrado denominado “Complexity“:


Donde podemos observar que tenemos 2.6 de media por método y 9.9 de media por clase (cifras ambas muy engañosas). Ya que si pulsamos sobre métodos (por ejemplo) podemos ver que hay métodos que suben hasta un valor de 61 en la complejidad ciclomática.

Explico un poco lo que significan esas cifras

Si tenemos en cuenta el siguiente ranking:

  • 1-10       Programa Simple, sin mucho riesgo.
  • 11-20     Más complejo, riesgo moderado.
  • 21-50     Complejo, Programa de alto riesgo.
  • 50           Programa no testeable, Muy alto riesgo.

Pues podemos ver que hay métodos que superan el “peor escenario imaginable”. Supongo que los números os indican poco, pero si miráis este gráfico en el que se pinta el flujo de un método con una complejidad ciclomática de 48, pues acojona un poco (ojo, insisto que es flujo de un solo método):

Y en último lugar una imagen (el incentivo definitivo) que muestra gráficamente que puede significar ese número

 

 

NOTA:

La imagen ha sido creada a partir del programa Understand una aplicación de SciTools que nos permite realizar un análisis estático del código. No es gratuita, es de pago, pero tiene una versión de pruebas de 15 días. ¿conocéis de alguna otra herramienta que permita realizar este tipo de gráficos?.

Un saludo.

Anuncios
Explicando la complejidad ciclomática mediante gráficos

Un comentario en “Explicando la complejidad ciclomática mediante gráficos

  1. Antonio Calero dijo:

    Otra manera muy visual de ver la complejidad ciclomática a nivel de proyecto es a través de nuestro plugin de City Model en Sonar.

    Representa tu código fuente como una ciudad en 3D, y puedes configurarlo para que el color sea la complejidad ciclomática, de está manera muy rápidamente puedes saber cuales son las clases más complejas.

    Puedes ver algunos ejemplos en la página.

    El plugin es comercial pero tiene también una versión de evaluación de 15 días 🙂

    Hay que hacer todo lo posible para que la calidad de software la pueda entender todo el mundo 😉

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s