УДК 681.3.06
А. С. Марков
НЕЧЕТКАЯ МОДЕЛЬ ОЦЕНКИ НАДЕЖНОСТИ И БЕЗОПАСНОСТИ ФУНКЦИОНИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПО РЕЗУЛЬТАТАМ ИСПЫТАНИЙ
Рассмотрен подход к оценке и планированию испытаний программного обеспечения на основании применения моделей роста надежности. Предложен подход к использованию аппарата нечетких множеств, позволяющий учесть неполноту исходных данных.
E-mail: [email protected]
Ключевые слова: модели роста надежности, испытания программного
обеспечения, сертификация, дефекты, уязвимости, ошибки.
Испытания программных комплексов по требованиям надежности функционирования и безопасности информации являются одним из самых длительных и трудоемких этапов внедрения автоматизированных систем. В первую очередь это определено чрезвычайной структурной сложностью современного программного обеспечения (ПО) и его неоднородностью. Неполная информация о структуре, принципах построения и функционирования ПО, разнородность состава, наличие заимствованных компонентов, ограниченный объем спецификаций затрудняют оценку и прогнозирование надежности функционирования ПО. В таких случаях традиционные подходы получения и прогнозирования достоверных оценок сопряжены со значительными затратами на их реализацию [1-3]. Поэтому актуальным считается построение моделей на базе теории нечетких множеств, позволяющих с приемлемой для практики точностью получить оценки надежности функционирования ПО [4].
Построение модели роста надежности программы. Под надежностью функционирования ПО понимают его свойство сохранять работоспособность на определенном промежутке функционирования при соблюдении режимов и условий применения, заданных спецификациями. Нарушением работоспособности ПО является его отказ. Причиной отказа могут быть неустраняемые ошибки (дефекты, уязвимости) ПО или среды функционирования. Понятие надежности функционирования ПО в данном случае эквивалентно понятию функциональной безопасности ПО, основной характеристикой которой является реализация уязвимостей (дефектов) ПО, потенциально влияющих на целостность, доступность и конфиденциальность ресурсов автоматизированной системы [1, 3].
Нечеткие модели оценки надежности ПО описаны в [2, 7]. Особенность этих моделей состоит в том, что все они ориентированы на проведение статического и динамического анализа графа программы, что затруднено на практике по причине чрезвычайно высокой структурной сложности современных программных систем и сред [5, 6]. Известные модели роста надежности [2, 7-13], используемые при тестировании по методу «черного ящика», имеют монотонный характер, что не в полной мере соответствует реальному процессу исправления ошибок или обновления ПО (рис. 1). Процесс испытаний и отладки ПО немонотонной функцией роста надежности ПО предлагается описать, используя для учета неполноты входных данных возможности теории нечетких множеств [4].
Немонотонная функция роста надежности ПО имеет вид [6]
где Рп — вероятность успешного прогона ПО после п-й доработки; Р — предельная степень надежности; р — начальная степень надежности; а — коэффициент эффективности доработки.
Эта модель зависит от трех параметров, расчет которых удобно осуществить с помощью метода максимального правдоподобия. Для построения функции правдоподобия целесообразно использовать данные, фиксируемые в процессе испытаний ПО, а именно: порядок доработок, результаты прогонов ПО (обнаружены уязвимости или нет), число прогонов между доработками.
(
рп=Po-(Po- Po) i -a
(i)
V J
1
К p.
1 ! 2 13 14 '5
u-1
и Доработки
0 1 2 3 4 5 ...
... L-1 L Прогоны
Рис. 1. Рост степени надежности ПО при доработках
Логарифм функции максимального правдоподобия имеет следующий вид:
1п (К ) = ! {1,1п [1 - (Р„-(Р„- Р )(1 - а / Р„ У ] +
1=0
+ ( - )1п Рв -[( - Ро ))1 - а / ^ )1 ]},
где — число отказов в ^ -испытаниях; п — число доработок.
Функция 1п (Ьп) является выпуклой и задана на выпуклом множестве. Поэтому для эффективного нахождения максимума функции правдоподобия целесообразно использовать модифицированный метод наискорейшего спуска с переменным параметром шага, что позволит получить искомые параметры модели (1).
Основная трудность моделирования степени готовности автоматизированной системы состоит в том, что оценку степени надежности функционирования ПО приходится выполнять в условиях существенной неопределенности:
1. Размытость причинно-следственных связей автоматизированной системы как эргатической не позволяет четко разделить доработки на удачные и неудачные.
2. Определение доработки как функции от метрических характеристик программ не всегда соответствует действительности. Необходимы знания специалистов-разработчиков ПО.
3. Ряд ошибок является следствием погрешности организации отладки и обновлений. Некоторые автоматически устраняются на завершающих этапах создания ПО и не требуют исправления.
Указанные неопределенности вносят в оценку надежности функционирования ПО значительную долю субъективизма. Учет их с помощью аппарата теории нечетких множеств позволяет повысить достоверность оценок без существенного изменения модели (1). Решение этой задачи составляет основное содержание работы.
Разработка нечеткой модели роста надежности программы.
Представим информацию о процессе отладки в виде множества
х = {*,■},
где х1 — доработка ПО, I = 1, п.
Число учитываемых доработок
п
т = , ■=1
где Хг ={0, 1} — характеристическая функция, определяющая наличие доработки х 1.
Формализуем возможную нечеткость доработки ПО путем перехода от характеристической функции {0, 1} до континуума [0, 1]. Тогда соответственно имеем:
1) нечеткое множество А = |[хг, /А (хг)]}, представляющее собой совокупность упорядоченных пар доработок х1 универсального множества X и функций принадлежности /А (х1), характеризующих наличие доработок;
2) множество учитываемых доработок Я = {т}, т = 0, п.
В этом случае нечеткое множество учитываемых доработок
М = {[т, / (т)]}, (2)
где /м (т) — функция принадлежности, означающая степень уверенности в том, что число учитываемых доработок равно т.
В общем случае функция принадлежности определяется следующим выражением:
/м = тахтт{/,..., /, ...,/,..., /п т)у
Для практического расчета разложим функцию принадлежности доработок по возрастанию и убыванию:
/0 — / — • * • — /т — /т+1 — ,
/0 ^-^/т ~ /т+1 /п ,
что позволяет получить основное расчетное соотношение:
/м (т) = т1п (//я+1, /т ).
Число учитываемых доработок т, соответствующее максимальной степени уверенности (т. е. максимальной функции принадлежности),
m = у mx,
Ъ
¿=0
0, если ft < ft,
где mj = < - ■ x ^ l1, если ft>ft.
Максимальную функцию принадлежности можно рассчитать следующим образом:
Mmax = minjnax ( A')-
1< к m 4 '
Применив принцип обобщения [4], перейдем от нечеткого множества учитываемых доработок (2) к искомому нечеткому множеству степеней надежности ПО:
P = {[ Pm, j (Pm)]}, (3)
где juP (Pm) = min (jui+1, jui ); m = 0, n; Pm — степень надежности, рассчитываемая по формуле (1).
Важно отметить, что, учитывая монотонную зависимость степени надежности ПО от числа доработок, можно формализовать нечеткое множество P (3) набором иерархически упорядоченных четких множеств. Согласно теореме декомпозиции [4], получаем
Up = U (aU У
ae[0,1]
|0, если ju(x )>a, где jP = < . ч
a I 1, если ju(x )<a.
Назначая величину a исходя из конкретных условий эксплуатации ПО и точности экспертной оценки, можно получить интервальную (гарантированную) степень надежности ПО
Р = {Pm I Um(m) >a}.
Пример возможности применения аппарата нечетких множеств. Приведем простейший пример расчета степени надежности ПО. На этапе отладки ПО проведено 48 тестов, выявлено пять групп недостатков и выполнены соответствующие доработки. По результатам обработки мнений экспертов получена информация об отладке в виде нечеткого множества доработок
A = {(1, 0,0), (2, 0,4), (3, 0,2), (4, 1,0), (5, 0,9)}.
После упорядочения нечеткого множества A по значениям функции принадлежности нечеткое множество учитываемых доработок имеет вид
M = {(0, 0,0), (1, 0,2), (2, 0,4), (3, 0,6), (4, 0,1), (5, 0,0)}.
Рассчитав степени надежности по формулам (1), получили нечеткое подмножество степеней надежности ПО
P = {(0,31, 0,2), (0,69, 0,4), (0,97, 0,6), (0,98, 0,1)}. В соответствии с принятым уровнем гарантии a = 0,4
Р = [0,69, 0,97].
Предложенные в работе практические решения учитывают неопределенности условий разработки и испытаний ПО. Это позволяет достаточно точно получить максимальные и интервальные оценки надежности и функциональной безопасности ПО. Аналитические выражения позволяют упростить анализ надежности ПО по сравнению с методами, использующими экспертные оценки. Изложенные результаты целесообразно использовать в процессе планирования системных и комплексных испытаний.
СПИСОК ЛИТЕРАТУРЫ
1. Казарин О. В. Безопасность программного обеспечения компьютерных систем. - М.: МГУЛ, 2003.
2. Карповский Е. Я., Чижов С. А. Надежность программной продукции. -Киев: Техника, 1990.
3. Липаев В. В. Функциональная безопасность программных средств. - М.: СИНТЕГ, 2004.
4. Марков А. С. О возможности использования теории нечетких множеств для оценки качества программных средств ЛВС // Тез. докл. Всесоюзной конференции, посвященной 50-летию ВИКИ им. А.Ф. Можайского «Научно-технические проблемы развития автономных систем управления и вычислительных средств РКТ» - Л.: МО СССР, 1990. - С. 306-315.
5. Марков А.С.Миронов С. В., Цирлов В. Л. Выявление уязвимостей в программном коде // Открытые системы. СУБД. - 2005. - № 12. - С.64-69.
6. Марков А. С., Годердзишвили Г. М. Модель оценки степени отлажен-ности программного обеспечения по результатам испытаний // Методы и средства управления и контроля. - Л.: МО СССР, 1987. - С. 51-52.
7. Смагин В. А. Основы теории надежности программного обеспечения. -СПб.: ВКА им. А.Ф. Можайского, 2009.
8. Черкесов Г. Н. Надежность аппаратно-программных комплексов - СПб.: «Питер», 2005.
9. Andersson B., Persson M. Software Reliability Prediction. - SEBIT, 2004. - 32 р.
10. Corro Ramos. Statistical Procedures for Certification of Software Systems. -TSIM, 2009. - 195 p.
11. Hoang Pham. System Software Reliability. - Springer, 2006. - 440 p.
12. IlkkaKaranta. Methods and problems of software reliability estimation. - VTT, 2006. - 60 p.
13. Rung-TsongLyu M. Software Reliability Theory. - John Wiley & Sons, 2002. - 43 p.
Статья поступила в редакцию 19.10.2011