Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PGTU / 5 семестр / Надежность / Nadezhnost_4-ya_redaktsia.doc
Скачиваний:
334
Добавлен:
29.03.2015
Размер:
12.07 Mб
Скачать

3.4.2. Другие вероятностные модели

Кроме обсуждавшейся в предыдущем разделе основной модели было построено несколько других. Предлагалась байесова модель, учиты­вающая возможность того, что λ(t) может не уменьшаться при каждом ис­правлении ошибки из-за возможного внесения при этом новых ошибок [9]. В [10] от­казываются от пред­положения, что исправления выполняются сразу после обнаруже­ния, и предлагается модель, в которой распределение исправле­ний пропорционально распределению обнаружений ошибок, но отстает во времени. Было предложено несколько моделей на основе мар­ковского процесса, состояния которого изменяются при всяком обнаруже­нии или исправлении ошибки, а вероятности переходов представлены час­тотами обнаружения и исправления ошибок [11]. Более общий подход был пред­ложен в [12]. В этих работах был выполнен статистический анализ данных об ошибках в 19 про­граммах, при этом было обнаружено, что эти данные не соответствовали какому-либо единственному распределению вероятно­стей. Анализ про­верки дисперсии среднего времени между обна­ружениями ошибки одной программы в семи различных усло­виях показал, что сред­ние значения были не одинаковы, из чего следует, что среда (т.е. условия, в которых программа исполь­зуется) – более существенный фак­тор, чем число оставшихся ошибок. Это привело к выводу, что модель на­дежности должна быть своей для каждой программы и конкретных усло­вий ее ис­пользования. Для этого нужно собрать некоторые данные об ошиб­ках, вы­работать на основе данных о частоте ошибок гипотезы о функции надеж­ности, оценить параметры модели и выполнить тесты, по­казывающие, на­сколько эта модель подходит.

3.4.3. Статистическая модель Миллса

Модель совершенно другого типа разработал Миллс [13]. В ней не используется никаких предположений о поведении интенсивности отказов λ(t), эта модель строится на твердом статистическом фунда­менте. Сначала программа «засоряется» некоторым количеством известных ошибок. Эти ошибки вносятся в программу случайным образом, а затем делается пред­положение, что для исходных и внесенных в программу ошибок вероят­ность обнаружения при последующем тестировании одинакова и зависит только от их количества. Тести­руя программу в течение некоторого вре­мени и сравнивая количество обнаруженных исходных и внесенных в про­грамму ошибок, можно оценитьN– первона­чальное число ошибок в про­грамме.

Предположим, что в программу было внесено s ошибок, после чего решено начать тестирование. Пусть при тестировании об­наруженоn+v ошибок, причемп – число найденных исходных ошибок,av – число най­денных внесенных ошибок. Тогда оценка дляN по методу максимального правдоподобия будет следующей:

(3.4)

Например, если в программу внесено 20 ошибок и к некоторому мо­менту тестирования обнаружено 15 исходных и 5 внесенных ошибок, зна­чение Nможно оценить в 60. В действительностиN можно оценивать по­сле обнаружения каждой ошибки; Миллс [13] предлагает во время всего периода тестирования отмечать на гра­фике число найденных ошибок и те­кущие оценки дляN.

Вторая часть модели связана с выдвижением и проверкой ги­потез об N. Примем, что в программе имеется не болееk исходных ошибок, и вне­сем в нее ещеs ошибок. Теперь программа тести­руется, пока не будут об­наружены все внесенные ошибки, причем в этот момент подсчитывается число обнаруженных исходных ошибок (обозначим егоп). Уровень значи­мостиС вычисляется по следующей формуле:

(3.5)

Величина С является мерой доверия к модели; это вероятность того, что число исходных ошибок будет не большеk. Например, если мы утвер­ждаем, что в программе нет ошибок (k = 0), и, внеся в программу 4 ошибки, все их обнаруживаем, не встретив ни одной исходной ошибки, тоС= 0,80. Чтобы достичь уровня 95 %, нам надо было бы внести в про­грамму 19 ошибок. Если мы утверждаем, что в программе не более трех исходных ошибок, и, внеся шесть ошибок, обнаруживаем их все и не более трех ис­ходных, уровень значимости равен 60 %. Формула дляС имеет под собой прочные статистические основания; выведена она Миллсом [13].

Эти две формулы для N и С образуют полезную модель ошибок; первая предсказывает число ошибок, а вторая может использо­ваться для установления доверительного уровня прогноза. Сла­бость этой формулы в том, чтоС нельзя предсказать до тех пор, пока не будут обнаружены все внесенные ошибки (а это, конечно, может не произойти до самого конца этапа тестирования). Чтобы справиться с этой трудностью, можно моди­фицировать формулу дляСтак, чтобыС можно было оценить после того, как найденоjвнесенных ошибок (j s) [14]:

(3.6)

В предыдущем примере, где k = 3,as = 6, если найдены 5 из 6 вне­сен­ных ошибок,С опускается с 60 до 33 %. Еще один график, ко­торый по­лезно строить во время тестирования, – текущее значение верхней границыk для некоторого фиксированного доверительного уровня, например 90 %.

Модель Миллса одновременно математически проста и интуитивно понятна. Легко представить себе программу внесения ошибок, которая случайным образом выбирает модуль, вносит логическую ошибку, изменяя или убирая операторы, и затем заново его компилирует. Природа внесен­ной ошибки должна сохраняться в тайне, но все их следует регистриро­вать, чтобы впоследствии можно было разделять ошибки на исходные и внесенные.

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

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

Соседние файлы в папке Надежность