En 1977, Maurice Howard Halstead presentó sus medidas de complejidad para sistemas de software , que incluían mediciones del vocabulario del programa, programa longitud, volumen, dificultad, esfuerzo y un número estimado de errores en un módulo. Según Wikipedia, la dificultad se relaciona con la dificultad de entender el programa al leerlo o escribirlo, y el esfuerzo puede traducirse en el tiempo que toma codificar una aplicación en la que 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 superior tiende a un aumento estadísticamente significativo en los 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 invertidas). entendiendo el código base) 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 del 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 caso que analicen 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 caso que demuestren el uso de las Líneas de código fuente (SLOC) para calcular algo similar a las métricas de Halstead de volumen, dificultad, esfuerzo, tiempo y errores? ? Yo sospecharía que el volumen podría corresponder simplemente 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.