Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Надёжность информационных систем. Лабораторный практикум.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

5.Контрольные вопросы

1.Методика расчёта структурных схем с параллельным соединением элементов.

2.Методика расчёта структурных схем надёжности со смешанным соединением элементов.

3.Структурная схема надёжности произвольного вида.

4.Основы расчёта надёжности при постепенных отказах.

5.Основы расчёта надёжности при внезапных отказах.

Глава 5. НАДЁЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

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

По аналогии с терминами, принятыми для обозначения показателей на-

дёжности ТУ, под надёжностью программного обеспечения (ПО) понимается свойство этого обеспечения выполнять заданные функции, сохраняя свои характеристики в установленных пределах при определённых условиях эксплуатации.

Надёжность ПО определяется его безотказностью и восстанавливаемо-

стью. Безотказность ПО – это свойство сохранять работоспособность при использовании его для обработки информации в ИС. Безотказностью программного обеспечения оценивается вероятность его работы без отказов при определённых условиях внешней среды в течение заданного периода наблюдения.

В приведённом определении под отказом ПО понимается недопустимое отклонение характеристик функционирования этого обеспечения от предъявляемых требований. Определённые условия внешней среды – это совокупность входных данных и состояние самой ИС. Заданный период наблюдения соответствует времени, необходимому для выполнения на ЭВМ решаемой задачи.

Безотказность ПО может характеризоваться средним временем возникновения отказов при функционировании программы. При этом предполагается, что аппаратные средства ЭВМ находятся в исправном состоянии. С точки зрения надёжности, принципиальное отличие ПО от аппаратных средств состоит в том, что программы не изнашиваются и их выход из строя из-за поломки невозможен. Следовательно, характеристики функционирования ПО зависят только от его качества, предопределяемого процессом разработки. Это означа-

88

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

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

2. Основные причины отказов программного обеспечения

Основными причинами, вызывающими нарушения нормального функционирования ПО, являются:

ошибки, скрытые в самой программе;

искажение входной информации;

неверные действия пользователя;

неисправность аппаратных средств ИС, на которой реализуется вычислительный процесс.

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

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

Логические ошибки. Эта группа ошибок является причиной искажения алгоритма решения задачи. К ошибкам подобного рода можно отнести неверную передачу управления, неверное задание диапазона изменения параметра цикла, неверное условие и другие ошибки.

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

Ошибки манипулирования данными. К числу таких ошибок относятся: не-

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

89

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

Ошибки сопряжений. Группа этих ошибок вызывает неверное взаимодействие ПО с другими программами или подпрограммами, с системными программами, устройствами ЭВМ или входными данными.

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

Неверные действия пользователя связаны с неправильной интерпретацией сообщений, с неправильными действиями пользователя при работе в диалоговом режиме. Часто эти ошибки являются следствием некачественной программной документации.

Неисправность аппаратных средств ИС. Эти неисправности оказывают определённое влияние на характеристики надёжности ПО. Появление отказов или сбои в работе аппаратуры приводят к нарушению хода обработки информации и, как следствие, могут искажать как исходные данные, так и саму программу.

Следствием появления ошибок в программе является её отказ. Последствия отказов ПО можно разделить на:

полное прекращение выполнения функций программы;

кратковременное нарушение хода обработки информации в ИС. Степень серьёзности последствий отказов ПО оценивается соотношением

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

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

3. Основные показатели надёжности программного обеспечения

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

Таким образом, основными показателями надёжности ПО являются:

вероятность безотказной работы программы p(t) , представляющая собой вероятность того, что ошибки программы не проявятся в интервале вре-

мени (0, t);

90

вероятность отказа программы q(t) или вероятность события отказа ПО до момента времени t;

интенсивность отказов программы λ(t);

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

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

4. Модели надёжности программного обеспечения

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

Аналитические модели дают возможность рассчитывать количественные показатели надёжности, основываясь на данных о поведении программы в процессе тестирования (измеряющие и оценивающие модели).

Эмпирические модели базируются на анализе структурных особенностей программ. Они рассматривают зависимость показателей надёжности от числа межмодульных связей, количества циклов в модулях и т.д. Часто эмпирические модели не дают конечных результатов показателей надёжности, однако они включены в классификационную схему, так как развитие этих моделей позволяет выявлять взаимосвязь между сложностью АСОД и его надёжностью. Эти модели можно использовать на этапе проектирования ПО, когда осуществляется разбивка на модули и известна его структура.

