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

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

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

00

А«)= 2 /,-»w ft=0

Готовность системы во время t определяется как ре­ зультат простого сложения всех вероятностей состояний занятости.

Надежность системы зависит от степени ее отладки, т. е. чем выше степень отладки системы, тем больше ожи­ даемая надежность. Предположим, что к моменту t систе­ ма только что вошла в состояние (п —к), т. е. ошибка к только что устранена Обозначим это время как т. Тогда в интервале времени (0, T*+i), где т=Т*+|, может проя­ виться ошибка (А+1) при принятой постоянной интен­ сивности проявления ошибок Цк).

На основании уравнения (12.5) получим выражение для надежности:

/?*(т)=е-а д \ 0 < т < Г * +1; к = О, 1, 2, . .

Семейство типичных кривых для этого выражения приведено на рис. 12.5.

Отметим, что в более общем случае нет необходиг мости того, чтобы k(k) было независимо от оперативного

Я (г)

12 5 Семейство типичных кривых для функции надежности

241

времени т Между состояниями системь»>{м—Л) н {m—- 4). В этом случае /?*(т) будет представлена набором кривых

а

гщ ЦЬ, ж) получена заменой Z(ж)=Цк. ж).

Рассмотрим несколько возможных модификаций мо­ дели:

1) можно рассмотреть несколько различных катего­ рий ошибок, имеющих место в системах ПО;

2)прежде чем рассматривать интенсивности прояв­ ления и устранения ошибок кац функций ряда непола­ док, оставшихся в системе, они могут быть рассмотрены как функции времени t работы систем!*;

3)степень сходимости решения может быть изменена за счет выбора приемлемых алгоритмов для решения систем дифференциальных уравнений;

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

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

нию к их обнаружению, что в известной мере затрудняет процесс.

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

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

12 3. ДРУГИЕ МОДЕЛИ НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Рассматриваемые далее типы моделей отличаются от ранее представленных, так как не требуют дли обоснова­ ния предположений о постоянстве функции риска Z(i)

242

Эта модель (ш и представлена а работа {J5b.*r мо­ жетбить наанана моделью, веющей предаэрит«м»ные ошибки.

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

Пусть в процессе тестирования обнаружено п исход­ ных ошибок ц v из S рассеянных ошибок. Тогда оценка вероятности числа оставшихся исходных ошибок в прог­ рамме составит:

v

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

Вторая часть данной модели касается гипотез выра­ жения и тестирования N. Рассмотрим случай, когда программа содержит К исходйых ошибок и S рассеянных ошибок Будем тестировать программу до тех пор, пока не обнаружим все рассеянные ошибки В это же время количество обнаруженных исходных ошибок накаплива­ ется н запоминается. Далее вычисляется оценка надеж­ ности модели

,I, если н > к

sffc+Ч ^ и п < к-

как вероятность того, что она будет правильно отвергать лОйсные утвёржДения. Например, если утверждается, что гф6)^р£мМ4 не содержит ошибок (k=0\, а в ней были рас­ сеяны четыре ошибки, и все они обнаружены, но при этом не обнаружили ни одной исходной ошибки, то С=э0,8. Для достижения значения вероятности 0,95 в такой ситуа­ ции необходимо paccentb и обнаружить 19 ошибок. Полученная выше зависимость в указанной ранее работе достаточно убедительно обоснована.

Приведенные выше зависимости Для N н С составляют полезную модель ошибок, так как первая из иих позволя-

343

ет предсказать «степень завершенности тестирования», а вторая может использоваться для оценки меры уверенно* сти в предсказании. Одним из «недостатков этой модели является то, что С не может быть предсказано до тех пор, пока не будут обнаружены все рассеянные ошибки.

Для преодоления этого недостатка зависимость для С может быть модифицирована таким образом, что оцен* ка может быть выполнена после обнаружения / ( j ^ S ) рассеянных ошибок:

I, если п > к.

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

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

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

244

кия1» со стороны ^программистов является уверюяость о своей «Непогрешимости». В этом 'смысле рассеянные ошибки Вызывают к жизни такНе черты человечёсКоЙ натуры, которые способствуют решению задач, постав­ ленных перед этапом тестирования.

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

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

Пусть Nt и Ns представляют собой количество ошибок, Выявленных соответственно первой и второй группами, a Nit представляет собой количество ошибок, обнару­ женных дважды. Обозначим через N общее количество исходных ошибок в программе. Тогда эффективность те­ стирования может быть оценена как Et*=Ni/N я Et— *K N2/N соответственно. Аппроксимация величины N мо­ жет быть выполнена иа основе следующей зависимости:

В качестве примера предположим, что группы обнару­ жили соответственно 20 и 30 ошибок, из которых восемь были одинаковыми. Основываясь на том, что /V —74, получаем 32 необнаруженные ошибки.

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

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

Другая интересная интуитивная модель оценки была применена для оценивания степени отлаженностн ОС/360.

245

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

Л »23В + 2С,

где А — количество изменений в модуле вследствие ошибок,

В— количество модулей, которые требуют десять и более измеиевий,

С— число модулей, требующих от 1 до 10 всправлений

При условии, что величины в и С могут быть вычис­ лены, приведенная формула позволяет проводить оцени­ вание.

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

иьтатов, анее неоднократно подчеркивалась тесная взаимо­

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

Имитационная модель. Одним на подходов к оценке сложности программ является представление их как по­ следовательности узлов, дуг и петель (циклов) в виде ориентированного графа, показанного на рис 12.6.

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

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

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

24*

Рассматривается следующий набор показателей слож­ ности программ, получаемы* на основе анализа ях арнен* тированных графов:

12 б Представление программы в виде ориентированного графа

1) отношение действительного числа дуг к макси­ мально возможному числу дуг;

2)отношение числа узлов к числу дуг,

