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

книги / Надежность программного обеспечения систем обработки данных

..pdf
Скачиваний:
8
Добавлен:
12.11.2023
Размер:
8.74 Mб
Скачать

Количество выявленных ошибок ПО в рассматривае­ мых моделях предполагается пропорциональным числу остаточных ошибок. Если обратимся к ситуации, пред­ ставленной на рис. 12.1, то увидим, что число остаточных ошибок равно числу начальных ошибок за минусом числа исправленных ошибок (известное значение, если аккурат­ но ведутся записи отладки). Таким образом, модель со­ держит две неизвестные константы: число первоначаль­ ных ошибок и константу пропорциональности, для оцен­ ки которых используется информация функционального теста.

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

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

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

Имеющие опыт разработки ПО признают, что разра­

2 3 Г

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

Информация теста. При выполнении теста необходимо тщательно регистрировать операционное время н подроб­ но документировать каждую ошибку. При изучении ошибки ее прежде всего необходимо классифицировать как аппаратурную, программную, ошибку оператора или неизвестную ошибку Зная операционное время между проявлениями ошибок, можно вычертить график темпа выявления ошибок неделя за неделей, отражающий коли­ чественную 4iepy операционной надежности. Среднее вре­ мя между ошибками имеет тенденцию к увеличению по мере продолжения тестирования

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

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

Каждый из двух последовательных прогонов представ­ ляет 7*|, Тг, , Тг часов успешного выполнения ПрП h общих прогонов каждый (и—-г) неуспешный прогон пред-' ставляется Л, /2, ... tn~r часами успешного прохождения до проявления ошибки Общее количество часов успеш­ ного прогона Н определяется как

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

На основании (12 6) величина среднего времени меж­ ду сбоями определяется как

Теперь на основании (12 8) и (12 9) имеем количество ошибок н среднее время между двумя смежными ошибка­ ми Так как нас интересуют только ошибки ПО, то дальней­ шему рассмотрению подлежат ошибки

х — п г

На основе вышеизложенного ошибки классифициру­ ются на хп аппаратных ошибок, хs ошибок ПО, хо ошибок в работе оператора и х„ неизвестных ошибок Если коли­ чество неизвестных ошибок будет меньше 25%, то боль­ шинство данных можно классифицировать

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

дгv

**=

(12.10)

и

Таким образом, можно вычертить графики зависимо­ стей ks и /ср по времени проведения отладки т и проводить на нх основе количественную оценку прогресса в улучше­ нии качества ПО

Применительно к двум точкам на оси времени отладки та и ть будем иметь оценки tcp н /?(/), а это позволит уцени­ вать путем экстраполяции за интервал (а, Ь) До тех пор nqjta не будет известна функциональная форма изменения R(t) с возрастанием т, нельзя определить достаточно надежную схему экстраполяции, и сравнительно точные предсказания будут ограничены небольшими экскурса­

ми в будущее Модель ошибок. Полученные экспериментальные дан­

ные можно использовать н Для оценки параметров моде­ ли ошибок, отражаемых зависимостями (12 10) и (12.11).

233

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

Модель ошибки, полученная Шуманом [14], задается как

где т — время отладки в месяцах с начала интеграции,

 

/т — общее количество инструкций машинного языка;

т = 0 .

Ет— общее

количество ошибок, присутствующих в момент

Предполагается,

что эта величина не зависит от времени отладки;

еДт)

— общее количество ошибок, исправленных к моменту времени

е,(т)

т, нормализованное относительно /,,

в программе

к мо­

— общее количество ошибок, оставшихся

 

менту

аремени т, нормализованное

относительно

/т.

Модель надежности. Нели предположить, что общее количество ошибок пропорционально числу оставшихся

ошибок, то получаем

 

Z (/)=C .6,(T).

(12.13)

Здесь / — операционное время системы,

измеряемое с момента на­

чала ее отладки,

 

т— аремя отладки в месяцах с момента начала интеграции

системы,

Z(/) — функция количества ошибок;

е^т)— общее число ошибок, оставшихся в программе к моменту времени т, нормализованное относительно /т;

С— константа пропорциональности

Из теории надежности известна взаимосвязь между средним временем проявления ошибок и надежностью продукта (12.2). Однако удобнее использовать единствен­ ный параметр /ср, а не функцию надежности от времени для определения надежности продукта;

оо

<ср=

( I? . 14)

о

На основании подстановки в зависимости (12.2) н (12.14) значений из (12.12) и (12.13) имеем:

Я ( < ,т ) = е х р [ - С ( ^ - е с(т))/1

(12.15)

234

и

\

 

/сР(т )= — J -------

(12 16)

С[ £ - * (т )1

Всвязи с тем, что предполагается известным размер программы н тщательный сбор данных об ошибках, ве­

личины /т н ес(т) являются известными значениями в за­ висимости (12.16). Теперь остается определить констан­ ты Ети С.

В литературе рассмотрены и другие подобные модели. Так, в работе [14] предложена случайная функция вида

 

Z(T) =

(p [W - (;- l)],

(12.17)

где <р

— константа пропорциональности,

 

N — общее число присутствующих ошибок;

отладки Т/

I

— число ошибок,

обнаруженных к моменту

Сопоставление уравнения (12.17) с уравнениями (12.12) н (12.13) показывает их практическую значи­ мость при условии-

Er = N.

С

7 -^ .р ;

, . ( — 1

-М —ТГ

В работе [9] приведена модифицированная модель, которую только что рассмотрели. Предполагается, что количество ошибок пропорционально числу оставшихся ошибок и возрастает с увеличением времени t:

Z(Q=<p [# -(* -!)]* •

(12.18)

Причиной увеличения Z(t) является то, что процесс обнаружения и исправления ошибок рассматривается как цепь последовательных попыток доказательства пра­ вильности программы. Чем выше интенсивность тестиро­ вания, тем больше уверенность в том, что очередные ошиб­ ки вызываются лишь редкими комбинациями входных данных, позволяющих проверить все новые и новые пути программы.

Неизвестные С и Етиз зависимостей (12.15) и (12.16) оцениваются путем пропуска функционального теста в двух точках временной оси отладки Т |<Т 2, выбранных так, что ec(Ti)<ef(T2). Далее на основании зависимостей (12.11) и (12.16) производится оценка во времени TI н т2:

236

I

(12.19)

**' С[^-е,(т,)]

Нг I

( 12.20)

Поделив равенство (12.19) на равенство (12.20) и ис­ пользуя зависимость (12.10), получим

р [(*«1 А«|)е((т|)—ес(тг)1

(12 21)

(W*..)-i

 

Подставляя полученный результат в зависимость

(12.19), имеем следующее:

 

ё = М (7 Г ~ ес(т,))|-

Величины Ети С обозначают оценки параметров. За­ метим, что если бы между ii и тг не проводилась отладка, т. е. ес(т|)= ес(т2), а числитель зависимости (12.21) ста­ новится нулем, то зависимости (12.19) и (12.20) не явля­ ются больше независимыми, и оценивание не может быть выполнено.

Нели тестирование проводится К раз в период разра­ ботки, то можно вычислить значения Ети С для смежных значений тt и TJ+ I, что позволяет построить зависимости Етпо т и С по т. Когда постоянство параметров является удовлетворительным, то К наборов данных могут объеди­ няться для получения линейной несмещенной оценки.

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

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

236

производить реальные результаты для R и /ср. Кроме того, необходимо проверять каждый отдельный тест, исполь­ зованный для имитации работы, но сделать это достаточно трудно.

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

Другая возможная область для смешивания оценок состоит в диагностике ошибок. Если нас беспокоят неиз­ вестные ошибки х„, а также точность, с которой опреде­ ляется xs, то можно назначить для него некоторую неоп­ ределенность (например, 10%) и тем самым ограничить К из зависимости (12.10) значениями наихудших случаев:

0 ,9 х, 1.1дс,+хи

НН

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

Модель переходных вероятностей. Предлагаемая далее модель переходных вероятностей Маркова была разрабо- танщ с целью обеспечения расчета показателей надеж­ ности программного обеспечения ЭВМ. Рассматривается достаточно большая система ПО, насчитывающая около Ю5 кодов, что позволяет надеяться на значимость статис­ тических выводов.

Модель позволяет получить оценки и предсказания

237

вероятного числа ошибок, которые будут исправлены в заданное время, на основе предварительного моделиро­ вания интенсивности случающихся ошибок X, а также принятой системы исправления ошибок, работающей с интенсивностью р. Модель позволяет получить предска­ зания для готовности A(t) и надежности R(t) системы ПО.

Принимаются следующие основные ограничения раз­ рабатываемой модели:

1) любая ошибка рассматривается как случайная и без градации последствий, которые она порождает;

2)интенсивность проявления ошибок постоянна и равна X в месяц;

3)интенсивность исправления ошибок постоянна и равна р в месяц;

4)время перехода системы из одного состояния в дру­ гое бесконечно мало.

Дифференциальные уравнения, соответствующие мо­ дели Маркова, решаются для случая, когда X и р постоян­ ны. При этом используется точное решение, а прибли­ женное решение также возможно, ио используется толь­ ко для контроля вычислительного процесса. Случай, когда X и р не постоянны, соответствует некоторому эта­ пу отладки, когда некоторые функции отладки реализо­ ваны. Этот случай решается только приближенным ме­ тодом, так как точное' решение весьма громоздко.

Рассмотрим систему, начинающую работу в момент

времени / = 0. Система работает до появления ошибки в соответствии с предопределенным критерием. Резуль­ таты эксперимента собираются в отрезки времени, за ко­ торые могут произойти отказы в работе. Тогда перемен­ ная V времени случайного сбоя может быть определена как

<U)=S; £>о,

где £ — местоположение точек и а дискретной аремениой осн экспери­ мента

Надежность системы /?(/) определяется вероятностью отсутствия сбоя в интервале (0,/):

Я(/) =

> 4

Под готовностью системы к моменту времени t пони­ мается вероятность того, что система находится в рабочем состоянии во время i:

A(t)=P.

Предположим, что в начальный период (/= 0) система содержит неизвестное число (п) ошибок. В качестве нача­

ле

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

Ряд состояний системы {га, га — 1, п — 2,...} соответствует процессам обнаружения ошибок. По аналогии для слу­

чая

устранения ошибок введем состояния

системы

{/и,

/га— 1, т — 2,...}. Система находится в

состоянии

(га — К), если ошибка (К— 1) уже исправлена, а ошибка К. еще не обнаружена. В то же время система будет нахо­ диться в состоянии (т — К) после того, как ошибка К об­ наружена, но еще не исправлена. Общая схема модели с указанием вероятностей перехода между состояниями показана на рис. 12.4.

12 4 Модель многих состояний для оценки характеристик ПО

Пусть S'(t) есть случайная переменная, через которую обозначено состояние системы в момент времени L Экспе­ римент будет построен так, что в некоторый момент вре­ мени предполагаем систему остановленной и наблюдаем ее состояние. Пространство возможных состояний 5 системы может быть представлено так:

S={ra, т, га—1, т — 1, га —2, т —2,...).

Теперь предположим, что в момент Л < /г < ...< < ;< ..

... < / (любая последовательность наблюдений) после­ довательность случайных переменных S'(ii), S'Ua),. . S'(/)

2 » '

удовлетворяет для любого положительного целого числа I следующее равенство.

 

P{S'(t) = r/S '(t,)= :r - \,

S '( h - 1) = г —2, .

где г,

S'(t,) = г -

/) = *|S'(/) =

r/S'(t>)=

г - 11

г — I, г —2,

. г — / соответствует

последователь­

ности

состояний —ft), ft+1), — ft+1). • .(« — 2),

