Метрика числа ошибок в программе.
Значительная часть усилий и времени, затрачиваем на реализацию большинства программ для ЭВМ, приходится на их отладку, т. е. выявление и устранение ошибок типа “лишних и недостающих элементов”, внесенных в начальный период написания программы. Следовательно, любое обоснованное представление о числе первоначальных ошибок, ожидаемых в данной программе, даст важную оценку для практики. Предлагаемая метрика предсказывает число первоначальных ошибок (до отладки и тестирования) и не может служить доказательством правильности (корректности) программы, даже если ее значение равно нулю.
Время, требуемое на разработку программы, характеризуется числом элементарных мысленных различений Е. Следовательно, число моментов, в которые можно сделать ошибочное различение, также определяется значением Е или связанным с ним значением объема программы V. По утверждениям психолога Джорджа Миллера (закон “7±2”) мозг человека может в своей “сверхбыстрой” памяти обрабатывать пять “объектов” одновременно (т. е. получать из них результат). Представив эту способность мозга как Екрит, получим ее программное значение.
Пусть каждый объект так же, как и результат, соответствует единице уникальных операндов в потенциальном языке, т. е. h2* = 6. С помощью равенств h1* = 2 и
V* = (h1* + h2*) log2 (h1* + h2*) (4.11)
получаем
V*крит = (2 + 6)log2(2 + 6) = 24 (4.12)
Далее из уравнения (4.8) имеем
E = (V*)3/l2 ,
а из табл. 6 получаем для английского языка l= 2,16. Тогда для описания программы на уровне английского языка приходим к следующему выводу
Екрит = (24)3 * (2,16)2 = 3000 (4.13)
Определим теперь Ео как среднее число элементарных различений между возможными ошибками в программировании, а В — как число переданных ошибок в программе. Можно ожидать, что
В = Е/Ео, (4.14)
но при этом не будет учтено какая-либо избыточность в создаваемой программе.
Однако уровень программы L, собственно, и является мерой такой избыточности. Заметим, что только в потенциальном языке, на котором любая программа может быть выражена в виде вызова процедуры, не повторяются ни операторы, ни операнды. Для такого потенциального языка L = 1. Для всех же остальных языков L уменьшается с увеличением избыточности.
Следовательно, вместо уравнения (4.14) реальнее ожидать, что
B = L * Е/Ео. (4.15)
По правилам алгебры произведение L ´ Е можно заменить на V, что даст:
B=V/Eo. (4.16)
Если теперь приравнять Eo из уравнений (4.14) значению Екрит, найденному по уравнению (4.13), то получим соотношение
B= V / 3000 (4.17)
C другой стороны, подставив в (4.17) выражение для V из (4.10), получим
B= (V*)2 / (3000*l) (4.18)
Из выражения (4.18) следует, что поскольку для определения потенциального объема необходимо только знание числа независимых входных и выходных параметров программы, задаваемого в техническом задании на ее разработку, то после выбора языка программирования потенциальное количество ошибок можно оценить до написания программы.
Дата добавления: 2021-09-25; просмотров: 350;