Аналитические модели представлены двумя группами: динамические модели и статические. В динамических появление отказов рассматривается во времени. В статических моделях появление отказов не связывают со временем, а учитывают только зависимость количества ошибок от числа тестовых прогонов (по области ошибок) или зависимость количества ошибок от характеристики входных данных (по области данных).

Для использования динамических моделей необходимо иметь данные о появлении отказов во времени. Если фиксируются интервалы каждого отказа, то получается непрерывная картина появления отказов во времени (группа динамических моделей с непрерывным временем). С другой стороны, может фиксироваться только число отказов за произвольный интервал времени.

91

Лабораторная работа 10

ОЦЕНКА НАДЁЖНОСТИ ПРОГРАММНЫХ СРЕДСТВ. ДИНАМИЧЕСКАЯ МОДЕЛЬ ШУМАНА

Цель: практическое освоение студентами научно-теоретических материалов по теме занятия и закрепление умений по моделированию надёжности программного обеспечения.

Материально-техническое обеспечение: индивидуальные задания выпол-

няются с использованием табличного процессора или математического пакета.

1. Основные теоретические сведения

Исходные данные для модели Шумана, которая относится к динамическим моделям дискретного времени, собираются в процессе тестирования ав-

томатизированной системы обработки данных (АСОД) в течение фиксиро-

ванных или случайных временных интервалов. Каждый интервал – это стадия, на которой выполняется последовательность тестов и фиксируется некоторое число ошибок.

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

Базовые понятия модели заимствованы из теории надёжности аппаратных средств.

R(t) – функция надёжности – вероятность того, что ни одна ошибка не

появится на интервале от 0 до t;

F (t) – функция отказов – вероятность того, что ошибка появится на интервале от 0 до t.

F (t) =1R(t) ;

f (t) – плотность вероятности для F(t), т.е.

f (t) = dF (t) = − dR(t) , dt dt

z(t) – функция риска – условная вероятность того, что ошибка появится на интервале от 0 до t + t , при условии, что до t ошибок не было.

92

Если T – время появления ошибки, то

z(t) t = P t <T < t +

 

P(t <T < t + t )

 

F (t + t )F (t )

 

t

T > t}=

=

.

P(T > t )

 

 

 

 

 

R(t )

Поделив обе части на t и устремив

t

к 0, переходим к пределу

z(t) =

f (t)

= −

 

1

 

dR(t)

.

R(t)

 

R(t)

 

 

 

 

 

dt

Решая это дифференциальное уравнение относительно R(t) при начальном условии R(0) =1 , получим

 

t

 

R(t) =exp

z(x)dx

;

 

0

 

tср – среднее время между отказами, т.е.

 

 

 

tср = R(t)dt .

 

0

 

 

В рассматриваемой модели предполагается, что значение функции z(t)

пропорционально числу ошибок, оставшихся в ПО после израсходованного на тестирование времени τ, т.е.

z(t) =C εr (τ) ,

(1)

где С – некоторая константа; t – время работы ПО без отказа; εr (τ)

– удельное

число ошибок на одну машинную команду, оставшихся в системе после времени тестирования τ, т.е.

εr (τ) =

Eт

−εc (τ) ,

(2)

 

 

Iт

 

где Iт – общее число машинных команд, которое предполагается в рамках этапа тестирования; εc (τ) – удельное количество обнаруженных ошибок на одну

машинную команду в течение времени τ; Eт – число ошибок до начала тести-

рования. Тогда

 

 

 

 

 

 

 

E

т

 

 

 

 

 

 

R(t,τ) =exp C

 

 

−ε

c

(τ) t ;

(3)

I

 

 

 

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tcp =

 

 

 

 

 

1

 

 

 

 

 

 

 

.

 

(4)

 

 

E

т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

−ε

 

 

(τ)

 

 

 

 

 

I

 

 

 

 

 

 

 

 

 

 

т

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

93

Из величин, входящих в формулы (3) и (4), не известны начальное значение ошибок в ПП (Eт) и коэффициент пропорциональности – С. Для их определения прибегают к следующим рассуждениям. В процессе тестирования собирается информация о времени и количестве ошибок на каждом прогоне, т.е. общее время тестирования τ складывается из времени каждого прогона.

Полагая, что интенсивность появления ошибок постоянна и равна λ, можно вычислить её как число ошибок в единицу времени:

 

k

 

 

 

Ai

 

 

λ =

i=1

;

(5)

τ

 

 

 

tcp =

τ

 

,

 

k

 

 

Ai

 

 

i=1

где Аi – количество ошибок на i-м прогоне.

Имея данные для двух различных моментов тестирования τа и τb , которые выбираются произвольно с учётом требования εc (τb ) > εc (τa ) , можно сопоставить уравнения (4) и (5) при τа и τb и получить следующие выражения:

