Научная статья на тему 'Анализ моделей прогнозирования надежности программных средств'

Анализ моделей прогнозирования надежности программных средств Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1180
716
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Хунов Т.Х.

В данной работе приведен анализ моделей прогнозирования надежности программных средств. Рассмотрены 3 основных моделей: Джелински-Моранды, простая экспоненциальная и метод Холстеда числа оставшихся в ПО ошибок.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Хунов Т.Х.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Анализ моделей прогнозирования надежности программных средств»

Анализ моделей прогнозирования надежности программных средств

Хунов Т. Х., НИУ Высшая школа экономики, МИЭМ tkhkhunov@hse.ru

Аннотация

В данной работе приведен анализ моделей прогнозирования надежности программных средств. Рассмотрены 3 основных моделей: Джелински-Моранды, простая экспоненциальная и метод Хол-стеда числа оставшихся в ПО ошибок.

1 Введение

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

Исходя из этого растет необходимость прогнозирования надежности и качества ПО на различных этапах жизненного цикла.

2 Модели прогнозирования надежности ПО

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

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

В наши дни можно выделить более десятка самых известных моделей надежности программного обеспечения (см. рис. 1). В этой работе все модели были сгруппированы по признакам.

- время нахождения ошибок в ПО;

- сложность самой программы;

- разметка ошибок (преждевременное

внесение в программное обеспечение

ошибок, которые известны заранее);

- структура входных данных.

- текстовая структура программы.

Рис. 1. Классификация моделей надежности ПО

В самой работе производится анализ трех моделей оценки надежности программных средств: модель Джелински-Моранды, простая экспоненциальная модель и метод Холстеда числа оставшихся в ПО ошибок.

2.1 Модель Джелински-Моранды

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

Она является одной из самых распространенных моделей надежности ПО.

Одним из вариантов прогнозирования надежности является наблюдение за ПО в течение некоторого отрезка времени и изображение на графике значений между ошибками, которые появляются последовательно. На Рисунке 2 изображено повышение надежности ПО (Я;, Я2, Яз - функции надежности, т. е. вероятность того, что в программе не будет ни одной ошибки или

ошибка не будет выявлена на промежутке времени от 0 до t).

Рис. 2. Увеличение надежности ПО при исправлении в нем ошибок.

Для создания модели необходимо ввести несколько предположений:

/. = К; постоянно до того, как ошибки будут выявлены и исправлены;

= 1(: = Л ■ (.V - ; - т.е. Z(t) прямо пропорционально числу оставшихся в ПО ошибок, где N - неопределенное начальное число ошибок, i - количество выявленных в эксплуатации программы ошибок, K - константа.

После выявления некоторого количества ошибок, неизвестные N и K уже могут оцениваться. Допустим, что обнаружено п ошибок, а х[1], х[2], ..., х[п] - это отрезки времени между выявленными ошибками. Тогда, учитывая то, что Z(t) постоянно между ошибками, вероятностная плотность для х/// станет равна:

Х[1]}

Результатом N будет оценка конечного числа ошибок. В том случае, когда известно значение К, имеется возможность использования этого уравнения, с целью предсказания времени до выявления (п + 1)-й ошибки и следующих ошибок.

Этот случай является частным случаем Шуманской модели. Допустим, что отрезки времени отладки между выявлениями 2-х ошибок имеет зависимость, называема экспоненциальной, и частота возникновения этих ошибок прямо пропорциональна числу необнаруженных ошибок. Функция плотности распределения времени обнаружения i-ой ошибки, считаема со времени обнаружения ^-1)-ой ошибки имеет следующим вид: р(^) = А^ ■ ехр ( ■ ££}, где

/.. = Ф ■ ' Л" : 1 и N - число ошибок, которые присутствуют изначально в ПО.

Вероятность безотказной работы ПО вычисляется следующим образом:

РЮ = где Л- = CD X

(1) (2)

Со - коэффициент пропорциональности, N0 - изначальное число ошибок в ПО. В (1) уравнении отчет времени начинается с момента последней (и1)-ой ошибки.

Используя метод максимального правдоподобия, есть возможность нахождения Со и N0. Функция правдоподобия будет иметь

следующий вид: " к к

Р = П^ = П Со ■ № - * + "

dt

¡=1 ¡=1 к

L = InF = У [1п(Св(Л?э - i +1) ) - Cd(N0 - i + i) ■ tj] Из этого находим условия для выявления

экстремумов:

dl

¿=1

дСп

dl dN

= 0,

¡=i

LN0 - i +1

CD ■ t;

= 0

Отсюда находим значения CD и N0:

Ef=1CN0-i+i)-f

