Complejidad ciclomática para niños
La Complejidad Ciclomática es una forma de medir qué tan complicado es el diseño lógico de un programa de computadora. Es una de las herramientas más aceptadas en la ingeniería de software, porque funciona bien sin importar el lenguaje de programación que se use.
Contenido
¿Quién la creó y por qué?
Esta forma de medir la complejidad fue propuesta por Thomas McCabe en 1976. Se basa en cómo se organiza el código de un programa, como si fuera un mapa de caminos que el programa puede seguir.
Al analizar este "mapa", se puede saber qué tan difícil será crear pruebas automáticas para el código. También ayuda a tener una idea de qué tan confiable es el programa.
El nombre "Complejidad Ciclomática" puede sonar un poco confuso. No se trata de contar cuántas veces un programa repite una acción (como los "bucles" o "loops"). En realidad, mide cuántos caminos diferentes puede tomar el programa debido a las decisiones o condiciones que tiene. Por eso, un nombre más claro podría ser "Complejidad de Condiciones", ya que se enfoca en las decisiones que el programa debe tomar.
¿Qué significa este número?
El número que se obtiene al calcular la complejidad ciclomática nos dice cuántos caminos únicos e independientes hay dentro de una parte del código. También nos indica cuántas pruebas diferentes se deberían hacer para asegurarse de que cada parte del programa funcione al menos una vez.
Este número se puede usar en diferentes etapas de la creación de un programa:
- Cuando se está desarrollando.
- Cuando se le da mantenimiento (se arregla o mejora).
- Cuando se rediseña.
Ayuda a estimar el riesgo de que algo salga mal, cuánto costará y qué tan estable será el programa. Algunos estudios han mostrado que hay una relación entre este número y la cantidad de errores que puede tener un código, así como el tiempo que se necesita para encontrar y corregir esos errores.
¿Qué tan riesgoso es un programa?
Una vez que se calcula la complejidad ciclomática de una parte del código, se puede saber qué tan riesgoso es usando la siguiente tabla:
Complejidad Ciclomática | Evaluación del Riesgo |
---|---|
1-10 | Programa Sencillo, poco riesgo |
11-20 | Más complejo, riesgo moderado |
21-50 | Complejo, Programa de alto riesgo |
50 | Programa muy difícil de probar, Muy alto riesgo |
Después de analizar muchos proyectos, McCabe descubrió que un valor de 10 es un buen límite para la complejidad de una parte de un programa. Cuando la complejidad es mayor que 10, se vuelve muy difícil de probar, entender y cambiar. Mantener la complejidad baja desde el principio ayuda a evitar problemas en proyectos grandes. Aunque McCabe sugirió 10, algunas empresas han usado 15 con buenos resultados.
¿Cómo se calcula la Complejidad Ciclomática?
Para calcularla, primero se usa una forma sencilla de representar cómo fluye el programa, llamada Grafo de control de flujo. Imagina que es un mapa donde los puntos son las acciones del programa y las líneas son los caminos que puede seguir.
Las letras que se usan para el cálculo son:
- M = Complejidad ciclomática (el número que queremos encontrar).
- E = Número de líneas (aristas) en el mapa. Una línea conecta dos acciones si una puede ir justo después de la otra.
- N = Número de puntos (nodos) en el mapa, que representan las acciones del programa.
- P = Número de partes conectadas en el mapa, o puntos de salida del programa.
Con estos conceptos, la Complejidad Ciclomática se puede calcular así: M = E − N + 2P
También hay una forma más sencilla de calcularla: M = Número de condiciones + 1
Si el código tiene varios puntos donde puede terminar o "salir" (como con la instrucción "return"), la fórmula se ajusta un poco:
M = Número de condiciones + Número de salidas
Donde el número de salidas siempre será al menos 1.
¿Para qué se usa la Complejidad Ciclomática?
Esta medida se puede usar en varias áreas:
- Análisis de riesgo al desarrollar código: Mientras se crea el código, se puede medir su complejidad para saber qué tan riesgoso es.
- Análisis de riesgo de cambios durante el mantenimiento: La complejidad del código puede aumentar con el tiempo a medida que se le hacen cambios. Medir la complejidad antes y después de un cambio ayuda a reducir los riesgos.
- Planificación de pruebas: Se ha demostrado que la complejidad ciclomática indica el número máximo de pruebas que se necesitan para revisar cada decisión en un programa.
- Rediseño de programas: Ayuda a entender cómo está hecho un programa que ya funciona. El riesgo de rediseñar una parte del código está relacionado con su complejidad.
Ver también
- Sistema de control de calidad de software
Véase también
En inglés: Cyclomatic complexity Facts for Kids