Eт =

Iт (λτa εc (τa )−λτb εc (τb ))

, C =

 

λτa

,

λτa

−λτb

 

Eт

−εc (τa )

 

 

 

 

 

 

 

 

 

 

 

 

Iт

 

с помощью которых рассчитывается надёжность программы по формуле (3).

2. Примеры решения задач

Задача 1. Программа содержит I = 2000 командных строк, из них, до начала эксплуатации (после периода отладки), M = 15 командных строк содержат ошибки. После t = 20 дней работы обнаружена x = 1 ошибка. Найти среднее время безошибочной работы программы и интенсивность отказов программы при коэффициенте пропорциональности, равном C = 0,7.

Решение Найдём удельное число ошибок на одну программу команды:

ε (τ) =

M x

=

15 1

= 0,0004 .

 

 

1

I t

 

2000 20

 

 

Найдём вероятность безотказной работы программы за время тестирования:

 

 

M

 

 

 

 

 

15

 

 

 

P(t,τ) =exp

C

I

−ε1

(τ) t

=exp

0,7

 

0,0005 20

 

=0,9067 .

 

 

 

 

 

 

 

2000

 

 

 

94

Найдём удельное число оставшихся ошибок:

ε2

(τ) = M −ε1 (τ) =

15

0,0005 =0,007.

2000

 

I

 

Найдём среднее время безошибочной работы программы:

tср =

1

=

1

=204,0816.

C ε2 (τ)

0,7 0,007

 

 

 

Найдём интенсивность отказов программы:

λ = 1 =0,0049.

tср

Задача 2. Определить первоначальное количество возможных ошибок в программе, содержащей I = 2000 командных строк, если в течение первых t1 = 60 суток эксплуатации было обнаружено x1 = 2 ошибки, а за последующие t2 = 40 суток была обнаружена одна ошибка. Определить Tср – среднее время безошибочной работы, соответствующее первому и второму периоду эксплуатации программы и коэффициент пропорциональности.

Решение Найдём интенсивность отказов программы на первом интервале времени:

λ =

x1

=

2

= 0,0333 .

 

 

1

t1

60

 

 

 

Найдём интенсивность отказов программы на втором интервале времени:

λ2

=

x2

=

1

= 0,0025 .

 

 

 

 

t2

40

 

Найдём среднее время безошибочной работы:

tср1 =

1

= 30,030 сут; tср2 =

1

= 40 сут.

0,0333

0,0025

 

 

 

Таким образом, Тср находится в интервале от 30,030 до 40 сут. Найдём удельное число ошибок на первом и на втором интервалах:

ε (τ) =

x1

=

2

= 0,001; ε

2

(τ) =

x2

=

1

= 0,0005 .

 

 

 

 

1

It

 

2000

 

 

It

 

2000

 

 

 

 

 

 

 

 

Найдём коэффициент пропорциональности:

λ2 = 0,0025 = 0,75 . λ1 0,0333

Найдём первоначальное число ошибок в программе:

M = (ε2 (τ)+ ε1 (τ)) I = (0,0005 + 0,001) 2000 = 3 .

95

3. Варианты индивидуальных заданий

Программа содержит I командных строк, из них, до начала эксплуатации (после периода отладки), M командных строк содержат ошибки. После t дней работы обнаружена 1 ошибка. Найти среднее время безошибочной работы программы и интенсивность отказов программы при коэффициенте пропорциональности, равном С. Исходные данные приведены в таблице.

Исходные данные для задачи

I

M

t

C

варианта

 

 

 

 

 

 

 

 

 

1

2002

13

18

0,8

 

 

 

 

 

2

2004

11

16

0,6

 

 

 

 

 

3

2000

10

22

0,5

4

2001

14

24

0,7

 

 

 

 

 

5

2006

8

20

0,9

 

 

 

 

 

6

2003

9

27

0,7

7

2002

16

28

0,5

 

 

 

 

 

8

2007

14

21

0,8

 

 

 

 

 

9

2010

20

15

0,6

10

2005

15

25

0,5

 

 

 

 

 

I

M

t

C

варианта

 

 

 

 

 

 

 

 

 

11

2001

12

17

0,8

 

 

 

 

 

12

2003

10

15

0,6

 

 

 

 

 

13

1999

9

21

0,5

14

2000

13

23

0,7

 

 

 

 

 

15

2005

7

19

0,9

 

 

 

 

 

16

2002

8

26

0,7

17

2001

15

27

0,5

 

 

 

 

 

18

