автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.01, диссертация на тему:Модели и алгоритмы тестирования программных средств на основе их стратифицированного описания

кандидата технических наук
Волков, Владимир Георгиевич
город
Нижний Новгород
год
2009
специальность ВАК РФ
05.13.01
Диссертация по информатике, вычислительной технике и управлению на тему «Модели и алгоритмы тестирования программных средств на основе их стратифицированного описания»

Автореферат диссертации по теме "Модели и алгоритмы тестирования программных средств на основе их стратифицированного описания"

На правах рукописи

ВОЖОВ ВЛАДИМИР ГЕОРГИЕВИЧ

МОДЕЛИ И АЛГОРИТМЫ ТЕСТИРОВАНИЯ ПРОГРАММНЫХ СРЕДСТВ НА ОСНОВЕ ИХ СТРАТИФИЦИРОВАННОГО ОПИСАНИЯ

Специальность 05.13.01. - "Системный анализ, управление и обработка информации (в науке и промышленности) по техническим наукам"

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук

1 1 ФЕВ Ш

Нижний Новгород, 2009 г.

Работа выполнена на кафедре «Вычислительных систем и технологий» Нижегородского государственного технического университета им. P.E. Алексеева.

Научный руководитель:

доктор технических наук, профессор Ломакина Любовь Сергеевна

Официальные оппоненты: доктор технических наук, доцент,

Храннлов Валерий Павлович кандидат технических наук, Степанов Олег Владимирович

Ведущая организация:

Научно-исследовательский центр

контроля и диагностики г. Нижний Новгород.

Защита диссертации состоится «04» марта 2010 года в 13 часов в аудитории 1258 на заседании диссертационного совета Д212.165.05 при Нижегородском государственном техническом университете им. P.E. Алексеева по адресу: 603950, г. Нижний Новгород, ул. Минина, 24

С диссертацией можно ознакомиться в библиотеке Нижегородского государственного технического университета им. P.E. Алексеева

Автореферат разослан «01» февраля 2010 года.

Ученый секретарь

Подписано в печать 25.01.10. Формат 60 х 84 '/16. Бумага офсетная. Печать офсетная. Уч.-изд. л. 1,0. Тираж 100 экз. Заказ 61.

Нижегородский государственный технический университет им. Р. Е. Алексеева. Типография НГТУ. 603950, Нижний Новгород, ул. Минина, 24.

диссертационного совета

A.C. Суркова

•ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

Актуальность работы.

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

Вопросам измерения, контроля, обеспечения надежности и качества программных средств посвящено большое количество работ Г. Маиерса, В. Турского, И. Соммервилла, П.П. Пархоменко, В.В. Липаева, В.И. Сагунова и других российских и зарубежных ученых.

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

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

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

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

Задачи работы.

Достижение поставленной цели работы предполагает решение следующих задач:

- анализ существующих моделей надежности ПО на предмет возможности их применения в реальном производственном процессе ПО;

- разработка стратифицированной (базовой) модели ПО;

- разработка диагностической модели ПО;

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

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

Научная новизна работы заключается в следующем:

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

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

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

Практическая ценность работы.

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

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

На защиту выносятся:

1. стратифицированная (базовая) модель ПО, представляющая программу на функциональном уровне;

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

3. метод контроля и обеспечения надежности ПО.

Реализация результатов работы.

Разработанные в диссертационной работе модели и автоматизированная система тестирования внедрены и используются в производственном процессе одного из проектов компании «МЕРА НН», что подтверждается актом о внедрении.

Результаты работы использованы в госбюджетной НИР (Отчет по НИР «Структурно-статистические методы обеспечения контролепригодности программных средств». № государственной регистрации 01.2005.01015 от 05.02.2005 - Н.Новгород: НГТУ, Отчет по НИР «Тестирование программных средств». № государственной регистрации 01.2007.01986 от 14.02.2007 -Н.Новгород: НГТУ), выполненной по целевой межвузовской программе «Диагностические и информационно-поисковые системы». Апробация работы.

Основные материалы диссертационной работы докладывались и обсуждались на следующих научных конференциях:

- международной научно-технической конференции «Информационные системы и технологии», г. Н. Новгород, 2006,2009 гг.;

- международной научно-технической конференции НТИ-2007 «Информационные технологии» ВИНИТИ РАН, г. Москва, 2007 г;

- XIII международной открытой научной конференции «Современные проблемы информатизации в анализе и синтезе технологических и программно-телекоммуникационных систем», г. Воронеж, 2008 г;

- VII международной молодежной научно-технической конференции «Будущее технической науки» г. Н. Новгород, 2008 г;

- VIII международном симпозиуме «Интеллектуальные системы» ШТЕЬ8'2008, г. Н. Новгород, 2008 г;

- XII международной научно-практической конференции «Системный анализ в проектировании и управлении», г. Санкт-Петербург, 2008 г.

На региональном конкурсе научных работ среди аспирантов в 2008 году автор стал лауреатом стипендии имени академика Г.А. Разуваева. Публикации.

По теме диссертационного исследования опубликовано 11 работ. В том числе одна в издании, рекомендованном ВАК России. Структура и объём работы.

Диссертационная работа состоит из введения, четырёх глав, заключения, библиографического списка и приложений. Общий объём работы 117 страниц

текста, содержащего 22 рисунка и 6 таблиц. Список литературы содержит 111 наименований.

СОДЕРЖАНИЕ ДИССЕРТАЦИИ

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

