Las medidas de complejidad de Halstead son métricas de software introducidas por Maurice Howard Halstead en 1977 [ 1 ] como parte de su tratado sobre el establecimiento de una ciencia empírica del desarrollo de software. Halstead observó que las métricas del software deberían reflejar la implementación o expresión de algoritmos en diferentes lenguajes, pero ser independientes de su ejecución en una plataforma específica. Por lo tanto, estas métricas se calculan estáticamente a partir del código.
El objetivo de Halstead era identificar propiedades medibles del software y las relaciones entre ellas. Esto es similar a la identificación de propiedades medibles de la materia (como el volumen, la masa y la presión de un gas) y las relaciones entre ellas (análogas a la ecuación de los gases ). Por lo tanto, sus métricas no son simplemente métricas de complejidad.
Cálculo
Para un problema dado, sea:
- = el número de operadores distintos
- = el número de operandos distintos
- = el número total de operadores
- = el número total de operandos
A partir de estas cifras, se pueden calcular varias medidas:
- Vocabulario del programa:
- Duración del programa:
- Duración estimada del programa calculada:
- Volumen:
- Dificultad :
- Esfuerzo:
La medida de dificultad está relacionada con la dificultad del programa para escribir o comprender, por ejemplo, al realizar una revisión de código .
La medida del esfuerzo se traduce en tiempo real de codificación utilizando la siguiente relación:
- Tiempo necesario para programar:artículos de segunda clase
Los errores entregados por Halstead (B) son una estimación del número de errores en la implementación.
- Número de errores entregados :o, más recientemente,es aceptado. [ 1 ]
Ejemplo
Considere el siguiente programa en C :
main () { int a , b , c , avg ; scanf ( "%d %d %d" , &a a , & b , & c ); promedio = ( a + b + c ) / 3 ; printf ( "promedio = %d" , promedio ); }Los distintos operadores () son: main, (), {}, int, scanf, &, =, +, /, printf, ,,;
Los operandos distintos () son: a, b, c, avg, "%d %d %d", 3,"avg = %d"
- ,,
- ,,
- Duración estimada del programa calculada:
- Volumen:
- Dificultad:
- Esfuerzo:
- Tiempo necesario para programar:artículos de segunda clase
- Número de errores entregados:
Véase también
Referencias
Enlaces externos
- Métricas de Halstead : Amplia discusión sobre el cálculo y el uso de las métricas de Halstead en un entorno orientado a objetos (con referencia específica a Java).
- Cálculo de las métricas de Halstead - Medición de las métricas de Halstead.
- Explicación con un programa de ejemplo (en la página 6 del PDF)
- Script que calcula las métricas de Halstead y las utiliza para la detección de código comentado.
- IBM
- Calculadora para el cálculo de la métrica de Halstead
- Métricas de software