2006

13

20

0,8

 

 

 

 

 

19

2009

19

14

0,6

20

2004

14

24

0,5

 

 

 

 

 

4. Отчёт по работе

Отчёт о выполненной работе оформляется индивидуально каждым студентом.

В первой части отчёта должны быть приведены название и цель работы. Вторая часть отчёта должна содержать описание решения индивидуаль-

ного задания.

В заключительной части отчёта должны быть приведены выводы, содержащие научный анализ полученных результатов.

5.Контрольные вопросы

1.Что понимается под термином «надёжность программного обеспечения» (ПО)?

2.Что понимается под терминами «безотказность ПО» и «отказ ПО»?

3.Основные причины отказов ПО.

4.Особенности аналитических моделей ПО.

5.Особенности эмпирических моделей ПО.

6.Особенности модели Шумана.

96

Лабораторная работа 11

ОЦЕНКА НАДЁЖНОСТИ ПРОГРАММНЫХ СРЕДСТВ. СТАТИЧЕСКАЯ МОДЕЛЬ МИЛЛСА

Цель: практическое освоение студентами научно-теоретических материалов по теме занятия и закрепление умений по моделированию надёжности программного обеспечения.

Материально-техническое обеспечение: индивидуальные задания выпол-

няются с использованием табличного процессора или математического пакета.

1. Основные теоретические сведения

Статическая модель Миллса позволяет оценить не только количество ошибок до начала тестирования, но и степень отлаженности программ. Для применения модели до начала тестирования в программу преднамеренно вносят ошибки. Далее считают, что обнаружение преднамеренно внесённых и так называемых собственных ошибок программы равновероятно.

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

N =

WS

,

(1)

 

 

V

 

где W количество преднамеренно внесённых в программу ошибок до начала тестирования; V – количество обнаруженных в процессе тестирования ошибок из числа преднамеренно внесённых; S количество «собственных» ошибок программы, обнаруженных в процессе тестирования.

Если продолжать тестирование до тех пор, пока все ошибки из числа преднамеренно внесённых не будут обнаружены, степень отлаженности программы С можно оценить с помощью выражения

 

1 ,

если S > r;

 

 

W

 

 

(2)

С =

 

, если S r,

 

 

 

 

W + r +1

 

где S и W = V (равенство значений W и V в данном случае имеет место, поскольку считается, что все преднамеренно внесённые ошибки обнаружены) имеют тот же смысл, что и в предыдущем выражении (1), а r означает верхний предел (максимум) предполагаемого количества «собственных» ошибок в программе.

Выражения (1) и (2) представляют собой статическую модель Миллса. Необходимо заметить, что если тестирование будет закончено преждевременно (т.е. раньше, чем будут обнаружены все преднамеренно внесённые ошибки), то вместо выражения (2) следует использовать более сложное комбинаторное выражение (3). Если обнаружено только V ошибок из W преднамеренно внесённых, используется выражение

97

 

 

1,

если S > r;

 

 

 

S

 

 

 

 

 

 

 

 

 

 

(3)

С =

 

V 1

 

, если S r,

 

S +r

+1

 

 

 

 

 

r +V

 

 

 

 

 

 

 

где в круглых скобках записаны обозначения для числа сочетаний из S элементов по V – 1 элементов в каждой комбинации и числа сочетаний из S + r + 1 элементов по r + V элементов в каждой комбинации.

2. Примеры решения задач

Задача 1. В программу преднамеренно внесли (посеяли) 10 ошибок. В результате тестирования обнаружено 12 ошибок, из которых 10 ошибок были внесены преднамеренно. Все обнаруженные ошибки исправлены. До начала тестирования предполагалось, что программа содержит не более 4 ошибок. Требуется оценить количество ошибок до начала тестирования и степень отлаженности программы.

Решение Для оценки количества ошибок до начала тестирования используем фор-

мулу (1).

Нам известно:

количество внесённых в программу ошибок W = 10;

количество обнаруженных ошибок из числа внесённых V =10;

количество «собственных» ошибок в программе S = 12 – 10 = 2. Подставив указанные значения в формулу, получим оценку количества

ошибок:

N = WS = 10 2 = 2 .

V 10

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

Для оценки отлаженности программы используем уравнение (2). Нам известно:

количество обнаруженных «собственных» ошибок в программе S = 2;

количество предполагаемых ошибок в программе r = 4;

количество преднамеренно внесённых и обнаруженных ошибок W = 10. Очевидно, что обнаружено меньшее число «собственных» ошибок, чем

количество предполагаемых ошибок в программе (S < r). Для оценки отлаженности программы используем уравнение

