Модель ошибки сертифицированного ПО
Общее число N ошибок в разработанном и принятом в эксплуатацию программном обеспечении зависит от большого количества аналоговых и дискретных факторов, наиболее значимыми из которых являются:
- длина программы, измеряемая числом операторов (обычно 10 – 12 ошибок на 1000 операторов программы универсальной ЭВМ и 20 – 30 ошибок на 1000 операторов ПО РВ);
- способ программирования ПО («сверху вниз» или «снизу вверх»);
- алгоритмический язык программирования (чем выше уровень языка и он более структурирован, тем меньше длина программы и меньше ошибок);
- квалификация программистов (опыт программирования, уровень знаний и умений, средняя загруженность программистов, их собранность и аккуратность и др.);
сложность программного обеспечения (характеризуется числом: циклов, условных операторов, операций ветвления, связей и сопряжений с другими программами и техническими устройствами, вычислительных и логических операторов, операций ввода-вывода, прерывания и др.).
Анализ больших ПО, содержащих несколько сот программ с суммарной длиной 20…100 тыс. операторов, показал линейный характер зависимости случайного числа N оставшихся в программах ошибок от примерно 16 – 20 аналоговых и дискретных факторов. Статистическая обработка полученных «экспериментальных» данных позволила построить феноменологическую модель оценки среднего числа ошибок в сертифицированном ПО
,
где: - оценка условного математического ожидания числа ошибок в ПО; , k=16…20 – факторы, влияющие на число ошибок N; в частности: Z1 – длина программы; Z2 и Z3 – язык и способ программирования; Z4, Z5, Z6 – стаж работы, образовательный ценз и загруженность программиста; Z7 … Z16 – число циклов, условных операторов, операций ввода-вывода, прерываний, ветвлений, сопряжений с программами и разными техническими устройствами и т.д.; - значимые (неслучайно отличающиеся от нуля) коэффициенты, определяемые методом наименьших квадратов.
Приведенная корреляционная модель позволяет приближенно оценивать среднее число N(0) скрытых ошибок в ПО, которое сдано в эксплуатацию. Знание числа N(0), в свою очередь, позволяет организовать эффективное сопровождение ПО на этапе его эксплуатации.
Вместе с тем, построение корреляционной зависимости связано с значительными трудностями по накоплению экспериментальных данных о числе выявленных ошибок и «измерении» факторов. Определенные сложности возникают и при математической обработке накопленных выборок малого объема для дискретных переменных Z с существенно разными значениями уровней дискретизации. Последнее обстоятельство не позволяет рассматривать оценку как несмещенную, состоятельную и тем более эффективную. Наконец, отметим, что рассматриваемая корреляционная зависимость получена в конце 80-ых годов по экспериментальным данным, относящимся к 5 крупным ПО американских вычислительных систем (Тейер Т., Липов М., Нельсон Э.). Поэтому формальное применение корреляционной модели к современным ПО (и особенно ПО РВ) вряд ли оправдано и целесообразно.
Число ошибок N(0), оставшихся в принятом в эксплуатацию ПО, можно оценить по результатам достаточно тонкого вычислительного эксперимента. Для этого введем в ПО некоторое число искусственных ошибок, затем организуем определенное количество прогонов программ и выявим , искусственных и собственных (имевшихся в ПО до момента ) ошибок. Доля обнаруженных искусственных ошибок вероятно равна доле собственных ошибок ПО. Отсюда имеем: . Подобный прием позволяет получать удовлетворительную оценку N(0), если искусственные ошибки достаточно типичны, и распределены также, как и собственные ошибки ПО.