Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пособие ТОКН

.pdf
Скачиваний:
52
Добавлен:
20.02.2016
Размер:
1.15 Mб
Скачать

P(τ) = Φ(

yв y0

δ0 ) + Φ(

y0 yн

δ0 ) .

y0τσ

 

 

 

σ

y0τσ

σ

Вычисления по этой формуле не представляют труда, поскольку таблицы для функции Лапласа имеются практически во всех книгах по теории вероятностей. Более сложные случаи постепенных отказов рассмотрены в ра-

ботах [1, 7].

3.18.Надежность программных средств

3.18.1.Основные понятия

Современные технические системы представляют собой, как правило, сложные аппаратно-программные комплексы, где наряду с электронными компонентами имеется значительный объем программных средств, от качественной работы которых существенно зависит функционирование всего комплекса. Достаточно вспомнить случаи в космонавтике, когда единственная ошибка в программном обеспечении приводила к сходу с расчетной траектории запускаемой ракеты и необходимости ее подрыва. Объем программных средств может достигать огромных размеров, трудоемкость его создания нередко оценивается в десятки тысяч человеколет – примерно такими показателями характеризовалась программная составляющая американского проекта СОИ (стратегическая оборонная инициатива), разрабатываемого в 80-х годах ХХ века. Очевидно, для современных сложных систем объем программной составляющей будет еще большим. В связи с этим вопросы надежности программного обеспечения являются весьма актуальными.

Прежде чем рассматривать вопросы надежности программ, полезно проанализировать этапы создания аппаратных и программных средств и их особенности. В случае аппаратных средств основные этапы можно представить следующим образом:

задача схема устройство.

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

В случае программных средств имеется аналогичная последовательность этапов:

задача спецификация программа.

121

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

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

1.В программах отсутствует старение – если в программе нет ошибок, то сами по себе без вмешательства извне они появиться не могут.

2.В простых программах по мере их эксплуатации надежность возрастает;

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

3.По сравнению с аппаратными средствами для контроля программ имеется больше возможностей и путей.

3.18.2.Модель надежности программ Программа как сложный объект состоит из большого числа операторов, и

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

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

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

λ

T1

T2

T3

t

Рис. 3.41. Иллюстрация к рассматриваемому методу

122

Математическиеформулировкиэтихдопущенийвыглядятследующимобразом: плотность вероятности случайной величины Ti имеет следующий вид:

ϕi (t) = λie−λit ,

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

λi = λ0 (N (i 1)) ,

где λ0 – интенсивность отказов одной ошибки, N – число ошибок в программе.

Оба эти числа определяются по результатам эксплуатации программы путем анализа моментов проявления ошибок.

3.18.3. Пример использования подхода Джелинского-Моранды Пусть в процессе эксплуатации программы проявились три ошибки, при-

чем T1 =10 ч, T2 = 20 ч, T3 = 25 ч. Для определения значений λ0 и N восполь-

зуется методом максимального правдоподобия, согласно которому определяется вероятность того, что ошибки проявились в указанные моменты времени, и находится ее максимальное значение. Интересующая нас функция правдоподобия пропорциональна произведению трех плотностей вероятности для моментов времени T1, T2 и T3:

L = λ0 (N 0) e−λ0 NT1 λ0 (N 1) e−λ0 (N 1)T2 λ0 (N 2) e−λ0 (N 2)T3 .

Полученную функцию необходимо максимизировать за счет параметров N и λ0 . Опуская детали решения, приведем конечный результат: N = 4 ,

λ0 = 0,02 1/ч. Таким образом, в программе имелось 4 ошибки, среднее ожидае-

мое время до проявления последней ошибки можно найти по обычной формуле теории надежности:

T4 = λ10 = 50 ч.

3.18.4. Методы повышения надежности программ Как и в случае надежности аппаратных средств, в процессе развития тео-

рии и практики программирования был предложен ряд методов повышения надежности программ. Коротко рассмотрим их.

1. Совершенствование технологии программирования. В процессе сво-

его совершенствования практика программирования выработала три технологии программирования:

