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.