В 1977 году Морис Говард Холстед представил свои меры сложности для программных систем , которые включали измерения словаря программы, длины программы, объема, сложности, усилий и предполагаемого количества ошибок в модуле. Согласно Википедии, трудность связана с трудностью понимания программы при ее чтении или написании, и усилия могут быть переведены во время, необходимое для написания кода приложения, где Время = (Усилие / 18) секунд.
Измерение бесполезно, если только данные и расчеты не связаны с каким-либо аспектом разработки программного обеспечения. Тем не менее, я не нашел работы, в которой говорится, что трудность определенного значения или выше имеет тенденцию к статистически значительному увеличению количества дефектов или взаимосвязи между трудностью и временем чтения кода (трудность N дает в среднем M часов, потраченных понимание основы кода) или любой анализ способности вычислять время после того, как факт полезен для определения качества (особенно потому, что время для записи должно было уже записываться как измерение). Меня особенно интересует оценка ошибок Холстеда (которая не упоминается в Википедии) - количество ошибок в приложении можно оценить по объему / 3000 или усилию ^ (2/3) / 3000.
Я ищу две вещи:
- Кто-нибудь использовал меры сложности программного обеспечения Halstead в реальных приложениях для оценки качества программного обеспечения? Если да, то как вы их применили, и оказались ли они полезным, достоверным и / или надежным измерением?
- Проводятся ли какие-либо научные исследования в форме опросов, анализов или тематических исследований, в которых обсуждается обоснованность (или недействительность) мер сложности Холстеда применительно к качеству программного обеспечения?
- Существуют ли какие-либо академические исследования в форме опросов, анализов или тематических исследований, которые демонстрируют использование строк исходного кода (SLOC) для вычисления чего-то похожего на метрики Халстеда: объем, сложность, усилие, время и ошибки? Я подозреваю, что объем может просто соответствовать количеству SLOC, а уровень сложности может соответствовать цикломатической сложности (и, возможно, другим показателям). Я также хорошо понимаю, что измерение усилий, производительности или времени в SLOC может ввести в заблуждение.
источник
Ответы:
Microsoft Research проделала определенную работу в этой области. Проверьте эту страницу: http://research.microsoft.com/en-us/people/nachin/ . Хотя Начи и его команда не были специально основаны на Халстеде, они провели некоторое исследование с использованием Халстеда, цикломатической сложности, оттока кода и других мер для оценки относительного риска и хрупкости при внесении изменений в области кода. Есть также интересная статья о том, как организационная эффективность также играет большую роль, но это не по теме. :)
источник
Таких исследований довольно много. Google твой друг.
Метрики Холстеда потеряли популярность, когда было продемонстрировано, что все они тесно связаны с необработанным SLOC (исходные строки кода). В этот момент становится проще измерить SLOC и покончить с этим.
Вот результат из Google Книг .
источник
То, что объем Холстеда соотносится с SLOC, интересно, но ограничено. Базовая статистика: линейная корреляция не транзитивна. X соотносится с Y, Y соотносится с Z НЕ ОЗНАЧАЕТ, что X соотносится с Z.
источник