3)отношение числа петель к общему числу дуг. Размер программы является показателем сложности

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

узлов, устанавлмвающих *гочки ветвления; и числом дуг, определяющих степень прямолинейного «мигрования между точками ветвления*- Увеличение значений*жй»еуказанных относительных и абсолютных показателей соот­ ветствует увеличению сложности Программ.

Ориентированный граф вводится в качестве исходной информации для имитационной модели в виде матрицы ннциденций «узел-дуга». Число инструкций,' приходящих­ ся на дугу, является независимой случайной перемен­ ной, усекаемой до целого значения. Ошибки вводятся так, что число инструкций между ними составляет недавнеймую'случайную переменную величину.

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

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

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

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

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

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

248

Имитационная ' та* чч

генерировать случайные времена длякаждой иеиояйййё* мрй инструкции.и исправляемой ошявнцдо мере модед^-, ровамня^ Еслн .времена исполнения инструкция-и неПрав-1 делил ошибки являются независимыми, й одинаково ра<>' вределеншмм* то» йцаможно, и в вычислительном-»отно­ шении желательно подсчитать количество выполненных1 инструкций и исправленных ошибок и умножить их соот­ ветственна на .среднее время выполнения инструкций1 н . среднее время исправления ошибкй, чтобы получить более точную оценку общего времени: В основу имитаци­ онной модели положен ряд допущений.

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

не всегда

удается определить порождающий ее вход.

Й. При

разработке модели предИолагалось, что испы­

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

3. Ряд ограничений диктуется видом вероятностного распределения, принятого в модели:

Свойство или

событие

Распределение вероятности

Количество инструкций в дуге

экспоненциальное

Время выполнения инструкции

»

Встречаемость исходных ошибок

»

Время на исправление ошибок

»

Число инструкций, подверженных

 

влиянию исправления

равномерное

Встречаемость новых ошибок

»

Дуга, выбранная для ввода ошибки

»

Выбор направления

ветвления

»

249

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

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

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

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

Имеют место и другие ситуации, когда полезно срав­ нить различные структуры программ Например, часто

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

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

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

Я50

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