С =

W

 

=

 

10

=0,67.

 

 

 

W +r +1

10

+4 +1

Степень отлаженности программы равна 0,67, что составляет 67%.

98

Задача 2. В программу было преднамеренно внесено (посеяно) 7 ошибок. В результате тестирования обнаружено 11 ошибок, из которых 7 ошибок были внесены преднамеренно. Все обнаруженные ошибки исправлены. До начала тестирования предполагалось, что программа содержит не более 5 ошибок. Требуется оценить количество ошибок до начала тестирования и степень отлаженности программы.

Решение Для оценки количества ошибок до начала тестирования используем фор-

мулу (1). Нам известно:

количество внесённых в программу ошибок W = 7;

количество обнаруженных ошибок из числа внесённых V = 7;

количество «собственных» ошибок в программе S = 11 – 7 = 4. Подставив указанные значения в формулу, получим оценку

N = W S = 7 4 =3

V 7

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

Для оценки отлаженности программы используем уравнение (2). Нам известно:

количество обнаруженных «собственных» ошибок в программе S = 4;

количество предполагаемых ошибок в программе r = 5;

количество преднамеренно внесённых и обнаруженных ошибок W = 7. Очевидно, что обнаружено меньшее число «собственных» ошибок, чем

количество предполагаемых ошибок в программе (S < r). Для оценки отлаженности программы используем уравнение

С =

W

 

=

 

7

= 0,54.

 

 

 

W + r +1

7

+5 +1

Степень отлаженности программы равна 0,54, что составляет 54%. Задача 3. В программу было преднамеренно внесено (посеяно) 14 оши-

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

Решение Если тестирование закончено раньше, чем обнаружены все преднамерен-

но внесённые ошибки, то следует применять более сложное комбинаторное выражение (3).

Из условия задачи нам известно:

количество внесённых в программу ошибок W = 14;

количество обнаруженных ошибок из числа внесённых V = 6;

99

количество «собственных» ошибок в программе S = 9 – 6 = 3;

количество предполагаемых ошибок r = 4.

Поскольку S < r (а именно 3 < 4), подставим указанные значения в нижнюю формулу выражения (3) и получим оценку:

 

 

 

 

 

 

 

 

5!

 

 

С =

СVS1

=

C631

=

C53

=

 

3! (5 3)!

= 0,22.

Cr+V

C4+6

C10

 

10!

 

 

S +r+1

 

3+4+1

 

8

 

 

 

 

 

8! (10 8)!

Таким образом, отлаженность программы составляет 2,2%.

Задача 4. В программу было преднамеренно внесено (посеяно) 14 ошибок. Предположим, что в программе перед началом тестирования было 14 ошибок. В процессе четырёх тестовых прогонов было выявлено следующее количество ошибок.

Номер прогона

1

2

3

4

 

 

 

 

 

V

6

4

2

2

S

4

2

1

1

 

 

 

 

 

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

Решение Количество ошибок перед каждым прогоном будем оценивать в соответ-

ствии с выражением (1). Перед каждой последующей оценкой количества ошибок и степени отлаженности программы необходимо корректировать значения внесённых W и предполагаемых r ошибок с учётом выявленных и устранённых после каждого прогона тестов. Степень отлаженности программы на всех прогонах, кроме последнего, рассчитывается по комбинаторной формуле (3).

Определяя показатели программы по результатам первого прогона, необходимо учитывать, что W1 = 14; S1 = 4; V1 = 6, тогда

N1 = W1 S1 = 14 4 =9 .

V1 6

По результатам второго прогона корректируем исходные данные для оценки параметров: Kr2 = 14 – 4 = 10; W2 = 14 – 6 = 8; S2 = 2; V2 = 4 , следова-

тельно,

N2 = W2 S2 = 8 2 = 4 .

V2 4

100

Корректировка исходных данных после третьего прогона даёт следующие

данные: Kr

= 10 – 2 = 8, W3 = 8 – 4 = 4; S3 = 1; V3 = 2, откуда количество оши-

3

 

 

 

 

 

 

 

бок определится следующим образом:

 

 

 

 

 

 

N3

= W3 S3 = 4 1 = 2 .

 

 

 

 

V3

 

2

 

 

После четвёртого прогона программы получим следующие исходные

данные: Kr

= 8 – 1 = 7, W4 = 4 – 2 = 2; S4 = 1; V4 = 2, тогда

 

4

 

 

 

 

 

 

 

 

 

N4

= W4 S4 = 2 1 = 4 .

 

 

 

 

V4

 

2

 

 

