Основные показатели надежности программного обеспечения (ПО)

Надежность программного обеспечения отличается от надежности технических средств следующим:

· элементы ПО не стареют от износа;

· число способов контроля ПО значительно больше числа способов контроля аппаратуры;

· в ПО значительно больше объектов для контроля, чем в аппаратуре;

· в ПО гораздо проще вносить исправления и дополнения, чем в аппаратуру, но это трудно делать корректно и безошибочно.

Основные понятия, связанные с надежностью программного обеспечения:

· ошибки в программах и признаки их наличия;

· количество оставшихся в программе ошибок (ошибок, дошедших до пользователя); вероятность безотказной работы программы;

· интенсивность обнаружения ошибок (или функция риска);

· прогон программы;

· отказ программы.

Дать строгое определение программной ошибки непросто, поскольку это определение, является функцией от самой программы, то есть зависит от того, какого функционирования ожидает от программы пользователь. По этой причине вместо строгого определения будут перечислены только признаки, указывающие на наличие ошибки в программе:

· при выполнении программы появилась ошибочная операция;

· использование некорректного операнда в программе;

· несоответствие функций, выполняемых программой, ее спецификации;

· ошибки в самой спецификации, которые вызывают необходимость корректирования программы;

· ошибки в вычислениях (например, переполнение и т.п.);

· ошибки интерфейса программы с пользователем.

Этот список можно считать открытым, поскольку он может быть продолжен разработчиками по мере накопления ими опыта в повышении надежности программного обеспечения.

Все же чаще всего под ошибкой (или отказом) программы понимают всякое невыполнение программой функций, которые были предусмотрены в техническом задании на ее разработку или вытекают непосредственно из инструкций пользователю. Является некорректным относить к ошибкам, например, необходимость написания программного кода, заменяющего какую-либо временно отсутствующую часть программы, или же необходимость рекомпиляции, вызванную изменениями в других модулях.

Количество оставшихся в программе ошибок – это количество ошибок, которые потенциально могут быть обнаружены на последующих стадиях жизненного цикла программы, после исправлений, внесенных в программу на текущей стадии ее жизненного цикла. Это количество оставшихся в программе ошибок (обозначаемое далее как B) – один из важнейших показателей надежности ПО.

Пусть P(t) - вероятность того, что ни одной ошибки не будет обнаружено на временном интервале [0,t]. Тогда вероятность хотя бы одного отказа за этот период будет Q(t) = 1 – P(t), и плотность вероятности можно записать как

Основные показатели надежности программного обеспечения (ПО) - №1 - открытая онлайн библиотека

Рассмотрим функцию риска R(t), как условную плотность вероятности отказа программы в момент времени t, при условии, что до этого момента отказов не было

Основные показатели надежности программного обеспечения (ПО) - №2 - открытая онлайн библиотека (13.1)

Функция риска имеет размерность [1/время] и она очень полезна при классификации основных распределений отказов. Распределения с возрастающей функцией риска соответствуют тем ситуациям, когда статистические характеристики надежности ухудшаются со временем. И наоборот, распределения с убывающей функцией риска соответствуют обратной ситуации, когда надежность улучшается со временем в результате процесса обнаружения и коррекции ошибок.

Из выражения (13.1), ясно, что Основные показатели надежности программного обеспечения (ПО) - №3 - открытая онлайн библиотека , и, следовательно,

Основные показатели надежности программного обеспечения (ПО) - №4 - открытая онлайн библиотека

или

Основные показатели надежности программного обеспечения (ПО) - №5 - открытая онлайн библиотека (13.2)

Равенство (13.2) является одним из самых важных в теории надежности. В дальнейшем будет показано, что различные виды поведения функции риска во времени порождают различные возможности для построения моделей надежности ПО. Интенсивность обнаружения ошибок (функция риска), вместе с вероятностью безотказной работы программы и количеством оставшихся в программе ошибок, являются важнейшими показателями надежности программ.

Прогон программы – это набор действий, включающий в себя: ввод в программу одной из возможных комбинаций Ei пространства входных данных E ( Основные показатели надежности программного обеспечения (ПО) - №6 - открытая онлайн библиотека ); выполнение программы, которое заканчивается либо получением результата F(Ei), либо отказом.

Для некоторых наборов входных данных Ei, отклонение полученного на выходе результата (F’(Ei)) от требуемого результата F(Ei) находится в пределах допустимого отклонения Основные показатели надежности программного обеспечения (ПО) - №7 - открытая онлайн библиотека , то есть выполняется следующее неравенство

Основные показатели надежности программного обеспечения (ПО) - №8 - открытая онлайн библиотека ( Основные показатели надежности программного обеспечения (ПО) - №9 - открытая онлайн библиотека )

а для всех остальных Ei из подмножества Основные показатели надежности программного обеспечения (ПО) - №10 - открытая онлайн библиотека , выполнение программы не дает приемлемого результата, то есть

Основные показатели надежности программного обеспечения (ПО) - №11 - открытая онлайн библиотека ( Основные показатели надежности программного обеспечения (ПО) - №12 - открытая онлайн библиотека )

Случаи, описанные неравенством (13.4), называются отказами программы.

Рассмотрим дихотомическую переменную Основные показатели надежности программного обеспечения (ПО) - №13 - открытая онлайн библиотека :

Основные показатели надежности программного обеспечения (ПО) - №14 - открытая онлайн библиотека

Тогда статистическая оценка вероятности отказа программы в течении m прогонов будет равна:

Основные показатели надежности программного обеспечения (ПО) - №15 - открытая онлайн библиотека ( Основные показатели надежности программного обеспечения (ПО) - №16 - открытая онлайн библиотека )

Обозначим через Основные показатели надежности программного обеспечения (ПО) - №17 - открытая онлайн библиотека приемлемую ошибку оценки Основные показатели надежности программного обеспечения (ПО) - №18 - открытая онлайн библиотека вероятности отказа Основные показатели надежности программного обеспечения (ПО) - №19 - открытая онлайн библиотека . Тогда требуемое количество прогонов программы m должно быть пропорционально значению Основные показатели надежности программного обеспечения (ПО) - №20 - открытая онлайн библиотека , где Q – заданная вероятность отказа программы. Это означает, что если, например, требуемая относительная ошибка оценки (13.5) Основные показатели надежности программного обеспечения (ПО) - №21 - открытая онлайн библиотека , и требуемое (желаемое) значение Основные показатели надежности программного обеспечения (ПО) - №22 - открытая онлайн библиотека , тогда количество независимых прогонов программы m одлжно быть не меньше, чем Основные показатели надежности программного обеспечения (ПО) - №23 - открытая онлайн библиотека , что, конечно, нелегко реализовать на практике. Решением этой проблемы может быть использование процедуры последовательного анализа Вальда.

И наконец, еще один показатель надежности ПО, который тоже будет использоваться в этой работе – среднее время наработки программы до отказа:

Основные показатели надежности программного обеспечения (ПО) - №24 - открытая онлайн библиотека

Опыт разработки ПО показывает, что выявление ошибок и их исправление связано с определенными затратами, которые составляют цену ошибки. По мере перехода к более поздним стадиям разработки цена ошибки возрастает:

1. Этап разработки спецификаций 140$;

2. Программирование 1100$;

3. Комплексная отладка 7000$;

4. Этап сопровождения от 14000$ до 140 000$;