Главная страница Анализ эмпирических данных Шумана и Джелинского - Моранды. Однако такая ситуация может быть далека от реальной. Возможно также получение решения для случая, когда приращение величины вероятности отказа изменяется по / линейно, т. е. когда Р/ - Py i == cj-\-d. Отсюда при условии, что Ро = О, Р/ = У Р + +1) / = I / (/ + 1) + dj. Данный случай соответствует ситуации, в которой ошибка, оказыварощая наибольшее влияние на вероятность отказа, выявляется и исправляется первой, а ошибка, оказывающая наименьшее влияние на вероятность отказа, выявляется последней. Представляется, что такая ситуация является по сравнениро с рассмотренной выше более реалистичной. Ряд существенных проблем, возникающих при разработЕсе надежного программного обеспечения, связан с внесением новых ошибок в процессе корректировки старых. Ошибка выявляется в результате возникновения отказа программы на определенном входном наборе данных Ей. Источник ошибки ищется путем анализа программы. Выявленная таким образом ошибка исправляется посредством корректировки соответствующей части программы. Затем результат исправления проверяется путем прогона программы на входном наборе данных Eft. Если при этом программа работает правильно, ошибка считается исправленной. Однако имеющийся опыт показывает, что выявляемые позднее отказы могут быть обусловлены именно теми изменениями программы, которые были сделаны для обеспечения правильной ее работы на входном наборе данных Eft. Анализ процесса корректировки ошибок на основе концепций математической теории надежности программного обеспечения привел к созданию методики испытаний, которая должна уменьшить количество новых ошибок, возникарощих при [корректировке старых. Рассмотрим процедуру корректировки более подробно. КоррСЕСТировка проводится путем изменения программы в одном или большем числе сегментов, при этом сегмент представляет собой последовательность выполняемых друг за другом операторов без образо- вания ветви. Логическая ветвь программы, инициируемая входным набором данных Е, состоит из последовательности сегментов. Сегменты, которые были исправлены в ходе корректировки, могут быть также частью и других ветвей программы. Поэтому проведенная коррекция может изменить результаты выполнения не только той ветви, в которой была найдена ошибка, но и некоторых других ветвей программы. Таким образом, если в процессе корректировки не учитывать влияния изменений в программе на правильность выполнения соответствующих ветвей, то это может привести к новым отказам. Поэтому необходимо при исправлении каждой ошибки проводить проверку программы в работе не только на том наборе данных, на котором была выявлена исправленная ошибка, но и на наборах, которые вызывают выполнение других ветвей, содержащих откорректированные сегменты. Если поступить так, то будет выявлена большая часть новых ошибок, возникающих прн корректировке программы. При этом для окончательно откорректированной программы вероятность наличия внесенных ошибок должна быть невелика, а коррекция ошибок должна привести к повышению надежности программы. В некоторых случаях устранение ошибок может состоять в изменении операторов ветвления, что в свою очередь приводит к изменению последовательности передач управления другим сегментам программы. В этом случае в результате коррекции программы изменится совокупность ее ветвей и, следовательно, должно быть изменено разбиение множества Е на подмножества, связанные с отдельными ветвями. 6.5. Использование зависимости надежности от структурных характеристик программ Структурными характеристиками программы р являются множество ветвей L/, подмножества входных наборов данных G/, соответствующие ветвям L/, множества сег.ментов Sy, из которых состоят отдельные ветви, и совокупность операторов ветвления, которые обеспечивают переход от одного сегмента к другому При движении по отдельной ветви программы. Большинство ошибок локализуется в отдельных сегментах, но бывают ошибки, которые затрагивают несколько сегментов или даже одну или более ветвей программы. Как бы там ни было, каждая ошибка влияет на выполнение лишь ограниченного числа ветвей, а именно тех, которые содержат сегменты и (или) ветвления, имеющие ошибки. Ошибка не влияет на выполнение ветвей, которые не включают ошибочных блоков программы. Таким образом, ошибка не может быть выявлена в эксперименте, в котором содержащая эту ошибку часть программы не выполняется. Необходимое условие выявления в эксперименте всех имеющихся в программе ошибок состоит в том, чтобы в ходе эксперимента были пройдены все ее сегменты и ветви, т. е. не осталась бы непроверенной ни одна из частей программы. Однако, как показано в разд. 6.2.1, выполнение данного условия является недостаточным, чтобы гарантировать выявление всех ошибок. Пусть S - множество сегментов 5,- программы р, общее число которых равно т, т. е. S = {S,: /=1, 2. т}. Прогон программы р на входном наборе данных Ей из подмножества G/ будет связан с выполнением подмножества сегментов из S, составляющих ветвь L/,. Пусть L - множество всех ветвей L/, общее число которых равно п, т. е. J L = {L;: }=\, 2, п}. Очевидно, множество L включает все сегменты программы р, и выполнение программы по каждой из входящих в нее ветвей гарантирует опробование всех сегментов программы. Однако множество всех сегментов может содержаться в некотором подмножестве ветвей, число которых в большинстве случаев меньше, чем число элементов множества L. Подмножество множества L, содержащее все сегменты программы р и состоящее из минимального числа ветвей L,-, называется множеством характерных ветвей. Для фиксированной программы может существовать более одного множества характерных ветвей. -Число ветвей в
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |