УДК 681.3.06
А. С. Марков
МОДЕЛИ ОЦЕНКИ И ПЛАНИРОВАНИЯ ИСПЫТАНИЙ ПРОГРАММНЫХ СРЕДСТВ ПО ТРЕБОВАНИЯМ БЕЗОПАСНОСТИ ИНФОРМАЦИИ
Представлены обзор и классификация моделей планирования испытаний программ по требованиям безопасности информации. Даны рекомендации по выбору моделей.
Email: [email protected]
Ключевые слова: средства защиты информации, безопасность программ, модели роста надежности, модели испытаний, модели сложности, тестирование.
Несмотря на усилия ведущих мировых разработчиков программного обеспечения (ПО), задача снижения числа уязвимостей в программных системах не получила реального решения [1]. Объективно это обусловлено чрезвычайно высокой структурной сложностью программных систем, динамичностью версий и технологий. Одним из путей повышения уровня безопасности ПО является использование на этапах тестирования и испытаний ПО моделей, позволяющих получить гарантированные оценки показателей безопасности ПО и эффективности технологии его разработки. Большинство таких моделей заимствованы из теории надежности технических систем, поэтому в литературе их часто называют моделями надежности ПО [2, 3]. С точки зрения испытаний программных средств по требованиям безопасности информации понятие «надежность функционирования ПО» эквивалентно понятию «технологическая безопасность ПО», где под ошибкой понимается уязвимость (некорректность программирования, дефект, недекларированная возможность), потенциально влияющая на безопасность системы и инфраструктуры [4].
Опыт испытательных лабораторий показывает, что применение математических моделей не должно отвлекать экспертов от реального трудоемкого и ответственного процесса исследования ПО и должно, главным образом, способствовать принятию правильных решений. Поэтому модели целесообразно классифицировать по имеющимся входным статистикам, получаемым на различных этапах жизненного цикла ПО:
1) модели полноты тестирования, позволяющие получить оценки показателей доверия к процессу оценки соответствия ПО;
2) модели сложности ПО, позволяющие оценить метрики сложности ПО и связанные с ними показатели качества и безопасности ПО;
3) временные модели роста надежности (reliability growth model), позволяющие оценить показатели технологической безопасности ПО в зависимости от времени испытаний;
4) отладочные модели, позволяющие оценить показатели технологической безопасности ПО в зависимости от прогонов на заданных областях входных данных и последующих доработок ПО.
Модели полноты тестирования. Модели оценки полноты тестирования ПО основаны на методах независимого внесения и выявления тестовых ошибок и методах проведения независимых экспертиз.
Модель учета внесенных ошибок, известная также как решение задачи теории вероятности «меченых рыб», или как модель Миллса (Mills), предполагает внесение в текст программы тестовых ошибок. В процессе тестирования собирается статистика о выявленных ошибках — внесенных и реальных.
Предполагается, что тестовые ошибки вносятся случайным образом, выявление всех ошибок (внесенных и собственных) равновероятно. В этом случае, используя метод максимального правдоподобия, можно получить оценку числа первоначальных ошибок ПО:
N = ^, о'
где S — число внесенных ошибок; v — число найденных внесенных ошибок; n — число найденных реальных ошибок.
Модель можно использовать для получения оценок безошибочности программы. Пусть тестирование выполняется до тех пор, пока не будут найдены все внесенные ошибки S = V. Тогда достоверность утверждения, что в программе имеется к ошибок,
R(k, S) -
1, n > k,
с
П < k.
s + k + 1
В случае, если в процессе испытаний выявлены не все внесенные тестовые ошибки, необходимо использовать следующую формулу:
R (k, v) -
1, n > k,
„v-l
Cs n
ck+v CS+k+1
n < k,
где V — число обнаруженных тестовых ошибок.
На практике данную модель применяют для контроля эффективности работы экспертов, проводящих аудит безопасности кода. К недостаткам модели относят проблему случайного внесения уяз-вимостей.
В модели учета внесения ошибок в разные модули ПО разделяется на две части. Считается, что 1-я часть ПО содержит N1 оставшихся ошибок, 2-я часть — N2, общее число оставшихся ошибок ПО N = = N1 + N. Предполагается, что выявление оставшихся ошибок равновероятно, обнаруживается одна ошибка в заданный интервал времени и исправляется после обнаружения.
Можно показать, что
^(0 - N -i,
j=o
N2(0 - N Xj
j=0
где X] — характеристическая функция, такая что
[0, если]-я ошибка найдена в 1-й части ПО; 11, если]-я ошибка найдена во 2-й части ПО.
Xi =■
В этом случае можно рассчитать вероятности обнаружения ошибки на заданном интервале времени тестирования (Х, ti+1):
Pi(i) =
P2(i) =
Nt(i)
N1- i =_i=0
N1(i) + N2(i) N1 - i + N2 N2(1)
N2 - i -ZXj _=_j=0
N1(i) + N2 (i) N1 - i + N2
Параметры N и N можно найти, используя метод максимального правдоподобия.
Модель контроля функциональных объектов используется аккредитованной лабораторией [1] при проведении испытаний на отсутствие недекларированных возможностей. Согласно руководящему документу Гостехкомиссии России, в процессе динамического анализа ПО контролируется р — заданный процент от Мф.о идентифицированных функциональных объектов. В процессе статического анализа произвольно выбираются тф.о функциональных объектов, в которые вносятся тестовые ошибки. При тестировании фиксируются найденные тестовые ошибки 5 и найденные реальные ошибки п. По аналогии с подходом Басина [5], используя метод максимального правдоподобия, можно получить оценку числа ошибок в ПО:
лг Мф.о - тф.о + 1
N - п—----.
— Мфо - 5 100 фо
Модель испытаний независимыми группами предполагает проведение тестирования двумя независимыми группами тестирования или экспертами.
В процессе тестирования подсчитывается количество обнаруженных ошибок обеими группами — N1 и N2, а также число обнаруженных обеими группами совпавших ошибок — N12.
Обозначив через N число первоначальных ошибок, можно определить эффективность тестирования каждой группы: Е1 = N1 / N и Е2 = N2 / N. Предполагая одинаковую эффективность тестирования обеих групп, можно допустить, что, если первая группа обнаружила определенное количество всех ошибок, она могла бы определить то же количество любого случайным образом выбранного подмножества. Это позволяет получить следующее равенство:
N1 / N = N1 / N12.
В этом случае интуитивная модель оценки числа первоначальных ошибок в ПО будет иметь вид
N = NN2 / N12.
Данная модель полезна на практике, когда тестирование параллельно проводит группа экспертов, имеющих собственные АРМ тестирования, что часто бывает при выездных испытаниях при ограничениях по времени работы.
Модели сложности программного обеспечения. Эти модели основаны на гипотезе о том, что уровень безошибочности ПО может быть предсказан с помощью показателей (метрик [6]) сложности ПО. Это справедливо для непреднамеренных уязвимостей, так как чем сложнее и больше программа, тем выше вероятность того, что программист ошибется при ее написании и модификации.
В качестве аргументов моделей, как правило, используются метрики сложности ПО, а сами модели сложности можно разделить на априорные и статистические.
Метрическая модель ошибок Холстеда (НаМеаф является наиболее известной априорной моделью сложности ПО. В основу разработки модели положены две базовые характеристики ПО: ^ — словарь операторов и операндов языка программирования и N — число использования операторов и операндов в программных реализациях, а также гипотеза, что частота использования операторов и операндов в программе пропорциональна двоичному логарифму количества их типов (по аналогии с теорией информации).
На основе общих статистических физиологических характеристик человека при реализации программы, описанной данными характеристиками, получен ряд эмпирических моделей оценки показателей качества ПО.
Сложность программы предложено рассматривать как совокупность интеллектуальных усилий (решения элементарных задач человеком до возникновения ошибки) при кодировании текста на определенном языке программирования:
E = N log271) = ,
7
где N = 71 log2 7 + 72 log2 72 — теоретическая длина программы; 71 = 71 + 72 — число уникальных операторов и операндов языка программирования; L = 272/(71 N2) — качество программирования; N = N1 + N2 — число обращений к операторам и операндам в ПО. Первоначальное число ошибок в ПО
0 3000
где V = N log2(71 + 72) — объем программы (в бит информации).
Известна также статистическая модель Холстеда для расчета числа ошибок на этапах отладки и испытаний в ПО:
2
Ат = KmE3 ,
где кт — коэффициент пропорциональности (например, для майн-фреймов кт = 1/3 200).
К простым статистическим моделям сложности можно отнести феноменологическую модель фирмы TRW [7]. Феноменологическая модель представляет собой линейную модель оценки показателя сложности ПО по пяти эмпирическим характеристикам программ, а именно: логической сложности Ltot, сложности взаимосвязей Cmf, сложности вычислений Cc, сложности ввода-вывода Cio и понятности
^ C = Lot + 0,1Cf + 0,2Cc + 0,4Co + (-0,1)Uread.
Для расчета числа ошибок N предлагается использовать следующую многофакторную модель:
N = LtotK1 + 0,1CinfK2 + 0,2CcK3 + 0,4^ + (-0, ,
где Ki — коэффициент корреляции числа ошибок с i-м показателем сложности.
Значения коэффициентов к, легко найти методом наименьших квадратов.
К недостаткам многофакторных моделей относят возможность получения эффекта «проклятья размерности» при большом количестве факторов или нелинейном виде аппроксимирующего полинома.
Временные модели роста надежности. Их относят к вероятностным динамическим моделям дискретных систем с непрерывным или дискретным временем. Большинство популярных моделей этого класса можно свести к марковским однородным, неоднородным или полумарковским моделям массового обслуживания.
В однородных марковских моделях полагается, что общее число ошибок ПО — неизвестная конечная постоянная величина. Число ошибок, оставшихся в ПО в процессе тестирования и отладки, описывается экспоненциальным законом распределения. Интенсивность ошибок MJ) зависит от текущего i-го состояния системы и не зависит от прошлых состояний.
По сравнению с однородными марковскими в полумарковских моделях полагается, что интенсивность ошибок Mjti) зависит не только от числа оставшихся ошибок в ПО, но и от ti — времени в этом состоянии.
В настоящее время все более популярным классом временных моделей становятся неоднородные марковские модели. В этих моделях общее число ошибок ПО является случайной величиной, описываемой пуассоновским законом распределения, причем интенсивность потока ошибок не является линейной функцией от времени. По этой причине модели часто называют пуассоновскими (Non-Homogeneous Poisson Process model, NHPP-модели). В зависимости от вида функции интенсивности пуассоновского потока NHPP-мо-дели разделяют на выпуклые (например, с распределением Вейбулла и Парето), S-образные (например, с распределением Гомпертца и Рэ-лея), бесконечные (например, логарифмическая модель).
Существуют модификации моделей надежности ПО путем применения байесовского подхода, которые иногда выделяют в отдельный класс моделей [8, 9].
Следует отметить, что для расчета параметров динамических моделей традиционно используется метод максимального правдоподобия, в редких случаях — методы линейной регрессии и кросс-энтропии.
Приведем примеры самых популярных временных моделей роста надежности каждого вида.
Экспоненциальная модель роста надежности программ, получившая название модели Елинского — Моранды (Jelinski — Moranda, JM-модель), основана на допущениях, что в процессе тестирования ПО длительность интервалов времени между обнаружением двух
ошибок имеет экспоненциальное распределение с интенсивностью отказов, пропорциональной числу необнаруженных ошибок. Все ошибки равновероятны. Каждая обнаруженная ошибка мгновенно устраняется, число оставшихся ошибок уменьшается на единицу.
Функция плотности распределения времени обнаружения г'-й ошибки, отсчитываемого от момента выявления (г - 1)-й ошибки, имеет вид
р{и) = ,
где Лг - (г -1)) — интенсивность ошибок, которая пропорцио-
нальна числу еще не выявленных ошибок в программе; N — число ошибок, первоначально присутствующих в программе; ф — коэффициент пропорциональности, интерпретируемый как интенсивность выявления ошибок; ti — интервал времени между (г - 1)-й и г-й ошибками.
Полученное выражение позволяет легко найти формулы для вычисления вероятности безошибочной работы, вероятности устранения всех ошибок за заданное время, средней наработки на ошибку, среднего времени устранения всех ошибок и др.
Для расчета параметров N и ф используют метод максимального правдоподобия.
В табл. 1 представлены примеры популярных марковских моделей, причем параметр N интерпретируется в качестве числа первоначальных ошибок в ПО.
Таблица 1
Марковские модели роста надежности программ
Модель Интенсивность ошибок Ai
JM-модель [10] p(N - (i -1))
Модель Липова [11] Р f i-1 N -Z N к j-1 ;
Xui-модель [12] p(e*(N-i+1) -1)
Shanthikumar-модель [12] p{N-(i -1)))
Bucchianico-модель [13] 1 -pN-(i -1))
Развитием JM-модели является модель Шика — Волвертона (БЫск — Wolverton, SW-модель), в которой полагается, что интенсивность ошибок пропорциональна не только количеству необнаруженных ошибок в ПО, но и интервалу времени отладки:
4 =ф{м - (г -1))^,
где N — число ошибок, первоначально присутствующих в программе; I — число обнаруженных ошибок; р — коэффициент пропорциональности, интерпретируемый как интенсивность выявления ошибок; ti — интервал времени между (7 - 1)-й и 7-й ошибками.
Отсюда выводится распределение Рэлея со следующей функцией плотности:
?
p(ti) = р( - (7 -1) )е 1 '2.
Для расчета значений параметров N и р модели используют метод максимального правдоподобия.
Примеры популярных полумарковских моделей приведены в табл. 2, причем параметр N также интерпретируется как число первоначальных ошибок в ПО.
Таблица 2
Полумарковские модели роста надежности программ
Модель Интенсивность ошибок Л7
SW-модель [9] р( N - (7 -1)) ^
Гиперболическая модель [5] р( N - (7 -1)) (-а{2 + Ы1 + с)
Sukert-модель [12] р( - (7 - N.))
Модифицированная модель Липова [11] ( М ^ р N-XNj \ j-1 (t 7-1 ^ 2 * 1.2 j-1 ;
В настоящее время одной из самых популярных моделей роста надежности является Б-образная NHPP-мoдeлъ Ямады ^ашаёа). В модели полагается, что количество ошибок, проявляющихся в единицу времени, — это независимые случайные величины, распределенные по закону Пуассона с интенсивностью потока, пропорциональной ожидаемому числу остающихся в программе ошибок на заданный момент времени.
В отличие от JM- и SW-подобных выпуклых моделей, здесь делается дополнительное предположение о S-образной зависимости числа ошибок от времени тестирования. Понятийно S-образная зависимость числа обнаруженных ошибок от времени объясняется тем, что в начальной стадии тестирования имеется фаза изучения экспертом ПО.
Функция количества ошибок задается следующей формулой:
т^) - а (1 - (1 + gt)е-^),
где а — коэффициент, характеризуемый число ожидаемых ошибок в ПО; 0 — коэффициент интенсивности выявления ошибок.
Соответственно, интенсивность возникновения ошибки
Л(') - agНе 0.
Полученные выражения позволяют легко найти формулы для вероятностей того, что за заданное время будет выявлено и локализовано (или нет) то или иное количество ошибок.
Параметры модели а и 0 можно найти с помощью метода максимального правдоподобия.
Примеры популярных КИРР-моделей даны в табл. 3, причем параметр а, как правило, интерпретируется в качестве числа ожидаемых ошибок в ПО.
Таблица 3
Неоднородные марковские модели роста надежности программ
КИРР-модель Функция количества ошибок т(')
Duane-модель [10] а'0
Модель Гомпертца [14] с' а0
Goel — Окито1;о-модель [12] а(1 - е ~0)
Schneidewind-модель [10] a / [ g (1 - е gt)"
Модель Вейбулла [15] a (1 - e-gf )
Экспоненциальная модель Ямады [12] a(l - e-(1-e(-gt))
S-образная модель Рэлея [16] a i f 2\ _ - rc 1-e 2 1 - e ^ V \ /
S-образная модель с задержкой [10] a (1 - (1 + gt )e~gt)
S-образная модель с точкой перегиба [8] a(1 - e~gt) 1 + ce~gt
Параметризованная S-изогнутая модель [5] 1 - e~gt a- 1 + ^(r)e gt
БоЫуа-модель [15] a(1 - e~gt )/(1 + e~gt)
Окончание табл. 3
Модель Парето [5] a "1 - (1 +1 / c)1-g ]
Гиперэкспоненциальная модель [8] a f1 -¿ be'git 1 V ¡=1 )
Littlewood -модель [5] ac g Г 1 1
_ cg (c +1)g
Параболическая модель [5] a -f и3+m2+nt) 1 - e 13 2 )
Логистическая модель [17] a 1 + ke~gt
Pham-модель [16] a - ae~gt (l + (g + d)t + gdt2)
Zhang-модель [14] a P-ß c ^ (1 + a)e~gt "1g 1 + ae~gt -(p-ß) •
Логарифмическая Xie-модель [5] alng (1 +1)
Логарифмическая Musa — Okumoto-модель [10] l/ [aln(agt +1) ]
Отладочные модели программ. В основе отладочных моделей лежит утверждение, что свойство безошибочности программы меняется только при ее доработках, а измеряется путем прогона программы на заданных входных данных. Такие модели часто называют моделями надежности, основанными на областях входных данных (input-domain models). Условно их можно разделить на модели, ориентированные на покрытие входных данных, и модели, ориентированные на величину доработки.
Структурная модель Нельсона. Модель, получившая название модель Нельсона (Nelson) [7], является биномиальной моделью Бер-нулли с наложенными правилами по использованию входных данных.
В частности, область входных данных ПО задается в виде к непересекающихся областей {Z}, которым однозначно соответствует множество вероятностей {pi} того, что соответствующий набор данных будет выбран для очередного прогона ПО. Таким образом, если при выполнении Ni прогонов программы (на Z наборе входных данных) ni из них закончились отказом, то степень надежности функционирования ПО определяется выражением
^ -1 -¿Пр.
Модель позволяет рассчитать вероятность безотказного выполнения программы п-прогонов программы:
u I W-Qj)
pu =П (! - Qj ) = '
j=1
=e=1
Здесь Qj - Т pji^i, где Jji — характеристическая функция отказа на i-м
i-1
наборе данных; pj — вероятность появления i-го набора в j-м прогоне.
Отметим, в структурной модификации модели Нельсона предлагается для нахождения pj использовать анализ графа ПО. К сожалению, проведение анализа структурно-сложного модифицируемого ПО для решения указанных задач на практике не представляется эффективным. К недостаткам модели также относят требования по большому количеству испытаний для получения точных оценок. Однако данная категория трудностей решается путем применения статистического метода Вальда [2].
Можно продемонстрировать переход от моделей отладки к временным моделям. Полагая, что Atj время выполнения j-го прогона, можно получить следующее расчетное выражение:
u
ТЩ) Atj
P = ej-1
- ln(1 - Qj) j
где A(tj) --— — интенсивность отказов; tj — сум-
Лtj i=1 марное время выполнения j прогонов ПО.
Полагая, что Лti ^ 0 c ростом числа испытаний u, имеем
t
z )dz
P(t) - e 0 .
В основе немонотонной модели отладки и обновлений ПО положено свойство изменения надежности только в моменты доработки ПО, причем степень надежности может как повышаться, так и понижаться:
Pu - Po +Т Лр.,
j-1
где и — число проведенных доработок ПО; АР/ — приращение степени надежности послеу-й доработки.
Для учета эффективности доработки вводится ку — метрика величины измененного кода, например, при исправлении ошибок или обновлении ПО. Это позволяет получить основное расчетное выражение для показателя надежности ПО [4]:
и ( 2 Л
Ри = Ро-(Ро-Ро)П 1 "X а ¡ку/Ро
j=о
i=i
где а^ — коэффициент эффективности доработки ПО в целях исправления ошибки или обновления; Р0 — начальная степень надежности; Р^ — предельная степень надежности.
Данная модель зависит от четырех параметров (Р0, а1, а2), расчет которых удобно осуществить с помощью метода максимального правдоподобия.
Следует указать, что модель позволяет вывести формулы для планирования испытаний. Например, число ошибок, оставшихся после и-й доработки, можно рассчитать следующим образом:
Nu = се il
ln
Л _ р^ 1_Р
V1 _ Ри У
ln(1 _ a)
где а — усредненный коэффициент эффективности доработки ПО.
Выбор модели оценки и планирования испытаний. Отметим, что не существует универсальной модели оценки и планирования испытаний ПО. Более того, кроме рассмотренных классов моделей в литературе можно встретить имитационные модели, структурные, нечеткие, интервальные модели, модели динамической сложности программ, модели программно-аппаратных комплексов, а также нейронные сети, получившие применение для решения отдельных научных задач. Для выбора подходящих моделей можно предложить ряд качественных и количественных критериев.
Качественными критериями можно назвать следующие:
1) простота использования. В первую очередь касается степени адекватности модели системе сбора статистики, т. е. используемые входные данные могут быть легко получены, они должны быть представительны, входные и выходные данные понятны экспертам;
2) достоверность, т. е. модель должна обладать разумной точностью, необходимой для решения задач анализа или синтеза в области безопасности ПО. Положительным свойством модели является воз-
можность использования априорной информации и комплексирова-ния данных других моделей в целях сокращения входной выборки;
3) применимость для решения различных задач. Некоторые модели позволяют получить оценки широкого спектра показателей, необходимых экспертам на различных этапах жизненного цикла ПО (показатели надежности, ожидаемое число ошибок различных типов, прогнозируемые временные и стоимостные затраты, квалификация специалистов, качество тестов, показатели точности, показатели покрытия ПО и др.);
4) простота реализации, в том числе возможность автоматизации процесса оценки на базе известных математических пакетов и библиотек, переобучения модели после доработок, учета случаев неполных или некорректных входных статистик, учета других ограничений моделей.
В качестве количественных используют следующие критерии:
1) показатели точности оценки;
2) показатели качества прогнозирующих моделей (сходимость, устойчивость к шуму, точность предсказания, согласованность);
3) информационные критерии качества прогнозирующих моделей (размерность, критерии В1С/А1С) [8].
4) комбинированные и интегральные показатели, например:
к
1С = тах £ ,
¿=1
где к — весовой коэффициент г -го свойства рассматриваемой модели, выбираемой экспертом; % — характеристическая функция г-го свойства.
Выводы. Как показало исследование, существует достаточно большое количество математических моделей, позволяющих получить оценки показателей технологической безопасности ПО на различных этапах жизненного цикла, что важно при планировании затрат на информационную безопасность. Рассмотренная классификация моделей позволяет на практике сориентироваться при выборе и комплексировании моделей в зависимости от имеющейся статистики.
Необходимо понимать, что ввиду динамичности, сложности и разнородности современных программных проектов к указанным моделям не могут предъявляться высокие требования по точности и зачастую они носят интуитивный характер при принятии решений по планированию тестирования ПО на всем множестве входных данных. Несмотря на это, результаты применения моделей удобно использовать как при обосновании трудоемкости испытаний, так и при представлении отчетных материалов, что повышает уверенность заказчика в результатах выполненных работ.
СПИСОК ЛИТЕРАТУРЫ
1. Сводный отчет по безопасности программного обеспечения в России и мире за 2010 год / А.А. Ф а д и н и др.; Под. ред. А.С. Маркова и В.Л. Цирлова. - М.: НПО «Эшелон», 2011. - 34 с.
2. С м а г и н В. А. Основы теории надежности программного обеспечения. - СПб.: ВКА им. А.Ф. Можайского, 2009. - 336 с.
З.Черкесов Г. Н. Надежность аппаратно-программных комплексов. - СПб.: Питер, 2005. - 479 с.
4. Марков А.С.Миронов С. В., Цирлов В. Л. Выявление уязвимостей в программном коде // Открытые системы. СУБД. 2005. № 12. С. 64-69.
5. Gokhale S. S., Marinos P. N., Trivedi K. S. Important Milestones in Software Reliability Modeling // Proc. of Software Engineering and Knowledge Engineering (SEKE 96). Lake Tahoe. - 1996. - P. 345-352.
6. IEEE Std. 1061-1998. IEEE Computer Society: Standard for Software Quality Metrics Methodology, 1998. -20 p.
7. Тейер Т., Л и п о в М., Нельсон Э. Надежность программного обеспечения. - М.: Мир, 1981. - 326 с.
8. Karanta I. Methods and Problems of Software Reliability Estimation. - VTT WP 63, 2006. - 57 p.
9. R a m o s I. C. Statistical Procedures for Certification of Software Systems. TSIM, 2009. - 195 p.
10. IEEE Std. 1633-2008. IEEE Recommended Practice in Software Reliability, 2008. - 72 p.
11. Neufelder A. M. Ensuring Software Reliability. Marcel Dekker Inc., 1993. - 242 p.
12. X i e M., Dai Y.-S., P o h K.-L. Computing Systems Reliability. Models and Analysis. Kluwer, 2004. - 293 p.
13. Bucchianico A. D., Groote J. F., van Hee K. M., Kruidhof R. Statistical Certification of Software Systems // Communications in Statistics — Simulation and Computation. - 2008. - Vol. 37, No. 2. - P. 346-359.
14. Garg R. P., Sharma K., Kumar R., Garg R. K. Performance Analysis of Software Reliability Models using Matrix Method // World Academy of Science, Engineering and Technology. - 2010. -Vol. 71. - P. 31-38.
15. Hosain Md. S. Software Reliability Using Markov Chain Usage Model. DCSEEBUET, 2005. - 90 p.
16. P h a m H. System Software Reliability. Springer Series in Reliability Engineering. Springer, 2006. - 440 p.
17. Huang C.-Y., Kuo S.-Y., Lyu M. R. An Assessment of Testing-Effort Dependent Software Reliability Growth Models // IEEE Transactions on Reliability. - 2007. -Vol. 56, No. 2. - P. 198-211.
Статья поступила в редакцию 19.10.2011