Articulo de referencia

Medidas de complejidad de Halstead

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 c...

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:

  • η1{\displaystyle \,\eta _{1}}= el número de operadores distintos
  • η2{\displaystyle \,\eta _{2}}= el número de operandos distintos
  • norte1{\displaystyle \,N_{1}}= el número total de operadores
  • norte2{\displaystyle \,N_{2}}= el número total de operandos

A partir de estas cifras, se pueden calcular varias medidas:

  • Vocabulario del programa:η=η1+η2{\displaystyle \eta =\eta _{1}+\eta _{2}\,}
  • Duración del programa:norte=norte1+norte2{\displaystyle N=N_{1}+N_{2}\,}
  • Duración estimada del programa calculada:norte^=η1registro2η1+η2registro2η2{\displaystyle {\hat {N}}=\eta _{1}\log _{2}\eta _{1}+\eta _{2}\log _{2}\eta _{2}}
  • Volumen:V=norte×registro2η{\displaystyle V=N\times \log _{2}\eta }
  • Dificultad  : D=η12×norte2η2{\displaystyle D={\eta _{1} \over 2}\times {N_{2} \over \eta _{2}}}
  • Esfuerzo:mi=D×V{\displaystyle E=D\times V}

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:T=mi18{\displaystyle T={E \over 18}}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  :B=mi233000{\displaystyle B={E^{2 \over 3} \over 3000}}o, más recientemente,B=V3000{\displaystyle B={V \over 3000}}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 (η1{\displaystyle \,\eta _{1}}) son: main, (), {}, int, scanf, &, =, +, /, printf, ,,;

Los operandos distintos (η2{\displaystyle \,\eta _{2}}) son: a, b, c, avg, "%d %d %d", 3,"avg = %d"

  • η1=12{\displaystyle \eta _{1}=12},η2=7{\displaystyle \eta _{2}=7},η=19{\displaystyle \eta =19}
  • norte1=27{\displaystyle N_{1}=27},norte2=15{\displaystyle N_{2}=15},norte=42{\displaystyle N=42}
  • Duración estimada del programa calculada:norte^=12×logramo212+7×logramo27=62,67{\displaystyle {\hat {N}}=12\times log_{2}12+7\times log_{2}7=62.67}
  • Volumen:V=42×logramo219=178.4{\displaystyle V=42\times log_{2}19=178.4}
  • Dificultad:D=122×157=12.85{\displaystyle D={12 \over 2}\times {15 \over 7}=12.85}
  • Esfuerzo:mi=12.85×178.4=2292.44{\displaystyle E=12.85\times 178.4=2292.44}
  • Tiempo necesario para programar:T=2292.4418=127.357{\displaystyle T={2292.44 \over 18}=127.357}artículos de segunda clase
  • Número de errores entregados:B=2292.44233000=0,05{\displaystyle B={2292.44^{2 \over 3} \over 3000}=0.05}

Véase también

Referencias

  1. 1 2 Halstead, Maurice H. (1977). Elementos de la ciencia del software . Ámsterdam: Elsevier North-Holland, Inc. ISBN 0-444-00205-7.
  • 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