Индекс ремонтопригодности программного обеспечения
Меры сложности Холстеда - это метрики программного обеспечения, введенные Морисом Ховардом Холстедом в 1977 году [1] как часть его трактата об установлении эмпирической науки о разработке программного обеспечения. Холстед заметил, что показатели программного обеспечения должны отражать реализацию или выражение алгоритмов на разных языках, но не зависеть от их выполнения на конкретной платформе. Следовательно, эти метрики вычисляются статически из кода.
Целью Холстеда было выявить измеримые свойства программного обеспечения и отношения между ними. Это похоже на определение измеримых свойств вещества (таких как объем, масса и давление газа) и взаимосвязей между ними (аналогично уравнению газа ). Таким образом, его показатели на самом деле не просто показатели сложности.
Расчет Для данной проблемы пусть:
η 1 {\ displaystyle \, \ eta _ {1}} = количество различных операторов η 2 {\ displaystyle \, \ eta _ {2}} = количество различных операндов N 1 {\ displaystyle \, N_ {1}} = общее количество операторов N 2 {\ displaystyle \, N_ {2}} = общее количество операндовПо этим числам можно рассчитать несколько показателей:
Словарь программы: η знак равно η 1 + η 2 {\ displaystyle \ eta = \ eta _ {1} + \ eta _ {2} \,} Продолжительность программы: N знак равно N 1 + N 2 {\ Displaystyle N = N_ {1} + N_ {2} \,} Расчетная ориентировочная продолжительность программы: N ^ знак равно η 1 бревно 2 η 1 + η 2 бревно 2 η 2 {\displaystyle {\hat {N}}=\eta _{1}\log _{2}\eta _{1}+\eta _{2}\log _{2}\eta _{2}} Объем: V = N × log 2 η {\displaystyle V=N\times \log _{2}\eta } Сложность: D = η 1 2 × N 2 η 2 {\displaystyle D={\eta _{1} \over 2}\times {N_{2} \over \eta _{2}}} Усилие: E = D × V {\displaystyle E=D\times V} Мера сложности связана со сложностью написания или понимания программы, например, при проверке кода .
Мера трудозатрат переводится в фактическое время кодирования с использованием следующего соотношения:
Время, необходимое для программирования: секунды T = E 18 {\displaystyle T={E \over 18}} Доставленные Halstead ошибки (B) - это оценка количества ошибок в реализации.
Количество доставленных ошибок: или, совсем недавно, принято [ ссылка ] . B = E 2 3 3000 {\displaystyle B={E^{2 \over 3} \over 3000}} B = V 3000 {\displaystyle B={V \over 3000}} Пример Рассмотрим следующую программу на C :
main () { int a , b , c , avg ; scanf ( "% d% d% d" , & a , & b , & c ); ср = ( a + b + c ) / 3 ; printf ( "avg =% d" , avg ); } Уникальные операторы: main
, ()
, {}
, int
, scanf
, &
, =
, +
, /
, printf
, ,
,;
Уникальные операнды: a
, b
, c
, avg
, "%d %d %d"
, 3
,"avg = %d"
η 1 = 12 {\displaystyle \eta _{1}=12} , , η 2 = 7 {\displaystyle \eta _{2}=7} η = 19 {\displaystyle \eta =19} N 1 = 27 {\displaystyle N_{1}=27} , , N 2 = 15 {\displaystyle N_{2}=15} N = 42 {\displaystyle N=42} Расчетная предполагаемая продолжительность программы: N ^ = 12 × l o g 2 12 + 7 × l o g 2 7 = 62.67 {\displaystyle {\hat {N}}=12\times log_{2}12+7\times log_{2}7=62.67} Объем: V = 42 × l o g 2 19 = 178.4 {\displaystyle V=42\times log_{2}19=178.4} Сложность: D = 12 2 × 15 7 = 12.85 {\displaystyle D={12 \over 2}\times {15 \over 7}=12.85} Усилие: E = 12.85 × 178.4 = 2292.44 {\displaystyle E=12.85\times 178.4=2292.44} Время, необходимое для программирования: секунды T = 2292.44 18 = 127.357 {\displaystyle T={2292.44 \over 18}=127.357} Количество доставленных ошибок: B = 2292.44 2 3 3000 = 0.05 {\displaystyle B={2292.44^{2 \over 3} \over 3000}=0.05} Смотрите также использованная литература ^ Холстед, Морис Х. (1977). Элементы науки о программном обеспечении . Амстердам: ISBN компании Elsevier North-Holland, Inc. 0-444-00205-7 . внешние ссылки