Автоматизированная система контроля и обеспечения надежности программных средств

Математическое моделирование. Оптимальное управление Вестник Нижегородского университета им. Н.И. Лобачевского, 2009, № 5, с. 1 73-1 75

173

УДК 681.518.5

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

© 2009 г. В.Г. Волков

Нижегородский государственный технический университет им. Р.Е. Алексеева

vgvolkov@mail.ru

Поступбла виедакцбю 12.03.2009

Рассматривается адаптация модели надежности программного обеспечения к конкретному производимому программному продукту.

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

В настоящее время проблема обеспечения высокого качества и надежности производимых программных продуктов не теряет своей актуальности, напротив, активно ведутся исследования методов контроля и повышения надежности программных средств. Данная работа представляет собой пример практической реализации результатов научных исследований автора в данной области. Целью ее является:

• разработка модели надежности программного обеспечения применительно к конкретному программному продукту;

• создание набора автоматизированных тестов;

• автоматизация процесса обеспечения надежности программного продукта.

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

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

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

В данной работе средством повышения эффективности тестирования является его автоматизация, которая заключается в передаче разработанной системе следующих действий:

• подготовка начальных условий теста;

• запуск и останов теста;

• принятие решения о результате теста;

• восстановление начальных условий теста.

Подобный подход позволяет создавать набор

тестов, обеспечивающий следующие преимущества:

• уменьшение трудовых и временных затрат на тестирование;

• многократный прогон тестов;

• быстрая модернизация тестов.

В рамках данной работы был создан набор тестов, покрывающий различные подсистемы тестируемого продукта. Суммарное покрытие автоматизированными тестами составило 57.8% кода.

Следующий этап работы заключается в разработке и реализации модели надежности производимого программного продукта.

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

174

В.Г. Волков

І е\:г;і руяш.і'і 1 Г11 .'г'1"1

Автвматппккгтс

ТССТЇ-1

Модуль

птакпрови-л:*

зябкое

Модуль ричкпршші Р'^у.ІІЬІ-ГіГПЇ ІVI и-

Т^стыловшик

-оіи лаун:-/т гстл.ттгзтїяі то: го ті

Ра^ралтпгпі

І

VI11., і и іці;і! м У II. И і'ічиші-,

, .

W еЬ-интерфейс

М“ іг; р'г; і їм іг. ічіч:г IV

Рис. Общая схема автоматизированной системы обеспечения надежности программ

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

Для того чтобы оценить надежность программы, необходимо использовать какую-либо измерительную шкалу - метрику. Сегодня нет однозначного понимания сущности программы, поэтому подходы к измерению надежности программ носят разрозненный характер. Выделяют несколько классов метрик, относящихся к надежности программного обеспечения:

• метрики непосредственно программного продукта: размер в блоках или в строках программного кода, функциональность, сложность, тестовое покрытие;

• метрики, связанные с управлением проектом: управление процессом разработки, рисками, конфигурациями;

• метрики, характеризующие процесс разработки, используются для оценивания, мониторинга и повышения надежности программ;

• метрики отказов и сбоев программного обеспечения.

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

• запускать на регулярной основе разработанные тестовые наборы;

• сохранять полученные результаты тестов;

• вычислять ряд метрик на их основе, характеризующих текущий уровень надежности программного продукта;

• при достижении заданных значений метрик процесс тестирования считается законченным, и продукт может быть отправлен пользователям.

Разработанный набор показателей надежности программного продукта включает в себя следующие основные метрики:

1) размер программного кода в строках и блоках: L и В;

2) покрытие программного кода автоматизированными тестами в строках и блоках: Сі и СВ;

3) общее время работы тестов для каждой подсистемы программного продукта: Ті;

4) суммарное время работы всех автоматизированных тестов: Т = ПТі;

5) количество обнаруженных ошибок в программе для каждой подсистемы продукта: Dг;

6) общее количество обнаруженных ошибок: D = ЕД-;

7) интенсивность обнаружения ошибок в каждой из подсистем продукта: Іі = Dг/Tг;

8) общая интенсивность обнаружения ошибок: I = D/T.

В дальнейшем этот набор будет расширен метриками, позволяющими оценивать количество оставшихся в продукте ошибок.

Процесс оценивания и контроля текущих показателей надежности продукта был автоматизирован. Для этого к автоматизированным тестам были добавлены модули планирования их запуска и регистрации результатов тестов. Была спроектирована база данных и модуль генерации отчетов. Доступ к результатам организован через Web-интерфейс. Общая схема реализованной автоматизированной системы представлена на рисунке.

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

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

Разработанная система внедрена в процесс создания программного продукта в одном из проектов компании «Мера НН» и обеспечивает следующие возможности:

• контроль работоспособности программного продукта в режиме реального времени;

• контроль динамики уровня надежности продукта;

• сбор статистических данных для более точного планирования разработки схожих или следующих версий данного программного продукта.

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

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

1. Липаев В.В. Надежность программных средств. М.: СИНТЕГ, 1998.

2. Майерс Г. Надежность программного обеспечения. М.: Мир, 1980.

3. Турский В. Методология программирования. М.: Мир, 1981.

4. Соммервилл И. Инженерия программного обеспечения. М.: Вильямс, 2002

5. Musa J.D. More Reliable Software Faster and Cheaper [Электронный ресурс] // stickyminds.com: сайт. - URL: http://www.stickyminds.com/sitewide.asp? Function=edetail&Obj ectT ype=ART&Obj ectId=3384 (дата обращения 01.03.2009).

6. Pan J. Software Reliability [Электронный ресурс] // Topics in Dependable Embedded Systems: сайт. - URL: http://www.ece.cmu.edu/~koopman/ des_s99/ sw_reliability/index.html (дата обращения 01.03.2009).

AUTOMATED SOFTWARE RELIABILITY CONTROL AND ASSURANCE SYSTEM

V.G. Volkov

Adaptation of software reliability model to a specific software product is considered.

Keywords: software, reliability model, automation, quality, testing, control.