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

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

CC BY
227
34
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГНОЗИРОВАНИЕ НАДЕЖНОСТИ ПРОГРАММНЫХ СРЕДСТВ / ОЦЕНКА НАДЕЖНОСТИ ПРОГРАММНЫХ СРЕДСТВ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Неборский С.Н., Бахтизин В.В.

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

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

METHOD TO PREDICT SOFTWARE RELIABILITY

A method to predict the reliability of software is introduced in this paper. The method is based on the calculation of correlation between reliability measures and software errors. The dependency between errors and reliability is defined by calculating Pearson correlation ratio, which is used further to build the identity matrix to match error groups and reliability measures. Input for this calculation is well defined and explained including the direction of the correlation and confidence level. This paper also proposes the way to integrate the introduced method into agile software development process.

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

_Доклады БГУИР_

2015 № 5 (91)

УДК 004.052

МЕТОД ПРОГНОЗИРОВАНИЯ НАДЕЖНОСТИ ПРОГРАММНЫХ СРЕДСТВ

С.Н. НЕБОРСКИЙ, ВВ. БАХТИЗИН

Белорусский государственный университет информатики и радиоэлектроники П. Бровки, 6, Минск, 220013, Беларусь

Поступила в редакцию 15 апреля 2015

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

Ключевые слова: прогнозирование надежности программных средств, оценка надежности программных средств.

Введение

Полноценная оценка надежности программного средства (ПС) требует сбора и анализа значительного количества статистических данных, что занимает на практике от нескольких недель до месяца [1]. В то же время, часто динамика проекта требует получения промежуточных результатов оценки надежности ПС с интервалом в одну-две недели. Промежуточные и прогнозные результаты особенно важны в тех случаях, когда разработка ведется на основе гибких методов, т.к. данные методы предполагают непрерывную работу ПС. Существующие методы прогнозирования надежности ПС основаны на выборе наиболее значимых для конкретного ПС подхарактеристик и соответствующих им метрик, по которым и происходит оценка надежности ПС [2]. При таком подходе скорость оценки надежности может обеспечиваться за счет сокращения количества расчетных показателей, однако выполнить оценку надежности без соответствующих специалистов и расчетов невозможно - данные методы по-прежнему ресурсоемки и трудны для автоматизации [3].

В данной работе предлагается метод прогнозирования надежности ПС на основе текущего количества известных ошибок в ПС. Источником данной информации являются системы учета ошибок (Atlassian Jira, Bugzilla, Countersoft Gemini, Axosoft OnTime и т.д.). Команда, выполняющая их поиск - это команда тестировщиков. При этом сам метод прогнозирования надежности может быть полностью автоматизирован. Ошибка - это искажение кода программы, неумышленно внесенная в нее в процессе разработки, которая в ходе функционирования этой программы может вызвать отказ или снижение эффективности функционирования [4].

Прогнозирование надежности программных средств

Метод прогнозирования надежности ПС состоит в выявлении связи между известными на данный момент ошибками в ПС и конкретными подхарактеристиками надежности ПС. Пусть ошибки ПС разделены на n групп (группа ошибок может соответствовать функциональным областям либо компонентам ПС), образуя множествоE = (e1, en}, где ei -

/-я группа ошибок. Например, для некоторого ПС учета отпусков группы могут быть следующими: в\ - добавление запросов на отпуск, вг - проверка заявки и подтверждение отпуска руководителем подразделения, вз - архив отпусков, в4 - предоставление отчетов и т.п. Пусть для оценки надежности ПС используется модель надежности Я = {г, ..., }, где Г] -]-я подхарактеристика надежности. Тогда суть предлагаемого метода прогнозирования надежности ПС заключается следующем.

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

2. На основе собранных ранее (например, во время поставок предыдущих версий ПС) статистических данных об ошибках Е и надежности Я определяется единичная матрица соответствия подхарактеристик надежности г] группам в/.

A =

fau ап ...

КаА an2 ...anm у

(1)

где at] =

[1, если связь между ei и г] значима, 10, если связи между в! и г. не значима.

Метод расчета матрицы А соответствия подхарактеристик надежности группам ошибок подробно описан далее в данной статье.