Поскольку после четвёртого прогона все «посеянные» ошибки выявлены

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

упрощённой формулой

 

W

 

2

 

 

 

 

С =

=

=0,2 .

 

 

 

W

+r +1

2

+7 +1

 

 

Таким образом, в предположении, что до начала четвёртого прогона в про-

грамме оставалось 7 ошибок, степень отлаженности программы составляет 20%.

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

приведён ниже.

 

 

 

 

 

 

Номер прогона

1

 

2

 

3

4

N

 

9

 

4

 

2

1

Графически динамика количества ошибок по результатам тестирования

программы показана на рис. 1.

 

 

 

 

 

10

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

8

 

 

 

 

 

 

ошибок

7

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

Количество

5

 

 

 

 

 

 

4

 

4

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

2

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

1

 

2

 

 

3

4

 

 

 

Номер прогона

 

Рис. 1. Динамика количества ошибок при тестировании программы

101

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

3. Варианты индивидуальных заданий

Задача. В программу было преднамеренно внесено (посеяно) W ошибок. В результате тестирования обнаружено M ошибок, из которых V ошибок были внесены преднамеренно. Все обнаруженные ошибки исправлены. До начала тестирования предполагалось, что программа содержит не более r ошибок. Требуется оценить количество ошибок до начала тестирования и степень отлаженности программы. Исходные данные приведены в таблице.

Исходные данные для задачи

M

W

V

r

варианта

 

 

 

 

 

 

 

 

 

1

12

6

6

8

 

 

 

 

 

2

13

3

3

12

 

 

 

 

 

3

14

7

7

9

 

 

 

 

 

4

15

5

5

11

 

 

 

 

 

5

11

6

6

7

 

 

 

 

 

6

10

4

4

8

 

 

 

 

 

7

8

3

3

6

 

 

 

 

 

8

7

4

4

5

 

 

 

 

 

9

21

8

8

15

 

 

 

 

 

10

22

5

5

19

 

 

 

 

 

M

W

V

r

варианта

 

 

 

 

 

11

23

6

6

19

 

 

 

 

 

12

25

5

5

22

 

 

 

 

 

13

19

9

9

12

 

 

 

 

 

14

18

6

6

13

 

 

 

 

 

15

17

5

5

14

 

 

 

 

 

16

16

4

4

13

 

 

 

 

 

17

9

3

3

7

 

 

 

 

 

18

27

7

7

21

 

 

 

 

 

19

26

6

6

21

 

 

 

 

 

20

28

5

5

25

 

 

 

 

 

4. Отчёт по работе

Отчёт о выполненной работе оформляется индивидуально каждым студентом.

В первой части отчёта должны быть приведены название и цель работы. Вторая часть отчёта должна содержать описание решения индивидуаль-

ного задания.

В заключительной части отчёта должны быть приведены выводы, содержащие научный анализ полученных результатов.

102

5.Контрольные вопросы

1.Что понимается под термином «надёжность программного обеспечения» (ПО)?

2.Что понимается под терминами «безотказность ПО» и «отказ ПО»?

3.Основные причины отказов ПО.

4.Особенности аналитических моделей ПО.

5.Особенности эмпирических моделей ПО.

6.Особенности модели Миллса.

Лабораторная работа 12

ОЦЕНКА НАДЁЖНОСТИ ПРОГРАММНЫХ СРЕДСТВ. МОДЕЛЬ НЕЛЬСОНА

Цель: практическое освоение студентами научно-теоретических материалов по теме занятия и закрепление умений по моделированию надёжности программного обеспечения.

Материально-техническое обеспечение: индивидуальные задания выпол-

няются с использованием табличного процессора или математического пакета.

Оценка: 10 баллов.

1. Основные теоретические сведения

Классической измерительной моделью надёжности является известная модель Нельсона, предложенная в 1978 г. Модель основана на выделении областей исходных данных Ei покрывающих все множество вариантов их использования в программе F.

Множество результатов выполнения программы F(E) определяется композицией результатов по всем вариантам данных F(Ei):

F (E) =UF (Ei ) .

(1)

i

 

Выражение (1) позволяет определить программу как описание некоторой вычисляемой функции F на множестве всех значений наборов входных данных Е.

Если обозначить Fф(Ei) как множество фактических результатов выполнения программы на наборе Ei , то множество правильных значений будет определяться условием:

i

F (Ei ) Fф (Ei ) )

≤ εi ,

(2)

где εi – допустимое расхождение между правильным (эталонным) и фактическим результатом выполнения программы на наборе Еi .

103

Рабочим отказом считается ситуация, при которой выполняется условие

i

F (Ei ) Fф (Ei) )

> εi

(3)

или программа «зацикливается» (выполняется бесконечное продолжение работы программы, при котором программа не может закончиться). При этом предполагается, что выбор любого набора исходных данных Ei E равновероятен.

Мощность всего множества наборов исходных данных Е обозначим символом N. Множество, состоящее из всех наборов Ei, для которых получены неудовлетворительные результаты, обозначим E0. Мощность множества E0 обозначим N0. Совокупность действий, включающих ввод Ei и выполнение программы, которое заканчивается получением результата Fф(Ei) или рабочим отказом, называется прогоном программы. Следует заметить, что входные данные, образующие набор Ei , не обязательно должны подаваться на вход одновременно.

При этих допущениях справедливо утверждать следующее: вероятность Р того, что прогон программы приведёт к рабочему отказу, равна вероятности того, что набор данных Ei, который использовался в прогоне, принадлежит множеству Е0. Тогда вероятность появления ошибки при прогоне программы на входном наборе, случайно выбранном из числа равновероятных, определяется следующим выражением

P =

N0

.

(4)

 

 

N

 

Вероятность R того, что прогон программы на наборе входных данных Ei , случайно выбранном из Е среди равновероятных наборов, приведёт к приемлемому результату, определяется выражением

R =1P =1

N0

.

(5)

 

 

N

 

Если выбор набора данных из множества Е не равновероятен, а возможны какие-либо приоритеты выбора набора данных, то для оценки надёжности программы следует использовать другое выражение:

n

 

R =1pi yi ,

(6)

i=1

где pi – вероятность (частота) использования i-го набора исходных данных; уi – динамическая переменная, которая принимает нулевое значение, если прогон заканчивается приемлемым результатом, и значение 1, если прогон заканчивается рабочим отказом.

Вероятность R(n) успешного выполнения п прогонов программы при независимом для каждого прогона выборе исходных данных определяется выражением

104

R(n) = R n = (1P)n .

(7)

Эту же вероятность можно представить в следующем виде:

 

n

 

 

ln( 1p j )

 

 

R ( n ) = e j =1

,

(8)

где pj вероятность отказа для j-го прогона.

Дальнейшие преобразования формулы (8) показывают значительное сходство с технологией определения безотказности, принятой в теории надёжности технических устройств. Модель Нельсона в наибольшей степени отражает традиционный подход, принятый для определения надёжности технических устройств, для измерения надёжности программ.

2. Примеры решения задач

Задача 1. Для испытания программы использовалось 20 наборов исходных данных, которые равновероятно выбирались для прогона 20 тестов. При этом 10 тестов обнаружили дефекты программного обеспечения. Требуется провести расчёт надёжности программного обеспечения по результатам испытаний.

Решение В соответствии с моделью Нельсона надёжность программного обеспече-

ния по результатам испытаний определяется вероятностью R того, что прогон программы на наборе входных данных Ej, случайно выбранном из Е среди равновероятных, приведёт к приемлемому результату, который вычисляется в соответствии с выражением (5).

Из условия задачи общее количество тестов N = 20, количество тестов с обнаружением дефектов программы N0 = 10. Подставим исходные данные в расчётную формулу:

R =1 P =1

N 0

=1

10

=1

0,5

= 0,5 .

N

20

 

 

 

 

 

Таким образом, вероятность R события, при котором прогон программы на заданном наборе исходных данных не приведёт к рабочему отказу, равна 0,5.

Задача 2. При испытании программы провели 20 прогонов тестов. По результатам испытаний было установлено, что вероятность отказа программы при равновероятном выборе набора данных составляет 0,3. Определить количество дефектов, выявленных в процессе испытания программы.

Решение В соответствии с моделью Нельсона надёжность программного обеспече-

ния по результатам испытаний при использовании равновероятно выбираемого набора данных определяется вероятностью R, которая рассчитывается в соответствии с выражением (5).

105

Тогда количество дефектов N0 , которые обнаружены при тестировании, определяем следующим образом:

N0 = (1 – R) N = (1 – 0,3) 20 = 0,7 20 = 14.

Таким образом, при испытании программы выявлено 14 дефектов.

Задача 3. Для испытания программы использовалось 30 наборов исходных данных, которые выбирались в соответствии с функцией распределения частот, значения которой представлены ниже.

Частота

Исход

Частота

Исход

 

 

 

 

 

 

N теста

Частота

Исход

N теста

Частота

Исход

выбора теста

прогона теста

выбора теста

прогона теста

 

 

 

 

 

 

1

0,04

1

