Разработка программнотАУалгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиенттАУсервер"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
скусственно внесенных ошибок вероятность обнаружения при последующем тестировании одинакова и зависит только от их количества. Тестируя программу в течении некоторого времени и отсортировывая собственные и внесенные ошибки можно оценить N первоначальное число ошибок в программе.
Пусть: S число специально внесенных ошибок; n число найденных собственных ошибок в программе; число найденных внесенных ошибок; n+ количество обнаруженных ошибок при тестировании.
Тогда по методу максимального правдоподобия имеем: N = S n / .
Основное допущение модели распределение посеянных ошибок совпадает с распределением по программе собственных ошибок, и, следовательно, обнаружение, как тех, так и других ошибок равновероятно что является существенным недостатком этой модели.
При этом можно выдвигать и проверять гипотезы об N. Пусть в программе не более k собственных ошибок и внесли нее еще S ошибок. Теперь программа тестируется, пока не будут обнаружены все специально внесенные ошибки. Причем в этот момент подсчитывается число обнаруженных собственных ошибок (обозначим его, как и раньше, как n). Введем уровень значимости C:
(А.9)
С мера доверия к модели, то есть мера правильности нашего предположения о количестве k собственных ошибок и дает оценку для количества ошибок
,
которое нужно внести в программу, чтобы проверить гипотезу с заданным уровнем значимости.
Например, если мы утверждаем, что в программе нет ошибок (k = 0), и внося в программу 4 ошибки, все их обнаруживаем, не встретив ни одной собственной ошибки, то C = 0.80. А чтобы достичь уровня 95 %, надо было бы внести в программу 19 ошибок.
Этот метод не очень эффективен в случае применения его в реальной практике, так как если предположить что в программе своих ошибок n = 1000 (что более реально, чем n = 0), то для достижения уровня правдоподобия 0,95 в программу придется ввести 19019 ошибок, что само по себе уже тяжелая задача.
Формулу (А.9) можно модифицировать так, чтобы устранить недостаток, заключающийся в том, что C нельзя предсказать до тех пор, пока не будут обнаружены все искусственно внесенные ошибки (а это может и не произойти за ограниченное время, отведенное на тестирование). Модифицированной формулой можно пользоваться уже после того, как найдено j внесенных ошибок:
(А.10)
Это математически очень простая и интуитивно понятная модель. Процесс внесения ошибок само слабое звено модели, так как должны вноситься "типичные" для данной программы ошибки (то есть искусственно внесенные ошибки должны иметь то же распределение вероятности, что и собственные ошибки). Кроме того, эта модель не учитывает системных ошибок, то есть ошибок вносимых на этапе проектирования, а не самого кодирования.
Модель Бейзина
Пусть ПО содержит Nk команд [20]. Случайным образом из них выбирается n команд, в которые вводятся ошибки. Затем для тестирования случайным образом выбирается r команд. Если в ходе тестирования будет обнаружено собственных и m привнесенных (посеянных) ошибок, то полное число N0 ошибок содержащихся в программе перед началом тестирования (следует из метода максимального правдоподобия) можно определить как:
.
Простая экспоненциальная модель
В отличие от модели ДжелинскогоМоранды R(t) const [20].
Пусть N(t) число обнаруженных к моменту времени t ошибок и пусть функция риска пропорциональна числу оставшихся к моменту t в программе ошибок: R(t) = K(N(0) N(t)).
Продифференцируем обе части этого уравнения по времени:
.
Учитывая, что dN(t)/dt есть R(t) (число ошибок, обнаруженных в единицу времени), получим дифференциальное уравнение:
с начальными условиями N(0) = 0, R(0) = KN0.
Решением этого уравнения является функция:
R(t) = KN0exp(Kt).(А.11)
Для K и N0 получают следующие оценки (с применением МНК) для первых n ошибок:
,
,
где
.
Используя (А.11) можно определить время необходимое для снижения интенсивности появления ошибок с R1(t) до R2(t):
.
Дискретная модель ШикаУолвертона
Эта модель рассмотрена в работах [12, 20, 21]. Применяется при следующих допущениях:
предполагается, что частота проявления ошибок (интенсивность отказов) линейно зависит от времени испытаний ti между моментами обнаружения последовательных iй и (i1)й ошибок;
появление ошибок равновероятно и независимо;
ошибки корректируются без введения новых.
Тогда:
,
где k коэффициент пропорциональности, обеспечивающий равенство единице площади под кривой вероятности обнаружения ошибок.
В этом случае для оценки вероятности безотказной работы получается выражение, соответствующее распределению Релея:
,
где P(ti) = P(Tti).
Отсюда плотность распределения времени наработки на отказ:
.
Использовав функцию максимального правдоподобия, получим оценку для N0 и K:
, .
Модель Вейбулла
В [12] и [20] приводится модель надежности ПО с учетом ступенчатого характера изменения надежности при устранении очередной ошибки.
Функция риска для этой модели представляется в виде: R(t) = (a/b) (t/b)a1, где a > 0, и b > 0 константы модели; t интервал времени безошибочной работы.
Если a > 1, то интенсивность обнаружения ошибок растет со временем, если a < 1, то падает.
Плотность распределения вероятности до появления очередной ош