Математическое моделирование. Оптимальное управление Вестник Нижегородского университета им. Н.И. Лобачевского, 2009, № 5, с. 1 73-1 75
173
УДК 681.518.5
АВТОМАТИЗИРОВАННАЯ СИСТЕМА КОНТРОЛЯ И ОБЕСПЕЧЕНИЯ НАДЕЖНОСТИ ПРОГРАММНЫХ СРЕДСТВ
© 2009 г. В.Г. Волков
Нижегородский государственный технический университет им. Р.Е. Алексеева
Поступбла виедакцбю 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.