модульное; структурное; объектное.

123

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

2.Резервирование. В данном случае под резервированием понимается дуальное и n-версионное программирование, которое подразумевает разработку двух и более версий программ для решения одной и той же задачи, выполненных разными программистами. Метод основан на том предположении, что совпадение ошибок у разных программистов маловероятно. Такие ошибки могут быть выявлены в ходе отладки версий.

3.Тестирование и верификация программ. Под тестированием понима-

ется проверка правильности программы по результатам ее работы на специально подобранных наборах исходных данных – тестах. Разработано много различных методов тестирования, однако все они позволяют проверить программу только на ограниченном числе исходных данных. Более мощными являются методы верификации – доказательства правильности программ на основе математических методов доказательства теорем. Однако в отличие от тестирования здесь проверяется только переход от спецификации к программе.

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

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

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

Q( p) =

1

.

p2 +19 p + 90

Нетрудно видеть, что его можно разложить на простые сомножители двумя способами:

Q ( p) =

1

 

=

 

1

 

 

 

1

 

,

 

 

 

 

 

 

 

 

 

1

 

p2 +19 p + 90

 

 

p + 9 p +10

 

 

 

 

 

 

 

 

 

 

Q2 ( p) =

 

1

 

=

 

1

 

 

1

 

 

.

 

p2 +19 p + 90

 

p +

9

 

p +

10

 

 

 

 

 

 

 

 

 

 

Пусть числа 9 и 10, фигурирующие в этих выражениях, получаются в ходе реализации некоторого вычислительного процесса и из-за его нарушений приняли одинаковые значения 9,5. Тогда вычисления по первому выражению дадут результат

124

Q

( p) =

1

 

1

=

1

,

 

 

 

1

 

p + 9,5

 

p + 9,5

p2 +19 p + 90,25

 

 

 

 

 

по второму

Q2 ( p) = p +19,5 p +19,5 = 0 .

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

3.19. Испытания на надежность

Испытания технических систем являются важным этапом их жизненного цикла. Даже сравнительно простые системы, рассчитанные на массовое применение, проходят приработочные испытания, о которых говорилось в п. 3.3.2. Коротко рассмотрим два вида испытаний на надежность – оценочные и приемочные.

3.19.1. Оценочные испытания Они проводятся для решения следующей задачи. Предположим, что разра-

ботаны и готовятся к выпуску элементы нового типа, основанные, например, на новом физическом эффекте. Требуется найти интенсивность отказов этих элементов. Для этого проводятся испытания, о которых было сказано в подразд. 3.3: на n однотипных элементов подается определенная электрическая нагрузка, задается определенный температурный режим и другие внешние условия; в ходе испытаний фиксируются времена отказов отдельных элементов t1,t2 ,...,tk для

дальнейшей их обработки. Если k = n, т.е. за время испытаний отказали все элементы, то задача решается легко: вычисляется оценка среднего времени безотказной работы

ˆ

1

n

 

Tm =

n

i =1ti

(3.30)

и по формуле

λˆ = ˆ1

Tm

определяется оценка интенсивности отказов.

Сложность состоит в том, что современные элементы очень надежны (как уже говорилось, среднее время их безотказной работы составляет более

125

100 лет) и за разумное время испытаний отказывает лишь небольшое число элементов даже при проведении ускоренных испытаний, когда элементы испытываются в более жестких (по сравнению с номинальными) условиях. Для получения необходимых расчетных соотношений в этом случае предлагается воспользоваться методом максимального правдоподобия, изложенным в п. 1.2.1. Напомним, что согласно этому методу необходимо найти вероятность события, которым характеризуются испытания: отказы k элементов в моменты времени t1,t2 ,...,tk и безотказная работа оставшихся элементов в

течение времени испытаний tисп; после этого найденная вероятность макси-

мизируется за счет выбора λ.

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

коном ϕ(t) = λe−λt , найдем вероятность отказа i-го элемента за малый интервал времени t :

P = λe−λti

t ,

i = 1, 2,…,k.

