Em 1977, Maurice Howard Halstead introduziu suas medidas de complexidade para sistemas de software , que incluíam medidas do vocabulário do programa, duração do programa, volume, dificuldade, esforço e um número estimado de erros em um módulo. De acordo com a Wikipedia, a dificuldade está relacionada à dificuldade de entender o programa ao lê-lo ou escrevê-lo, e o esforço pode ser traduzido no tempo que leva para codificar um aplicativo em que Tempo = (esforço / 18) segundos.
Uma medida é inútil, a menos que os dados e cálculos estejam relacionados a algum aspecto do desenvolvimento de software. No entanto, não encontrei nenhum trabalho que indique que uma dificuldade de um determinado valor ou superior tenda a um aumento estatisticamente significativo de defeitos ou a uma relação entre dificuldade e tempo para ler o código (uma dificuldade de N produz uma média de M horas gastas entender a base do código) ou qualquer análise de poder calcular o tempo após o fato de ser útil na determinação da qualidade (principalmente porque o tempo para escrever já deveria ter sido registrado como uma medida). Estou especialmente interessado na estimativa de erros de Halstead (que não é mencionada na Wikipedia) - o número de erros em um aplicativo pode ser estimado em Volume / 3000 ou Effort ^ (2/3) / 3000.
Estou procurando duas coisas:
- Alguém usou as medidas de complexidade de software da Halstead em um aplicativo do mundo real para avaliar a qualidade do software? Em caso afirmativo, como você os aplicou e eles se mostraram uma medida útil, válida e / ou confiável?
- Existe alguma pesquisa acadêmica na forma de pesquisas, análises ou estudos de caso que discutam a validade (ou invalidez) das medidas de complexidade de Halstead quando aplicadas à qualidade do software?
- Existe alguma pesquisa acadêmica na forma de pesquisas, análises ou estudos de caso que demonstrem o uso do SLOC (Source Lines of Code) para calcular algo semelhante às métricas de Halstead de Volume, Dificuldade, Esforço, Tempo e Erros? Eu suspeitaria que o Volume corresponda apenas a uma contagem SLOC e a Dificuldade corresponda à complexidade ciclomática (e possivelmente a outras medidas). Também sei que medir o esforço, a produtividade ou o tempo no SLOC é potencialmente enganador.