3. Вычисляется прогнозная оценка надежности ПС по группам в/ для подхарактеристики г/.

2 с — с

ру = МАХ(МШ(-р — с^с ,1), 0), (2)

' с _

где С/ - текущее количество ошибок в /-ой группе, которая коррелирует с г; с - среднее количество ошибок в /-ой группе согласно имеющимся статистическим данным, причем с[ Ф 0; - среднее значение надежности ПС по ]-ой подхарактеристике согласно имеющимся

статистическим данным; d ■ = X а]] - нормирующий коэффициент, рассчитываемый как

i=i

сумма по столбцу j матрицы (1) соответствия подхарактеристик надежности R группам E, т.е. количество групп ошибок ПС, которые коррелируют с j-ой подхарактеристикой надежности; причем d ■ > 1 - условие наличия связи между j-ой подхарактеристикой надежности и хотя бы

одной из групп ошибок E = (e1, ..., en} (условие d- Ф 0является обязательным).

Функции MAX и MIN в формуле (2) ограничивают прогнозную оценку с тем, чтобы она была на отрезке [0; 1]. Чем ближе значение pij к 1, тем выше надежность ПС.

4. Интегральный прогнозируемый уровень надежности pj по j-ой подхарактеристике надежности вычисляется как сумма прогнозов по отдельным группам ошибок. Полученный результат и есть прогнозируемая оценка надежности:

n

Р] = MIN(XР] ,1). (3)

i=i

Основная часть работы метода завершена. Прогноз выполнен.

5. Выполняется расчет реальных значений надежности по каждой из подхарактеристик на основе стандартной (полной) методики оценки надежности ПС, применяемой на предприятии: определяются конкретные значения множества Z = {zx, z2,..., z }. Рассчитанные значения заносятся в базу статистических данных вместе с информацией об известных на момент оценки надежности ошибках C = {c, c2,..., c }.

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

прогнозируемые значения pj (шаги 1-4 метода), причем выполнение данного прогноза может быть полностью автоматизировано. Рекомендуется также ввести процедуру верификации прогнозируемой надежности ПС: для этого сравнить результаты оценки надежности, полученные на шаге 5 на основе расчета метрик надежности, с прогнозом, который был получен на шаге 4, и оценить погрешность прогнозной оценки.

Расчет корреляции между ошибками и подхарактеристиками надежности

Для получения матрицы соответствия подхарактеристик надежности rj группам ei (шаг 2 метода) предлагается рассчитывать коэффициент корреляции Пирсона Sij между количеством ошибок в i-ой группе и уровнем надежности по j-ой подхарактеристике. Для вычисления данного коэффициента необходимо использовать собранные статистические данные об известных ошибках C и реальные значения надежности по выбранным подхарактеристикам Z. Пример таких данных приведен в табл. 1, где статистические данные фиксировались после каждой итерации разработки ПС.

Таблица 1. Пример статистических данных для прогноза надежности ПС

№ итерации Количество ошибок ci в i-ой группе ошибок Оценка надежности zj по j-ой подхарактеристике надежности № итерации Количество ошибок Ci в i-ой группе ошибок Оценка надежности Zj по j-ой подхарактеристике надежности

1 19 0,68 11 24 0,54

2 32 0,31 12 37 0,35

3 33 0,33 13 29 0,48

4 44 0,3 14 40 0,24

5 28 0,57 15 42 0,28

6 35 0,39 16 32 0,4

7 39 0,34 17 48 0,21

8 39 0,38 18 42 0,25

9 44 0,25 19 33 0,45

10 44 0,22 20 47 0,26

Коэффициент корреляции Sij рассчитывается по формуле Пирсона [5]:

к ___

Z c -c )(zkj - zj )

sj=

k=1

V

(4)

к __к _

Z c - c)2 XZ(zkj - zkj)

k=1

k=1

где К - величина выборки (К = 20 для примера в табл. 1).

Для приведенного в табл. 1 примера коэффициент Sij будет равен -0,91685616. Для наглядности следует построить диаграмму рассеяния (корреляционное поле). На рис. 1 приведена данная диаграмма для примера из табл. 1.

