3. Руссинович М., Соломон Д. Внутреннее устройство Microsoft Windows: Windows Server 2003; Windows XP и Windows 2000. 4-е изд. М.: Изд. -торг. дом «Русская Редакция», 2005. 992 с.
4. Таненбаум Э. Современные операционные системы. 2-е изд. СПб.: Питер, 2002. 1040 с.
5. Черненький В.М. Процессно-ориентированная концепция системного моделирования АСУ: дис. ... д-ра техн. наук: 05.13.06. М.: 2000. 299 с.
6. Hoglund G., Butler J. Rootkits: subverting the Windows kernel - Addison-Wesley, 2006. 324 p.
7. Kaspersky Security Bulletin. Развитие угроз в 2008 году [Электронный ресурс] // Лаборатория Касперско-го: [сайт]. [2008]. URL: http://www.securelist.com/ru/ analysis/204007645/Kaspersky_Security_Bulletin_Razvitie_ ugroz_v_2008_godu (дата обращения 24.02.2010)
8. OS Platform Statistics [Электронный ресурс] // Refsnes Data: [сайт]. [2010]. URL: http://www. w3schools.com/browsers/browsers_os.asp (дата обращения 24.02.2010)
9. Silberschatz A., Gagne G., Galvin P. Operating system concepts with Java / 6th Edition. - John Wiley & Sons, 2004. 952 p.
УДК 004.052.42
В.П. Бубнов, А.В. Тырва, А.Д. Хомоненко
ОБОСНОВАНИЕ СТРАТЕГИИ ОТЛАДКИ ПРОГРАММ НА ОСНОВЕ НЕСТАЦИОНАРНОЙ МОДЕЛИ НАДЁЖНОСТИ
Модели надёжности программного обеспечения подробно рассмотрены в научной литературе. При этом наибольшую известность получили модели Джелинского-Моранды, Мусы и Литлвуда. Систематическое описание этих и ряда других моделей надёжности программ приводится в [1]. Авторами [2] описываются нетрадиционные методы оценки надёжности информационных систем. В [3] рассматриваются модели поведения программ, в которых учитываются интервалы работоспособного и неисправного состояний программы.
Оценка характеристик надёжности программ представляет несомненный интерес. Однако следующий важный шаг, конечно, связан с выработкой практических рекомендаций по организации отладки программ, позволяющих улучшить характеристики процесса отладки. Планирование испытаний сложных программных комплексов описано в [4, 5]. В них делается существенное предположение о том, что характеристики надёжности отдельных программных модулей известны.
Мы рассмотрим вопрос обоснования стратегии отладки (отдельного модуля) программы на основе использования модели роста надёжности программы, аналогичной вероятностным моделям надёжности программ, таким как экспоненциальная модель Джелинского-Моранды, геометри-
ческая модель, модели Мусы и др. экспоненциальных моделей [1]. Модели роста надёжности программ часто используют вероятностные подходы и модели систем массового обслуживания с конечным и бесконечным числом каналов обслуживания и сетей массового обслуживания Джексона. К примеру, в [6] предлагается модель, основанная на марковской модели систем массового обслуживания, с решением задачи появления и устранения ошибок в программе как марковского процесса гибели и размножения с непрерывным временем и нахождением его характеристик. Недостатком названного решения является использование предположения о стационарности рассматриваемых процессов.
В основу предлагаемого решения положим модель нестационарной системы обслуживания, предложенную в [7]. В данной модели используется допущение об экспоненциальном распределении длительностей интервалов между обнаружением и исправлением последовательных ошибок. Однако в отличие от названных выше моделей, не накладывается ограничений на вид зависимости интенсивностей обнаружения и устранения ошибок от номера ошибки (количества ещё не исправленных ошибок в программе).
При соответствующей вероятностной интерпретации (аналогичной модели Джелинского-
о
Л/-3
Л/-2
Л/-1
N
О
А/ у / /\|+1 у / у / Л/+/ у / « I /
' ЧРи ЯРц ЛРц
■ А;^ 'Л/л.о | Л/+3 ^ | Л/+/+1 ^
|А/+1 / * |Л,+2 ^
X ! кН/'х ! Мг/х ! Мз/ X ! Му+1// Лм-з I Лм-21 Лм-1 I / Ал/1 гу >
Л/-3
Л/-2
Л/-1
N-2,2
Рис. 1. Диаграмма переходов между состояниями системы М(г)/М(])/М
Моранды и подобным) модель позволяет описывать и рассчитывать характеристики надёжности программы, а также обосновывать стратегию отладки программы. Модель в большей степени подходит для получения прогнозных оценок надёжности отдельных программных модулей, число ошибок в которых может колебаться от единиц до двух-трёх десятков.
Важным вопросом при моделировании надёжности программного обеспечения является выбор исходных данных. Распространённым подходом [1] является использование собранной в процессе разработки уже завершенных проектов статистики ошибок (интенсивности обнаружения ошибок при отладке, временные интервалы
между моментами обнаружения ошибок). Однако для учёта особенностей конкретного проекта целесообразно также использовать его характеристики, влияющие на надёжность -например, объектно-ориентированные метрики [8-10] (длина наибольшего пути иерархии наследования, взвешенное количество методов класса и др.). Метод планирования тестирования программ с использованием объектно-ориентированных метрик сложности предложен в [5].
Марковская нестационарная модель процесса отладки
Отладка программы представляет собой процесс, состоящий из двух этапов: тестирование
(поиск ошибок) и устранение обнаруженных ошибок. Эти два типа деятельности, как правило, разделены и выполняются различными исполнителями (командами). Для упрощения будем считать, что при устранении ошибки новые ошибки не вносятся. Кроме того, считаем, что интенсивности обнаружения и исправления ошибок зависят от номера обнаруженной и устраняемой ошибки.
Предположение о зависимости интенсивности обнаружения и исправления ошибок от номера ошибки широко используется во многих вероятностных моделях роста надёжности программного обеспечения. Такое предположение основано на том, что по мере обнаружения и устранения ошибок в программе число ошибок в программе остаётся всё меньше и, соответственно интенсивность обнаружения ошибок уменьшается.
Предположение о зависимости интенсивности исправления ошибок от номера устраняемой ошибки в данном случае не является ограничением предлагаемой модели роста надёжности программы, а расширяет её возможности. В частности, вполне можно предположить, что при отладке конкретной программы, по мере приобретения опыта по устранению выявленных ошибок интенсивность исправления ошибок может увеличиваться. Кроме того, т. к. предлагаемая модель не накладывает ограничений на вид такой зависимости, можно рассматривать её как обобщение разработанных ранее моделей.
Введём следующие обозначения: N - общее число ошибок в программе; Ак - интенсивность обнаружения к-й ошибки при отладке программы, к = 1,N; цк - интенсивность исправления к-й ошибки при отладке программы, к = 1,N. Вероятностная марковская модель процесса отладки программы описывается ниже.
На вход системы последовательно поступает N запросов на устранение обнаруженных ошибок. Распределения длительности интервалов между моментами обнаружения ошибок описываются экспоненциальными законами с интенсивностя-ми {А, А2, ..., А^}, зависящими от номера ошибки. Распределения времени исправления ошибок -экспоненциальные с интенсивностями {ц1, ц2, ..., цЛГ}, также зависящими от номера ошибки.
Представим такую систему цепью Маркова с дискретным множеством состояний и непрерывным временем. Состояния системы в каждый момент времени будем характеризовать парой (г, /), где г - число обнаруженных, но ещё не ис-
правленных ошибок г = 0,N ; / - число уже исправленных ошибок / = 0, N — г. Вероятности пребывания системы в этих состояниях обозначим через Р. у.(?). В таком представлении система будет иметь конечное число состояний. Обозначим её как систему обслуживания типа М(г)/М( j)/N.
Диаграмма переходов между состояниями системы M(/)/M(/)/N [7], описывающей процесс отладки программ, приведена на рис. 1.
На представленной диаграмме переход из состояния (г,/) в состояние (г+1, /) означает, что при тестировании была обнаружена (г'+/+1)-я ошибка. Переход из состояния (г, /) в состояние (г-1, /+1) означает, что была исправлена (/+1)-я ошибка. Общее число состояний к вычисляется по формуле:
к = N + 1)^ + 2)/2. (1)
Для определения вероятностей нахождения в состояниях (г,/) необходимо решить систему из к дифференциальных уравнений: <1Ри( о
Л
+ (ОЦ; - 8(ЛГ - г - ])Ри (1)Х
(2)
¡+/+1
где г = 0,N, / = 0,N - г;
1, если к > 0; 0, если к < 0.
Для каждого момента времени t должно соблюдаться условие нормировки вида
ЛЕЦъ®=1.
Задав начальные условия к системе в виде
Г 0, если г + /' Ф 0; Р (0) = }
1,1 [ 1, если I + ] = О,
можно найти численное решение соответствующей задачи Коши для произвольного значения t.
Эта модель описывает процесс поиска и устранения ошибок, при котором обнаруженные ошибки устраняются последовательно по мере их обнаружения, причём поиск и устранение ошибок выполняются одновременно (рис. 1). Можно регламентировать и другие стратегии отладки, которые можно представить в виде графа, приведённого на рис. 1. Соответствующая система дифференциальных уравнений также будет определяться используемой стратегией отладки.
Выбор конкретной стратегии можно сделать по результатам моделирования с использованием значений показателей надёжности и некоторых критериев (например, требуется выбрать стратегию с меньшим временем отладки до исправле-
ния (обнаружения) к ошибок с заданной вероятностью р и т. д.)
Варианты стратегии отладки
С точки зрения распределения времени между этапами тестирования и исправления ошибок можно рассматривать разные стратегии отладки программ (диаграммы переходов показаны на рис. 2):
1. Этап тестирования продолжается, пока не будет обнаружена одна ошибка. После обнаружения ошибки тестирование приостанавливается, ошибка исправляется. После исправления ошибки вновь начинается тестирование.
Диаграмма переходов, представляющая данную стратегию отладки, представлена на рис. 2, а.
Количество состояний системы:
где г = 0,1 , j = 0,N - г .
2. Этап тестирования продолжается, пока не будут обнаружены все ошибки. Затем обнаруженные ошибки исправляются. Диаграмма, представляющая данную стратегию отладки, представлена на рис. 2, б.
Количество состояний системы рассчитывается по формуле (3).
Система дифференциальных уравнений (2) принимает следующий вид:
0.
-5((i+j+l-N)i)piJmJ+1+ +m+j+l-N)j)pi+1J_1(t)цj,
(5)
к = 2N + 1.
(3)
Система дифференциальных уравнений (2) принимает следующий вид:
¿р, до е „
—^ = -8(ЛГ - 7 - ад, 1 +
где при j = 0, г = 0,N; при j = 1,N, г = N -j.
3. Этап тестирования продолжается, пока не будут обнаружены к ошибок. После обнаружения к ошибок тестирование приостанавливается, ошибки полностью исправляются. Затем тестирование продолжается. Диаграмма, представляю-
(4)
а)
Рис. 2. Диаграммы переходов для стратегий отладки: а - стратегия 1; б - стратегия 2; в - стратегия 3
щая данную стратегию отладки, представлена на рис. 2, в.
Количество состояний системы рассчитывается по формуле (3).
Система дифференциальных уравнений (2) принимает следующий вид:
dPu(t) = dt
8(1-jmodfc)x
-b(k-i)S(N-i-j)P,,j(t)Ki+]+1))- (6)
- 8( i) 8(1 - (i + j) mod к)+ 8(1 - (г + j) mod N)) x
x PUj(t)\i j+l + 8(i + j)b(N mod к-i)x
x(8(l - (i + j) mod к) 8(k - i) +
+ 8(1 - (г + j) mod N)5(N mod к - i))PUj,
где i mod j - остаток от деления i / j; i = 0, к при j mod к = 0& j < N - N mod к; i = к - j mod к при j mod к Ф 0& j < N - N mod k; i = 0, N mod к при j = N - N mod к; i = N mod к - j mod к при N - N mod к < j < N.
Модель, приведённую в предыдущем разделе и описываемую диаграммой на рис. 1 и системой дифференциальных уравнений (2), будем рассматривать в качестве стратегии 0.
Результаты прикладных расчётов и обоснование стратегии отладки
Применение описанных моделей позволяет получить динамические значения ряда величин (вероятности пребывания системы в состоянии (i, j), функцию распределения времени обнаружения и устранения ошибок, математическое ожидание случайных величин, количество обнаруженных и исправленных ошибок). В качестве исходных данных для расчётов используются: число ошибок N, интенсивности {А, А2, ..., XN} и
(ц1, ц2, ..., - обнаружения и исправления ошибок, соответственно.
При практическом использовании модели надёжности М(1)/М^')/Д для расчётов в качестве исходных данных могут быть использованы статистические данные по интервалам времени между обнаружением и исправлением ошибок. Общее число ошибок N при этом неизвестно, однако может быть спрогнозировано, исходя из эмпирических соображений на основе опыта разработки похожих проектов, с использованием существующих прогнозных моделей (Джелинского-Моранды и подобных).
Наилучшим подходом представляется использовать для этого значения объектно-ориентированных метрик сложности, тем самым в большей степени будут учтены особенности конкретного проекта. Модель на основе логистической регрессии, описанная в работах [8-10], позволяет найти вероятности ошибки в классах программы. С использованием этих вероятностей может быть дан прогноз общего количества ошибок программы, например, в виде количества классов, вероятность ошибки которых превышает некоторое пороговое значение. Могут быть предложены и более сложные алгоритмы определения количества ошибок в программе на основе значений объектно-ориентированных метрик сложности (например, с использованием нечётких множеств и продукционных систем), однако, подробное рассмотрение данного вопроса выходит за тему статьи.
Представляет интерес сравнение рассмотренных выше стратегий отладки. В качестве исходных данных для представленных далее расчётов использована статистика по обнаружению и устранению ошибок в процессе разработки программного продукта учебный курс «Управление качеством при разработке программного обеспе-
Т аблица 1
Исходные данные о программных ошибках
Время тестирования, ч Число обнаруженных ошибок Время устранения, ч Интенсивность обнаружения, ч-1 Интенсивность устранения, ч-1
4 25 10 6,25 2,5
4 19 4 4,75 4,75
2 3 2 1,5 1,5
2 1 1 0,5 1
1 1 1 1 1
чения на основе современных стандартов и моделей». Проект выполнен в 2008 г. в Петербургском университете путей сообщения. Учебный курс представляет собой web-приложение, при разработке которого использованы языки программирования javascript, actionscript. Данные по обнаруженным и устранённым ошибкам приведены в табл. 1. В ходе отладки были обнаружены и устранены ошибки пользовательского интерфейса, взаимодействия учебного курса с системой дистанционного обучения, вёрстки и др.
Для расчётов использованы следующие значения интенсивностей обнаружения ошибок:
=.= ^25 = 6,25 ^26 =.= ^44 = 4,75 ^45 =.= ^47 =
= 1,5, Х48 = 0,5, Х49 = 1 и интенсивностей устранения ошибок ц1 =...= ц25 = 2,5, ц26 =...= ц44 = 4,75,
М"45 =.= М-47 = 1,5, М"48 = 1, М"49 = 1.
Полученные в результате решения систем дифференциальных уравнений (2, 4-6) вероятности P (t) пребывания модели системы в состоянии (i, j) могут быть использованы для расчёта значений показателей надёжности.
Вероятность Rjjt) того, что в процессе отладки найдено ровно j ошибок, может быть вычислена по формуле: j
rn=¿P- м (7)
Вероятность Pj.(t) того, что в процессе отладки устранено ровно / ошибок, может быть вычислена по формуле:
N-1
/) = X Ру(0. (8)
г=0
Среднее число (математическое ожидание) обнаруженных ошибок к моменту времени t вычисляется по формуле:
N¿0 = ZiRi(t)-
(9)
Среднее число (математическое ожидание) Np(t) исправленных ошибок к моменту времени t:
Np(t) = ZiPi(t).
(10)
Соответственно, среднее число NRL(t) ошибок, не обнаруженных к моменту времени t, и среднее число ^^ ошибок, не исправленных к моменту времени t, определяются по формулам:
NRL(t) = N - N^(0; (11)
N^(0 = N - N^1 (12)
На рис. 3 приведены графики среднего числа обнаруженных ошибок и среднего числа ещё не исправленных ошибок для предлагаемой модели надёжности - системы М^/М^^. Графики
п, число ошибок
т, ч
Рис. 3. Графики среднего числа обнаруженных ошибок и неисправленных ошибок (---) Стратегия 0; (-) Стратегия 1; (— —) Стратегия 2; (-------) Стратегия 3 (к=24)
Т аблица 2
Расчёт числа ошибок, не исправленных при отладке
Время т, ч Q эеднее число неисправленных ошибок
Стратегия 0 Стратегия 1 Стратегия 2 Стратегия 3 (£=10)
10 23,1 31,2 48,7 33,5
15 6,0 21,4 42,8 25,7
20 0,6 10,4 30,6 22,5
25 0,0 3,5 14,8 11Д
30 0,0 1Д 3,9 2,6
35 0,0 0,2 0,6 0,4
Таблица 3 Расчёт времени отладки по вероятности отсутствия ошибок
Вероятность РТР отсутствия ошибок Требуемое время отладки тТР, ч
0,8 34,3
0,9 36,3
0,95 38,1
0,99 40,4
Таблица 4 Расчёт времени отладки по допустимому числу ошибок
Количество оставшихся ошибок (N-Nrr) Время отладки ттр, ч
Стратегия 0 Стратегия 1 Стратегия 2 Стратегия 3 (fc=10)
5 18,1 26,4 33,3 32,1
3 19,7 29,6 34,9 33,6
1 22,2 35,6 36,9 35,6
среднего числа обнаруженных ошибок для стратегий 0 и 2 совпадают.
Приведённые графики могут быть использованы для расчёта числа остающихся в программе ошибок к моменту времени т с момента начала отладки. Для этого в качестве исходных данных должна использоваться достаточно полная статистика, собранная в процессе разработки большого числа проектов. При этом наличие для ряда программных проектов статистики по длительности интервалов обнаружения и устранения ошибок позволяет для аналогичных программных проектов использовать предположение о схожем характере динамики изменения интенсивностей выявления и устранения ошибок. В частности, можно говорить об одинаковом распределении отношений интенсивностей обнаружения и устранения ошибок в случае, если программные проекты являются сопоставимыми по объёму кода, квалификации разработчиков, используемым технологиям и инструментальным средствам и т. д.
Пример такого расчёта для системы, аналогичной описанной выше, приведён в табл. 2.
Предложенная модель позволяет найти функции F(t) распределения времени устранения с помощью соотношения вида:
N
F(t) = XP/t), i = 0,N. (13)
l=i
Это даёт возможность оценить время отладки TN которое требуется для исправления NTP ошибок с заданной вероятностью PTP как
TNTPfpP = t : FNTp(t) ^ Ptp. (14)
Время TNp исправления всех программных ошибок не зависит от выбора стратегии отладки. Пример оценки времени TN^ для системы M(i)/ M(j)/N, описанной выше, приведён в табл. 3.
Пример оценки требуемого времени отладки ТщрРтр при PTP = 0,95 для разного числа ошибок NTP, выполненный с помощью предлагаемой модели надёжности M(i)/M( j)/N, приведён в табл. 4.
Представленные результаты дают наглядную численную картину того, как соотносятся между
собой рассмотренные стратегии отладки ПС по приведённым характеристикам (см. табл. 2-4).
В статье предложена нестационарная модель оценивания роста надёжности программ на этапе отладки. По сравнению с разработанными ранее экспоненциальными вероятностными моделями надёжности снимается предположение о виде зависимости интенсивности обнаружения ошибок от текущего номера обнаруженной ошибки.
СПИСОК Л
1. Handbook of Software Reliability Engineering. McGraw Hill, 1996.
2. Уткин Л.В., Шубинский И.Б. Нетрадиционные методы оценки надежности информационных систем. СПб.: Любавич, 2000.
3. Половко А.М., Гуров С.В. Основы теории надежности. СПб.: БХВ-Петербург, 2006.
4. Смагин В.А. Техническая синергетика. Вероятностные модели сложных систем. СПб., 2004.
5. Тырва А.В., Хомоненко А.Д. Метод планирования тестирования сложных программных комплексов на этапах проектирования и разработки / Научно-технические ведомости СПбГПУ. Информатика. Телекоммуникации. Управление. 2009. № 4 (82). С. 125-131.
6. Huang C.-Y., Huang W.-C. Software Reliability Analysis and Measurement Using Finite and Infinite Server
Предложенная модель позволяет рассчитать для различных стратегий отладки:
численные значения среднего числа обнаруженных ошибок и среднего числа неисправленных ошибок;
функцию распределения времени обнаружения и устранения заданного числа ошибок;
время отладки по заданной вероятности отсутствия ошибок или по допустимому числу ошибок.
Queuing Models / IEEE Transactions on Reliability. 2008. Vol. 57. № 1. P. 192-203.
7. Бубнов В.П., Сафонов В.И. Разработка динамических моделей нестационарных систем обслуживания. СПб.: Лань, 1999.
8. El-Emam K., Melo W., Machado J.C. The prediction of faulty classes using object-oriented design metrics / Journal of Systems and Software. 2001. Vol. 56. № 1. P 63-75.
9. Chidamber S.R., Kemerer C.F. A metrics suite for object oriented design / IEEE Transactions on Software Engineering. 1994. Vol. 20. Iss. 6. P. 476-493.
10. Basili V.R., Briand L.C., Melo W.L. A validation of object-oriented design metrics as quality indicators / IEEE Transactions on Software Engineering. 1996. Vol. 22. Iss. 10. P. 451-761.
УДК 662.642:621.926.7
К.В. Спорягин
ПРОГРАММНЫЙ КОМПЛЕКС НАСТРОЙКИ ТИПОВЫХ РЕГУЛЯТОРОВ ДЛЯ МНОГОСВЯЗНЫХ ОБЪЕКТОВ УПРАВЛЕНИЯ ПРОИЗВОЛЬНОЙ РАЗМЕРНОСТИ
В сфере промышленной автоматизации наибольшее распространение получили так называемые типовые законы регулирования [1, 2], однако существующие методы расчёта их параметров мало применяются на практике [3]. Одна из основных причин того, что в большинстве случаев регуляторы настраиваются «методом тыка», состоит в недостатке инженерных методик и программ, охватывающих многосвязные объекты управления и учитывающих влияние контуров регулирования друг на друга. Данная статья
посвящена описанию структуры программного комплекса (ПК) настройки типовых регуляторов для многосвязных объектов управления произвольной размерности - «MIMO Master» Рассматриваемый ПК призван стать простым средством настройки параметров и имитационного моделирования многоконтурных систем управления технологическими процессами и предназначен для инженеров-разработчиков АСУТП и наладчиков промышленных систем.