Índice de mantenibilidad del software
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 mensurables del software y las relaciones entre ellas. Esto es similar a la identificación de propiedades mensurables 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 de los gases ). Por lo tanto, sus métricas en realidad no son solo 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 estos números 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, cuando se realiza una revisión de código .
La medida del esfuerzo se traduce en tiempo de codificación real utilizando la siguiente relación:
- Tiempo necesario 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. [1]
Ejemplo
Considere el siguiente programa en C :
principal () { int a , b , c , promedio ; scanf ( "%d %d %d" , &a a , & b , & c ); promedio = ( a + b + c ) / 3 ; printf ( "promedio = %d" , promedio ); }
Los operadores distintos ( ) son: , , , , , , , , , , ,main
()
{}
int
scanf
&
=
+
/
printf
,
;
Los operandos distintos ( ) son: , , , , , ,a
b
c
avg
"%d %d %d"
3
"avg = %d"
- , ,
- , ,
- Duración estimada calculada del programa:
- Volumen:
- Dificultad:
- Esfuerzo:
- Tiempo necesario para programar: segundos
- Número de errores entregados:
Véase también
Referencias
- ^ ab Halstead, Maurice H. (1977). Elementos de la ciencia del software . Ámsterdam: Elsevier North-Holland, Inc. ISBN 0-444-00205-7.
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 (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 calcular métricas de Halstead