Содержание к диссертации
Введение 4
Глава 1. Сравнительный анализ моделей надежности ПО 11
1.1. Анализ существующих моделей надежности ПО 11
История развития исследований надежности ПО 11
Понятие надежности ПО 15
Классификация моделей надежности ПО 17
1.2. Анализ недостатков существующих моделей надежности ПО 22
Недостатки моделей подсчета количества ошибок в программах 22
Недостатки вероятностного подхода 23
1.3. Анализ моделей ПО 24
UML модели 24
Графо-матричные модели ПО 29
Автоматные модели ПО 32
1.4. Анализ систем тестирования ПО 34
UniTesK 34
IBM Rational 36
Выводы по главе 1 42
Глава 2. Стратифицированная (базовая) модель ПО 43
Необходимые сведения из теории иерархических многоуровневых систем 43
Анализ этапов жизненного цикла ПО 46
Этап определения требований ПО 48
Этап проектирования ПО 52
Этап конструирования (кодирования) ПО 54
Этап тестирования ПО 57
Построение стратифицированной (базовой) модели ПО 58
Метрики надежности ПО 60
Пример стратифицированного описания программы 61
Спецификация требований 61
Спецификация разработчика 62
Программный код 63
Выводы по главе 2 66
Глава 3. Диагностическая модель ПО 67
3.1. Необходимые сведения из теории множеств 67
Соответствия и бинарные отношения 67
Операции над соответствиями 71
Анализ стратегии тестирования ПО 73
Диагностическая модель ПО 77
Пример использования диагностической модели ПО 79
Набор тестов, покрывающий требования спецификации 79
Расчет метрик 83
Особенности автоматизации тестирования 85
Выводы по главе 3 87
Глава 4. Автоматизированная система тестирования ПО 88
Назначение автоматизированной системы тестирования ПО 88
Структура автоматизированной системы тестирования ПО 88
Общая характеристика 88
Модуль автоматических тестов 89
Модуль планирования запусков 91
База данных результатов тестов 91
Модуль генерации отчетов 92
WEB интерфейс 93
Алгоритм работы автоматизированной системы тестирования ПО 94
4.3. Практические результаты 95
Краткое описание производимого программного продукта 95
Результаты применения автоматизированной системы тестирования ПО.... 96 Выводы по главе 4 100
Заключение 102
Литература ЮЗ
Приложения 118
Введение к работе
Современный мир во многом зависит от систем, построенных на базе вычислительной техники. Все больше технических устройств включают в себя элементы вычислительной техники и соответствующего управляющего программного обеспечения (ПО) в той или иной форме. В этой связи возникает необходимость производства надежного и качественного ПО вне зависимости от области его применения.
Вопросам измерения, контроля, обеспечения надежности и качества программных средств посвящено большое количество работ Г. Майерса, В. Турского, И. Соммервилла, П.П. Пархоменко, В.В. Липаева, В. И. Сагунова и других российских и зарубежных ученых.
Первоначально, понятие надежности информационной системы и, в частности, надежности ПО было тесно связано с классической теорией надежности технических систем: одним из направлений исследований являлся перенос и адаптация принципов, моделей и методов изучения надежности технических систем на программные системы и средства. Однако с развитием теории программирования понятие надежности претерпело ряд изменений. Надежность ПО существенно отличается от надежности аппаратных комплексов. Программы не изнашиваются, поломка программы не возможна. Сущность надежности ПО и аппаратуры различны. Надежность аппаратуры определяется во многом случайными сбоями, надежность ПО - скрытыми в нем ошибками.
Сегодня существует множество моделей надежности ПО. В основном, они разделяются на три основные группы: прогнозирующие, измерительные и оценочные. Модели первой группы
используют уже накопленный исторический опыт и статистику, применяются на этапе проектирования, до этапов разработки и тестирования программ и служат для прогнозирования показателей надежности. Модели второй и третьей групп используют данные текущего этапа разработки, применяются на более поздних этапах жизненного цикла программ, таких как разработка и тестирование, используются для определения надежности уже созданной программы.
Однако эти модели не позволяют решить проблему обеспечения высокой надежности программ в условиях промышленного производства: либо они трудно применимы в реальном производственном процессе, либо могут быть применены только для какой-то конкретной технологии или языка программирования.
Целью работы является разработка автоматизированной системы
тестирования программных средств, основанной на
стратифицированной (базовой) и диагностической моделях ПО, позволяющей в реальном времени контролировать работоспособность и надежность производимого программного продукта.
Достижение цели работы предполагает решение следующих задач:
анализ существующих моделей надежности ПО на предмет возможности их применения в реальном производственном процессе ПО;
разработка стратифицированной (базовой) модели ПО на основе анализа существующих моделей надежности ПО и подходов к ее обеспечению;
разработка диагностической модели ПО, описывающей процесс и инструментарий обеспечения надежности ПО;
создание автоматизированных тестов, позволяющих проверять соответствие функционирования программы ее спецификации.
Методы исследования.
Для теоретических исследований применялись методы теории множеств, теории информации, теории надежности, математической статистики и теории вероятностей.
Научная новизна работы.
Разработана стратифицированная (базовая) модель ПО, согласно которой, программа описывается в виде набора функциональных требований, определенных в ее спецификации. Эта модель отличается от существующих тем, что позволяет точно определить программу на каждом этапе жизненного цикла ПО, что дает возможность на практике реализовать систему обеспечения надежности производимого программного продукта.
Разработана диагностическая модель ПО, основанная на композиции соответствий множества тестов и множества блоков кода программы, описывающая процесс и инструментарий обеспечения надежности программных средств.
Разработан алгоритм обеспечения надежности программных средств, позволяющий в режиме реального времени контролировать работоспособность и надежность производимого программного продукта.
Практическая ценность работы.
Разработанные стратифицированная (базовая) и диагностическая модели ПО имеют более широкое применение по сравнению с существующими моделями. Это позволяет применять их в производственном цикле любого ПО, вне зависимости от
используемого жизненного цикла ПО и технологии
программирования. Разработанные в диссертационной работе модели и автоматизированная система тестирования программ могут быть использованы в промышленном процессе производства программных систем с целью повышения эффективности и снижения затрат на обеспечение высокого уровня надежности производимых программных продуктов.
Обоснованность и достоверность результатов обеспечены корректным использованием современного математического аппарата и подтверждены результатами экспериментальных исследований на реальном примере.
На защиту выносятся:
стратифицированная (базовая) модель ПО, представляющая программу на функциональном уровне;
диагностическая модель ПО, описывающая процесс и инструментарий обеспечения надежности программных средств;
алгоритм контроля и обеспечения надежности ПО.
Реализация результатов работы.
Разработанные в диссертационной работе модели и автоматизированная система тестирования внедрены и используются в производственном процессе одного из проектов компании «МЕРА НН».
Результаты работы использованы в госбюджетной НИР (Отчет по
НИР «Структурно-статистические методы обеспечения
контролепригодности программных средств». № государственной регистрации 01.2005.01015 от 05.02.2005 - Н.Новгород: НГТУ, Отчет по НИР «Тестирование программных средств». № государственной регистрации 01.2007.01986 от 14.02.2007 - Н.Новгород: НГТУ),
выполненной по целевой межвузовской программе «Диагностические и информационно-поисковые системы».
Апробация работы.
Основные материалы диссертационной работы докладывались и обсуждались на следующих научных конференциях:
международной научно-технической конференции «Информационные системы и технологии», г. Н. Новгород, 2006, 2009 гг.;
международной научно-технической конференции НТИ-2007 «Информационные технологии» ВИНИТИ РАН, г. Москва,
2007 г;
XIII международной открытой научной конференции «Современные проблемы информатизации в анализе и синтезе технологических и программно-телекоммуникационных систем», г. Воронеж, 2008 г;
VII международной молодежной научно-технической конференции «Будущее технической науки» г. Н. Новгород,
2008 г;
VIII международном симпозиуме «Интеллектуальные системы» INTELS'2008, г. Н. Новгород, 2008 г;
XII международной научно-практической конференции «Системный анализ в проектировании и управлении», г. Санкт-Петербург, 2008 г.
На региональном конкурсе научных работ среди аспирантов в 2008 году автор стал лауреатом стипендии имени академика Г.А. Разуваева.
Публикации.
По теме диссертационного исследования опубликовано 11 работ. В том числе одна в издании, рекомендованном ВАК России.
Структура и объём работы.
Диссертационная работа состоит из введения, четырёх глав, заключения, библиографического списка и приложений. Общий объём работы 117 страниц текста, содержащего 28 рисунков и 3 таблицы. Список литературы содержит 111 наименований.
Во введение даётся общая характеристика работы, обосновывается актуальность темы диссертации, показана научная новизна и практическая ценность диссертационной работы. Аннотировано по главам излагается содержание диссертации.
В первой главе приводится история развития исследований надежности ПО. Определяется понятие надежности ПО. Рассматриваются существующие модели надежности программ и их классификация. Производится анализ известных моделей надежности ПО с точки зрения их применения в реальном производственном процессе программного продукта. Рассматриваются модели ПО. Приводится обзор существующих систем тестирования ПО. Выявляются недостатки существующих моделей надежности ПО и приводится обоснование необходимости разработки новой модели ПО.
Во второй главе описывается иерархический подход, использующий стратифицированное описание для исследования сложных систем. Производится анализ этапов жизненного цикла ПО с точки зрения возможностей обеспечения надежности производимого программного продукта на каждом из них. Определяется представление программы на основных этапах жизненного цикла ПО.
Формируется стратифицированная (базовая) модель ПО. Приводится пример стратифицированного описания программы.
В третьей главе рассматриваются характеристики этапа тестирования ПО с целью определения основных параметров разрабатываемых тестов. Приводятся необходимые сведения из теории множеств для доказательства корректности предлагаемой диагностической модели ПО. Формируется диагностическая модель ПО. Приводится пример использования диагностической модели на практике.
В четвёртой главе описывается построение автоматизированной системы тестирования программных средств. Приводятся результаты практического применения разработанной системы.
В заключении изложены основные результаты диссертационной работы.