В 1977 году Морис Говард Холстед представил свои меры сложности для программных систем , которые включали измерения словаря программы, длины программы, объема, сложности, усилий и предполагаемого количества ошибок в модуле. Согласно Википедии, трудность связана с трудностью понимания программы при ее чтении или написании, и усилия могут быть переведены во время, необходимое для написания кода приложения, где Время = (Усилие / 18) секунд.
Измерение бесполезно, если только данные и расчеты не связаны с каким-либо аспектом разработки программного обеспечения. Тем не менее, я не нашел работы, в которой говорится, что трудность определенного значения или выше имеет тенденцию к статистически значительному увеличению количества дефектов или взаимосвязи между трудностью и временем чтения кода (трудность N дает в среднем M часов, потраченных понимание основы кода) или любой анализ способности вычислять время после того, как факт полезен для определения качества (особенно потому, что время для записи должно было уже записываться как измерение). Меня особенно интересует оценка ошибок Холстеда (которая не упоминается в Википедии) - количество ошибок в приложении можно оценить по объему / 3000 или усилию ^ (2/3) / 3000.
Я ищу две вещи:
- Кто-нибудь использовал меры сложности программного обеспечения Halstead в реальных приложениях для оценки качества программного обеспечения? Если да, то как вы их применили, и оказались ли они полезным, достоверным и / или надежным измерением?
- Проводятся ли какие-либо научные исследования в форме опросов, анализов или тематических исследований, в которых обсуждается обоснованность (или недействительность) мер сложности Холстеда применительно к качеству программного обеспечения?
- Существуют ли какие-либо академические исследования в форме опросов, анализов или тематических исследований, которые демонстрируют использование строк исходного кода (SLOC) для вычисления чего-то похожего на метрики Халстеда: объем, сложность, усилие, время и ошибки? Я подозреваю, что объем может просто соответствовать количеству SLOC, а уровень сложности может соответствовать цикломатической сложности (и, возможно, другим показателям). Я также хорошо понимаю, что измерение усилий, производительности или времени в SLOC может ввести в заблуждение.