УДК 004.052.42
DOI: 10.24412/2071-6168-2022-8-390-398
НЕСТАЦИОНАРНАЯ МОДЕЛЬ ОТЛАДКИ ПРОГРАММНЫХ СРЕДСТВ С ПОДКЛЮЧЕНИЕМ И ОТКЛЮЧЕНИЕМ РЕЗЕРВА ДЛЯ ИСПРАВЛЕНИЯ ОШИБОК
А.И. Данилов, В.А. Данилов
Предлагается динамическая модель для исследования процессов отладки программных средств с подключением и отключением резерва (второго специалиста) для исправления ошибок на период обнаружения большого (критического) числа ошибок (пиковых нагрузок на основного специалиста). С использованием этой модели разрабатывается схема моделирования процессов отладки программных средств (расчета показателей качества отладки и надежности программ). Рассматриваются преимущества использования такой схемы моделирования, обсуждаются результаты вычислительного эксперимента.
Ключевые слова: модель, программные средства, ошибка, вероятность, функция распределения.
Создание искусственного интеллекта и цифровой экономики невозможно без разработки и внедрения новых программных средств (ПС) и развития существующих программных комплексов. При этом на первое место выдвигаются вопросы надежности ПС и эффективности их отладки. Для оценивания их показателей опубликовано большое количество моделей (эмпирических, статистических, вероятностных и моделей на основе нестационарных систем обслуживания). Описание этих моделей, а также их недостатков, приводится в [1-19].
Целью настоящей работы является расширение набора нестационарных моделей отладки программ.
В работе [1] опубликована модель нестационарной системы обслуживания с подключением и отключением резервного канала обслуживания. Эта модель позволяет исследовать двухмашинные (двухпроцессорные) вычислительные комплексы с подключением второй резервной ЭВМ (второго процессора) только на период возникновения больших (пиковых) нагрузок на комплексы. В данной работе предлагается модифицировать эту модель и использовать ее для исследования процессов отладки ПС с подключением и отключением резерва (второго специалиста) для исправления ошибок. При этом модификация модели заключается в том, что в ней используются вероятности обнаружения ошибок в каждом программном модуле, как это было реализовано в работах [4-16].
Процесс отладки ПС состоит из реализации двух этапов: поиск ошибок (тестирование) и устранение (исправления) обнаруженных ошибок. Эти два типа деятельности, как правило, разделены и выполняются различными исполнителями (командами).
Разработка нестационарной модели. Рассмотрим модель с одновременным последовательным поиском и исправлением ошибок. Модель данной стратегии заключается в том, что обнаруженные ошибки устраняются последовательно по мере их выявления, а тестирование во время исправления ошибок не приостанавливается.
1. Разработка графовой модели процессов отладки ПС. Представим процессы обнаружения и исправления ошибок системой (цепью) Маркова с дискретным множеством состояний и непрерывным временем.
Введем следующие обозначения: N - прогнозируемое число ошибок в программе; 1кр -критическое количество ошибок для включения и отключения резерва по исправлению ошибок, Iкр = 1, N; %4 - интенсивность обнаружения 7-й ошибки при тестировании программы,
г = 1, N ; ©7 - вероятность наличия (обнаружения) 7-й ошибки при тестировании программы,
7 = 1, N; ц - интенсивность исправления ошибки при отладке программы с использованием основного или резервного ресурса.
Диаграмма (размеченный ориентированный граф) процессов отладки ПС с подключением и отключением резерва для исправления ошибок представлена на рис. 1. Распределения временных интервалов между моментами обнаружения ошибок во время тестирования описываются экспоненциальными законами. Предполагается, что в ПС могут содержаться не более N ошибок, которые могут быть обнаружены с интенсивностями (ш^,©2^2,-.,®N^N) .
В случае отсутствия ошибки, переход осуществляется по дугам с интенсивностями ((1 — Ш^^Д! — Ш2)^2,.,(1 — ш N ). На рис. 1 используется обозначение
(1 — ш ) = Ш-.
Число групп (специалистов), которые исправляют найденные ошибки, равно двум. Время устранения каждой обнаруженной ошибки распределено по экспоненциальному закону. Интенсивность исправления ошибок обоими специалистами (программистами) одинакова и равна ц. Причем второй (резервный) специалист подключается при нахождении числа программных ошибок большего некоторого критического числа Лр. Резервный специалист не используется при числе ошибок < I кр.
Состояния (7, у) такой системы в каждый момент времени будем характеризовать количеством обнаруженных (но еще не исправленных) ошибок 7, и числом устраненных (сумма
отсутствующих (не обнаруженных) и исправленных ошибок) у (7, у = 0, N). Вероятности пребывания системы в этих состояниях обозначим Ргу(0. При обнаружении ошибки с интенсивностью ш
7 + у+1^ 7 + у+1
система будет переходить из состояния (7, у) в состояние (7+1, у), переход системы из состояния (7, у) в состояние (7, у+1) с интенсивностью ш7+у+1А, 7+у+1 означает, что при
тестировании подтверждено отсутствие ошибки. При исправлении ошибок с интенсивностью 2ц, если 7 > 1кр, или с интенсивностью ц, если 7 < 1кр, будем переходить из состояния (7, у) в состояние (7 - 1, у + 1).
со. Ят 1
„. ..х. . о УЬ
р. -
'кр--1- J
Шг + 2/1-г + 2, 1 1 '
Л(ллг| 2ц *
Рис. 1. Размеченный граф состояний и переходов для модели В таком представлении общее число состояний системы вычисляется по формуле:
Nc = (N +1) + (N + 2)/2.
2. Разработка дифференциальной модели. Размеченный граф (рис. 1) процессов отладки программ может быть описан системой из Nс дифференциальных уравнений, каждое из которых составляется по правилу академика А.Н. Колмогорова:
Л
= 5(7)[Р—1, ^)ш,+ у Д7+ у — Р, у £)ц(5(7 + 1) + 5(7 +1 — IКр))] +
+ 5(/)[р.+и—1 « )ц(5(7 +1) + 5(7 — I кр)) + р. у— (0(1 — шг+у Д г+у ] — 5( N — 7 — у)Ри (()Х г+у+1 ],
где 5(т) = \1, если т > 0 ; (функция Хэвисайда), 7 = 0, N ; у = 0, N — 7; Iкр = 1, N. 10, если т < 0
Для каждого момента времени 7 должно соблюдаться условие нормировки вероятностей (сумма всех вероятностей состояний равна единице), т.е. ^^^j=oР у V) = 1. Началь-
„ ,1Ч Г1, если 7 + 1 = 0
ные условия к системе уравнений (1) можно записать в виде: р, (0) = < .
71 [0, если 7 + у ф 0
Для определения значения вероятностей нахождения марковской цепи в состояниях (7, 1) необходимо численно решить систему дифференциальных уравнений (1) относительно Р1 у (7) для произвольного значения времени 7. Эту задачу называют задачей Коши.
Замечание. При 1кр =N модель соответствует системе обслуживания без использования резерва, а при 1кр=0, 1 модель становится моделью двухканальной системы обслуживания.
3. Вычисление вероятностно-временных показателей целевого эффекта процесса отладки и качества (надежности) ПС:
Используя решение предложенной системы (1) можно получить ряд важных вероятностно-временных показателей целевого эффекта процесса отладки и надежности ПС:
- вероятность того, что в процессе отладки было найдено ровно I ошибок (сумма найденных, но не исправленных и устранённых ошибок),
Кг ) = Е1=0 Р-1,1 ), 7 = ; (2)
- математическое ожидание числа найденных ошибок,
NR ) = т7 ); (3)
- вероятность того, что в процессе отладки было устранено (исправлено или не обнаружено) ровно ] ошибок,
р1 (7)=Х!-% (^); у=; (4)
- математическое ожидание числа устраненных ошибок,
Nр (0 = ^1 (0; (5)
- среднее число NRL (7) ошибок, не обнаруженных к моменту времени 7, и среднее число (7) ошибок, не устранённых к моменту времени 7, определяются по формулам:
NRL (0 = N - ^ (г), (6)
^ (7) = N - Nр (7); (7)
- функция ТТ распределения времени устранения не менее I ошибок,
(?) = Т.1,Р1 (?),7 = № (8)
- время отладки, которое требуется, чтобы устранить НТР требуемое число ошибок с требуемой вероятностью РТР,
Т^Др =t|FNTf(t) > Ртр. (9)
Таким образом, схема исследования процессов отладки ПС (расчета показателей качества отладки и надежности ПС) с использованием разработанной модели состоит из следующих основных этапов:
1. Определение (прогнозирование) количества ошибок в ПС N
базируется на использовании различных программных метрик, характеризующих программный продукт (его структуру, размер, интерфейсы и др.). Эти метрики непосредственно не отражают уровень надежности ПС, однако используются при его моделировании. Например, для простого сравнения надежности программ используют очевидное правило: чем программа сложнее, тем менее она надежна. Было предложено множество различных метрик, которые в целом можно объединить в две группы: метрики программного текста и метрики программной архитектуры. Наиболее известными и получившими применение на практике и в научных исследованиях являются метрики, предложенные Холстедом, МакКейбом [20], Чайдембером и Кемерером [21], Бансия и Дэвисом [22]. Метрики Холстеда вычисляются на основе четырех базовых измерений: количество уникальных операторов п\, количество уникальных операндов «2, общее количество операторов N1 и общее количество операндов N2.
Метрики Холстеда позволяют дать оценки характеристик программ, которые могут быть использованы при моделировании их надежности. Например, можно получить оценку количества ошибок в ПС N
N=¥/3000, (10)
где ^=(N^N2) 1п(п1+п2) - объем программы, N^N2 - длина программы.
Формула (10) основана на естественном предположении о том, что с ростом сложности ПС неизбежно снижение его надежности в смысле количества программных ошибок. Знаменатель в этой формуле связан с психологической природой возникновения программных ошибок и отражает необходимость хранения в памяти и использования программистом при написании программы некоторого числа программных сущностей. Это значение может различаться для разных языков и технологий программирования. Значение знаменателя будет больше при использовании высокоуровневых языков, чем при использовании, например, ассемблера. Естественно предположить более сложную зависимость количества ошибок от сложности ПС, которая может быть учтена введением в формулу коэффициентов, учитывающих опыт программиста, используемую среду программирования, полноту документированное™ технологии, средств автоматизации проектирования и разработки и другие. Однако в любом случае данный подход может быть использован для получения некоторых оценок количества ошибок в отдельных программных модулях для дальнейшего моделирования надежности ПС.
Аналогичный подход для оценивания количества ошибок может быть применен для другой метрики сложности - количество строк кода. Например, известна формула Акиямы:
N=4.86 + 0.018 L ,
где L - количество тысяч строк кода.
2. Определение вероятности наличия (обнаружения) ошибок при тестировании программных модулей как правило, базируется на использовании собранной статистики уже реализованных проектов. Однако, для учета особенностей конкретного проекта широко используются наборы программных метрик. Чайдамбера-Кемерера [21] и Бансия-Дэвиса [22]. Значения метрик собираются из документов проектирования. На основе полученных метрик решается задача классификации модулей по их надежности. Так, вероятность наличия ошибки в модуле ©7 можно рассчитать с использованием логистической регрессии:
где Ру - коэффициент, который находится методом максимального правдоподобия; Ху - значение метрики сложности.
В опубликованных моделях на основе нестационарных систем обслуживания программные модули делятся на надежные и ненадежные [3], используя некоторое пороговое значение вероятности наличия ошибки (например, 0,5). При таком подходе модули, в которых значения вероятностей наличия ошибок меньше 0,5 считаются надежными и не включаются в процессы отладки (моделирования). Остальные программные модули (с вероятностями наличия ошибок большими 0,5) подвергаются отладке (моделированию). При этом в моделях прогнозируемые ошибки обнаруживаются уже с единичной вероятностью, т.е. модели не учитывают вероятностный характер обнаружения ошибок в отдельном программном модуле, что неизбежно ведет к снижению адекватности таких моделей и возникновению погрешностей в расчетах показателей надежности ПС. Таким образом, новизна предлагаемой модели заключается в отказе от двоичной классификации модулей и использовании в ней оценки надежности для каждого модуля.
3. Численное решение задачи Коши при известных N, ю;, ц, 1кр. Для вычисления значения вероятностей нахождения марковской цепи в состояниях (7, у) необходимо численно решить систему дифференциальных уравнений (1) относительно ^ДО для произвольного значения времени 7. При этом необходимо задать начальные условия и условие нормировки вероятностей (£).
4. Вычисление вероятностно-временных показателей целевого эффекта процесса отладки и качества (надежности) ПС по формулам (2)-(9).
5. Анализ полученных результатов и выработка рекомендаций для принятие решения о пригодности стратегии отладки ПС.
Вычислительный эксперимент. Для иллюстрации возможностей предложенной модели приведем результаты расчета некоторых показателей процесса отладки и состояния (надежности) ПС. Для моделирования использовались исходные данные для двух проектов. На рис. 2 и 3 представлены графики функций распределения времени (ФРВ) устранения
не менее ¡=Ы ошибок при значениях вероятностей обнаружения ошибок юг- = 0,9 и юг- = 0,5, г = 1, N для двух проектов. Расчет выполнен по формулам (4), (8) для следующих исходных данных. Предполагается, что изначально в ПС содержится N=10 ошибок со средними длительностями интервалов времени г = 1,10 тестирования соответственно равными для первого проекта: 0.3; 0,3; 0,3; 0,7; 0,7; 1; 2; 3; 5; 10 (час) и для второго проекта: 0,1; 0,15; 0,19; 0,22; 0,25; 0,28; 0,32; 0,38; 0,40; 0,43 (час).
Интенсивности обнаружения (не обнаружения) ошибок вычисляется по формуле 1гг=1/Ь,, (1/час). Интенсивность исправления всех найденных ошибок ц=0,3 (1/час). Значения /кр=10, /кр=6 и 1кр=3. На рис. 4. приведены графики среднего числа не устраненных ошибок для второго проекта.
Г'// — оо~0,9 (1кг=10}
//// —оо=0,9 (1кг=6)
7//// - ■ щ=0,9 (1кг=3)
/у ■ / / // ' // - -ш=0,5 (1кг=10)
// ■ // Ч 1 //
/у // // //
7/ ■'/'
40
Т. час
Рис. 2. ФРВустранения не менее 1=10 ошибок для первого проекта
р
1
0.9 о.к 0.7 0.6 0.5 0.4 0 3 0.2 0,1 о
Т, час
— ш=0,9 (1кг=10) -ш=0,9 (1кг=6)
— ■ и=0,9 (Iкг—
— -ш=0,5(1кг=10) ......м=0,5(1кг=6)
— ш-0,5(1кг-3)
Рис. 3. ФРВ устранения не менее 1=10 ошибок для второго проекта
п, число не устранённых ошибок
— и-оч; кг :о)
\ ^ — • о>=0,9 (1кг=6]
\ V ^ ---о>=и,У (1кг=^) ..1-0 ">[|1г|—Т 0)
V ч.\ --ш=0,5(1кг=3]
■•X ч
4 Ч" • —
Ю 15 20 25 30 35 40 45
Т, час
Рис. 4. Среднее число не устраненных ошибок для второго проекта
394
Графики, приведенные на рис.2, 3, позволяют оценить время отладки, которое требуется для устранения необходимого количества ошибок Ntp с заданной вероятностью Ртр по формуле (9). Время 7jvTp,pTp исправления ошибок зависит от коэффициента загрузки системы А/ц, 1кр и от значения вероятностей обнаружения ошибок юг-.
Представленные результаты дают возможность наблюдать, как изменяются приведенные показатели каждого проекта от значений перечисленных параметров (А/ц, Лр и юг). Из рис. 2 видно, что для первого и подобных ему проектов подключение дополнительного инженера не дает существенного выигрыша в сроках отладки (из-за низкой загрузки системы в первом проекте). Для второго проекта можно сократить сроки отладки на 7 час. за счет подключения резерва при 1кр=3 по сравнению с подключением резерва при 1кр=6 (сократить время тестирования и исправления ошибок на 20% с 35,5 час. до 28,5 час.) при юг=0,9, и обеспечить вероятность исправления всех ошибок равной 0,9 (рис. 3). Очевидно, что сокращение сроков отладки будет больше в системе с резервом по сравнению с системой без использования резерва при 1кр=10 (рис. 3). Для второго проекта при /кр=10 (без резерва) время отладки займёт 43 час., а при 1кр=3 время отладки займёт 28,5 час., это сократит время отладки на 14.5 час. (на 34%) при 1кр=3, юг=0,9 и вероятности исправления всех ошибок равной 0,9.
Представленные на рис. 4 графики могут использоваться для расчёта числа не устранённых в программе ошибок к моменту времен т с момента начала отладки. Из рис. 4 следует, что для второго проекта значения среднего числа не устраненных ошибок близкие к нулю могут быть достигнуты на 7 час. раньше для 1кр=3 по сравнению с 1кр=6.
Использование оценки надежности для каждого модуля в предложенной модели, повышает адекватность и точность моделирования процессов отладки программ. Модель и ее модификации целесообразно использовать для оценивания текущего уровня показателей процесса отладки (надежности) ПС и прогнозирования динамики их изменения в процессе отладки на различных этапах жизненного цикла.
Информация, которая может быть получена с помощью предложенной модели, необходима руководителям проекта для планирования сроков сдачи ПС, для определения требуемых трудозатрат и ресурсов, формирования команд программистов и тестеров, как с учётом особенностей конкретной стадии жизненного цикла ПС, так и с учётом вычислительных, экономических, временных, квалификационных и других возможностей пользователей и разработчиков.
Список литературы
1. Смагин В.А. Основы теории надёжности программного обеспечения. СПб.: ВКА им. А.Ф. Можайского, 2009. 355 с.
2. Бубнов В.П., Сафонов B.II. Разработка динамических моделей нестационарных систем обслуживания. С'Пб.: Лань, 1999. 64 с.
3. Тырва А.В. Методика задания исходных данных для моделей надежности программных средств железнодорожного транспорта // Известия Петербургского университета путей сообщения, 2010, № 2 (23). С. 250-261.
4. Данилов А.И, Данилов А.А. Нестационарные модели процессов испытаний программных средств в условиях риска // Вторая Всерос. науч.-практ. конф. «Современные проблемы создания и эксплуатации вооружения, военной и специальной техники»: сб. ст. СПб., 2014. С.199-202.
5. Хомоненко А.Д., Данилов А.И., Данилов А.А. Нестационарные модели стратегий испытаний программных средств при вероятностных параметрах обнаружения ошибок // Информационно-управляющие системы. 2015. Вып. 4. С. 50-58.
6. Хомоненко А.Д., Данилов А.И., Данилов А.А. Динамические модели испытаний программных средств // 18 Международная конференция по мягким вычислениям и измерениям: сб. докладов. СПб., 2015. Том 1. С. 239-242.
7. Данилов А.И., Данилов А.А. Динамические модели испытаний программных средств с двумя типами ошибок // Труды военно-космической академии имени А.Ф. Можайского. СПб., 2015. Вып. 647. С. 12-21.
8. Хомоненко А.Д., Данилов А.И., Данилов А.А., Герасименко П.В. Нестационарные модели отладки программ с распределением Кокса длительности исправления ошибок // SCM'2016 Международная конференция по мягким вычислениям и измерениям: сб. докладов. СПб., 2016. Том 1. С. 163-166.
9. Хомоненко А.Д., Данилов А.И., Данилов А.А. Динамические модели отладки программ с вероятностным обнаружением ошибок и распределением Эрланга длительности их исправления // Научно-Технический вестник информационных технологий, механики и оптики. 2016. Т. 16. № 4. С. 655-662.
10. Данилов А.И., Данилов А.А. Методика численного анализа эффективности отладки программных средств // Научно-технический вестник информационных технологий, механики и оптики. 2017. Т. 17. № 3. С. 543-551.
11.Данилов А.И., Зубачев А.М., Бугайченко П.Ю. Динамическая модель оценивания качества подготовки и применения сложной технической системы // Труды Военно-космической академии имени А.Ф. Можайского. 2018. № 664. С. 20-26.
12. Данилов А.И., Зубачев А.М., Данилов А.А. Методика численного анализа эффективности подготовки и применения сложной технической системы // Известия Тульского государственного университета. Технические науки. 2018. Вып. 8. С. 186-199.
13. Данилов А.И., Данилов А.А. Алгоритм оценивания эффективности отладки программных средств с распределением Эрланга длительности обнаружения ошибок // Известия Тульского государственного университета. Технические науки. 2019. Вып. 9. С. 209-220.
14. Зубачев А.М., Данилов А.И., Данилов А.А. Динамическая модель оценивания качества подготовки и проведения сеанса управления космическими аппаратами // Вестник академии военных наук. 2019. № 3 (68). С. 64-75.
15. Данилов А.И., Данилов А.А. Методика оценивания эффективности стратегий отладки программных средств с распределением эрланга длительности обнаружения ошибок // Известия Тульского государственного университета. Технические науки. 2020. Вып. 8. С. 194206.
16. Данилов А.И., Зубачев А.М., Данилов А.А. Алгоритм оценивания эффективности подготовки и проведения сеансов управления космическими аппаратами // Известия Тульского государственного университета. Технические науки. 2021. Вып. 6. С. 148-158.
17. Moranda P., Jelinski Z. Final Repot on Software Reliability Study - McDonnell Douglas Astronautics Company, MADC Report Number 63921, 1972.
18. Musa J., Iannino A., Okumoto K. Software Reliability - Measurement, Prediction, Application, McGraw-Hill, New York, 1987.
19. Littlewood B. The Littlewood-Verrall Model for Software Reliability Compared with Some Rivals, Journal of Systems and Software. 1980. Vol. 1. No. 3 P. 251-258.
20. Kan S.H. Metrics and Models in Software Quality Engineering, Second Edition. Addison Wesley, 2002. 344 p.
21. 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.
22. Bansiya J., Davis C. A Hierarchical Model for Object-Oriented Design Quality Assessment // IEEE Transactions on Software Engineering, 2002, V. 28, Iss. 1. P. 4-17.
Данилов Анатолий Исаевич, канд. техy. наук, доцент, vka@mail.ru, Россия, Санкт-Петербург, Военно-космическая академия имени А. Ф. Можайского,
Данилов Владислав Андреевич, студент, vladiq-2002@,yandex. com, Россия, Санкт-Петербур, Национальный исследовательский университет информационных технологий, механики и оптики
NON-STATIONARY SOFTWARE TESTING MODEL WITH ERROR CORRECTION RESERVE
ACTIVATION AND DEACTIVATION
A.I. Danilov, V.A. Danilov 396
A dynamic software testing model with error correction reserve (the second specialist) activation and deactivation for the huge (critical) errors number discovering period (peak loads on the main specialist) is proposed. A scheme for modeling software testing processes is developed with using this model (calculation of testing quality indicators and software reliability). This modeling scheme advantages are considered. The results of computational experiment are discussed.
Key words: model, software, error, probability, distribution function.
Danilov Anatoly Isaevich, candidate of technical sciences, docent, Andrey.Danilov.aad@mail.ru, Russia, Saint-Petersburg, A.F. Mozhaiskiy Military Space Academy,
Danilov Vladislav Andreevich, student, vladiq-2002@yandex.com, Russia, Saint-Petersburg, National Research University Of Information Technology, Mechanics And Optics