наде. Надежность программного обеспечения содержание
Скачать 394.52 Kb.
|
НАДЕЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Содержание 1. Основные понятия……………………………………………... 3 1.1 Модель анализа надежности программных средств……... 4 1.2. Факторы, влияющие на надежность ПО…………………. 5 1.3. Ошибки ПО………………………………………………… 5 1.4. Средства повышения надѐжности ПО…………………… 8 1.5. Проблемы исследования надежности ПО………………... 8 1.6. Тестирование ПО…………………………………………... 9 2. Показатели качества…………………………………………… 10 2.1. Классификация показателей качества ПО……………….. 10 2.2. Основные показатели качества надежности ПО………… 11 3. Модели надежности ПО………………………………………. 13 3.1. Динамические модели надежности………………………. 14 3.1.1. Модель Шумана……………………………………….. 14 3.1.2. Модель La Padula………………………………………. 16 3.2. Статические модели надежности…………………………. 17 3.2.1. Модель Миллса………………………………………… 17 3.2.2. Модель Липова………………………………………… 19 1. Основные понятия Надежность программного обеспечения - способность программного продукта безотказно выполнять определенные функции при заданных усло- виях в течение заданного периода времени с достаточно большой вероятно- стью. Степень надежности характеризуется вероятностью работы про- граммного продукта без отказа в течение определенного периода времени. Существует 4 основные составляющие функциональной надежности программных систем: безотказность - свойство программы выполнять свои функции во время эксплуатации; работоспособность - свойство программы корректно (так как ожида- ет пользователь) работать весь заданный период эксплуатации; безопасность - свойство программы быть не опасной для людей и окружающих систем; защищенность - свойство программы противостоять случайным или умышленным вторжениям в нее. 1.1. Модель анализа надежности программных средств Вычислительный процесс; Информация баз данных; Объектный код программ; Информация для потребителей Объекты уязвимости Внутренние; Ошибки проектирования при постановке задач; Ошибки алгоритмизации задач; Ошибки программирования; Недостаточное качество средств защиты; Внешние: Ошибки пресонала при эксплуатации; Искажения информации в каналах связи; Сботи и отказы аппаратуры ЭВМ; Изменения конфигурации системы Дестибилизи- рующие факторы и угрозы надежности Предотвращение ошибок проектирования в CASE- технологиях; Систематичесное тестирование; Обязательная сертификация Методы предотвращения угроз надежности Временная избыточность; Информационная избыточность; Программная избыточность; Оперативные методы повышения надежности Разрушение вычислительного процесса; Разрушение информации баз данных; Разрушение текста программ; Разрушение информации для потребностей Последствия нарушения надежности 1.2. Факторы, влияющие на надежность ПО К числу основных факторов, влияющих на надежность ПО отнесены: взаимодействие ПО с внешней средой (программно-аппаратная сред- ства, трансляторы, ОС). Этот фактор вносит наименьший вклад в надежность ПО при современном уровне надежности аппаратуры, ОС и компиляторов; взаимодействие с человеком (разработчиком и пользователем) (см. например метрику Холстеда); организация ПО (проектирование, постановка задачи и способы их достижения и реализации) и качество его разработки. Этот фактор вносит наибольший вклад в надежность; тестирование. 1.3. Ошибки ПО В борьбе со сложностью ПО используются две концепции: Иерархическая структура. Иерархия позволяет разбить систему по уровням понимания (абстракции, управления). Концепция уровней позволяет анализировать систему, скрывая несущественные для данного уровня детали реализации других уровней. Иерархия позволяет понимать, проектировать и описывать сложные системы. Независимость. В соответствии с этой концепцией, для минимизации сложности, необходимо максимально усилить независимость элементов си- стемы. Это означает такую декомпозицию системы, чтобы еѐ высокочастот- ная динамика была заключена в отдельных компонентах, а межкомпонент- ные взаимодействия (связи) описывали только низкочастотную динамику си- стемы. Методы обнаружения ошибок, которые базируются на введении в ПО си- стемы различных видов избыточности: Временная избыточность. Использование части производительности ЭВМ для контроля исполнения и восстановления работоспособности ПО по- сле сбоя. Информационная избыточность. Дублирование части данных инфор- мационной системы для обеспечения надѐжности и контроля достоверности данных. Программная избыточность включает в себя: взаимное недоверие - компоненты системы проектируются, исходя из предположения, что другие компоненты и исходные данные содержат ошибки, и должны пытаться их обнаружить; немедленное обнаружение и регистрацию ошибок; выполнение одинаковых функций разными модулями системы и сопоставление результа- тов обработки; контроль и восстановление данных с использованием других видов избыточности. Задача обеспечения ПО устойчивости к ошибкам направлены на при- менение методов минимизации ущерба, вызванного появлением ошибок, и включают в себя: - обработку сбоев аппаратуры; - повторное выполнение операций; - динамическое изменение конфигурации; - сокращенное обслуживание в случае отказа отдельных функций систе- мы; - копирование и восстановление данных; - изоляцию ошибок. Дается 4 группы принципов обеспечения надежности: предупреждение ошибок; обнаружение ошибок; исправление ошибок; обеспечение устойчивости к ошибкам. Действия, направленные на минимизацию ошибок и сбоев: предотвращение ошибок за счет структурного программирования; сокрытие информации или дозированный доступ к данным со сторо- ны программных средств и объектов в объектно-ориентированном програм- мировании; отладка; устойчивость к сбоям; обработка исключительных ситуаций (перехват ошибок, например, деление на ноль) и локализация ошибок и сбоев; восстановление программы после сбоя В соответствии с ГОСТ 19.004-80 различают следующие виды работ, направленные на устранение ошибок в ПО: проверка, отладка и испытание программы. Чем интенсивнее использование программного изделия (ПИ), тем быстрее выявляются в нем ошибки. На рисунке приведена зависимость числа обна- руженных ошибок от числа использующих ПИ пользователей: чи сл о о б на ру ж ен ны х о ш иб ок t K 1 K 2 K 3 где K – число пользователей, K 1 > K 2 > K 3 Рис. 1 Интенсивность обнаружения ошибок от интенсивности использования Процентные частоты появления ошибок в ПО по типам ошибок представ- лены в таблице 1. Таблица 1 – Процентные частоты появления ошибок в ПО ТИП ОШИБКИ ЧАСТОТА ПОЯВЛЕНИЯ, % Не полная или ошибочная спецификация 28 Отклонение от спецификации 12 Пренебрежение правилами программирования 10 Ошибочная выборка данных 10 Ошибочная логика или последовательность операций 12 Ошибочные арифметические операции 9 Нехватка времени для решения 4 Ошибка обработки прерываний 4 Ошибка в исходных данных 3 Неточная запись 8 Как видно из таблицы 1 основное количество ошибок делается из-за не- верной спецификации или ТЗ. Эти ошибки, в свою очередь, могут быть раз- делены на следующие категории: Таблица 2 – Категории ошибок в ПО ПРИЧИНА ОШИБКИ ЧАСТОТА ПОЯВЛЕНИЯ, % Ошибки в числовых значениях 12 Недостаточные требования к точности 4 Ошибочные символы или знаки 2 Ошибки оформления 15 Неправильное описание или требование к аппаратуре 2 Исходные данные для разработки неполные, неточные или ошибочные 52 Двусмысленность требований 13 Из этих таблиц, кстати, следует, на что нужно обращать особое внимание при проведении валидации и верификации ПО (верификация отвечает на во- прос, правильно ли и качественно ли создана программа, а валидация (или аттестация) - на вопрос правильно ли работает программа). 1.4. Средства и способы повышения надѐжности ПО На основании методов обнаружения ошибок были разработаны следу- ющие средства повышения надѐжности ПО. Средства, использующие временную избыточность: авторизация до- ступа пользователей к системе, анализ доступных пользователю ресурсов, выделение ресурсов согласно ролям и уровням подготовки пользователей, разграничение прав доступа пользователей к отдельным задачам, функциям управления, записям и полям баз данных. Средства обеспечения надѐжности, использующие информацион- ную избыточность: ссылочная целостность баз данных обеспечивается за счѐт системы внутренних уникальных ключей для всех информационных за- писей системы, открытая система кодирования, позволяющая пользователю в любой момент изменять коды любых объектов классификации, обеспечивает стыковку системы классификации АИС делопроизводство с ПО других раз- работчиков, механизмы проверки значений контрольных сумм записей си- стемы, обеспечивают выявление всех несанкционированных модификаций (ошибок, сбоев) информации. Способы обеспечения и повышения надежности ПО: усовершенствование технологии программирования (например, фор- мальное описание этапов программирования при помощи языка UML); выбор алгоритмов, не чувствительных к различного рода нарушениям вычислительного процесса (использование алгоритмической избыточности); резервирование программ - N-версионное программирование; верификация и валидация программ с последующей коррекцией. 1.5. Проблемы исследования надежности ПО К основным проблемам исследований надежности ПО относятся: прежде всего - разработка методов оценки и прогнозирования надеж- ности ПО; определение основных факторов, влияющих на надежность ПО; разработка методов, обеспечивающих достижение заданного уровня надежности ПО; совершенствование методов повышения надежности ПО в процессе проектирования и эксплуатации. 1.6. Тестирование ПО Важным этапом жизненного цикла ПО, определяющим качество и надѐж- ность системы, является тестирование. Тестирование - процесс выполнения программ с намерением найти ошибки и включает в себя следующие этапы: - автономное тестирование; - тестирование сопряжений; - тестирование функций; - комплексное тестирование; - тестирование полноты и корректности документации; - тестирование конфигураций. Надежность ПО повышается также с помощью применения различных методов тестирования. Полное тестирование ПО невозможно. Обычно применяют следующие виды тестирования: тестирование ветвей; математическое доказательство правильности алгоритма решения за- дачи (в некоторых работах именно в этом смысле употребляется слово вери- фикация). символическое тестирование (или с помощью специально подобран- ных тестовых наборов), еще называется статическим тестированием. Удобно при локализации ошибки, проявление которой выявлено при конкретном уз- ком или строго заданном диапазоне входных значений; динамическое тестирование (с помощью динамически генерируемых входных данных), что удобно при быстром тестировании во всем широком диапазоне входных параметров; тестирование путей выполнения программы; функциональное тестирование; проверки по времени выполнения программы; проверка по использованию ресурсов и стрессовое тестирование. 2. Классификация показателей качества ПО По количеству характеризуемых свойств различают единичные и ком- плексные показатели. Единичные показатели качества характеризуют одно из свойств ПС, комплексный – несколько. Комплексные показатели могут быть групповыми, обобщенными или интегральными. В зависимости от места применения в процедуре оценки уровня каче- ства ПС различают базовые и относительные показатели. Базовым значением показателя качества продукции называют значение показателя, принятое за основу при сравнительной оценке качества продукции. Относительное зна- чение показателя качества продукции представляет собой отношение факти- ческого значения показателя качества оцениваемой продукции к базовому значению этого показателя. По стадии определения значений показателей качества различают про- гнозируемые, проектные, производственные и эксплуатационные показате- ли. Прогнозируемыми показателями оперируют на стадиях выполнения научно-исследовательских работ и составления ТЗ на разработку ПС, т. е. на тех стадиях, когда нет еще ни детального проекта ПС, ни, тем более, самого ПС. Значения прогнозируемых показателей в основном определяют на осно- ве интуиции и опыта аналогичных разработок, поэтому эти показатели носят субъективный характер. Значения проектных показателей определяют на основе анализа проектов ПС (эскизного, технического, рабочего), а также путем испытания опытного образца ПС. Эти показатели носят более объективный характер. Степень их достоверности зависит от эффективности используемых инструментальных средств анализа и испытания. Производственные показатели мало отличаются от проектных, особенно если изготовление ПС сводится к простому копированию. Если же копирова- нию предшествуют операции сборки или генерации ПС, то производствен- ные показатели качества таких ПС могут существенно отличаться от проект- ных. Значения эксплуатационных показателей определяют по результатам промышленной эксплуатации ПС. При соблюдении определенных правил сбора и обработки данных о качестве ПС в процессе эксплуатации эксплуа- тационные показатели дают наиболее объективную и достоверную оценку. Только по этим показателям можно произвести действительную оценку научно-технического уровня и качества ПС. Около 50 % частных показателей можно определить автоматически с по- мощью ЭВМ, 25 % —с помощью компаратора. Таким образом, оценка около 75 % показателей может быть формализована. Оценка 20 % показателей мо- жет быть произведена только квалифицированным специалистом. Большин- ство показателей устанавливают путем статического анализа программ и лишь около 5 % — в процессе динамических испытаний (Данные соответ- ствуют положению в этой области в 80-е годы). 2.2. Основные показатели надежности ПО 1. Вероятность безотказной работы P(t з ) – это вероятность того, что в пределах заданной наработки отказ системы не возникает. 2. Вероятность отказа – вероятность того, что в пределах заданной нара- ботки отказ системы возникает. Это показатель, обратный предыдущему. Q(t з ) =1 – P(t з ) (2.1) где t з – заданная наработка, ч.; Q(t з ) – вероятность отказа. 3. Интенсивность отказов системы – это условная плотность вероятности возникновения отказа ПИ в определенный момент времени при условии, что до этого времени отказ не возник. ) ( ) ( ) ( t P t f t (2.2) где f(t) – плотность вероятности отказа в момент времени t. ) ( )) ( 1 ( ) ( ) ( t P dt d t P dt d t Q dt d t f (2.3) Существует следующая связь между интенсивностью отказов системы и вероятностью безотказной работы t dt t t P 0 ) ( exp ) ( (2.4) В частном случае, при ) exp( ) ( t t P (2.5) const t ) ( Если в процессе тестирования фиксируется число отказов за определѐн- ный временной интервал, то интенсивность отказов системы есть число отка- зов в единицу времени. 4. Средняя наработка на отказ Т i - математическое ожидание времени работы ПИ до очередного отказа: dt t f t T t i 0 ) ( (2.6) Иначе среднюю наработку на отказ Т i можно представить: i=1; n i i n i t n i n t t t t T 1 3 2 1 (2.7) где t - время работы ПИ между отказами, с. n – количество отказов. 5. Среднее время восстановления T - математическое ожидание времени восстановления - t; времени, затраченного на обнаружение и локализацию отказа - t ; времени устранения отказа - t ; времени пропускной проверки ра- ботоспособности - t : t = t + t + t , где t - время восстановления после i-го отказа. n T = i/nt , i=1 где n - количество отказов. Для этого показателя термин "время" означает время, затраченное специа- листом по тестированию на перечисленные виды работ. 6. Коэффициент готовности K - вероятность того, что ПИ ожидается в работоспособном состоянии в произвольный момент времени его использо- вания по назначению: K = T / (T + T ). Необходимо стремиться повышать уровень надежности ПИ, но достиже- ние 100%-ной надежности лежит за пределами возможного. Количественные показатели надежности могут использоваться для оценки достигнутого уров- ня технологии программирования, для выбора метода проектирования буду- щего программного средства. Основным средством определения количественных показателей надежно- сти являются модели надежности, под которыми понимают математическую модель, построенную для оценки зависимости надежности от заранее извест- ных или оцененных в ходе создания программных средств параметров. 7. Все приведенные показатели надежности ПО характеризуют наличие ошибок программы (производственных дефектов), но ни один из них не ха- рактеризует характер этих ошибок и возможные их последствия. Поэтому предлагается ввести новый показатель надежности ПО – средняя тяжесть ошибок (СТО): B=1/Q СУММ(bi*pi*zi) ,(2.8) где Q – вероятность сбоя ПО; СУММ – оператор суммирования по переменной i; bi – функция принадлежности тяжести последствий ошибки, возникшей при i-ом наборе входных данных, к максимально тяжелым последствиям; pi – вероятность ввода i-го набора входных данных при эксплуатации ПО; zi – дихотомическая переменная, равная 1, если при i-ом наборе входных данных был зафиксирован сбой, и 0 в противном случае; m – общее число наборов входных данных. Значение показателя надежности СТО лежит на интервале [0;1]. Чем бли- же значение СТО к единице, тем тяжелее последствия ошибок ПО, и тем ме- нее надежна программа. Близость СТО к нулю показывает незначительность последствий ошибок программы. Введение нового показателя надежности ПО позволило различать по надежности программные продукты, вероятности сбоя которых имеют один и тот же порядок. К тому же, говоря о надежности ПО, пользователь желает получить не столько безошибочное ПО, сколько безопасное. А именно без- опасность ПО характеризует СТО. Значение этого показателя субъективно и может быть различным для одного и того же программного продукта в зави- симости от области его применения. Это объясняется тем, что при использо- вании конкретного ПО, например, для выполнения студенческих расчетов и для выполнения конструкторских расчетов в космической промышленности последствия ошибок программы – несопоставимы. В ряде случаев, если к ПО предъявляются жесткие требования, лучше оценивать максимальную тяжесть ошибок ПО. Таким образом, оценивая вероятность сбоя ПО и СТО ПО, получаем мно- гостороннюю оценку надежности ПО. 3. Модели надежности ПО Все модели надежности можно классифицировать по тому, какой из пере- численных процессов они поддерживают (предсказывающие, прогнозные, измеряющие и т.д.). Нужно отметить, что модели надѐжности, которые в ка- честве исходной информации используют данные об интервалах между отка- зами, можно отнести и к измеряющим, и к оценивающим в равной степени. Некоторые модели, основанные на информации, полученной в ходе тестиро- вания ПО, дают возможность делать прогнозы поведения ПО в процессе экс- плуатации. Аналитические модели дают возможность рассчитывать количественные показатели надежности, основываясь на данных о поведении программы в процессе тестирования (измеряющие и оценивающие модели). Эмпирические модели базируются на анализе структурных особенностей программ. Они рассматривают зависимость показателей надѐжности от числа межмодульных связей, количества циклов в модулях и т.д. Часто эмпириче- ские модели не дают конечных результатов показателей надѐжности, однако они включены в классификационную схему, так как развитие этих моделей позволяет выявлять взаимосвязь между сложностью АСОД и его надежно- стью. Эти модели можно использовать на этапе проектирования ПО, когда осуществляется разбивка на модули и известна его структура. Аналитические модели представлены двумя группами: динамические мо- дели и статические. В динамических поведение ПС (появление отказов) рас- сматривается во времени. В статических моделях появление отказов не свя- зывают со временем, а учитывают только зависимость количества ошибок от числа тестовых прогонов (по области ошибок) или зависимость количества ошибок от характеристики входных данных (по области данных). Для использования динамических моделей необходимо иметь данные о появлении отказов во времени. Если фиксируются интервалы каждого отказа, то получается непрерывная картина появления отказов во времени (группа динамических моделей с непрерывным временем). С другой стороны, может фиксироваться только число отказов за произвольный интервал времени. 3.1. Динамические модели надежности 3.1.1. Модель Шумана Исходными данными для модели Шумана, которая относится к динамиче- ским моделям дискретного времени, собираются в процессе тестирования АСОД в течение фиксированных или случайных временных интервалов. Каждый энтервал - это стадия, на котором выполняется последовательность тестов и фиксируется некоторое число ошибок. Модель Шумана может быть использована при определенном образе ор- ганизованной процедуре тестирования. Использование модели Шумана предполагает, что тестирование поводиться в несколько этапов. Каждый этап представляет собой выполнение на полном комплексе разработанных тесто- вых данных. Выявление ошибки регистрируется, но не исправляются. По за- вершении этапа на основе собранных данных о поведении ПО на очередном этапе тестирования может быть использована модель Шумана для расчета количественных показателей надежности. При использовании модели Шума- на предполагается, что исходное количество ошибок в программе постоянно, и в процессе тестирования может уменьшаться по мере того, как ошибки вы- являются и исправляются. Предполагается, что до начала тестирования в ПО имеется E t ошибок. В течении времени тестирования t1 в системе обнаруживается E c ошибок в расчете на команду в машинном языке. Таким образом, удельное число ошибок на одну машинную команду, оставшуюся в системе после t1 времени тестирования, равно: c t t r t E I E t E ) ( ) ( (3.1) где I t – общее число машинных команд, которое предполагается в рамках этапа тестирования. Предполагаем, что значение функции частоты отказов Z(t) пропорцио- нально числу ошибок, оставшихся в ПП после израсходованного на тестиро- вание времени t. ) ( ) ( E C t Z (3.2) где С- некоторая константа, t – время работы ПП без отказа, ч. Тогда, если время работы ПП без отказа t отсчитывается от точки t = 0, а t1 остается фиксированным, функция надежности, или вероятность безот- казной работы на интервале времени от 0 до t, равна: t t E I E C t t R C t t ) 1 ( exp ) 1 , ( (3.3) t t E I E C t C t t cp ) 1 ( 1 (3.4) Из величин, входящих в формулы (4.2) и (4.3) ,не известны начальное значение ошибок в ПП (E t ) и коэффициент пропорциональности – С. Для их определения прибегают к следующим рассуждениям. В процессе тестирова- ния собирается информация о времени и количестве ошибок на каждом про- гоне, т.е общее время тестирования t1 складывается из времени каждого про- гона: t1 = t 1 + t 2 + t 3 + …. + t n (3.5) Предполагая, что интенсивность появления ошибок постоянна и равна , можно вычислить еѐ как число ошибок в единицу времени: где А i – количество ошибок на i-м прогоне. 1 1 t A k i i (3.6) k i i cp A t t 1 1 Имея данные для двух различных моментов тестирования t A и t b , которые выбираются произвольно с учетом требования, чтобы E c (t b ) > E c (t A ), можно сопоставить уравнения (3.4) и (3.6) при t A и t b : C A t t A t E I E C t ) 1 ( 1 ) 1 ( 1 (3.7) C b t t b t E I E C t ) 1 ( 1 ) 1 ( 1 (3.8) Вычисляя отношения (3.7) и (3.8), получим 1 ) 1 ( ) 1 ( ) 1 ( ) 1 ( ) 1 ( ) 1 ( A b C b C A A b T T t t t E t E t t E E (3.9) Подставив полученную оценку параметров E t в выражение (3.7), получим оценку для второго неизвестного параметра: C A t t A t E I E t C ) 1 ( ) 1 ( (3.10) Получив неизвестные Е t и С, можно рассчитать надежность программы по формуле (3.3). Достоинство этой модели заключается в том, что можно исправлять ошибки, внося изменения в текст программы в ходе тестирования, не разби- вая процесс на этапы, чтобы удовлетворить требованию постоянства числа машинных инструкции. 3.1.2. Модель La Padula По этой модели выполнение последовательности тестов производиться в m этапов. Каждый этап заканчивается внесением изменений (исправлений) в ПП. Возрастающая функция надѐжности базируется на числе ошибок, обна- руженных в ходе каждого тестового прогона. Надѐжность ПП в течений i –го этапа: ) ( ) ( ) ( i A R t R (3.11) где i = 1,2, … n, А – параметр роста; Предельная надежность ПП: ) ( ) ( lim i R R i (3.12) Эти неизвестные величины можно найти, решив следующие уравнения: 0 ) ( 0 ) ( 1 1 m i i i i m i i i i i A R S m S i A R S m S (3.13) где S i – число тестов; m i – число отказов во время i-го этапа; m – число этапов; i = 1,2 … m. Определяемый по этой модели показатель есть надежность АСОД на i-м этапе. i A R i R ) ( ) ( (3.14) где i = m+1,m+2 … Преимущество данной модели заключается в том, что она является про- гнозной и, основываясь на данных, полученных в ходе тестирования, дает возможность предсказать вероятность безотказной работы программы на по- следующих этапах еѐ выполнения. 3.2. Статические модели надежности Статические модели принципиально отличаются от динамических прежде всего тем, что в них не учитывается время появления ошибок в процессе те- стирования и не используется никаких предположений о поведении функции риска. Эти модели строятся на твердом статическом фундаменте. 3.2.1. Модель Миллса Использование этой модели предполагает необходимость перед началом тестирования искусственно вносить в программу (засорять) некоторое коли- чество известных ошибок. Ошибки вносятся случайным образом и фиксиру- ются в протоколе искусственных ошибок. Специалист, проводящий тестиро- вание, не знает ни количества ошибок, ни характера внесенных ошибок до момента оценки показателей надежности по модели Миллса. Предполагает- ся, что все ошибки (как естественные, так и искусственно внесенные) имеют равную вероятность быть найденными в процессе тестирования. Тестируя программу в течение некоторого времени, собирается статисти- ка об ошибках. В момент оценки надежности по протоколу искусственных ошибок все ошибки делятся на собственные и искусственные. Соотношение: V n S N (3.15) дает возможность оценить N – первоначальное количество ошибок в про- грамме. В данном соотношении, которое называется формулой Миллса, S – количество искусственно внесенных ошибок, n – число найденных собствен- ных ошибок, V – число обнаруженных к моменту оценки искусственных ошибок. Вторая часть модели связанна с проверкой гипотезы от N. Предположим, что в программе имеется К собственных ошибок, и внесем в нее еще S оши- бок. В процессе тестирования были обнаружены все S внесенных ошибок и n собственных ошибок. Тогда по формуле Миллса мы предполагаем, что первоначально в про- грамме было N = n ошибок. Вероятность, с которой можно высказать такое предположение, возможно рассчитать по следующему соотношению: K n K S S C K n C если , 1 если , 1 (3.16) Таким образом, величина С является мерой доверия к модели и показыва- ет вероятность того, насколько правильно найдено значение N. Эти два свя- занных между собой по смыслу соотношения образуют полезную модель ошибок: первое предсказывает возможное первоначально имевшихся в про- грамме ошибок, а второе используется для установления доверительного уровня прогноза. Однако формула (5.2) для расчета C не может быть в слу- чае, когда не обнаружены все искусственно рассеяние ошибки. Для этого случая, когда оценка надежности производиться до момента обнаружения всех S рассеянных ошибок, величина C рассчитывается по модифицируемой формуле K n K V K S V s C K n C если , 1 1 если , 1 (3.17) где числитель и знаменатель формулы при n <= K являются биноминальны- ми коэффициентами вида )! ( ! ! b a b a b a (3.18) Например, если утверждается, что в программе нет ошибок, а к моменту оценки надежности обнаруженно 5 из 10 рассеянных ошибок и не обнаруже- но ни одной собственной ошибки, то вероятность того, что в программе дей- ствительно нет ошибок, будет равна: 45 0 ! 11 ! 6 ! 4 ! 6 ! 5 ! 10 5 11 4 10 C (3.19) Если при тех же исходных условиях оценка надежности производится в момент, когда обнаруженны 8 из 10 искусственных ошибок, то вероятность того, что в программе не было ошибок, увеличивается до 0.73. В действи- тельности модель Миллса можно использовать для оценки N после каждой найденной ошибки. Предлагается во время всего периода тестирования отме- чать на графике число найденных ошибок и текущее значение для N. Досто- инством модели является простота применения математического аппарата, наглядность и возможность использования в процессе тестирования. Однако она не лишена и ряда недостатков, самые существенные из кото- рых – это необходимость внесения искусственных ошибок (этот процесс плохо формализуется) и достаточно вольное допущения величины K, которое основывается исключительно на интуиции и опыте человека, проводящего оценку, т.е. допускается большое влияние субъективного фактора. 3.2.2. Модель Липова Липов модифицировал модель Миллса, рассмотрев вероятность обнару- жения ошибки при использовании различного числа тестов. Если сделать то же предположение, что и модель Миллса, т.е. что собственные и искусствен- ные ошибки имеют равную вероятность быть найденными, то вероятность обнаружения n собственных и V внесенных ошибок равна: V n S N V S n N V n m V n q q V n m V n Q ) 1 ( ) , ( (3.20) где m – количество тестов, используемых при тестировании; q - вероятность обнаружения ошибки в каждом из m тестов , рассчитыва- ется по формуле : n V n q (3.21) S – общее количество искусственно внесенных ошибок; N – количество собственных ошибок, имеюшихся в ПС до нача- ла тестирования. Для использования модели Липова должны выполняться следующие условия: 0 0 0 V n m V S n N (3.22) Модель Липова дополняет модель Миллса, дав возможность оценить ве- роятность обнаружения определенного количества ошибок к моменту оцен- ки. |