i

 

 

Вероятность того, что некоторый элемент не откажет за все время испытаний tисп, определяется выражением

Pj = e−λtисп , j = k + 1, k + 2,…,n.

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

L = in=1Pi = (λ t)k e−λ(t1 +t2 +...+tk ) (e−λtисп )nk .

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

ˆ

k

λ =

ik=1ti + (n k)tисп

.

Полученная формула допускает интересную качественную проверку. Из предыдущего выражения найдем оценку среднего времени безотказной работы

ˆ

ik=1ti + (n k)tисп

 

Tm =

 

(3.31)

k

 

 

126

и заметим, что числитель этого выражения представляет собой суммарную наработку всех элементов, участвовавших в испытаниях – как отказавших, так и не отказавших; знаменатель – это число отказов; запишем это словами:

ˆ

Суммарная наработка

.

Tm =

Число отказов

 

 

Нетрудно видеть, что такую же структуру имеет выражение (3.30). Кроме того, при k = n соотношение (3.31) переходит в (3.30). Сказанное подтверждает справедливость формулы (3.31).

3.19.2. Приемочные испытания В приемочных испытаниях ставится следующая задача: требуется при-

нять или отбраковать партию элементов по результатам испытаний сравнительно небольшой выборки из этой партии; все элементы партии испытать нельзя по разным причинам. Предполагается, что партия содержит N элементов, выборка – n элементов; задаются D0 и D1 – приемлемое и неприемлемое

числа бракованных элементов в партии соответственно. Понятно, что из-за недостатка информации такие испытания могут сопровождаться ошибками. Различают два вида ошибок: ошибку первого рода – риск поставщика, т.е. вероятность того, что хорошая партия будет забракована из-за случайного попадания в выборку слишком большого числа бракованных элементов, и ошибку второго рода – риск заказчика, т.е. вероятность того, что партия с большим уровнем брака будет принята из-за того, что в выборке случайно оказалось слишком малое число бракованных элементов. Эти вероятности обозначаются α и β соответственно.

Возможны несколько видов испытаний. 1. Однократная выборка

Производится одна выборка объема n, все ее элементы проходят испытания, по результатам которых выяснилось, что в выборке содержится d бракованных элементов. Решение принимается следующим образом: если d c , где с – так называемое приемочное число, то партия принимается, в противном случае она бракуется. Выясним, каковы в этом случае могут быть риски поставщика и заказчика.

Основой всех расчетов является формула, по которой рассчитывается вероятность того, что в выборке оказалось d бракованных элементов:

 

C d

C nd

 

P(d / N, D, n) =

D

N D

,

(3.32)

 

 

 

 

C n

 

 

 

N

 

где CNn – число сочетаний из N элементов по n. По формуле (3.32) определяется вероятность приемки партии:

127

 

 

c C d

C nd

 

 

Pпр =

 

D

N D

.

(3.33)

 

 

 

 

 

 

d =0

 

CNn

 

Зависимость

Pпр = Pпр(D)

называется оперативной характеристикой,

по которой исходя из уровней D0 и D1 можно определить риски поставщика и

заказчика (рис. 3.42): α =1 Pпр(D0 ) , β = Pпр(D1) .

 

Рассмотрим

небольшой

пример.

Пусть N = 200, n =50, c =1,

D0 = 2,

D1 =10. Оперативную характеристику в данном случае удобнее представить в табличном виде (табл. 3.1), откуда следует α = 0,06 и β = 0,24 с учетом рис. 3.42.

Pпр

1

 

 

β

 

 

 

 

 

 

 

 

 

D0

D1

 

 

D

 

 

 

 

 

Рис. 3.42. Оперативная характеристика

 

 

 

 

Данные для построения оперативной характеристики

Таблица 3.1

 

 

 

 

 

 

 

 

 

 

 

 

 

D

0

 

1

2

3

 

4

 

10

Pпр

1,0

 

1,0

0,94

0,85

 

0,74

 

0,24

2. Двукратная выборка Уменьшить риски поставщика и заказчика позволяет двукратная выборка,

