Оценка надежности программ на ранних стадиях проектирования.

Оценка надежности ПО по аналогии с невосстанавливаемыми техническими системами

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

Модель основана на следующих допущениях:

- при последовательных прогонах программы наборы входных данных являются случайными и выбираются в соответствии с законом распределения, соответствующим реальным условиям функционирования;

- в начальный момент компоновки программ в систему ПО в них имеется Е0 ошибок; в ходе корректировок новые ошибки не вносятся;

- общее число I машинных команд в программах постоянно, т.е. I=const;

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

(2.24)

где отношение числа ошибок, устраненных в течение времени отладки , к общему числу команд на машинном языке.

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

Таким образом, значение интенсивности отказов считается постоянным в течение всего времени функционирования (0, t). Значение изменяется лишь при обнаружении и исправлении ошибок (при этом время вновь отсчитывается от нуля).

В силу принятых допущений для фиксированного вероятность отсутствия ошибок программ в течение наработки времени (0,t):

(2.25)

Средняя наработка программы до отказа

(2.26)

Для практического использования формулы (2.26) и (2.25) необходимо оценить и по экспериментальным данным. Для этого можно использовать метод моментов или метод максимального правдоподобия.

Применяя метод моментов и рассматривая два периода отладки программ и при <, получаем

где - продолжительность работы системы, соответствующие и ; и - число ошибок в ПО, обнаруженных соответственно в периодах и .

Оценка надежности программ по числу прогонов (модель Нельсона).В такой модели за показатель надежности программы принимается вероятность безотказного выполнения n прогонов программы.

Вероятность того, что j – й прогон закончится отказом,

(2.27)

где - вероятность выбора i-ого набора входных данных при j – м прогоне некоторой последовательности прогонов; - «динамическая переменная», принимающая значение 0, если прогон программы при i – м наборе входных данных оказывается успешным, и значение 1, если этот прогон заканчивается отказом; N – число возможных наборов входных данных.

На практике надежность программы может быть оценена путем прогона программы на n наборах входных данных и вычисления значения оценки

где - число наборов входных данных, при которых произошли отказы.

Для получения вначале находят «функциональный разрез» программы, т. е. множество вероятностей того, что будет сделан выбор i –ого варианта входных данных. Для этого разбивают все пространство входных переменных на подпространства и находят вероятности того, что выбранный набор входных данных будет принадлежать конкретному подпространству. Это можно сделать, оценивая вероятности появления различных входов в реальных условиях функционирования, для которых оценивается надежность программы.

Далее формируют случайную выборку из n наборов входных данных, распределенных в соответствии с (например, с помощью датчика случайных чисел), и проводят n прогонов программы, находят и вычисляют .

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

(2.28)

или

(2.29)

Описанные выше модели надежности программ требуют оценки ряда параметров по статистическим данным, получаемым при тестировании, отладке программ или на этапе передачи программ в эксплуатацию [12]. На ранних этапах проектирования программ отсутствует возможность проведения экспериментов, могут быть использованы статистические данные об отказах аналогичных программ, созданных ранее той же группой программистов. Рядом исследователей выявлена стабильность относительной частоты ошибок в различных типовых конструкциях алгоритмических языков высокого уровня. Рассмотрим модель надежности программы, основанную на этом явлении и учитывающую структуру программы и распределение исходных данных.

В этой модели предполагается, что:

а) исходные данные выбираются случайно в соответствии имеющимся распределением их вероятностей;

б) ошибки в элементах программы независимы;

в) программа образована из элементов немногих s классов с одинаковыми вероятностями pl правильного однократного исполнения элементов класса l.

При этих допущениях условная вероятность pi правильного однократного пути исполнения программы при условии исполнения пути i:

, (2.30)

где mli – количество элементов l – ого класса в i- ом пути. (Путь – последовательность элементов программы, не содержащая ответвлений и используемая при выполнении программы с определенными исходными данными.)

Вероятность правильного однократного исполнения всей программы

(2.31)

где - вероятность выбора i-ого пути (зависит от сочетания значений исходных данных).

Если программа в процессе эксплуатации не корректируется, т. е. проявившиеся ошибки не устраняются, вероятности pi неизменны. При корректировании программ вероятность правильного однократного исполнения элемента l - го класса в период между (j-1) – й и j - й ошибками

(2.32)

где - вероятность правильного однократного исполнения элемента l - го класса до начала эксплуатации или отладки программы; ql – параметр эффективности корректировки (показывает, во сколько раз изменяется вероятность появления ошибки в элементе l – ого класса после ее устранения).

При одинаковых ql=q вероятность правильного однократного исполнения всей программы между (j-1) и j – м отказами

(2.33)

где pсо - вероятность правильного однократного исполнения программы до начала ее эксплуатации или отладки.

Если программа не корректируется после обнаружения в ней ошибок, q=1. Если корректировки неудачны, например, из-за плохого знания программы, q>1. При 0<q<1 корректировки повышают надежность программы.