В первой главе (Сравнительный анализ моделей надежности ПО) приводится история развития исследований надежности ПО. Определяется понятие надежности ПО. Рассматриваются существующие модели надежности ПО и их классификация. Производится анализ известных моделей надежности ПО с точки зрения их применимости в реальном производственном процессе программного продукта. Выявляются недостатки существующих моделей надежности ПО и приводится обоснование необходимости разработки новой модели надежности программ.

В конце 70-х качество и надежность занимали весьма незначительное место в процессе разработки программ. Вопросами надежности начинали заниматься лишь после завершения разработки программного продукта. Это приводило к хронической неустойчивости в работе программ. Как показали результаты исследований, большая часть ошибок допускалась на этапе проектирования. Это привело к интенсивным исследованиям способов повышения надежности ПО: методов доказательства корректности программ, методов их тестового диагностирования, а также методов структурного программирования. Стало очевидным, что вопросам обеспечения качества и надежности ПО должно уделяться внимание на всех фазах процесса разработки, поэтому в начале 80-х годов теория надежности охватила весь процесс создания программ. Исследования в области разработки ПО сформировали набор методов, процессов, технологий, моделей, использование которых позволяет достичь заданных характеристик надежности и качества ПО. Постепенно отдельные направления исследований стали формироваться в единую дисциплину, которая

легла в основу инженерии программного обеспечения.

7

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

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

Рисунок 1 - Классификация моделей надежности ПО

Большинство разработанных моделей надежности ПО строятся на

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

8

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

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

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

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

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

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

Методы контроля требований и технической документации

Методы верификации программ

\ /

Планирование разработки Определение требований к программе Проектирование программы Конструирование программы Тестирование программы Эксплуатация программы

Методы контроля и анализа кода программы и его сложности, :

Рнсунок 2 - Основные этапы жизненного цикла ПО Процесс разработки ПО (рис. 2) состоит из следующих основных этапов:

- планирование разработки программы;

- определение требований к разрабатываемой программе;

- проектирование ее архитектуры и интерфейсов;

- конструирование (кодирование) программы;

- тестирование программы;

- эксплуатация.

Каждому этапу соответствуют свои специфические методы и средства контроля и обеспечения надежности ПО, а также страты описания программы.

Основой деятельностью по обеспечению надежности ПО на этапе определения требований является валидация (аттестация) и верификация сформированных требований.

Обозначим через ¡-ое требование спецификации программы, сформулированное на этапе определения требований к ПО. Тогда множество

£ = {$, и = 1,п}

есть множество всех требований спецификации программы на этапе определения требований к ПО.

Основой деятельностью по обеспечению надежности ПО на этапе проектирования ПО является анализ качества и оценка программного дизайна.

Обозначим через ¡-ое требование спецификации программы,

определенное на этапе проектирования ПО. Тогда множество

есть множество всех требований спецификации программы на этапе проектирования ПО.

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

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

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

С = {сГ.1 = Тп}

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

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

Обозначим через с,-' возможность рабочего экземпляра программы выполнить ¡-ое требование согласно его спецификации. Тогда множество

С'=/с/.-1= Цп}

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

Возможность готовой программы выполнит ¡-ое требование спецификации

Код,

реализующим ¡-ое требование программы

Спецификация

реализации ¡-ого требования программы

Спецификация ¡-ого, требования программы

Страта 4:

функционирование рабочего экземпляра программы

Страта 3:

код программы

Страта 2:

спецификация разработчиков

Страта 1:

спецификация требований к программе

Рисунок 3 - Стратифицированная (базовая) модель ПО Будем рассматривать программу как набор функциональных требований, которые она должна реализовывать. На каждом из этапов жизненного цикла ПО эти требования будут представленными следующим образом (Рис. 3). Таким образом, программа Р есть четверка:

- множество требований к программе на этапе их

определения;

5'= /¡У,-': / = 1,п} - множество требований к ПО на этапе проектирования;

С = {с, : I = 1,п} - множество блоков программного кода;

С'= {с/: I = 1,п}~ множество функций рабочего экземпляра программы, реализующих требования спецификации к программе.

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

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

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

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

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

Будем рассчитывать следующие метрики надежности ПО:

Таблица 1 - Метрики надежности ПО

1 Обозначение / Формула расчета метрики

1 Размер программного кода в строках Ь

2 Размер программного кода в блоках В

Процент успешно выполненных тестов ЛГ/У

Покрытие программного кода в строках С*

Покрытие программного кода в блоках Св

6 Общее время работы тестов для каждой подсистемы программного продукта т,

Суммарное время работы всех тестов

8 Количество обнаруженных ошибок в П:

программе для каждой подсистемы продукта

Общее количество обнаруженных ошибок />=ЕА

10 Плотность ошибок в каждой из подсистем продукта

11 Общая плотность ошибок /=о/в

В третьей главе (Диагностическая модель ПО) рассматриваются

характеристики этапа тестирования ПО с целью определения основных

параметров разрабатываемых тестов. Приводятся необходимые сведения из

теории множеств для доказательства корректности предлагаемой

диагностической модели ПО. Формируется диагностическая модель ПО.

Приводится пример использования диагностической модели на практике.

13

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

Построим множество тестов Т = :/= 1,п}, покрывающее все функции рабочего экземпляра программы множества С'= {с,': I = 1,п}. Среди декартового произведения Т*С' есть подмножество Тс. = {0, ,с,'): / = 1,п}.

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

р(1) = {с':с,ъСл(1,с')ъТс}. Поскольку каждая функциональность программы с,' определяется подмножеством блоков кода сС(> реализующих ее, то среди декартового

