Пособие ТОКН
.pdfP(τ) = Φ( |
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исп )n−k .
Предлагается проверить, что максимум этой вероятности достигается при
ˆ |
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 n−d |
|
|
P(d / N, D, n) = |
D |
N −D |
, |
(3.32) |
|
|
|||
|
|
C n |
|
|
|
|
N |
|
где CNn – число сочетаний из N элементов по n. По формуле (3.32) определяется вероятность приемки партии:
127
|
|
c C d |
C n−d |
|
|||
|
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