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 hizo la observación de 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áloga a la ecuación del gas ). Por lo tanto, sus métricas en realidad no son solo métricas de complejidad.
Cálculo
Para un problema dado, vamos a:
- = 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 estos números, se pueden calcular varias medidas:
- Vocabulario del programa:
- Duración del programa:
- Duración estimada calculada del programa:
- Volumen:
- Dificultad :
- Esfuerzo:
La medida de dificultad está relacionada con la dificultad del programa para escribir o comprender, por ejemplo, al revisar el código .
La medida de esfuerzo se traduce en tiempo de codificación real usando la siguiente relación,
- Tiempo requerido para programar: segundos
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, se acepta [ cita requerida ] .
Ejemplo
Considere el siguiente programa en C :
main () { int a , b , c , avg ; scanf ( "% d% d% d" , & a , & b , & c ); promedio = ( a + b + c ) / 3 ; printf ( "avg =% d" , avg ); }
Los operadores son únicas: main
, ()
, {}
, int
, scanf
, &
, =
, +
, /
, printf
, ,
,;
Los operandos son únicas: a
, b
, c
, avg
, "%d %d %d"
, 3
,"avg = %d"
- , ,
- , ,
- Duración estimada calculada del programa:
- Volumen:
- Dificultad:
- Esfuerzo:
- Tiempo requerido para programar: segundos
- Número de errores entregados:
Ver también
Referencias
enlaces externos
- Las métricas de Halstead : discusión extensa sobre el cálculo y uso de las métricas de Halstead en un entorno orientado a objetos (con referencia específica a Java).
- Cálculo de métricas de Halstead - Medición de métricas de Halstead.
- Explicación con un programa de muestra - Ejemplo (en la página 6 del PDF)
- Computación de secuencias de comandos Halstead Metrics y su uso para la detección de código comentado
- IBM
- Calculadora para calcular métricas de Halstead