(m — 1). (л — 1), m. л

 

 

 

Таким образом, любое состояние модели определяет­ ся рядом переходных вероятностей (Я,,}, где Р,, обозначает вероятность перехода из состояния i в состояние / и не зависит от предшествующих и последующих состояний системы, кроме состояний i и /. Вероятность перехода из

состояния

(n — k) к состоянию —к) есть

=

для

ft = Q, I,

2,.. Аналогично

этому вероятность

перехода

из состояния (m — k) к состоянию (л — ft- f 1) есть

 

для ft = 0 ,

1, 2, .

к, и ц, зависят от

текущего

Интенсивность перехода

состояния системы. Для системы ПО к, означает интен­ сивность возникновения (проявления), а ц, — интенсив­ ность устранения ошибок. Следовательно, полная матри­ ца переходных вероятностей системы может быть пред­ ставлена следующим образом-

- Л Л 1

л.„Л/

0

я

 

0

 

 

0

0

1 — (1 ,л<

ц ,„ Л (

0

 

0

 

 

0

0

0

I - Х . , Д /

X . , \ /

.

0

 

 

0

а

0

0

11— и » 1 м

 

0

 

 

0

0

0

0

0

 

1—

,Д /

X, i M

0

0

0

0

 

0

 

1 —

_ * д /

Далее получим выражения для готовности A(t) и ща*

дежности /?(/) в терминах вероятности состояния зодятости системы

Р„_*(/)=“ P\S'(t) =

л - * |.

ft=0,

I. 2. . .

Рт~k(t)** P(S'(t) =

m ft);

ft=«0.

I. 2,,...

Выражение для готовности системы во время i получим на основе ее определения.

т

Соседние файлы в папке книги