Sf=1CPfo-i+i)-ti

yk . ■ ¿4=1

(4)

Уравнение (4) решается методом перебора. Решив (3) и (4), получаем СО = 0,02 и N = 4, соответственно. Тогда из (1 и 2) получаем Л(£,) = ехрГ0,02 ■ . Следователь-

но, Х4 = 0,02 и примерное время до последующего отказа программного обеспечения составит < t4 >= 1/Х, = 50ч.

В основе этой модели лежит несколько допущений:

- интенсивность обнаружения ошибок R(t) прямо пропорциональна текущему числу ошибок в ПО;

- все ошибки могут появиться с одинаковой вероятностью;

- время до следующей ошибки распределено экспоненциально;

- корректировка ошибок осуществляется без внесения в программу других ошибок;

- R(t) = const между 2-мя соседними ошибками;

Учитывая во внимание эти допущения, функцию распределения интенсивности отказов между (/ - 1) и /-ой отказами имеет следующим вид:

ч

где К - коэффициент пропорциональности; N0- начальное число ошибок в ПО.

Все отрезки времени = — 1г_ 1 имеют экспоненциальное распределение:

Учитывая во внимание принцип максимального правдоподобия, значения К и N0 получаются следующими: К

(5)ЕГ=1

Xf=1CN0-i+l}-ilt3'

1 _ ri'Zf-^iltj

N0—i+ 1 Sf=1(N0-i+l>-Jtj

(6)

Получившееся уравнение (6) является нелинейным и его трудно решить численными методами.

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

1

^1+1 =

Т =

At

£=п+1

Есть возможность посчитать Ап - число ошибок, необходимых найти и устранить для повышения наработки между обнаружением ошибок от Т1 до Т2:

An = Nn

^ тР

(7)

Также, можно посчитать временя А?, потраченное на тестирование, служащее для устранения Ап ошибок и повысить наработку от Т1 до Ту.

Л, = Л": ■ Т: ■ — (8)

Коэффициент готовности:

где ? - период проверок, - время затрат ресурсов на проверки, ?в - время, которое потребуется для восстановления работоспособности ПО.

Коэффициент простоя Ки = 1 — Кт,

Время, которое потребуется для отладки:

Тт — к

Н-^-К2 JVC^r+O

)

где Н - число систем, в которых корректно работает программа; - время, необходимое для эксплуатации программы; с

- это коэффициент увеличения затрат ресурсов на единицу машинного времени.

Средняя наработка на отказ: Ï" = -

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

>1

Из (8) уравнения видно, что время, требующееся на тестирование, прямо пропорционально квадрату начального количества ошибок Т0 в ПО. Например: допустим, .V- - 1 v С С ; Г- - 1час. Требуется повысить надежность ПО с Ti = 1час до Т2 = 1 месяц . В этом случае из (7) уравнения An = 999, из этого следует, что надо обнаружить все ошибки для того, чтобы за 1 месяц ПО работало устойчиво. Для этого необходимо время At ™ 60 дней. На практике понадобится в разы меньше времени и будет выявлено меньше ошибок. И есть вероятность, что за малое время будет обнаружено 99% ошибок в той части программы, выполняющейся чаще. А в части ПО, исполняющейся меньше, не обнаруженными останутся до 99% ошибок. Из этого можно сделать вывод, что важным является точная подборка входных данных при тестировании и вывод о необходимости уменьшать время тестирования за счет меньшего тестирования ма-лоиспользуемых ветвей ПО.

2.2 Простая экспоненциальная модель.

Отличительным свойством этой модели от модели Джелински-Моранды является то, что J[(t) Ф const.

Допустим N(t) - число шибок, обнаруженных к моменту времени t и функция риска прямо пропорциональна числу ошибок, не обнаруженных к моменту t в про-

Если продифференцировать обе части

уравнения по времени:

¿1 (¡1

Учитывая, что есть (число

ошибок, выявленных в единицу времени), мы получим дифференциальное уравнение:

dR g)

— К ' F.'.'t = " с начальными условия-

0) =К N0.

ми N(0) =0

Если решить это уравнение, получится следующая функция:

= К - Nn

К ■ t)

(9)

Значениями К и N0 для первых п ошибок

будет следующие выражения: 1

к =

У ^--(У1 tY

Используя (9) уравнение мы сможем определить время, которое необходимо для уменьшения интенсивности появления ошибок с Rift) до Rift): г±

— In —

Е R,

2.3 Метод Холстеда оценки числа оставшихся в ПО ошибок

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

В этом случае для программы существует понятие длины самой программы N и объем программы (измеряемое в битах) V:

N = ni -log2ni + П2 -log2n2, V = N-log2(ni + n2), (10)

где n1 - количество различных операций (например, таких как IF, =, DO, PRINT и т.п.); n2 - количество различных переменных и констант.

Следующим шагом рассматриваем потенциальный объем программы (в битах) V*:

(11) Cn2 + 2)Xl0g2(n2+2)'

где nl - количество входных и выходных переменных.

Величину П2 можно будет обнаружить на стадии технического задания или технического проекта на разработку программного обеспечения.

Еще вводится понятие уровня программы L, который определяется как отношение потенциального объема V* к объему

ir*

.

v

Также вводятся величины:

^ L Vs'

.''. = !'■ Г - уровень языка программирования. Значения l для некоторых языков программирования: ассемблер - 0,88; фортран - 1,14; PL-1 - 1,53; С/С++ - 1,7; Pascal -1,8; JAVA - 1,9.

Следовательно,

CF'-P

_ Е _ <у*93 S [¡LxS)

(12) (13)

оценка времени, которое затрачивается на разработку программного обеспечения, где S - параметр Страуда.

Параметр Страуда - это психофизиологическая характеристика времени, которая необходима человеческому мозгу для выполнения элементарной мыслительной операции. S лежит в интервале от 5 до 20 различий в секунду. Холстедом используется значение S = 18, которое характеризует процесс программирования как довольно напряженную умственную работу.

Используя (13) уравнение мы сможем оценить выигрыш во времени разработки при переходе от одного языка программирования Л/ к другому языку Л2:

ж тг-т2 К

Тг Т, Л2

Например, выигрыш при переходе с C/C++ на JAVA составит около 10%, а с ассемблера на JAVA - 50%.

Основными предположения этой модели являются:

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

- мозг человека может обработать одновременно и безошибочно «7 ± 2» объектов (гипотеза Миллера).

Если взять нижнюю границу в 5 объектов и добавить еще один объект, мы получим максимальное число п\ = 6 различных входных и выходных параметров для потенциально безошибочной программы. Тогда потенциальный объем 1'0* по (10): Vo = (6 + 2} X 1иц2(б + 2) = 24 логических бита.

Из этого следует, что после обработки 24 битов информации на языке программирования человек совершит 1 ошибку. %)3 24-3

3000

А 2,16

Это значит, что на каждые 3000 бит объема V* приходится 1 ошибка. Тогда для реального объема ПО из (20) следует, что количество ошибок в программном обеспечении:

(14)

N

(ухУ2 зааахл

В качестве примера оценим по формуле (13) потенциальное количество ошибок в АСКРО:

Подсистема АСКРО Количество входных параметров

Метеокомплекс 10

Зона наблюдения 60

Промплощадка 40

АКРБ 40

Выбросы 14

Расход 6

Итого: 170

Учтем также, что на каждое значение приходится значение АУ и ПУ, а также на каждую подсистему приходится примерно по 8 параметров - контроль неисправности измерительных каналов и достоверности получаемых значений и датчиков.

Итак, = 170 X (8 + 2) = 1700 - число входных и выходных параметров, что дает для потенциального объема программы величину V = (1700 + 2) X log2(1700 + 2) ж 18300 бит.

Тогда из (14) получаем оценку для числа ошибок в АСКРО (учитывая, что используются языки программирования C/C++ и JAVA) N = 61800. И по формуле (13) получаем оценку для времени разработки T = 6150 лет, что превышает реальный срок разработки 1,5 года в 4100 раз. Поэтому количество ошибок в АСКРО можно оценить, уменьшив в это количество раз полученную ранее величину N и учтя количество работающих над ней программистов (около 5). Тогда получим число ошибок равное 100, что более соответствует действительности.

Выводы

Модель Джелински-Моранды актуальна при моделировании надежности небольшого ПО. Экспоненциальная модель приме ня-лась при тестировании реальных ПО и соответствует действительности.

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

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

- потенциально возможной надежности функционирования программ в процессе испытаний и эксплуатации;

- числа обнаруженных ошибок;

- время тестирования, требуемое для обнаружения следующей ошибки;

- время, необходимое для обнаружения с заданной вероятностью большинства имеющихся ошибок.

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

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

Список литературы

Military Handbook. Electronic reliability design handbook, 1998.

Handbook of 217 plus. Reliability prediction models, 2006.

Липаев В.В. Надежность программных средств. - М.: СИНТЕГ, 1998.

Гуляев В.А., Коростиль Ю.М. Анализ и исследование методов оценки и увеличения надежности программ. - Киев, 1990.

i Надоели баннеры? Вы всегда можете отключить рекламу.