Лабораторная работа Модели надежности программного обеспечения
Работа добавлена на сайт bukvasha.net: 2015-10-29Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Отчет по лабораторной работе на тему:
Модели надежности программного обеспечения
1. Модель Шумана основана на следующих допущениях:
· общее число команд в программе на машинном языке постоянно;
· в начале компоновочных испытаний число ошибок равно некоторой постоянной величине, и по мере исправления ошибок их становится меньше. В ходе испытаний программы новые ошибки не вносятся;
· ошибки изначально различимы, по суммарному числу исправленных ошибок можно судить об оставшихся;
· интенсивность отказов программы пропорциональна числу остаточных ошибок.
Предполагается, что до начала тестирования (т.е. в момент t=0) имеется M ошибок. В течение времени тестирования τ обнаруживается ε1(t) ошибок в расчете на одну команду в машинном языке.
Тогда удельное число ошибок на одну машинную команду, оставшихся в системе после времени тестирования τ, равно:
(1)
где I - общее число машинных команд, которое предполагается постоянным в рамках этапа тестирования.
Предполагается, что значение функции количества ошибок Z(t) пропорционально числу ошибок, оставшихся в программе после израсходованного на тестирование времени τ.
Z (t) = C * ε2 (τ),
где С - некоторая постоянная, t - время работы программы без отказов.
Тогда, если время работы программы без отказа t отсчитывается от точки t = 0, а τ остается фиксированным, функция надежности, или вероятность безотказной работы на интервале от 0 до t, равна
(2)
(3)
Нам необходимо найти начальное значение ошибок M и коэффициент пропорциональности С. Эти неизвестные оцениваются путем пропуска функционального теста в двух точках переменной оси отладки ta и tв, выбранных так, что ε1(ta)<ε1(td).
В процессе тестирования собирается информация о времени и количестве ошибок на каждом прогоне, т.е. общее время тестирования τ складывается из времени каждого прогона:
τ = τ1 + τ2 + τ3 + … + τn.
Предполагая, что интенсивность появления ошибок постоянна и равна λ, можно вычислить ее как число ошибок в единицу времени,
(4)
где Ai - количество ошибок на i - ом прогоне.
Тогда . (5)
Имея данные для двух различных моментов тестирования ta и tв, можно сопоставить уравнения (3) при τa и τb:
(6)
(7)
Из соотношений (6) и (7) найдем неизвестный параметр С и М:
(8)
(9)
Получив неизвестные M* и C*, можно рассчитать надежность программы по формуле (2).
Пример 1.
Программа содержит 2 000 командных строк, из них, до начала эксплуатации (после периода отладки), 15 командных строк содержат ошибки. После
20 дней работы обнаружена 1 ошибка. Найти среднее время безошибочной работы программы и интенсивность отказов программы при коэффициенте пропорциональности, равном 0,7.
I= | 2000 |
M= | 15 |
t= | 20 |
x= | 1 |
C= | 0,7 |
| |
| |
E1(t)= | 0,0005 | | |
E2(t)= | 0,007 | | |
P(t)= | 0,906649 | | |
tср= | 204,0816 | | |
λ= | 0,0049 | - интенсивность отказов |
Пример 2.
На условиях примера 1 определить вероятность безошибочной работы программы в течение 90 суток.
I= | 2000 | ||
M= | 15 | ||
t= | 90 | ||
x= | 1 | ||
C= | 0,7 | ||
| |
Пример 3.
Определить первоначальное количество возможных ошибок в программе, содержащей 2 000 командных строк, если в течение первых 60 суток эксплуатации было обнаружено 2 ошибки, а за последующие 40 суток была обнаружена одна ошибка. Определить T0 – среднее время безошибочной работы, соответствующее первому и второму периоду эксплуатации программы и коэффициент пропорциональности.
I= | 2000 | | | | |
t1= | 60 | суток | | | |
t2= | 100 | суток | | | |
x1= | 2 | ош. | | | |
x2= | 3 | ош. | | | |
T0= | 30 | 33,33333 | | | |
Интенсивности отказов: λ1= | 0,033333 | | | | |
λ2= | 0,03 | | | | |
C= | 6,666667 | | | | |
E1(t1)= | 0,001 | | | | |
E2(t2)= | 0,0015 | | | | |
M= | 12 | | | | |
Л2/Л1= | 0,9 | ||||
2. Модель Миллса. Пусть в процессе тестирования обнаружено n исходных ошибок и v из S рассеянных ошибок. Тогда оценка N - первоначальное число ошибок в программе - составит
.
Вторая часть модели связана с проверкой гипотезы выражения и тестирования N.
Рассмотрим случай, когда программа содержит К собственных ошибок и S рассеянных ошибок. Будем тестировать программу до тех пор, пока не обнаружим все рассеянные ошибки. В то же время количество обнаруженных исходных ошибок накапливается и запоминается. Далее вычисляется оценка надежности модели:
(11)
как вероятность того, что в программе содержится K ошибок.
Величина С является мерой доверия к модели и показывает вероятность того, насколько правильно найдено значение N. Эти два связанных между собой по смыслу соотношения образуют полезную модель ошибок: первое предсказывает возможное число первоначально имевшихся в программе ошибок, а второе используется для установления доверительного уровня прогноза.
Формула для расчета С в случае, когда обнаружены не все искусственно рассеянные ошибки, модифицирована таким образом, что оценка может быть выполнена после обнаружения v (v£S) рассеянных ошибок:
1 (12)
где числитель и знаменатель формулы при n £ К являются биноминальными коэффициентами.
Пример 4
.
Предположим, что в программе имеется 3 собственных ошибки. Внесём ещё 6 ошибок случайным образом.
В процессе тестирования было найдено:
1) 6 ошибок из рассеянных и 2 собственных;
2) 5 ошибок из рассеянных и 2 собственных;
3) 5 ошибок из рассеянных и 4 собственных.
Найти надёжность по модели Миллса - С.
K= | | 3 | ош - собственные | | | ||||||||||||
S= | | 6 | ош - случайные | | | ||||||||||||
| | | | | | ||||||||||||
1) | | | | | | ||||||||||||
n= | | 2 | | | | ||||||||||||
v= | | 6 | | | | ||||||||||||
C= | | 0,6 | | | | ||||||||||||
| | | | | | ||||||||||||
2) | | | | | | ||||||||||||
n= | | 2 | | | | ||||||||||||
v= | | 5 | | | | ||||||||||||
C= | | 0,333333 | | | | ||||||||||||
2! | | 4! | 6! | 8! | 10! | ||||||||||||
2 | | 24 | 720 | 40320 | 3628800 | ||||||||||||
| | | | | |||||||||||||
| | | | | |||||||||||||
3) | | | | | |||||||||||||
n= | 4 | | | | |||||||||||||
v= | 5 | | | | |||||||||||||
C= | 1 | по формуле (12) | | ||||||||||||||
3. Простая интуитивная модель. Использование этой модели предполагает проведение тестирования двумя группами программистов (или двумя программистами в зависимости от величины программы) независимо друг от друга, использующими независимые тестовые наборы. В процессе тестирования каждая из групп фиксируют все найденные ею ошибки.
Пусть первая группа обнаружила n1 ошибок, вторая n2 , n12 - это число ошибок, обнаруженных как первой, так и второй группой.
Обозначим через N неизвестное количество ошибок, присутствующих в программе до начала тестирования. Тогда можно эффективность тестирования каждой из групп определить как
.
Эффективность тестирования можно интерпретировать как вероятность того, что ошибка будет обнаружена. Таким образом, можно считать, что первая группа обнаруживает ошибку в программе с вероятностью , вторая - с вероятностью . Тогда вероятность p12 того, что ошибка будет обнаружена обеими группами, можно принять равной . С другой стороны, так как группы действуют независимо друг от друга, то р12 = р1р2. Получаем:
Отсюда получаем оценку первоначального числа ошибок программы:
.
Пример 5
.
В процессе тестирования программы 1-я группа нашла 15 ошибок, 2-я группа нашла 25 ошибок, общих ошибок было 5. Определить надёжность по простой интуитивной модели.
n1= | | 15 | ош |
n2= | | 25 | ош |
общ.ош= | | 5 | ош |
| | | |
N= | | 75 | |
p1= | | 0,2 | |
p2= | | 0,333333 | |
p12= | | 0,066667 | |
4. Модель Коркорэна
Применение модели предполагает знание следующих ее показателей:
· модель содержит изменяющуюся вероятность отказов для различных источников ошибок и соответственно разную вероятность их исправления;
· в модели используются такие параметры, как результат только N испытаний, в которых наблюдается Ni ошибок i-го типа;
· выявление в ходе N испытаний ошибки i-го типа появляется с вероятностью аi.
Показатель уровня надежности R вычисляют по следующей формуле:
где N0 - число безотказных (или безуспешных) испытаний, выполненных в серии из N испытаний, k - известное число типов ошибок, ai — вероятность выявления при тестировании ошибки i-го типа,
Yi - вероятность появления ошибок, при Ni > 0, Yi = ai, при Ni = 0, Yi = 0.
Пример 6
.
Было проведено 100 испытаний программы. 20 из 100 испытаний прошли безуспешно, а в остальных случаях получились следующие данные:
Тип ошибки | Вероятность появления ошибки ai | Число появления ошибок Ni при испытании | Yi | (Yi*(Ni-1))/N |
1. Ошибки вычисления | 0,09 | 5 | 0,09 | 0,0036 |
2. Логические ошибки | 0,26 | 25 | 0,26 | 0,0624 |
3. Ошибки ввода/вывода | 0,16 | 3 | 0,16 | 0,0032 |
4. Ошибки манипулирования данными | 0,18 | 0 | 0 | 0 |
5. Ошибки сопряжения | 0,17 | 11 | 0,17 | 0,017 |
6. Ошибки определения данных | 0,08 | 3 | 0,08 | 0,0016 |
7. Ошибки в БД | 0,06 | 4 | 0,06 | 0,0018 |
Оценить надёжность по модели Коркорэна.
Исходные данные: | |
N= | 100 |
N0= | 20 |
R= | 0,2896 |
Пример 7. Было проведено 100 испытаний программы. 20 из 100 испытаний прошли безуспешно, а в остальных случаях получились следующие данные:
Тип ошибки, i | Вероятность появления ошибки. ai | Число появления ошибок Ni при испытании | Yi | (Yi*(Ni-1))/N |
1 | 0,09 | 8 | 0,09 | 0,0063 |
2 | 0,26 | 0 | 0 | 0 |
3 | 0,17 | 4 | 0,17 | 0,0051 |
4 | 0,2 | 25 | 0,2 | 0,048 |
5 | 0,8 | 25 | 0,8 | 0,192 |
6 | 0,08 | 3 | 0,08 | 0,0016 |
7 | 0,16 | 5 | 0,16 | 0,0064 |
Оценить надёжность программы по модели Коркорэна.
Исходные данные: | |
N= | 100 |
N0= | 20 |
R= | 0,4594 |