Рис. 1. Диаграмма рассеяния оценки надежности и количества ошибок

2

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

^К - 2

* = е\ - . (5)

VI - £

Случайная величина t следует ¿-распределению Стьюдента. По таблице ¿-распределения необходимо найти критическое значение критерия ¿кр.а при заданном уровне значимости а. Если вычисленное t по модулю окажется меньше чем ¿кр.а, то зависимости между случайными величинами ег и г нет. В противном случае, экспериментальные данные не противоречат гипотезе о зависимости случайных величин. Для проверки гипотезы о зависимости количества ошибок в группе ег и оценки надежности подхарактеристики г предлагается принимать уровень значимости а = 0,05. Меньшие а-уровни дают большую уверенность в том, что уже установленная альтернативная гипотеза значима, но при этом есть больший риск не отвергнуть ложную нулевую гипотезу. Во время выполнения шага 5 метода (расчет реальных значений надежности) предлагается проверить используемое значение а. Возможно, по результатам верификации придется уточнить а с тем, чтобы снизить погрешность получаемого прогноза надежности ПС. Из опыта применения предлагаемого метода прогнозирования надежности на практике авторами статьи в одном из предприятий ИТ-индустрии (предприятие является резидентом Парка высоких технологий Республики Беларусь), 95%-я доверительная вероятность а = 0,05 является достаточной.

Для приведенного в табл. 1 примера величина ¿кр.а находится на пересечении строки, соответствующей числу степеней свободы К—2 = 18 и столбца, соответствующего заданному уровню значимости а = 0,05: * = 2,101. Значение t вычисляется по формуле (5):

-0,91685616 л/20 - 2 «пл^пол^сп г = = - 9,743784257.

ф - (-0,91685616)2

Сравнив рассчитанную величину с табличным значением при а=0,05, получим, что между рассматриваемой группой ошибок и подхарактеристикой надежности есть сильная корреляция: 2,101 < | -9,74|.

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

Таблица 2. Пример матрицы коэффициентов корреляции

№ группы Стабильность (завершенность) Устойчивость к ошибке Восстанавливаемость Готовность

Группа 1 -0,91 -0,3 0,17 0,06

Группа 2 -0,83 -0,15 -0,21 0,12

Группа 3 -0,65 0 -0,15 -0,81

Группа 4 -0,74 0,87 -0,93 -0,64

Группа 5 -0,32 0,56 -0,46 -0,84

Группа 6 -0,43 -0,78 0,14 -0,86

Группа 7 -0,88 0,28 0,18 0

Группа 8 0,12 -0,85 -0,29 0,69

Группа 9 -0,07 -0,93 -0,5 0,75

Группа 10 0,25 0 -0,81 0,26

Для получения единичной матрицы соответствия подхарактеристик надежности Я группам ошибок Е (шаг 2 метода) предлагается ввести дополнительное преобразование полученной матрицы коэффициентов корреляции. С целью определения факта наличия корреляции предлагается использовать коэффициент -0,8 и меньше, т.е. [-1; -0,8]: 1, если для заданных I, ]: sij < -0,8 |0, если для заданных i, j: sjj >-0,8 .

^ л...... л с (6)

Критерии выбора порогового уровня могут быть специфичны для каждой организации. Значение -0,8 предлагается исходя из опыта применения предлагаемого метода прогнозирования надежности ПС на практике. По результатам верификации прогнозов (шаг 5 метода) было выявлено, что пороговый уровень ^ > —0,8 не всегда соответствует реальной

надежности ПС, полученной на основе полного расчета метрик надежности.

Матрица А для работы метода для рассматриваемого примера будет выглядеть следующим образом:

A =

