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

3.4. Модели надежности по

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

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

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

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

3.4.1. Модель роста надежности

Вероятно, самой известной моделью надежности является модель, разработанная Джелински и Морандой [7] и Шуманом [8]. Она опирается на теорию надежности аппаратуры, основы которой были приведены в подразд. 1.2. В частности, в данной модели используются: вероятность безотказной работы P(t), интенсивность отказов λ(t) и среднее время ме­жду отказамиТ.

Один из способов оценки среднего времени между отказами – на­блюдение за поведением программы в течение некоторого периода вре­мени и нанесение на график значений времени между последовательными ошибками. Можно надеяться, что при этом будет обнаружено явление роста надежности; по мере того как ошибки обнаруживаются и исправ­ляются, время между последовательными ошибками становится больше. Экстраполируя эту кривую в будущее, можно предсказать среднее время между отказами в любой момент времени и предсказать полное число ошибок в программе.

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

Разработка такой модели начинается с уточнения поведения функ­ции λ(t) – интенсивности отказов ПО. В большинстве моделей аппаратного обеспечения λ(t) сначала уменьшается со временем (этап, когда обнаружи­ваются и исправляются ошибки проектирования и производства), затем ос­тается постоянной в течение большей части срока службы системы (соот­ветствует случайным отказам) и в конце полезного срока службы системы увеличивается (см. рис. 3.1). В теории надежности аппаратуры в ос­новном рассматривается средний пе­риод, где интенсивность отказов по­стоянна. Однако предположение о постоянстве интенсивности отказов вряд ли при­менимо в случае программного обеспечения, для которого эта функция должна уменьшаться по мере обнаружения и исправления оши­бок. По­этому, как показано на рис. 3.6, интенсивность отказов со временем уменьшается.

Рис. 3.6. Предполагаемая интенсивность отказов

Первое существенное предположение состоит в том, что λ(t) посто­янно до обнаружения и исправления ошиб­ки, после чего λ(t) опять стано­вится константой, но уже с другим, меньшим, значением. Это означает, чтоλ(t) пропорционально числу оставшихся ошибок. Второе предположение состоит в том, что λ(t) прямо пропорционально числу оставшихся ошибок, т.е.

λ(t) = –K(Ni), (3.1)

где N– неизвестное первоначальное число ошибок;i – число обнаружен­ных ошибок;K – некоторая неизвестная константа. Каждый раз, когда ошибка обнаруживается (модель предполагает, что задержка между обна­ружением ошибки и ее исправлением отсутствует), λ(t) уменьшается на не­которую величинуK. На оси времени может быть представлено календар­ное время или время работы программы (последнее может быть масштаби­ровано с учетом интенсивности ис­пользования программы).

Параметры N и K можно оценить, если некоторое количество оши­бок уже обнаружено (например, если фаза тестирования уже частично пройдена). Предположим, что обнаруженоп ошибок, ах:[1],х[2], ...,х[n] – интервалы времени между этими ошибками. В предположении, что λ(t) по­стоянно между ошибками, плотность вероятности дляx[i]

. (3.2)

Полагая Т равным суммех-ов и используя функцию максималь­ного правдоподобия для этого уравнения, получаем второе уравнение:

(3.3)

K иN в этих уравнениях – приближения для рассмотренных вышеK и N. Получилось два уравнения с двумя неизвестнымиN и K. Зная, что обнару­женоп ошибок с интерваламиx[i] между ними, эти уравнения можно ре­шить относительноN и Kс помощью простой программы численного ана­лиза. ЗначениеNдает основной результат – оценку полного числа ошибок. Знание параметраKпозволяет использовать уравнения для предсказания времени до появления (n+1)-й ошибки, (n+2)-й и т.д.

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

Чтобы очертить границы применимости этой модели, тре­буется по­нимать лежащие в ее основе допущения (упрощения).

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

Третье, основное, допущение – это то, что функция λ(t) носит одина­ковый характер для всех программ. Тем самым предполагается, что каждая ошибка уменьшает λ(t) на постоянную величинуK – на практике это, веро­ятно, нереально, однако, по-видимому, с такого предположения вполне ра­зумно начать. Хотя желание выразить надежность программного обеспе­чения некото­рой функцией времени вполне разумно, следует понимать, что в действительности она от времени не зависит. Надежность программ­ного обеспечения является функцией числа ошибок, их серьез­ности и их расположения, а также того, как система используется.

В реальности частота отказов в большой системе при измерении в течение нескольких лет может иметь тенденцию к по­нижению, но внутри этого периода возможны большие колебания. Анализ частоты обнаруже­ния ошибок при тестировании 14 различ­ных систем [1] показал, что час­тота эта в пяти проектах достигала пика в начале работы, в пяти – в сере­дине и в четырех – в конце.

Отметим, наконец, что описанная выше модель ка­жется чересчур оп­тимистичной. Например, при п = 10 (десять обна­руженных ошибок) с ин­тервалами между отказами (в минутах)

9, 17, 21, 54, 32, 78, 82, 33, 57, 82

модель предсказывает, что осталось 3,3 ошибки (т.е. изначально в про­грамме было N = 13,3 ошибки). При этом интер­валы времени между 10, 11, 12 и 13 ошибками оцениваются в 135, 245 и 1265 минут.

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