когда по результатам первой выборки объема n1 с уровнем брака d1 принимается одно из трех решений: если d1 c1, то партия принимается, если d1 > c2 , то партия бракуется, если c1 < d1 c2 , то производится вторая выборка объема n2 , фиксируется уровень брака d2 , и при d1 + d2 c3 партия принимается, в противном случае она бракуется. Здесь c1, c2 и c3 – приемочные числа.

Для двукратной выборки также может быть построена оперативная характеристика. Как следует из соотношения (3.33), вид этой характеристики зависит

128

от приемочного числа с (для двукратной выборки – от чисел c1, c2 и c3). Изме-

няя эти числа, а также объем выборки n, можно добиться приемлемого уровня рисков заказчика и поставщика.

3. Логическим продолжением перехода от однократной выборки к двукратной является последовательный анализ Вальда. Он состоит в том, что объем выборки не фиксируется, на каждом шаге анализируется один элемент и принимается одно из трех решений: принимать партию, браковать и продолжать испытания, т.е. анализировать очередной элемент. Вальд показал, что для продолжения испытаний требуется, чтобы выполнялось неравенство

β

l

1 −β

,

(3.34)

1−α

α

 

 

 

где l – отношение правдоподобия, равное отношению функций правдоподобия для неприемлемого и приемлемого уровней брака соответственно:

l = L1 . L2

Рассмотрим этот метод детальнее применительно к задаче анализа качества партии по величине интенсивности отказов λ. Здесь L1 и L2 представляют

собой вероятности появления m отказов за время t и определяются формулой Пуассона (3.13):

 

−λ1t

(λ t)m

 

 

−λ0t

(λ

0

t)m

 

L1 = e

1

,

L2 = e

 

 

,

 

m!

 

 

m!

 

 

 

 

 

 

 

откуда

 

 

 

λ

1

m

 

l = e

(λ1

−λ0 )t

 

 

 

 

 

λ

 

.

(3.35)

 

 

 

0

 

 

Процесс испытаний удобно иллюстрировать графически (рис. 3.43). Уравнения линий l0 и l1 определяются из условия (3.34):

l

0

=

 

 

β

,

l =

1−β

,

 

 

 

 

 

 

1

−α

1

α

 

 

 

 

 

 

откуда с учетом соотношения (3.35) можно вывести уравнение линии l0 :

129

 

 

(λ1 −λ0 )t

 

λ

1

 

m

β

 

 

 

 

 

 

 

λ

1

 

 

 

 

 

 

 

β

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

λ0

 

=

1 − α

,

m ln

λ

 

(λ1

−λ0 )t = ln(

 

 

 

) ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

1 −α

 

 

 

 

 

 

откуда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(λ1 −λ0 )t + ln(

 

 

β

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−α

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m =

 

 

 

 

 

 

 

1

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

λ

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln

λ0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

По аналогии уравнение линии l1 получается в следующем виде:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(λ1 −λ0 )t + ln(

1 −β

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m =

 

 

 

 

 

 

 

 

 

 

α

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

λ

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln

λ0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если за

время

β

испытаний

tисп

 

произошло

k отказов, то

 

при

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 −β

 

 

 

(λ1 −λ0 )tисп + ln(

 

)

 

 

(λ1 −λ0 )tисп + ln(

 

 

 

)

 

k <

1 −α

 

партию принимаем, при k >

 

α

 

 

 

λ

 

 

 

 

 

 

 

λ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

ln

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln

λ

 

 

 

 

 

 

 

 

 

 

 

λ0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

бракуем. На рис. 3.43 графически изображен случай, когда партия принимается в случае отказов элементов в моменты времени t1, t2 и t3 .

Последовательный анализ характерен тем, что при фиксированных значениях рисков заказчика и поставщика он позволяет уменьшить средний объем элементов, проходящих испытания.

m

область браковки

l1

l0

область

продолжения

испытаний

область приемки

t1

t2

t3

t

Рис. 3 43. Иллюстрация к последовательным испытаниям

130