(1 0 0 01

1 0 0 0

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

0 0 0 1

0 0 1 0

0 0 0 1

0 0 0 1

1 0 0 0

0 1 0 0

0 1 0 0

10 0 1 0 J

Применение метода прогнозирования надежности ПС

Метод прогнозирования надежности ПС целесообразно применять при итеративной разработке ПС, когда промежуточные версии ПС выходят достаточно часто (один раз в 24 недели). Метод может быть интегрирован в процесс гибкой разработки ПС, т.е. стать дополнением для гибких методов разработки ПС. Гибкие методы - методы разработки ПС, основным свойством которых является обеспечение непрерывной поставки пользователям работающего ПС при изменении требований к нему [7]. Возможны варианты интеграции предлагаемого метода прогнозирования надежности с такими гибкими методами разработки ПС, как Scrum [8], экстремальное программирование [9], разработка, ведомая функциями [10].

Следует привести пример интеграции предлагаемого метода прогнозирования надежности ПС на основе корреляции между подхарактеристиками надежности и ошибками ПС для метода экстремального программирования (XP). Метод XP ориентирован на малые команды разработчиков и, по сути, является противопоставлением тем существующим методам, которые зачастую несут целый спектр ненужных и избыточных активностей для малых команд. XP сосредоточен на реализации требований к ПС и не рассматривает прочие работы, связанные с разработкой ПС [9]. На рис. 2 приведена модификация жизненного цикла ПС согласно методу ХР, включающая работу по прогнозированию надежности ПС.

Рис. 2. Прогнозирование надежности ПС при использовании метода XP

Заключение

Предложенный метод прогнозирования надежности был интегрирован с методом разработки XP и применен авторами на практике на одном из предприятий-резиденте Парка Высоких Технологий (государственное учреждение «Администрация Парка высоких технологий») при разработке ПС расчета кредитных рисков. Условия разработки требовали поставки ПС не реже, чем 2 раза в неделю. Команда разработчиков насчитывала 10 человек (4 программиста, 4 тестировщика, 1 бизнес-аналитик и 1 руководитель проекта). Для анализа было выделено 7 групп ошибок: основная аналитика, интеграция источников рыночных данных, расчет капитала по методологиям Basel 2-3, расчет аналитики при различных рыночных сценариях, отчет о прибылях и убытках, лимиты, анализ эффекта добавления новых сделок. Для оценки надежности в соответствии с предметной областью было выбрано 4 подхарактеристики по стандарту ISO/IEC 25010:2011 Software Product Quality Requirements and Evaluation (SQuaRE) - System and software quality models [11]: стабильность (завершенность), устойчивость к ошибке, восстанавливаемость, готовность.

Метод прогнозирования надежности стал применяться после 20-й итераций ПС, когда было собрано более 3000 ошибок. Метод применялся на протяжении 8 месяцев и доказал, что прогнозная оценка надежности соответствует реальной с погрешностью не более 7 %. В настоящее время ведется работа по применению предложенного метода прогноза надежности в других проектах по разработке ПС на основе гибких методов.

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

METHOD TO PREDICT SOFTWARE RELIABILITY

S.N. NIABORSKI, V.V. BAKHTIZIN Abstract

A method to predict the reliability of software is introduced in this paper. The method is based on the calculation of correlation between reliability measures and software errors. The dependency between errors and reliability is defined by calculating Pearson correlation ratio, which is used further to build the identity matrix to match error groups and reliability measures. Input for this calculation is well defined and explained including the direction of the correlation and confidence level. This paper also proposes the way to integrate the introduced method into agile software development process.

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

1. Sillitti A., Ceschi M., Russo B. // Software Metrics. 2005. P. 10-17.

2. PandeyA.K., GoyalN.K. Early Software Reliability Prediction. London, 2013.

3. Wood A. // Computer. 1996. № 29 (1). P. 69-77.

4. Дроботун Е.Б. // Современные телекоммуникационные и информационные технологии. 2009. № 4. С. 73-74.

5. Гмурман В.Е. Теория вероятностей и математическая статистика. М., 2004.

6. Шмойлова Р.А. Общая теория статистики. М., 2002.

7. Boehm B. // IEEE Software Development. 2002. № 1. P. 64-69.

8. Schwaber K. The Enterprise and Scrum. Redmond, 2007.

9. Palmer S.R., Felsing J.M. A practical guide to feature-driven development. New Jersey, 2002.

10. AhmedK.Z., Umrysh C. Developing enterprise java applications with J2EE and UML. Boston, 2002.

11. ISO/IEC 25010:2011. Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - System and software quality models.

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