En 1977, Maurice Howard Halstead introdujo sus medidas de complejidad para los sistemas de software , que incluían mediciones del vocabulario del programa, la longitud del programa, el volumen, la dificultad, el esfuerzo y un número estimado de errores en un módulo. Según Wikipedia, la dificultad se relaciona con la dificultad de comprender el programa al leerlo o escribirlo, y el esfuerzo puede traducirse en el tiempo que lleva codificar una aplicación donde Tiempo = (Esfuerzo / 18) segundos.
Una medición es inútil a menos que los datos y los cálculos se relacionen con algún aspecto del desarrollo de software. Sin embargo, no he encontrado ningún trabajo que indique que una dificultad de cierto valor o mayor tiende a un aumento estadísticamente significativo de defectos o una relación entre la dificultad y el tiempo para leer el código (una dificultad de N produce un promedio de M horas dedicadas comprender la base del código) o cualquier análisis de poder calcular el tiempo después de que el hecho sea útil para determinar la calidad (especialmente porque el tiempo de escritura ya debería haberse registrado como una medida). Estoy especialmente interesado en la estimación de errores de Halstead (que no se menciona en Wikipedia): el número de errores en una aplicación se puede estimar por Volumen / 3000 o Esfuerzo ^ (2/3) / 3000.
Estoy buscando dos cosas:
- ¿Alguien ha utilizado las medidas de complejidad de software de Halstead en una aplicación del mundo real para evaluar la calidad del software? Si es así, ¿cómo los aplicó y resultaron ser una medida útil, válida y / o confiable?
- ¿Existe alguna investigación académica en forma de encuestas, análisis o estudios de casos que discutan la validez (o invalidez) de las medidas de complejidad de Halstead cuando se aplican a la calidad del software?
- ¿Existe alguna investigación académica en forma de encuestas, análisis o estudios de casos que demuestren el uso de las líneas de código fuente (SLOC) para calcular algo similar a las métricas de volumen, dificultad, esfuerzo, tiempo y errores de Halstead? Sospecho que el volumen podría corresponder a un recuento de SLOC y la dificultad podría corresponder a la complejidad ciclomática (y posiblemente a otras medidas). También soy consciente de que medir el esfuerzo, la productividad o el tiempo en SLOC es potencialmente engañoso.
fuente
Respuestas:
Microsoft Research ha realizado algunos trabajos en esta área. Echa un vistazo a esta página: http://research.microsoft.com/en-us/people/nachin/ . Aunque no se basa específicamente en Halstead, Nachi y su equipo han realizado una investigación utilizando Halstead, complejidad ciclomática, cambio de código y otras medidas para evaluar el riesgo relativo y la fragilidad para realizar cambios en áreas de código. También hay un documento interesante sobre cómo la efectividad organizacional también juega un papel importante, pero eso está fuera de tema. :)
fuente
Hay bastantes estudios de este tipo. Google es tu amigo.
Las métricas de Halstead cayeron en desgracia cuando se demostró que todas ellas estaban fuertemente correlacionadas con SLOC (líneas de código fuente) sin procesar. En ese punto, se hace más fácil medir el SLOC y terminar con él.
Aquí hay un resultado de Google Books .
fuente
Que Halstead Volume esté correlacionado con SLOC es interesante pero limitado. Estadísticas básicas: la correlación lineal no es transitiva. X correlacionado con Y, Y correlacionado con Z NO SIGNIFICA que X está correlacionado con Z.
fuente