произведения С" * С есть подмножество Сс, ={(с,',сС1.):1 = 1,п}, Тогда существует соответствие <г.

<т((^)-{с :сеСл(с',с) е Сс.}. Таким образом, композиция соответствий р ° а определяет связь между множеством тестов и множеством блоков программного кода:

р о <г = {((,с): (Вс'е С' )(«,с') е р а (с' ,с) е а)}. Тогда система/* тестирования программы есть тройка:

А=(Т, С', С), где

Т = {(■ :1-1,п}- множество тестов, покрывающих все функции программы;

С'=/с/ :1 = 1,п}- множество функций рабочего экземпляра программы, реализующих требования спецификации к программе;

С = {с1: / = 1,п} - множество блоков программного кода, реализующих функции рабочего экземпляра программы.

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

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

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

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

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

Рабочий экземпляр программы

С' = {с1',с2',с3',...с„'}

Рисунок 4 - Диаграмма композиции соответствий тестов Т в исходные

коды программы С

В четвёртой главе (Автоматизированная система тестирования ПО) описывается построение автоматизированной системы тестирования программных средств на основе разработанных моделей. Приводятся результаты практического применения разработанной системы.

Автоматизированная система предназначена для решения следующих задач:

- автоматический запуск тестовых наборов по расписанию;

- сбор и хранение результатов тестов;

15

- расчет набора определенных метрик и составление соответствующих отчетов в графическом и табличном виде;

- оповещение заинтересованных лиц о результатах выполнения тестов посредством электронной почты.

Автоматизированная система тестирования программных средств реализована на базе операционной системы Linux (Debían) и использует следующие встроенные в нее компоненты:

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

- PostgreSQL - свободная объектно-реляционная система управления базами данных (СУБД);

- Apache - свободный веб-сервер.

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

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

- выполнение действий теста;

- принятие решения о результате теста и его сохранение в базе данных;

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

Модуль планирования запусков тестов реализован на базе демона-планировщика задач CRON, встроенного в операционную систему Debían. Алгоритм его работы заключается в следующих шагах: проверка текущей запущенной компании; вычисление следующей компании для запуска и ее запуск.

Автоматические тесты Модуль планирования запусков

Модуль регистрации результатов тестов

i

Тестировщик

База данных результатов ^ тестов -

Разработчик

Модуль генерации отчетов

I

WEB Интерфейс

Менеджер по качеству

Рисунок 5 - Общая схема автоматизированной системы тестирования ПО

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

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

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

- интервал времени, за который необходимо построить отчет;

- список тестовых компаний, для которых требуется построить отчет;

- тип отчета: табличный или графический (диаграмма). Предложенный подход позволяет в режиме реального времени

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

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

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

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

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

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

В заключении изложены основные результаты диссертационной работы. Приложение содержит акт о внедрении разработанной автоматизированной системы тестирования программных средств в производственный процесс компании «МЕРА НН».

ОСНОВНЫЕ РЕЗУЛЬТАТЫ РАБОТЫ

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

2. Построена стратифицированная (базовая) модель ПО, представляющая программу на функциональном уровне в виде спецификации требований к ней.

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

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

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

6. Результаты диссертационной работы внедрены в производственный процесс компании «МЕРА НН».

СПИСОК ОПУБЛИКОВАННЫХ РАБОТ ПО ТЕМЕ ДИССЕРТАЦИИ Публикации в изданиях, рекомендованных ВАК

1. Волков, В.Г. Автоматизированная система контроля и обеспечения надежности программных средств [Текст] / В.Г. Волков // Математическое моделирование. Оптимальное управление: Вестник Нижегородского университета им. Н.И. Лобачевского. - 2009. - № 5. - С. 173-175.

Публикации в других изданиях

2. Волков, В.Г. Автоматизированная система тестирования программных средств [Текст] / В.Г. Волков, Л.С. Ломакина // Труды НГТУ. Системы обработки информации и управления. - Н. Новгород: НГТУ. - 2005. - Т. 54. -Вып. 12.-С. 111-115.

3. Волков, В.Г. Структурно-статистические методы обеспечения контролепригодности программных систем [Текст] / В.Г. Волков, Л.С. Ломакина и др. // Отчет по НИР НГТУ. - Н. Новгород, per. номер 01.2005.01015 от 05.02.2005. - 83 с.

4. Волков, В.Г. Автоматизированная система тестирования программных средств [Текст] / В.Г. Волков, Л.С. Ломакина // Мат. Междунар. науч.-техн. конф. «Информационные системы и технологии (ИСТ-2006)». Н. Новгород, 21 апр. 2006 г. - Н. Новгород: НГТУ, 2006. - С. 179-181.

5. Волков, В.Г. Надежность программного обеспечения [Текст] / В.Г. Волков, JI.C. Ломакина // Мат. 7-й Междунар. конф. «НТИ-2007». Информационное общество. Интеллектуальная обработка информации. Информационные технологии. Москва, 24-26 окт. 2007 г. - М: ВИНИТИ РАН, 2007. - С. 74-75.

6. Волков, В.Г. Тестирование программных средств [Текст] / В.Г. Волков, Л.С. Ломакина и др. // Отчет по НИР НГТУ. - Н. Новгород, per. номер 01.2007.01986 от 14.02.2007. - 81 с.

7. Волков, В.Г. Подход к определению надежности программного обеспечения

[Текст] / В.Г. Волков // Современные проблемы информатизации в анализе и синтезе технологических и программно-телекоммуникационных систем: Сб. трудов. Вып. 13. - Воронеж: Научная книга, 2008. - С. 338.

8. Волков, В.Г. Инженерия программного обеспечения [Текст] / В.Г. Волков, Л.С. Ломакина // Мат. VII Междунар. молодеж. науч.-техн. конф. «Будущее технической науки». Н. Новгород, 16 мая 2008 г. - Н.Новгород: НГТУ, 2008. -С. 352-353.

9. Волков, В.Г. Тестирование как аспект инженерии программного обеспечения [Текст] / В.Г. Волков // Тр. Междунар. симп. «Интеллектуальные системы 2008 INTELS'08». Н. Новгород, 30 июня - 4 июля 2008 г. - М.: МГТУ им. Баумана - Н.Новгород: НГТУ им. P.E. Алексеева, 2008. - С. 209-213.

10. Волков, В.Г. Системный подход к обеспечению качества программных средств [Текст] /В.Г. Волков//Тр.XIIМеждунар. науч-практ. конференции «Системный анализ в проектировании и управлении». Санкт-Петербург, 2426 июня 2008 г. - СПб: СПбГПУ, 2008. - Ч. 3 - С.9.

11. Волков, В.Г. Автоматизация как средство повышения эффективности обеспечения надежности программных средств [Текст] / В.Г. Волков // Мат. Междунар. науч.-техн. конф. «Информационные системы и технологии (ИСТ-2009)». Н. Новгород, 17 апр. 2009 г. - Н. Новгород: НГТУ, 2009. - С. 255-256.

Оглавление автор диссертации — кандидата технических наук Волков, Владимир Георгиевич

Введение.

Глава 1. Сравнительный анализ моделей надежности ПО.

1.1. Анализ существующих моделей надежности ПО.

1.1.1. История развития исследований надежности ПО.

1.1.2. Понятие надежности ПО.

1.1.3. Классификация моделей надежности ПО.

1.2. Анализ недостатков существующих моделей надежности ПО.

1.2.1. Недостатки моделей подсчета количества ошибок в программах.

1.2.2. Недостатки вероятностного подхода.

1.3. Анализ моделей ПО.

1.3.1. UML модели.

1.3.2. Графо-матричные модели ПО.

1.3.3. Автоматные модели ПО.

1.4. Анализ систем тестирования ПО.

1.4.1. UniTesK.

1.4.2. IBM Rational.

Выводы по главе 1.

Глава 2. Стратифицированная (базовая) модель ПО.

2.1. Необходимые сведения из теории иерархических многоуровневых систем.

2.2. Анализ этапов жизненного цикла ПО.

2.2.1. Этап определения требований ПО.

2.2.2. Этап проектирования ПО.

2.2.3. Этап конструирования (кодирования) ПО.

2.2.4. Этап тестирования ПО.

2.3. Построение стратифицированной (базовой) модели ПО.

2.4. Метрики надежности ПО.

2.5. Пример стратифицированного описания программы.

2.5.1. Спецификация требований.

2.5.2. Спецификация разработчика.

2.5.3. Программный код.

Выводы по главе 2.

Глава 3. Диагностическая модель ПО.

3.1. Необходимые сведения из теории множеств.

3.1.1. Соответствия и бинарные отношения.

3.1.2. Операции над соответствиями.

3.2. Анализ стратегии тестирования ПО.

3.3. Диагностическая модель ПО.

3.4. Пример использования диагностической модели ПО.

3.4.1. Набор тестов, покрывающий требования спецификации.

3.4.2. Расчет метрик.

3.4.3. Особенности автоматизации тестирования.

Выводы по главе 3.

Глава 4. Автоматизированная система тестирования ПО.

4.1. Назначение автоматизированной системы тестирования ПО.

4.2. Структура автоматизированной системы тестирования ПО.

4.2.1. Общая характеристика.

4.2.2. Модуль автоматических тестов.

4.2.3. Модуль планирования запусков.

4.2.4. База данных результатов тестов.

4.2.5. Модуль генерации отчетов.

4.2.6. WEB интерфейс.

4.2.7. Алгоритм работы автоматизированной системы тестирования ПО.

4.3. Практические результаты.

4.3.1. Краткое описание производимого программного продукта.

4.3.2. Результаты применения автоматизированной системы тестирования ПО. 96 Выводы по главе 4.

Введение 2009 год, диссертация по информатике, вычислительной технике и управлению, Волков, Владимир Георгиевич

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

Вопросам измерения, контроля, обеспечения надежности и качества программных средств посвящено большое количество работ Г. Майерса, В. Турского, И. Соммервилла, П.П. Пархоменко, В.В. Липаева, В. И. Сагунова и других российских и зарубежных ученых.

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

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

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

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

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

Методы исследования.

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

Научная новизна работы.

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

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

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

Практическая ценность работы.

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

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

На защиту выносятся:

1. стратифицированная (базовая) модель ПО, представляющая программу на функциональном уровне;

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

3. алгоритм контроля и обеспечения надежности ПО.

Реализация результатов работы.

Разработанные в диссертационной работе модели и автоматизированная система тестирования внедрены и используются в производственном процессе одного из проектов компании «МЕРА НН».

Результаты работы использованы в госбюджетной НИР (Отчет по НИР «Структурно-статистические методы обеспечения контролепригодности программных средств». № государственной регистрации 01.2005.01015 от 05.02.2005 - Н.Новгород: НГТУ, Отчет по НИР «Тестирование программных средств». № государственной регистрации 01.2007.01986 от 14.02.2007 - Н.Новгород: НГТУ), 7 выполненной по целевой межвузовской программе «Диагностические и информационно-поисковые системы». Апробация работы.

Основные материалы диссертационной работы докладывались и обсуждались на следующих научных конференциях: международной научно-технической конференции «Информационные системы и технологии», г. Н. Новгород, 2006, 2009 гг.; международной научно-технической конференции НТИ-2007 «Информационные технологии» ВИНИТИ РАН, г. Москва,

2007 г;

XIII международной открытой научной конференции «Современные проблемы информатизации в анализе и синтезе технологических и программно-телекоммуникационных систем», г. Воронеж, 2008 г;

VII международной молодежной научно-технической конференции «Будущее технической науки» г. Н. Новгород,

2008 г;

VIII международном симпозиуме «Интеллектуальные системы» INTELS'2008, г. Н. Новгород, 2008 г;

XII международной научно-практической конференции «Системный анализ в проектировании и управлении», г. Санкт-Петербург, 2008 г.

На региональном конкурсе научных работ среди аспирантов в 2008 году автор стал лауреатом стипендии имени академика Г.А. Разуваева.

Публикации.

По теме диссертационного исследования опубликовано 11 работ. В том числе одна в издании, рекомендованном ВАК России.

Структура и объём работы.

Диссертационная работа состоит из введения, четырёх глав, заключения, библиографического списка и приложений. Общий объём работы 117 страниц текста, содержащего 28 рисунков и 3 таблицы. Список литературы содержит 111 наименований.

Заключение диссертация на тему "Модели и алгоритмы тестирования программных средств на основе их стратифицированного описания"

Выводы по главе 4

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

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

Заключение

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

2. Предложена новая стратифицированная (базовая) модель ПО, представляющая программу на функциональном уровне в виде спецификации требований к ней.

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

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

WEB интерфейс.

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

6. Результаты диссертационной работы внедрены в производственный процесс компании «МЕРА НН».

Библиография Волков, Владимир Георгиевич, диссертация по теме Системный анализ, управление и обработка информации (по отраслям)

1. Андерсон, Р. Доказательство правильности программ Текст./ Р. Андерсон; пер. с англ. - М. : Мир, 1982. - 168 с.

2. Аржененко, А.Ю. Применение теории вопросников к тестированию программ Текст./ А.Ю. Аржененко; М.: Мир, 1980.

3. Блау, С.А. Эффективность тестирования структуры программных модулей Текст./ С.А. Блау, В.В. Липаев, Б.А. Позин // Автоматика и телемеханика. 1984. - № 4. - С. 139-148.

4. Блау, С.А. Анализ планов тестирования программных модулей с учетом нереализуемых маршрутов Текст./ С.А. Блау, Б.А. Позин // Программирование. 1988. - № 4. - С. 26-34.

5. Бардзинь, Я.М. Построение полной системы примеров для проверки корректности программ Текст./ Я.М. Бардзинь, Я.Я. Бичевский, A.A. Калнынш // Ученые записки. Латв. Гос.ун-та. 1974. - т.210. -С.17-34.

6. Боэм, Б. Характеристики качества программного обеспечения Текст./ Б. Боэм, Дж. Браун, X. Каспар и др.; пер. с англ. М. : Мир, 1981.-208 с.

7. Бичевский, Я.Я. Развитие методов символического тестирования программ Текст./ Я.Я. Бичевский, Ю.В. Борзов // Автоматика и телемеханика. -1982. №2. - С. 93-102.

8. Борзов, Ю.В. Тестирование программ с использованием символического исполнения Текст./ Ю.В. Борзов // Программирование. 1980. — №1. - С. 51-59.

9. Борзов, Ю.В. Система символического тестировании ПЛ/1 -программ Текст./ Ю.В. Борзов, Г.Э. Дишлерс, И.Э. Медведис, Г.Б. Уртанс // Управляющие системы и машины. 1986. - №6.- С. 75-79.

10. Безбородов, Ю.М. Индивидуальная отладка программ Текст./ Ю.М. Безбородов; -М. :Наука, 1982. 192 с.

11. Гласс, Р. Руководство по надежному программированию Текст./ Р. Гласс; пер. с англ, под ред. В. М. Рабиновича. М.: Финансы и статистика, 1982. - 256 с.

12. Гаганов, П.Г. Динамика процесса отладки больших управляющих систем Текст./ П.Г. Гаганов, В.В. Липаев, В.Н. Просвирин // Управляющие системы и машины. 1975. - №1, - С. 19-28.

13. Гаганов, П.Г. Характеристики ошибок в процессе разработки комплексов программ Текст./ П.Г. Гаганов, В.В. Липаев // Программирование. 1975. - №2. - С. 36-41.

14. Гаганов, П.Г. Анализ ошибок в сложных программах систем управления объектами Текст./ П.Г. Гаганов, В.В. Липаев, В.Н. Просвирин, В.Н. Волков // Управляющие системы и машины.- 1973. №3. - С.31-38.

15. Дал, У. Структурное программирование Текст./ У. Дал, Э. Дейкстра, К. Хоор. Серия: Математическое обеспечение ЭВМ. Пер. с англ. М.: Мир, 1975. - 247 с.

16. Дробушевич, Л.Ф. Оценка структурной сложности программ Текст./ Л.Ф. Дробушевич // Программирование. 1987. - №1. - С. 81-90.

17. Дробушевич, Л.Ф. Метод оценки топологической сложности программ Текст./ Л.Ф. Дробушевич // Управляющие системы и машины. 1988. - №4. - С. 69-74.

18. Зелковиц, М. А. Принципы разработки программного обеспечения Текст./ М. А. Зелковиц, Шоу, Дж. Гэннон.; Пер. с англ. М.: Мир, 1982.-368 с.

19. Зиглер, К. Методы проектирования программных систем Текст./ К. Зиглер; Пер. с англ. М.: Мир, 1985. - 328 с.

20. Иыуду, К.А. Тестирование программы на основе минимального покрытия ее графа Текст./ К.А. Иыуду, Н.М. Арипов // Управляющие системы и машины. 1985. - №4. - С. 69-71.

21. Иыуду, К.А. Автоматизация генерации путей для тестирования программ, записанных на Фортране Текст./ К.А. Иыуду, Н.М. Арипов // Программирование. 1986. - №2. - С. 24-31.

22. Кашков, В.Л. Средства поддержки структурного тестирования программ Текст./ В.Л. Кашков, В.А. Шимаров // Управляющие системы и машины. 1986. - №2. - С. 54-59.

23. Правильщиков, П.А. Построение тестов для программ Текст./ П.А. Правильщиков // Автоматика и телемеханика. 1977. - №5. -С. 147-161.

24. Пархоменко, П.П. Теория вопросников (обзор) Текст./ П.П. Пархоменко // Автоматика и телемеханика. 1970. - №4. - С. 140-152.

25. Позин, Б.А. Метод структурного построения тестов для отладки управляющих программ Текст./ Б.А. Позин // Программирование. -1980.- №2.-С. 62-68.

26. Просвирин, В.Н. Статистическая процедура определения продолжительности тестовых испытаний управляющих программ Текст./ В.Н. Просвирин // Управляющие системы и машины. -1977. №5. С. 54-57.

27. Риндфлайт, Д. Отладка программ в системах 360/370 на основе дампов памяти ОС Текст./ Д. Риндфлайт. М.: Машиностроение, 1982. - 144 с.

28. Ерофеев, В.И. Средства отладки программ в ОС ЕС ЭВМ Текст./ В.И. Ерофеев и др. М.: Статистика, 1979. - 245с.

29. Сагу нов, В.И. Диагностирование кратных ошибок в программных модулях Текст./ В.И. Сагунов // Программирование. 1988, - №4. -С. 34-38.

30. Торопов, Д.И. О построении тестирующих маршрутов программы Текст./ Д.И. Торопов // Управляющие системы и машины. 1987. - №6. - С. 74-77.

31. Уртанс, Г.Б. Функции путей программы Текст./ Г.Б. Уртанс // Программирование. 1987. - №4. - С. 69-78.

32. Шимаров, В.А. Об одном методе тестирования программы на основе минимального покрытия ее графа Текст./ В.А. Шимаров // Управляющие системы и машины. 1988. - №5. - С. 51-53.

33. Шимаров, В.А. Средства поддержки структурного тестирования программ Текст./ В.А. Шимаров // Управляющие системы и машины. 1988. - №2. - С. 54-59.

34. Коростиль, Ю.М. Комплекс программ для диагностирования программных модулей микропроцессорных систем Текст./ Коростиль Ю.М., Гуляев В.А. // Управляющие системы и машины. 1988. -№3.- С. 55-58.

35. Гаркавенко, С.И. Определение всех путей в ориентированном ациклическом графе Текст./ С.И. Гаркавенко, Л.С. Бердникова (Ломакина) // Кибернетика. 1979. - №4. - С. 49-52.

36. Глушков, В.М. Технология программирования и проблемы ее автоматизации. Текст./ В.М. Глушков, И.В. Вельбицкий // Управляющие системы и машины. 1976. - №6. - С. 81-86.

37. До л бак, Л.В. Методика отладки и испытаний управляющих алгоритмов и программ АСУ Текст./ Л.В. Долбак // Программирование. 1984. - №3. - С. 62-69.

38. Ермаков, Г.В. Тестирование М1ХАЬ-программ с помощью символического исполнения Текст./ Г.В. Ермаков // Программирование. 1988. - №5. — С. 12-18.

39. Катков, В. Л. Система автоматизации тестирования МГХАЬ-программ Текст./ В.Л. Катков, Г.В. Ермаков // Программирование.- 1985. -№3.- С. 50-58.

40. Косяченко, С.А. Использование сетей Петри для локализации ошибок в процессе системной отладки комплексов программ Текст./ С.А. Косяченко, В.В. Дульба, Л.Г. Мамиконов, Е.Б. Соколова //Автоматика и телемеханика. 1988. - №5. -С. 165-177.

41. Колякин, Ю.Д. Отладка программного обеспечения в диалоговой многотерминальной системе Текст./ Ю.Д. Колякин // Управляющие системы и машины. 1983. - №2. - С. 56-60.

42. Липаев, В.В. Прогнозирование рациональной длительности отладки больших управляющих систем Текст./ В.В. Липаев, П.Г. Гаганов, В.Н. Просвирин // Управляющие системы и машины.- 1975.-№4.-С. 8-14.

43. Липаев, В.В. Тестирование программ Текст./ В.В. Липаев. М.: Радио и связь, 1986. - 296 с.

44. Липаев, В.В. Качество программного обеспечения Текст./ В.В. Липаев. М.: Финансы и статистика, 1983. - 263 с.

45. Липаев В.В. Отладка систем управляющих алгоритмов ЦВМ реального времени Текст./ В.В. Липаев. М.: Сов. радио, 1974. — 326 с.

46. Пархоменко, П.П. Основы технической диагностики Текст./ П.П. Пархоменко, Е.С. Согомонян. М.: Энергоатомиздат, 1981.- 320 с.

47. Пархоменко, П.П. Диагностирование программного обеспечения Текст./ П.П. Пархоменко, П.А. Правильщиков // Автоматика и телемеханика. 1980. -№4. - С. 117-141.

48. Alfotd, M.W. A requirements engineering methodology for real-time processing requirements Текст./ M.W. Alfotd // IEEE Trans. Software Engng, v.3. 1977.-№1, pp. 60-69.

49. Panzl, D.J. Automatic software test drivers Текст./ D.J. Panzl // Computer. 1978. - №4. - p. 44-50.

50. Goodenough, J.B. Toward a theory of test data selection Текст./ J.B. Goodenough // IEEE Trans. Software Engng, v.SE-1. 1975. - №2.- pp. 156-173.

51. Akiyama, F. An Example of Software System Debugging Текст./ F. Akiyama // IFIP Conference Proceeding. 1971. - pp. 31-42.

52. Boehm, B.W. McClean R.K., Urfrig D.B. Some experience with automated aids to the design of larg-scale reliable software Текст./ B.W. Boehm, R.K. McClean, D.B. Urfrig // IEEE Trans. Software Engng, v. 1. — 1975.-№2.-pp. 125-153.

53. Schneidewind, N.F. Analysis of error processes in computer software Текст./ N.F. Schneidewind // Proc. Int. Conf. Reliable Software, Los Angeles, Calif. 1975. - pp. 337-376.

54. Shoomon, M.L Types, distribution end test end correction times for programming errors Текст./ M.L. Shoomon, M.I. Bolsky // Proc. Int. Conf. Reliable Software, Los Angeles, Calif. 1975. - pp. 347-357.

55. Endres, A. An analysis of errors and their causes in system programs Текст./ A. Endres // Proc. Int. Conf. Reliable Software, Los Angeles, Calif. 1975. - pp. 327-336.

56. Youngs, E.A. Human errors in programming Текст./ E.A. Youngs // Int. J. Man-Mach. Stud., v.6. №3. - 1974. - pp. 361-376.

57. Thayer, R.H. Software reliability a method that works. Текст. / R.H. Thayer, E.S. Hinton // AFIPS Conf. Proc., v.44, Montvale, N.Y.,- 1975.-pp. 877-883.

58. Rubey, R.J. A equatitative aspect of software validation. Текст. / R.J. Rubey, J.A. Dana, P.W. Biche // IEEE Trans. Software Engng, v.SE-1, 1975. - №2, - pp. 150-155.

59. Nelson, E.C. Software reliability FPC-5. Текст./ E.C. Nelson // Int. Symp. Fault-Toler. Comput., Paris, 1975. - pp. 24-28.

60. Ramamoorthy, C.V. On the automated generation of program test data./ C.V. Ramamoorthy, S.B.F. Ho, W.T. Chen // IEEE Trans. Software Eng. v.SE-2, 4. 1976. - pp. 293-300.

61. Howden W.E. Reliability of the path analysis testing strategy. Текст. // IEEE Trans. Software Eng, v.SE-2, 1976. - №3, - pp. 208-215.

62. Howden W.E. Symbolic Testing and the DISSECT Symbolic Evolution System. Текст. // IEEE Trans. Software Engng, v.SE-2,- 1977. №3, - pp. 266-279.

63. De Millo R.A. Hints on test data selection: help for the practicing programmer. Текст. // Computer. 1978. - №4, - pp. 34-41.

64. Miller W., Spooner, D.L. Automatic Generation of floating-point test data Текст. // IEEE Trans. Software Engng, v.SE-2, 1976. - №3, -pp. 208-215.

65. Watson, A.H., McCabe T.J. Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric Текст. / NIST Special Publication 500-235. // Ed. by Wallace D.R. Gaithersburg, National Institute of Standards and Technology, 1996. - 123 p.

66. Пальчун, Б.П. Оценка надежности программного обеспечения Текст. / Б.П. Пальчун, P.M. Юсупов; СПб.: Наука, 1994.

67. Тейер, Т. Надежность программного обеспечения Текст. / Т. Тейер, М. Лигов, Э. Нельсон; М.: Мир, 1981.-325 с.

68. Фокс, Дж. Программное обеспечение и его разработка Текст. / Дж. Фокс; пер. с англ. М.: Мир, 1985. - 368 с.

69. Соммервилл И. Инженерия программного обеспечения Текст. / И. Соммервилл; пер. с англ. М.: Вильяме, 2002. - 634 с.

70. Турский В. Методология программирования Текст. / В. Турский; Пер. с англ. Н. А. Черемных и И. В. Шитовой; Под ред. А. П. Ершова. М. : Мир, 1981.-266 с.

71. Липаев, В.В. Обеспечение качества программных средств. Методы и стандарты Текст. / В.В. Липаев. М.: СИНТЕГ, 2001. -380 с.

72. Липаев, В.В. Обеспечение качества крупномасштабных программных средств. Методы и стандарты Текст. /В.В. Липаев. М.: СИНТЕГ, 2003. - 520 с.

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

74. Майерс, Г. Надежность программного обеспечения Текст. / Г. Майерс. М.: Мир, 1980. - 360 с.

75. Майерс, Г. Искусство тестирования программ Текст. / Г. Майерс. -М.: Финансы и статистика, 1982. 178 с.

76. Haag, S. Quality Function Deployment. Usage in Software Development Текст. / S. Haag, H.K. Raja, L.L. Sekade // Comm. of ACM.- 1998. -Nl.- p. -39.

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

78. Goel, A.L. Software reliability models& Assumptions, Limitations and Applicability Текст. / A.L. Goel // IEEE Trans. №2. -pp. 1411-1423.

79. Jelinski, Z. Software reliability research Текст. / Z. Jelinski, P. Moranda // Statistical computer performance evaluation W.Freiberger, Ed. Academic Press. 1972. - № 20. - pp. 465-484.

80. Shick, G.J. An analysis of computing software reliability models Текст. / G.J. Shick, R.W. Wolverton // IEEE Tras. Software Eng.- V. SE-4. № 2. - 1978. - pp. 104-120.

81. Романюк, С. Г. Оценка надежности программного обеспечения Электронный ресурс./ С. Г. Романюк // Открытые системы сайт. -URL: http://www.osp.ru/os/1994/04/178540/ (дата обращения 14.03.2008).

82. UML Электронный ресурс. // Википедия сайт. URL: http://ru.wikipedia.org/wiki/UML (дата обращения 25.10.2009).

83. Сагунов, В.И. Контролепригодность структурно-связанных систем Текст. / В.И. Сагунов, JI.C. Ломакина, М.: Энергоатомиздат, 1990.- 112 с.

84. Поликарпова, Н. Автоматное программирование Текст. / Н. Поликарпова, А. Шалыто, С-Пб.: Питер. - 2009. - 176 с.

85. UnitTESK Электронный ресурс. // UnitTESK сайт. URL: http://www.unitesk.ru/ (дата обращения 03.09.2009).

86. IBM Rational Unified Process Электронный ресурс. // CM Consult сайт.-URL:http://cmcons.com/tech rational/ibm rational unified process rup/ (дата обращения 23.11.2009).

87. Месарович, M. Теория иерархических систем Текст. / М. Месарович, Д. Мако, И. Такахара; пер. с англ. М.: Мир, 1973.- 340 с.

88. Вигерс, К.И. Разработка требований к программному обеспечению Текст. / К.И. Вигерс, М.: Русская редакция, 2004.- 576 с.

89. Francisco, А. С. An Object Oriented tool for Tracing Requirements Текст. / A. C. Francisco Pinheiro, Joseph A. Goguen // «Software»,- 1996,-№3.-pp. 21-27.

90. Белоусов, А.И. Дискретная математика Текст. / А.И. Белоусов, С.Б. Ткачев; Математика в техническом университете; Выпуск XIX;- М.: Издательство МГТУ им. Н.Э. Баумана, 2004. 744 с.

91. Могилевский, В.Д. Основы теории систем. Учебное пособие. Часть 1. Текст. / В.Д. Могилевский М.: МИРЭА. - 1997.-76 с.

92. Прангишвили, И.В., Системный подход и общесистемные закономерности Текст./ И.В. Прангишвили. М.: СИНТЕГ. - 2000. -528 с.

93. Шнейдерман, Б. Психология программирования Текст. / Б. Шнейдерман; М.: Радио и связь, 1984. - 304 с.

94. ГОСТ 28195-89. Оценка качества программных средств. Общие положения. Текст. Введ. 01.07.1990. - М.: Изд-во стандартов, 2001.-IV, 31 с.

95. ГОСТ Р ИСО/МЭК 9126-93. Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению. Текст. Введ. 01.07.1994. - М.: Изд-во стандартов, 2001. - IV, 12 с.

96. ГОСТ Р ИСО/МЭК 12207-99. Информационная технология. Процессы жизненного цикла программных средств. Текст. Введ. 01.07.2000. - М.: Изд-во стандартов, 2001. - IV, 12 с.

97. Хомяков, П.М., Системный анализ: Краткий курс лекций Текст. / Под ред. В.П. Прохорова. Изд. 2-е, стереотипное. М.: КомКнига. -2007.-216 с.

98. Волкова, В.Н. Основы теории систем и системного анализа Текст. / В.Н. Волкова, A.A. Денисов. С-Пб.: СПБГТУ. - 1997.- 510 с.

99. Жарко, Е.Ф. Проблемы управления качеством программного обеспечения Текст. / Е.Ф. Жарко // Труды 2-й Межд. Конф. «Идентификация систем и задачи управления (SICPRO'03)».- С. 887 924.

100. Жоголев Е.А. Введение в технологию программирования (конспект лекций) Текст. / Е.А. Жоголев. М.: "ДИАЛОГ-МГУ", 1994.- 150 с.

101. Волков, В.Г. Автоматизированная система тестирования программных средств Текст. / В.Г. Волков, Л.С. Ломакина // Труды

102. НГТУ. Системы обработки информации и управления. -Н. Новгород: НГТУ.-2005.-Т. 54.-Вып. 12. С. 111-115.

103. Волков, В.Г. Структурно-статистические методы обеспечения контролепригодности программных систем Текст. / В.Г. Волков, JI.C. Ломакина и др. // Отчет по НИР НГТУ. Н. Новгород, per. номер 01.2005.01015 от 05.02.2005. - 83 с.

104. Волков, В.Г. Тестирование программных средств Текст. / В.Г. Волков, Л.С. Ломакина и др. // Отчет по НИР НГТУ. -Н. Новгород, per. номер 01.2007.01986 от 14.02.2007. 81 с.

105. Волков, В.Г. Инженерия программного обеспечения Текст. / В.Г. Волков, JI.C. Ломакина // Мат. VII Междунар. молодеж. науч-техн. конф. «Будущее технической науки». Н. Новгород, 16 мая 2008 г. Н.Новгород: НГТУ, 2008. - С. 352-353.