Т1, Т2 – продолжительности работы системы, которые соответствуют x1 и x2
n1 и n2 – число ошибок в ПО, обнаруженных в период времени x1x2
Из (6) и (7)
Е0 =
где
Т0i – среднее время безотказной работы, соответствующее периоду отладки xi
Т0i = Тi/ni
Подставляя (8) в (6), имеем:
КS =
Основана на допущении: система проходит через последовательность «исправных» (Up) и неисправных (down) состояний. Состояние называется исправным, если после начала компоновки и тестирования программы, ошибка еще не появилась или уже исправлена, а следовательно ошибка еще не появилась.
Диаграмма состояний:
Запишем д.у. состояния для этой системы:
Pm–k(0) = 0 k = 1, 2… (12)
Pn(0) = 1 (13)
Решение уравнений (10) и (11) можно получить используя любой из методов численного интегрирования.
После того как будут получены вероятности всех состояний, неготовность системы определится с помощью формулы:
U(t) =
Т.к. вероятности зависят от kMAX, то при больших значениях kMAX можно получить величину U(t) близкую к истинной.
данная модуль как и Шумана основана на допущении об экспоненциальном распределении времени безотказной работы ПО. Предполагается, что частота появления ошибок ~ числу остаточных ошибок:
lУМ(xi) = KУМ[E0 – (i – 1)] (15)
KУМ – коэффициент пропорциональности
xi – интервал времени м/ i и u(i-1) ошибкой
С помощью (15) можно найти вероятность безотказной работы:
P(ti) = exp[–KУМ(E0 – i + 1)ti] (16)
Среднее время безотказной работы:
Т0 =
Основа модели – положение о том, что интенсивность появления ошибок ~ не только количеству оставшихся в программе ошибок, но и времени, потраченному на отладку.
"–" рассмотренных моделей:
- при неточном определении первоначального числа ошибок в программе, интенсивность отказов делается отрицательной;
- здесь предполагается, что после обнаружения ошибка ликвидируется и не вносятся новые ошибки.
В целях преодоления "–" была предложена модель, основанная на допущениях о том, что поток возникновения ситуаций, в которых возможен отказ, является Пуассоновским с параметром l. Однако, по мере обнаружения и исправления ошибок, отказы в этих ситуациях возникают с вероятностью <1. Другими словами, этот поток отказов представляется в виде разреженного потока, с переменным коэффициентом разряжения pi, i – номер отказа.
В простейшем случае:
pi = 1 – (1 – pН)qi–1 (18)
где 0<q<1
pН = p1 – начальный коэффициент разряжения потока.
Данная модель подходит не только для прогнозирования интенсивности следующего отказа, но и для прогнозирования параметра потока отказов.
Из (18)
w*(S) =
Приближенное значение оригинала:
w(t) = (1–p1)l– ((1–p1)l)2(1–q)t + ((1–p1)l)3(1–q)(1–q2)t2/2!–...–(–1)n.((1–p1)l)n+1(1–q) ––…(1–qn)tn/n!
с погрешностью не более:
Dw(t) = (–1)n+1((1–p)l)n+2(1–q)…(1–qn+1En+1)/(n+1)! (20)
Приведенные модели представляют интерес прежде всего для прогнозирования отказов в процессе эксплуатации и отладки. Здесь значение параметров определяется в рабочем режиме.
Т.к. надежность программ, которая м.б. достигнута технологическими методами, ограничена, вызвана необходимость
Для этого готовятся 2 или несколько версий программ для решения одной задачи. Желательно, чтобы версии имели существенные различия, т.е. основываться на различных алгоритмах или хотя бы д.б. выполнены различными программами.
Существует идея //-го (одновременного) или последовательного во времени выполнения различных версий программ непосредственно в процессе эксплуатации. Если таких версий 2, то принято говорить о дуальном программировании.
Если обнаружено расхождение в результатах, необходимо определить по к-л дополнительным критериям, какой из результатов правильный.
Дуальное и n-версионное программирование целесообразно использовать в том случае, если имеет место нагруженное резервирование вычислительной аппаратуры.
Модифиционное дуальное программирование на ряду с достаточно точной, но сложной основной программой, использует менее точную, но простую резервную программу. Если при одинаковых исходных данных результаты отличаются на величину > допустимой, делается предположение о том, что отказала основная программа. В качестве правильного результата принимается результат, полученный при помощи резервной программы.
Обозначим погрешность I программы d1, а II – d2. Пусть вероятность отказа I программы – q1, II– q2. При независимости этих программ возможны следующие несовместные события:
1) обе программы работают безотказно
p = 1 – q1– q2 +q1q2
2) откажет основная программа, тогда:
q01 = q1(1 – q2) = q1– q1q2
3) отказ резервной программы
q10 = q2(1 – q1) = q2– q1q2
4) откажут основная и резервная программы
q11 = q22 (погрешность d3)
Следовательно, средняя погрешность не отказавшей системы из 2-х программ:
В случае, когда имеется только основная программа: погрешность d1
вероятность отказа q1
Наряду с вычислительной функцией по иной программе определяется некоторая функция, которая находится с основной, в некоторых соотношениях, которые называются контрольными соотношениями.
Простейшим примером применения контрольных соотношений является вычисление функций sinxи cosx по отдельным соотношениям.
Тестирование – проверка работы программы по результатам ее выполнения на специально подобранных наборах исходных данных или тестах.
Существуют следующие методы тестирования:
1. полное
2. выборочное
3. структурное выборочное
(3) основывается на разделении пространства исходных данных на классы. Каждый класс позволяет подтвердить определенный свойства или работоспособность отдельных элементов структуры программы.
Здесь основная задача: построение генератора тестовых наборов.
Исходя из тестируемой программы Т выбирается набор путей П в структуре программы, который удовлетворяет критериям К (критерий тестирования). Наиболее часто К основываются на структуре программы.
Достаточно простое требование может заключаться в том, что выбранные пути должны перекрывать (задействовать) все операторы или команды программы. Затем генерируются ограничения О, которые позволяют реализовать тот или иной путь на графе программы.
О преобразуются модулем ПВ в ограничения к исходным данным. Тогда с помощью алгоритма А генерируются тестовые наборы числовых значений исходных данных ТН, которые удовлетворяют отдельным ограничениям.
Структура генератора тестов: