Классификация моделей надежности
На сегодняшний день разработано большое количество моделей надежности ПС и их модификаций. Каждая из этих моделей определяет некую функцию надежности, которую можно вычислить при задании соответствующих данных, собранных во время функционирования ПС. Основными данными являются отказы и их временные характеристики. Другие дополнительные параметры связаны с типом ПС, условиями среды и типом используемых данных.
Существуют различные классификаций моделей надежности ПС, приведем достаточно известную классификацию моделей надежности ПС по критерию имеющихся входных статистик, получаемых на различных этапах ЖЦ ПП:
1. Модели полноты тестирования, позволяющие получить оценки показателей доверия к процессу оценки соответствия ПО заданным требованиям.
2. Модели сложности ПО, позволяющие оценить метрики сложности ПО и связанные с ними показатели качества и безопасности ПО.
3. Временные модели роста надежности (reliability growth model), позволяющие оценить показатели технологической безопасности ПО в зависимости от времени их испытаний.
4. Отладочные модели, позволяющие оценить показатели технологической безопасности ПО в зависимости от прогонов на заданных областях входных данных и последующих доработок ПО.
Рассмотрим подробнее каждую группу.
Модели оценки полноты тестирования ПО. Эти модели основаны на методах независимого внесения и выявления тестовых ошибок и методах проведения независимых экспертиз.
Модель учета внесенных ошибок (модель Миллса, решение известной задачи теории вероятности «меченых рыб») предполагает внесение в текст программы тестовых ошибок. В процессе тестирования собирается статистика о выявленных ошибках, внесенных и реальных, при этом, поскольку тестовые ошибки вносятся случайным образом, выявление всех ошибок (внесенных и собственных) равновероятно. Далее с использованием метода максимального правдоподобия можно получить оценку числа первоначальных ошибок ПО. Модель также можно использовать для получения оценок безошибочности программы на основе оценки достоверности утверждения присутствия в модели некоторого, определяемого экспериментатором, количества ошибок.
Модель учета внесения ошибок в разные модули ПС. Программный продукт разбивается на две части с индивидуальным (определяемым экспериментатором тем или иным способом) количеством ошибок. Определяется вероятность обнаружения ошибки на заданном интервале времени тестирования при условии, что их обнаружение равновероятно, и что в заданный интервал времени обнаруживается только одна ошибка, которая сразу же исправляется.
Модель контроля функциональных объектов используется при испытаниях на отсутствие не декларированных возможностей ПО. Из множества контролируемых объектов выбирается их определенное количество, куда вносятся тестовые ошибки. Количество ошибок, содержащихся в ПО, определяется на основе количества используемых в вычислениях функциональных объектов, тестовых ошибок и функциональных объектов, составляющих ПО.
Модель испытания независимыми группами предполагает, что тестирование ПО осуществляется двумя независимыми группами или экспертами. На основе количества ошибок, обнаруженных каждой группой в отдельности, и количества совместно обнаруженных ошибок делается заключение об общем количестве ошибок, содержащемся в тестируемом ПО.
Модели сложности ПО. Данные модели базируются на гипотезе о том, что уровень безошибочности ПО может быть предсказан с помощью показателей сложности ПО (чем сложнее программа, тем вероятнее ошибка программиста).
Метрическая модель ошибок Холстеда. Оценка ошибок осуществляется на основе эмпирических соотношений, определяющих сложность ПО, причем сложность зависит от количества операторов и операндов используемого языка программирования и количества используемых операторов и операндов в конкретных реализациях ПО, а также от некоторого числа умственных операций (интеллектуальных усилий) в единицу времени – числа Страуда, которое Холстед принял равным 18.
Многофакторная модель сложности представляет собой линейную модель (фирмы TRW) оценки показателей сложности ПО по пяти эмпирическим характеристикам: логической сложности ПП, сложности взаимосвязей, сложности вычислений, сложности вывода и понятности. Перечисленные показатели участвуют в линейном уравнении, определяющем количество ошибок в ПО.
Модели роста надежности во времени. Это вероятностные динамические модели дискретных систем с непрерывным или дискретным временем, которые сводятся к ряду известных моделей массового обслуживания в классической теории надежности.
Экспоненциальная модель роста надежности (модель Джелински-Моранды, модель JM) основана на допущении, что в процессе тестирования ПО длительность интервалов времени между обнаружением двух ошибок имеет экспоненциальное распределение с интенсивностью отказов, пропорциональной числу необнаруженных ошибок, все ошибки равновероятны, обнаруженная ошибка мгновенно устраняется, а их число уменьшается на единицу. Полученная при указанных предположениях модель позволяет определить вероятности безошибочной работы, устранения всех ошибок за заданное время, средней наработки на ошибку, среднего времени устранения всех ошибок и т. д. К подобным моделям относят также модель Липова, Xui-модель, Shathikumar-модель, Bucchianico-модель.
Рэлеевская модель роста надежности ПО является развитием JM-модели в предположении, что интенсивность ошибок пропорциональна не только количеству необнаруженных ошибок, но и интервалу времени отладки, а функция плотности распределения времени обнаружения текущей ошибки, отсчитываемого от момента выявления предыдущей ошибки, имеет вид распределения Рэлея. К моделям этого типа относят также гиперболическую модель, Sukert-модель, модифицированную модель Липова.
S-образная NHPP-модель роста надежности программ предполагает, что количество ошибок, проявляющихся в единицу времени, является независимой случайной величиной, распределенной по закону Пуассона с интенсивностью потока, пропорциональной ожидаемому числу оставшихся в программе ошибок на заданный момент времени (модель Ямады), причем количество ошибок представляет собой S-образную зависимость от времени тестирования (поскольку на начальной стадии тестирования осуществляется изучение ПО экспертом). Модель позволяет определить интенсивность возникновения ошибки, а также вероятности того, что за заданное время будет выявлено и локализовано (или нет) то или иное количество ошибок. К моделям этого типа относят Duane-модель, модель Гомпертца, Goel-Okumoto-модель, Schneidewind-модель, модель Вейбулла, S-образная модель Рэлея, S–образная модель с задержкой, S-образная модель с точкой перегиба, параметризованная S-изогнутая модель, Dohiya-модель, модель Парето, гиперэкспоненциальная модель, Littlewood-модель, параболическая модель, логистическая модель, Pham-модель, Zhang-модель, Xie-логарифмическая модель, Musa-Okumoto-логарифмическая модель.
Отладочные модели надежности. Базируются на предположении, что свойство безошибочности ПО меняется только при его доработках и измеряется посредством прогона ПО на заданных входных данных.
Структурная модель Нельсона. Область входных данных ПО задается в виде нескольких непересекающихся областей, которым однозначно соответствуют множество вероятностей того, что соответствующий набор данных будет выбран при очередном прогоне ПО. На основе обозначенных показателей, а также с использованием общего количества прогонов ПО и количества прогонов, завершившихся отказом, определяется степень надежности ПО.
Немонотонная модель отладки и обновлений ПО. В основу этой модели положено предположение, что изменения надежности ПО возможны только в моменты его доработки, а степень надежности может, как повышаться, так и понижаться. Эффективность доработки определяется с помощью специальной метрики величины измененного кода. Показатель надежности определяется как величина, зависящая от неких коэффициентов эффективности доработки, начальной степени надежности и предельной степени надежности.
Модель позволяет получить формулы планирования испытаний (например, определить количество оставшихся ошибок после текущей доработки).
Рассмотренные модели надежности ПС основаны на времени функционирования ПС и/или количестве отказов (ошибок), полученных в программах в процессе их тестирования или эксплуатации.
Модели надежности, как правило, строятся на предположении либо о марковском, либо пуассоновском характере процессов обнаружения ошибок в программах и интенсивности отказов.