Ви є тут

Методи оцінки та засоби підвищення надійності програмного забезпечення

Автор: 
Дідковська Марина Віталіївна
Тип роботи: 
Дис. канд. наук
Рік: 
2006
Артикул:
3406U000699
129 грн
Додати в кошик

Вміст

ГЛАВА 2
Модели оценивания надежности программного обеспечения
В главе 1 была показана актуальность задачи управления надежностью. Классически
к ее решению подходили с помощью моделей оценивания надежности. Начиная с фазы
тестирования ЖЦ ПО (рис 1.2), появляется возможность накопления статистических
данных про отказы ПО и последующего численного оценивания текущего уровня
надежности. Если полученные оценки не удовлетворяют требованиям проекта, то
возникает необходимость в возвращении на предыдущую фазу ЖЦ ПО. Данный процесс
повторяется итеративно до достижения требуемого результата. Таким образом,
осуществляется управление качеством ПО.
Задача данной главы заключается в исследовании основных существующих моделей
оценивания надежности ПО - как статических, так и динамических, и анализ их
практического применения.
2.1. Надежность программного обеспечения и ее оценивание
Рассмотрим математические основы надежности ПО [54].
Вероятность P(t) того, что в интервале времени от t до t+Dt возникнет отказ,
равна:
где F(t) - функция распределения отказов, а f(t) – функция плотности. Тогда
функция надежности будет иметь вид:
Интенсивность отказов – это вероятность возникновения отказа в интервале
времени от t до t+Dt, на единицу времени:
рассмотрим предел функции интенсивности при условии, что временной интервал
стремится к нулю:
Функцию надежности можно выразить следующим образом:
Пусть M(t) - случайный процесс, который характеризует кумулятивное количество
отказов, произошедших в системе на момент времени t. Обозначим его
математическое ожидание как m(t): . Причиной отказа является неисправность,
которую и требуется выявить. Тогда функция интенсивности выявления
неисправностей [54] является производной от m(t):
Во время разработки и тестирования ПО необходимо оценивать его надежность. В
данном параграфе были представленные математические основы надежности,
рассмотрим детально, каким образом надежность ПО оценивается на практике.
Для оценивания надежности ПО используют различные аналитические методы [90],
которые могут быть разделены на два основных класса - по области определения
данных (статические) и времени (динамические). Второй класс получил название
"модели возрастания надежности".
Статические модели анализируют неисправности как содержимое программного
продукта, в то время как динамические рассматривают отказ как процесс.
Использование статических моделей для получения точных оценок надежности
программного обеспечения очень дорого, в то время как модели возрастания
неисправностей - экономически более выгодные. Данные, полученные с помощью
статических моделей, могут быть использованы для основательного тестирования
программных продуктов, в то время как модели возрастания неисправностей
оценивают и прогнозируют общую надежность.
Эти два подхода представляют разные взгляды на надежность программного
обеспечения, каждый имеет свои сильные стороны и ограничения. Рассмотрим и
проанализируем модели, которые иллюстрируют оба подхода.
2.1.1. Статические модели
Статические модели базируются на предположении, что если идентифицировать все
входные комбинации для программы, то оценка надежности может быть получена
путем выполнения программы со всеми входными комбинациями и исследованием
полученных результатов. Конечно, на практике это почти невозможно реализовать,
и ради практического применения было разработано несколько методов выбора
наборов данных - образцов, которые будут представлять данные, и использоваться
для оценивания количества неисправностей в ПО во время его разработки.
2.1.1.1. Методы засевания неисправностей
В программный продукт с неизвестным количеством неисправностей вносится
определенное известное количество неисправностей ("засевается"), после чего ПО
тестируют. Оценка надежности получается с помощью отношения выявленных
"засеянных" неисправностей к выявленным настоящим неисправностям. Учитывая то,
что количество "засеянных" неисправностей величина известная, то легко оценить
количество настоящих неисправностей. В этом методе предполагается, что
вероятность выявления настоящей и "засеянной" неисправностей - одинакова.
Рассмотрим некоторые модели, которые характеризуют данный метод.
Гипергеометрическая модель Милла.
Эта наиболее известная модель засевания неисправностей.[91] В данной модели в
ПО, которое уже содержит N неисправностей, "засевается" известное количество
неисправностей N1. N считается неизвестным и оценивается по количеству
неисправностей, засеянных и настоящих, которые выявлены во время тестирования.
При этом используется гиперэкспоненциальное распределение. Вероятность того,
что ровно k из r выявленных неисправностей - засеянные:
(1)
тогда по методу наибольшего правдоподобия, оценка N равна:
Модифицированная модель Милла-Бейсина.
Милл считал, что вероятность того, что выборка имеет длину r:
но, принимая во внимание то, что общее количество неисправностей не N, а, то
эта формула была скорректирована Бейсином [92], тогда:
,
а оценка общего количества ошибок будет иметь вид:
Бейсин предложил двухэтапную процедуру тестирования: один программист ищет и
выявляет N1 неисправностей из общего количества N, перед вторым программистом
стоит задача независимого тестирования ПО и выявления r из N неисправностей.
Потом два перечня неисправностей сравниваются и уравнение (1) представляет
вероятность того, что k неисправностей в перечне второго включенные в перечень
первого программиста. Таким образом, в качестве "засеянных" используются уже
выявленные неисправности.
2.1.1.2. Статические методы
В данном случае надежность ПО оцениваются путем выполне