Разработка программнотАУалгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиенттАУсервер"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?бки описывается распределением Вейбулла:

.

Наработка до отказа выражается через гаммафункцию:

,

где P(t) вероятность безотказной работы и P(t) = 1 Q(t), где Q(t) вероятность отказа:

.

Для оценки параметров a и b используются следующие формулы:

,

где

b = exp{b0/a},

,

k число интервалов тестирования,

,

tj длина jго интервала тестирования,

,

Ni нормированное суммарное число ошибок, обнаруженных к моменту ti.

Определение надежности по результатам тестирования

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

,(А.12)

где pн нижняя доверительная граница вероятности безотказной работы ПО при однократном прохождении набора стохастических входных данных; н доверительная вероятность; n число проходов при тестировании.

Пусть, например, n=150 прохождений со случайными исходными данными. Исходы всех тестов положительные (ошибок не обнаружено), т.е. количество отказов ПО равно нулю. Необходимо определить нижнюю доверительную границу вероятности безотказной работы ПО при одном прохождении, при н = 0,9.

Согласно (А.11) имеем pн = 0.985.

Сделанное выше допущение относительно независимости результатов отдельных тестов программы не вполне обосновано, так как наличие ошибки в ПО обнаруживается скорей всего, большим количеством тестов, чем это можно ожидать, исходя из независимости их результатов. Поэтому представляет интерес другой подход, где ПО рассматривается как сообщение, состоящее из N символов. Пусть каждый стохастический тест проверяет в среднем r символов из N и пусть один из N элементов содержит ошибку.

Пусть вероятность того, что при одном тесте ошибка не будет обнаружена, оценивается как 1 r/N. Вероятность того, что при n независимых тестах ошибка не будет обнаружена, равна (1 r/N)n. Если ошибочных символов в ПО больше чем один, то вероятность их обнаружения одним тестом будет еще больше, так как эта оценка является оценкой снизу.

Пусть n = 150; r/N = 0,3. Тогда вероятность обнаружения ошибки в ПО

p = 1 (1 r/N)150 = 1 1,721020 1.

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

Модель избыточности

Можно попробовать использовать подход, предложенный в статье [24] для описания эффективности защиты ПО от сбоев посредством введения в нее избыточного кода. Эффективность защиты (в расчете на которую в ПО вводится избыточный код, который снижает функциональные характеристики ПО, в частности, быстродействие и требует больших ресурсов (например, для использования образцового в этом отношении языка JAVA нужно как минимум 128 Мб ОЗУ)), априорно определим как вероятность P (являющейся функцией времени T периодичности работы программного модуля) нужности (срабатывания) защиты. Эта вероятность в рассматриваемом случае может быть выражена произведением вида:

P = Pe * Pr * Pd,(А.13)

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

Pr вероятность того, что защита от этого сбоя сработает;

Pd вероятность того, что сообщение о сбое будет получено и обработано (т.е. что диагностика сработает).

По сути данной задачи речь идет о двух типах случайных событий:

1. событии (нежелательном) состоящем в том, что произошел прогнозируемый сбой;

2. событии (желательном) состоящем в том, что защита сработает.

Рассмотрим случай, когда оба типа событий характеризуются постоянными интенсивностями (поскольку временные зависимости этих параметров обычно не известны). Пусть:

интенсивность (то есть вероятностью возникновения в единицу времени) возникновения ошибки (сбоя);

r интенсивностью отказа (не срабатывания) защиты, характеризующая надежность защиты;

d интенсивность срабатывания диагностики, характеризующая надежность системы диагностики Pd.

Тогда сомножители, входящие в формулу (А.13), можно представить в следующем виде:

(А.14)

(А.15)

(А.16)

где T периодичность работы программного модуля;

, вероятности ошибок 1го и 2го рода диагностики.

Диагностика представляет собой устройство (или программу), обеспечивающее оповещение оператора о сбое и принятии решения о дальнейшей работе. Исправный диагностический модуль по аналогии с размыкателем характеризуется двумя ошибками: ошибка 1го рода ложное срабатывание (например, выключение без наличия сбоя), ошибка 2го рода отсутствие срабатывания при наличии сбоя. Защита не эффективна в обоих случаях.

Подстановка (А.13) (А.15) в (А.12) дает выражение:

,(А.17)

где

.

Функция (А.16) достигает максимума при значении T равном:

(А.18)

Значение T* представл