16

0,01

0

 

 

 

 

 

 

2

0,01

0

17

0,02

1

 

 

 

 

 

 

3

0,03

0

18

0,01

0

 

 

 

 

 

 

4

0,05

0

19

0,03

1

 

 

 

 

 

 

5

0,02

1

20

0,19

0

 

 

 

 

 

 

6

0,03

0

21

0,03

1

 

 

 

 

 

 

7

0,05

1

22

0,02

0

 

 

 

 

 

 

8

0,01

0

23

0,04

1

 

 

 

 

 

 

9

0,04

0

24

0,01

1

 

 

 

 

 

 

10

0,01

0

25

0,02

1

 

 

 

 

 

 

11

0,02

1

26

0,01

1

 

 

 

 

 

 

12

0,07

0

27

0,03

1

 

 

 

 

 

 

13

0,01

0

28

0,06

1

 

 

 

 

 

 

14

0,02

1

29

0,02

1

 

 

 

 

 

 

15

0,05

1

30

0,04

1

 

 

 

 

 

 

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

106

Решение Если набор данных для тестирования программы не равновероятен, то

для оценки надёжности программы используют соотношение (6). Подставим исходные данные, приведённые в таблице, в формулу для расчёта:

R = 1 – (0,04 1 + 0,02 1 + 0,05 1 + 0,02 1 + 0,02 1 + 0,05 1 + 0,02 1 + 0,03 1 +

+0,03 1 + 0,04 1 + 0,01 1 + 0,02 1 + 0,01 1 + 0,03 1 + 0,06 1 + 0,02 1 + 0,04 1) =

=1 – 0,51 = 0,49.

Таким образом, вероятность события R, что прогон программы на заданном наборе исходных данных не приведёт к рабочему отказу, равна 0,49.

3. Варианты индивидуальных заданий

Задача 1. Для испытания программы использовалось N наборов исходных данных, которые равновероятно выбирались для прогона N тестов. При этом N0 тестов обнаружили дефекты программного обеспечения. Требуется провести расчёт надёжности программного обеспечения по результатам испытаний. Исходные данные приведены в табл. 1.

1. Исходные данные для задачи

№ варианта

N

N0

1

32

16

 

 

 

2

33

11

 

 

 

3

34

12

 

 

 

4

35

7

 

 

 

5

31

11

 

 

 

6

20

10

 

 

 

7

28

4

 

 

 

8

27

9

 

 

 

9

21

7

 

 

 

10

22

11

 

 

 

№ варианта

N

N0

11

23

13

 

 

 

12

25

15

 

 

 

13

19

9

 

 

 

14

18

6

 

 

 

15

17

11

 

 

 

16

16

8

 

 

 

17

40

20

 

 

 

18

39

21

 

 

 

19

38

18

 

 

 

20

37

13

 

 

 

Задача 2. При испытании программы провели N прогонов тестов. По результатам испытаний было установлено, что вероятность отказа программы при равновероятном выборе набора данных составляет R. Определить количество дефектов, выявленных в процессе испытания программы. Исходные данные приведены в табл. 2.

107

2. Исходные данные для задачи

№ варианта

N

R

 

 

 

1

52

0,3

 

 

 

2

43

0,6

 

 

 

3

24

0,9

 

 

 

4

45

0,4

 

 

 

5

41

0,5

 

 

 

6

50

0,8

 

 

 

7

38

0,7

 

 

 

8

37

0,2

 

 

 

9

31

0,33

 

 

 

10

32

0,44

 

 

 

№ варианта

N

R

 

 

 

1

55

0,63

 

 

 

2

54

0,52

 

 

 

3

51

0,81

 

 

 

4

48

0,93

 

 

 

5

47

0,77

 

 

 

6

46

0,75

 

 

 

7

34

0,73

 

 

 

8

44

0,41

 

 

 

9

42

0,42

 

 

 

10

22

0,25

 

 

 

4. Отчёт по работе

Отчёт о выполненной работе оформляется индивидуально каждым студентом.

В первой части отчёта должны быть приведены название и цель работы. Вторая часть отчёта должна содержать описание решения индивидуаль-

ного задания.

В заключительной части отчёта должны быть приведены выводы, содержащие научный анализ полученных результатов.

5.Контрольные вопросы

1.Что понимается под термином «надёжность программного обеспечения» (ПО)?

2.Что понимается под терминами «безотказность ПО» и «отказ ПО»?

3.Основные причины отказов ПО.

4.Особенности аналитических моделей ПО.

5.Особенности эмпирических моделей ПО.

6.Особенности модели Нельсона.

108