автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.18, диссертация на тему:Моделирование оценки характеристик надежности банковских тиражных программных систем на основе нейросетевых технологий
Автореферат диссертации по теме "Моделирование оценки характеристик надежности банковских тиражных программных систем на основе нейросетевых технологий"
На прпя/тхрун-птлги
¿(Г
Никольский Святослав Олегович
МОДЕЛИРОВАНИЕ ОЦЕНКИ ХАРАКТЕРИСТИК НАДЕЖНОСТИ БАНКОВСКИХ ТИРАЖНЫХ ПРОГРАММНЫХ СИСТЕМ НА ОСНОВЕ НЕЙРОСЕТЕВЫХ ТЕХНОЛОГИЙ
Специальность 05.13.18 — Математическое моделирование, численные методы и
комплексы программ
АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук
Брянск 2006
Работа выполнена в ГОУВПО «Брянский государственный технический университет».
Научный руководитель
кандидат технических наук, профессор Гулаков В,К
Официальные оппоненты
д.т.н., проф. Андрейчиков А.В, к-т.н,, доц. Зернин М.В.
Ведущее предприятие
БФ АКБ «Газпромбанк»
Зашита состоится 27 декабря 2006 года в 14:00 часов на заседании диссертационного совета К212.021.01 при ГОУВПО «Брянский государственный технический университет» по адресу: 241035, г. Брянск, бульвар 50-летия Октября, 7.
С диссертацией можно ознакомиться в библиотеке Брянского государственного технического университета.
Автореферат разослан 27 ноября 2006 года.
Ученый секретарь диссертационного совета
кандидат технических наук, доцент
Шкаберин ВЛ.
ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ
Актуальность. В последние десятилетня наблюдается значительный рост сложности программного обеспечения (ПО). Часто встречаются программные продукты, состоящие из нескольких тысяч исходных файлов и сотен тысяч функций. Такие программные продукты разрабатываются теперь сотнями программистов, возможно находящихся на значительном расстоянии друг от друга. Человека, который бы хорошо ориентировался во всем проекте, не существует. Этот, а также и многие другие факторы, приводят к тому, что разработать абсолютно надежное программное обеспечение невозможно. Отказы можно найти в программном обеспечении любой направленности, в том числе и в сфере крупного банковского ПО, которое одновременно разрабатывается множеством программистов, каждая сборка которого должна быть разработана и протестирована в сжатые сроки, а любой отказ может привести к потере средств и репутации банком.
Возникает проблема оценки характеристик надежности разрабатываемого программного обеспечения банковских систем. На сегодняшний день не существует моделей, способных выдавать точные оценки характеристик надежности исследуемой программы до этапа тестирования ПО. Особенно остро эта проблема ощущается при разработке банковского тиражного программного обеспечения, отличительной особенностью которого является наличие нескольких одновременно существующих и поддерживаемых сборок (тиражных). В случае тиражной разработки, в одно и то же время могут быть выпущены несколько сборок, различающихся по функциональности. Каждую из таких сборок необходимо тщательно протестировать.
В подобной ситуации нужна модель, которая давала бы возможность прогнозировать число отказов в очередной сборке тиражной программной системы еще до начала ее тестирования. Причем, в случае крупной системы, такой прогноз должен даваться не только по всей системе в целом, но и по отдельным ее функциональным частям. Так, в случае тиражного банковского ПО, его разработчикам может быть интересна оценка числа отказов в модуле ведения частных вкладов и в модуле валютно-обменных операций, в подсистеме работы с кассовыми ресурсами и в подсистеме работы со сведениями о субъектах и т.п.
Целью диссертационной работы является разработка и программная реализация математической модели, позволяющей прогнозировать характеристики надежности банковских тиражных программных систем еще до начала их тестирования.
Для достижения поставленной цели необходимо решить следующие задачи:
1. Разработать математическую модель оценки характеристик надежности банковских тиражных программных систем.
2. Разработать методологию применения предлагаемой модели для моделирования оценки характеристик надежности конкретной тиражной банковской системы.
3. Разработать комплекс программ, позволяющий автоматизировать все этапы применения модели для прогнозирования числа отказов в исследуемой системе.
4. Апробировать разработанный программный комплекс и модель на практике и сделать выводы о возможности их применения. Методология и методы исследования. Прн выполнении исследований и
решении поставленных задач использовались основные положения теории надежности программного обеспечения; математический аппарат и методы теории искусственных нейронных сетей; основные положения и методы теории графов. При разработке программного модуля использовались основные положения теории реляционных баз данных, методы объектно-ориентированного программирования.
Научная новизна работы состоит в использовании качественно нового подхода к моделированию процесса оценки характеристик надежности банковского тиражного программного обеспечения, основанного на использовании нейросетевого аппарата для построения зависимости характеристик надежности от параметров внесенных в очередную сборку исследуемой системы изменений.
Практическую ценность работы составляют:
1. Методология моделирования оценки характеристик надежности банковского тиражного программного обеспечения.
2. Программный комплекс -^cReliabiJity Calculator», автоматизирующий все этапы применения модели.
3. Методика применения данного программного комплекса, полученные в результате практического его применения для моделирования оценки характеристик надежности крупной тиражной автоматизированной банковской системы.
На защиту выносятся следующие положения:
1. Математическая модель оценки характеристик надежности банковских тиражных программных систем на основе нейросетевых технологий.
2. Методика прогнозирования характеристик надежности банковского тиражного программного обеспечения, основанная на вычислении числа отказов очередной сборки программы путем анализа внесенных в исходный код изменений.
3. Алгоритм и структура программного комплекса, автоматизирующего все этапы применения разработанной модели надежности.
4. Результаты практического применения разработанного программного комплекса и модели для прогнозирования числа отказов в очередной сборке крупной банковской тиражной программной системы. Апробация работы. Основные научные и практические результаты работы
докладывались и обсуждались на IV Всероссийской научно-технической конференции «Проблемы информатики в образовании, управлении, экономике и технике» в 2004 г. в г. Пенза, на 2-ой международной научно-методической конференции «Качество инженерного образования» в 2005 г. в г. Брянск, на III межрегиональной научно-технической конференции студентов и аспирантов
«Информационные технологии, энергетика и экономика» в 2006 г. в г. Смоленск и др.
Публикации. По теме диссертации опубликовано 6 печатных работ, из них 3 — в сборниках статей, 2 — в виде статей в журналах научной направленности, 1 - в журнале, рекомендованном ВАК.
Структура и объем работы. Диссертационная работа состоит из введения, четырех глав, заключения, списка литературы из 78 наименований и 3 приложений. Основная часть работы содержит 162 страниц машинописного текста, 37 рисунков и 11 таблиц.
СОДЕРЖАНИЕ РАБОТЫ
Во введении обосновывается актуальность выбранной темы, формулируется цель и указываются применяемые в диссертационной работе методы исследований, рассматривается научная новизна й практическая ценность работы, описывается структура работы и формулируются положения, выносимые на защиту.
В первой главе рассматриваются основные положения и определения теории надежности программного обеспечения. Уточняются определения надежности, операционного профиля, отказа, дефекта, модели надежности. Определяются основные параметры, характеризующие надежность программного обеспечения, в том числе и банковских тиражных систем. Приводятся методы классификации существующих моделей надежности программного обеспечения.
Показывается, что проблема надежности особенно актуальна при разработке банковского тиражного программного обеспечения. Обусловлено это тем, что при разработке подобного ПО одновременно поддерживаются несколько сборок, в каждую из них вносятся разные изменения, сборки должны быть подготовлены и протестированы в сжатые сроки. Кроме того, банковское ПО включает в себя огромное количество функций, которые невозможно полиостью протестировать в каждой новой сборке. Эти особенности, а также то, что ошибки банковского ПО могут привести к потере денег банком, вкладчиками, предприятиями и даже государствами, приводят к необходимости создания специальных моделей надежности для банковских тиражных программных систем.
Анализируются работы отечественных ученых, занимающихся проблемами надежности программного обеспечения. К их числу относятся труды профессора В.В. Липаева, посвященные всем аспектам, связанным с надежностью и качеством процесса разработки программного обеспечения, организацией документооборота при разработке сложных систем, методам тестирования ПО и т.п. К числу ученых, занимавшихся непосредственно моделированием надежности программ, можно отнести сотрудника НИИСИ РАН С.Г. Романюка, опубликовавшего ряд статей на эту тему. Модели надежности программного обеспечения также обсуждаются в статьях С.В. Борисенкова и А.П. Воропаева.
большое число моделей надежности программного обеспечения являются разработками ученых США, Японии и Европы, выполненных по заказу военных
ведомств или коммерческих организация этих стран. К числу наиболее известных иностранных специалистов, когда-либо занимавшихся вопросами теории надежности программного обеспечения, можно отнести: профессора, сотрудника исследовательского отдела компании IBM Г. Майерса (Glenford J. Myers), опубликовавшего в 1970-1980-ых годах ряд книг по вопросам, связанным с надежностью программного обеспечения; 3. Жилинского (Z. Jelinski) и П. Моранду (Р.В. Moranda), создавших самую известную модель надежности программного обеспечения по заказу ВМФ США; профессора университета Лондона Б. Литтлвуда (В. Littiewood), также разработавшего известную модель надежности; сотрудников компании AT&T М. Лю (Michael R, Lyu) и Дж. Мусу (J. Musa), под эгидой которых в конце 1990-ых годов была собрана команда профессионалов в области теории надежности ПО и, в 1996 году выпущена книга, полностью посвященная моделированию надежности ПО, а также многих других.
В первой главе анализируется ряд наиболее известных моделей надежности типа «черный ящик» - модели Жилинского-Моранды, Гоэля-Окумото, Шнейдевинда, Мусы, гиперэкспоненциальная модель, улучшенная модель неоднородного Пуассоновского процесса, модель Вейбулла, модель S* формы и ее модификации, модель Дуэйна, геометрическая модель, логарифмическая модель Мусы-Окумото. Проводится анализ недостатков этих моделей, в числе которых предположения о том, что каждый из заложенных в систему дефектов имеет одинаковую вероятность проявиться в виде отказа; о том, что дефекты исправляются немедленно и безошибочно, и т.п.
Далее приводится анализ моделей типа «белый ящик» на примере моделей Кришнамурти-Матура и Гокенла. В результате анализа делается вывод, что использование моделей этого класса также возможно только после начала тестирования программы, либо после применения достаточно неточных статических моделей надежности.
Кратко рассматриваются некоторые статические модели надежности -модель этапов разработки, модель надежности программ на языке Ada, модель Римской лаборатории, модель насаждения дефектов, основные принципы моделей входных данных. Показывается, что модели данного класса, хотя и обладают рядом достоинств (как-то — применение на ранних этапах жизненного цикла), все-таки не дают точных прогнозов надежностных характеристик (что признают и их авторы). Кроме того, эти модели, в своем большинстве, могут использоваться лишь в том узком классе программ, для которого они были разработаны - т.е. не обладают свойством адаптивности.
Помимо этого, рассматриваются некоторые смежные с теорией надежности технологии, некоторые идеи из которых, в дальнейшем, были использованы в разрабатываемой модели. Кратко описывается понятие метрик кода программного обеспечения, технология и возможные методы инструментировання исходного кода, технология обнаружения дефектов с помощью масштабного анализа исходных кодов.
Во второй главе, на основании выводов из первой главы, ставится задача разработать новую модель надежности тиражного программного обеспечения на
нейросетевой основе, В начале главы подробно рассматриваются основные свойства предлагаемой модели:,
• адаптивность — свойство модели, которое в данном случае можно трактовать как ее способность успешно применяться для моделирования оценки характеристик надежности различных автоматизированных банковских систем;
• детализация — свойство, обеспечивающее возможность прогнозирования характеристик надежности любых частей исследуемой программной системы;
• конкретизация — рассмотрения причин каждого из произошедших отказов в отдельности.
Сфера применения модели намеренно ограничивается только банковскими тиражными программными продуктами. Причина этого в том, что, поскольку подобные разработки — не единовременные, в них возможно накопление исторических данных — о том, как именно разрабатывается программа, какие ошибки в ней находятся, насколько качественно они исправляются. Кроме того, технологии, используемые при разработке тиражных программных продуктов, как правило, более развитые, чем при разработке конечных систем.
Выход модели - число отказов в очередной сборке тиражной программной системы — определяется на основе анализа изменений, внесенных в нее со времени последней сборки. Таким образом, базой для моделирования, принимаются характеристики вносимых в систему изменений.
Математическая модель в формализованном виде представлена в виде следующей зависимости
= R;(S) + f(G,H,U < СА<е,..е,<О.С(ПСи>)[,/>,...])) >), (1)
где:
- число отказов R в i + l сборке системы S ; Rj - число неисправленных отказов, оставшихся от предыдущей сборки i системы S;
f - моделируемая нейросетью изменений функция; G - функциональный граф исследуемой системы S ; M - иерархия исследуемой системы S ;
U - набор изменений Ск, внесенных в очередную сборку i-t-1 со времени сборки i.
При этом, каждое из изменений оценивается по набору основных параметров QpiQp{F\C{F),C(D) и, опционально, набору дополнительных параметров Pt,
Функциональный граф системы G = представляет собой набор
вершин V, соответствующих функциям исходного кода исследуемой системы И набор дуг Е, отражающих возможность передачи управления одной функции другой. Функциональный граф является ориентированным взвешенным графом. Весом дуги от вершины А к вершине В служит мера связи функций А и В.
Мера связи определяется отношением №л_>в = , где НА_>В - число
фактов вызовов функцией А функции В, - общее число вызовов функции А.
Иерархия Н системы представляет собой разбиение ее на структурные и функциональные блоки, число отказов в которых может быть интересно кому-либо из заинтересованных лиц. Так, например, автоматизированную банковскую систему можно разбить на блоки «модуль для работы со вкладчиками» и «модуль для работы с процессинговыми центрами». В эти блоки входят их подблоки «работа с частными вкладами» н «работа с кредитными картами» и т.п. Мера связи функционального блока В и функционального блока А, находящегося в иерархии ниже В, вычисляется по формуле > гДе N л~>в ' число выполнений блока А в рамках блока В, N А - общее число выполнений блока А.
Структурные или функциональные блоки системы, находящиеся на
системы
Мера связи функции А и функционального блока В определяется по формуле {У^ьд = ХА_>е/ХА, где N А^>в - число вызовов функции А в рамках функциональности В, NА - общее число вызовов функции А.
В соответствии с требованиями модели, все изменения, вносимые в исследуемую систему, вносятся только на основании запроса на доработку. Подробные сведения о запросе сохраняются в системе отслеживания проблем, а измененные по запросу файлы — в системе контроля версий. Каждое изменение
по запросу разбивается на элементарные изменения - изменения функций исходного кода. В целом, изменения по всем рассматриваемым запросам, представляют собой множество и элементарных изменений Ск.
Каждое элементарное изменение Ск оценивается по параметрам:
• С(Р) - сложность С функции Р до изменения — положительное число. Сложность функции в модели оценивается по метрике МакКейба.
• С(£>) - сложность С изменения £> — неотрицательное число, подсчитываемое как абсолютная величина разности сложности функции до изменения и сложности функции после изменения. Чем больше сложность изменения, тем больше вероятность допущения ошибки.
• Q¡, - квалификация программиста Р, выполнившего изменение — число в пределах [0; 1], выражающее общий уровень знаний программиста (определяется путем экспертной оценки).
• - опыт работы программиста Р с изменяемой функцией Р — число, обозначающее знание программистом данной изменяемой функции и функций, ее окружающих. Можно предложить следующий метод для определения 0р(Р) = ^1¥р_>в*(>р(В), где 1¥Р_>В - мера связи
в
функции Р с функциональным блоком В, - квалификация,
программиста Р в функциональном блоке В. Суммирование идет по всем функциональным блокам. Значение (2р(Р) ограничено лишь неравенством £)р (.Р) £ 0 и не ограничено каким-либо значением сверху.
• - произвольное число дополнительных параметров изменения. Свободное добавление и удаление этих параметров в модель, обеспечивает свойство адаптивности.
Полученные оценки внесенных изменений подаются на вход нейросети изменений. При этом каждому основному параметру соответствует один нейрон входного слоя, а каждому дополнительному — один или более. На выходе
нейросети получается ожидаемое
ар-
О
число отказов в данной функции вследствие выполненного
элементарного изменения.
Обучении нейросети
изменений ведется-*.- на основе исторических < ■ данных;1
накопленных в системах отслеживания проблем и контроля версий. Для каждого , запроса, описывающего ошибку, должен быть определен запрос, вследствие изменений по которому был внесен дефект, Рис. 2. Архитектура нейросети изменений спровоцировавший данный отказ.
ор(Н -
С(Р) . С(О) .
■сн
<У
о
¡^Архитектура нейросети изменения показана на рис. 2.
7' Нейросеть обучается по усовершенствованному варианту алгоритма обратного распространения ошибки — КРЛОР. Основное его отличие заключается в том, что изменение весов связей происходит с учетом информации об изменении функции ошибки на каждом шаге. Веса изменяются на величину, вычисляемую по формуле (2).
д<;> =
дБ
дБ
7* *&':п,при-—■ — > о
■ м
. А(М) дБ'"' ЗЕ _
» г
А°*\иначе
(2)
где 0<7" < 1 <7*, Е-функция ошибки, - вес связи между нейронами 1 иj,t — итерация обучения. Фактически, в ШЧЮР происходит следующее: каждый раз, как только частная производная изменения соответствующего веса н'^ меняет свой знак (что означает, что последнее изменение веса было слишком большим и алгоритм «перепрыгнул» через локальный минимум), значение изменения веса Ад уменьшается или увеличивается путем умножения на Г}~ ¡т}* соответственно. В случае если производная положительна, значение веса уменьшается на Д,у, а если производная отрицательна —увеличивается на А^:
5Е
(О
>0
и
ЗЕ> (О
+ ДУ,если~ <0 0,иначе
(3)
После определения ожидаемого числа отказов в функции, начинается процесс распространения этого числа по функциональному графу системы. Данный процесс отражает тот факт, что дефект данной функции может проявиться в виде отказа не только в ней, но и в функциях, использующих данную функцию. Распространение числа отказов по графу происходит с затуханием - учитывается мера связи функций.
В результате процесса распространения числа отказов по графу, в каждой из функций накапливается итоговое число отказов. Для получения числа отказов в системе в целом, остается только обойти граф, просуммировав эти числа в каждом из узлов.
Число отказов в каждом из узлов нижнего уровня иерархии системы также получается путем обхода функционального графа и сложения числа отказов в каждой из функций с учетом меры принадлежности функции к данному функциональному блоку. Далее распространение происходит уже с учетом принадлежности одного функционального блока к другому.
Помимо перечисления общих принципов модели и методов их реализации, во второй главе рассматривается пример простейшей модели отказов для единичного изменения. Далее модель расширяется для многих изменений — вводится понятие цепочки изменений (причинно-следственные связи между запросами), описывается возможность раздвоения модели при выходе очередной сборки системы, предлагается метод решения проблемы реализации новых функций (в случае реализации новой функции, встает вопрос о подсчете мер связи згой функции с ее соседями по графу).
Отличительными чертами разработанной математической модели являются:
1. В отличие от других моделей, разработанная математической модель определяет связи между характеристиками надежности программы и параметрами изменений, вносимых в данную программу.
2. Количество параметров математической модели теоретически неограниченно, а добавление новых и удаление старых параметров приводит исключительно к необходимости переобучения нейросети, но не изменения всей модели в целом.
3. Математическая модель позволяет получить характеристики надежности не только всей исследуемой программы в целом, но и отдельных ее частей.
4. Математическая модель является адаптируемой, в том смысле что она может применяться для моделирования оценки характеристик надежности широкого класса банковских тиражных программных продуктов.
5. Выходные данные математической модели являются числовыми и не столь строго регламентированы, как в других моделях - пользователь может получать различные данные, используя одну и ту же модель и подменяя лишь ядро модели - нейросеть.
Третья глава посвящена описанию разработанного программного комплекса «Reliability Calculator» (далее ПК «RelCalc»). Перед разработкой ПО были выделены все этапы его применения для моделирования надежностных характеристик исследуемой системы (рнс. 3).
Как видно из рисунка, основными этапами применения ПК «RelCalc» являются:
• инструментирование исходного кода исследуемой системы — необходимый этап формирования функционального графа и иерархии исследуемой системы. На этом этапе, в начало каждой функции исходного кода на С++ вставляется код, который при входе и выходе из функций записывает сведения об этом в текстовый файл специального формата (трассировочный файл);
Рис. 3. Этапы применения программного комплекса "Reliability Calculator"
• обработка трассировочного файла — на этом этапе данные трассировочного файла разбираются и загружаются в базу данных. Таким образом, после этого этапа в базе данных содержатся сведения обо всех использованных функциях исходного кода, об их связях между собой, обо всех
V функционал ьностях и их связях с функциями;
• оценка сложности исследуемых функций — на этом этапе определяется - ^сложность каждой из использованных функций исходного кода;
• обучение нейросетн изменений — комплексный этап, включающий в себя загрузку сведений о запросах и цепочках запросов (выполненных в более ранние сборки системы), выбор пользователем дополнительных параметров модели, автоматическую подготовку обучающего набора и, собственно, обучение нейросетн;
• прогнозирование числа отказов в функциональном графе — еще один комплексный этап, в ходе которого в БД «Т1е1Са1с» загружаются сведения обо всех выполненных в исследуемую сборку запросах, автоматически подготавливаются наборы данных для нейросетн изменений, эти наборы подаются на вход нейросетн, полученное число отказов распространяется по функциональному графу;
♦ прогнозирование числа отказов в иерархии системЗы - на этом этапе полученное число отказов распространяется вверх по иерархии системы, и в итоге получаются искомые данные — число отказов во всех функцнональностях системы и во всей системе в целом. Разработанный программный комплекс состоит из нескольких модулей, отношения между которыми показаны на рис. 4,
'" fxLBeiri nil "CTega" "J » j
| Перемен функций i—I
на С/С+» »
inslrufnCnin.cM
Инструментирован не и измерения
сложности[функций
—reiMsrit,«*
Прослойка между пр—отад>«ым кодом и itteExi грСяп rv<J1j_
Приложение дл* рмструмемтировани
Работу с чейросетями
Library
гДОвпгмЯ)
Прослойка между прикладном модо«* MFAW*
"iSWcGRiwT"
Приложение дп* измерении сложности
j Библиотека J
A
r " ^ .' ' 'I .
Micro«* SOL Swvm 2000*2005
ВД с хранимыми i процедурам
-SJDS^-
Прослойка лркпмиым ИОДБМ "jjfi
Загрузка сведений о опросах
reiLeam.di Обучсннф
relCatee«»
При/to жй km« ta веамн фунщипм»
rvtEfrofCoAduclor.dM
Распространение лпкаэм граф/
—"WRS.iHl—
Загрузи файлов трассировки
feadMctibe.dK загр/ма елашмоеш
Рис. 4, Архитектура программного комплекса "Reliability Calculator"
Здесь, в виде прямоугольников, нарисованных сплошными линиями, изображены модули разработанного ПК «RelCalc», в виде пунктирных прямоугольников — используемые сторонние библиотеки. Соединительные линии представляют свое отношение «предоставляет функции». Так, модуль irtstrumCmn.dll предоставляет функции модулю relMark.dll.
Конструктивно, программный комплекс состоят из 3-х исполняемых файлов:
• relCalc.exe - основной исполняемый файл, предоставляющий доступ ко всем функциям системы. Только используя этот модуль можно получить доступ к справочникам системы, вручную отредактировать загруженные данные, получить итоговые результаты.
• relMark.exe — утилита командной строки, позволяющая инструментировать исходные файлы на языке C/C++.
• relMcCabe.exe — альтернатива использованию reICalc.exe для определения сложности функций.
Для инструментирован ия и измерения сложности функций исходного кода исследуемого проекта используется модуль instnimCmn.dll, написанный на основе кода утилиты Exuberant Ctags, и модуль relMark.dll, представляющий собой интерфейс между прикладным кодом и instromCmn.dll.
Модуль, занимающийся обучением нейросети — reILearn.dll — использует функции модуля низкого уровня relFann.dll, который, по сути, является прослойкой между библиотекой Fast Artificial Network Library и прикладным кодом. Тестированием нейросети занимается непосредственно исполняемый модуль relCaIc.exe.
Функцию распространения отказов по функциональному графу реализует модуль reIErrorConductor.dll, использующий для доступа к БД, как и все остальные модули, модуль relDS.dll.
Загрузкой данных из текстовых файлов занимаются модули loadSCR.dll (данные о запросах на доработку), loadRS.dJl (загрузка трассировочных файлов), loadMcCabe.dll {загрузка сведений о сложности функций).
В четвертой главе приводится методика и результаты тестирования модели и ПК «RelCalc» при моделировании характеристик надежности очередной сборки крупной тиражной программной системы. В качестве исследуемой системы выбрана часть автоматизированной банковской системы, автоматизирующая работу банка с физическими лицами.
Сама исследуемая система написана на языке программирования C/C++ и является тиражной в том смысле, что имеются несколько одновременно поддерживаемых сборок и к ним регулярно выходят патчи. В разработке системы одновременно принимают участие несколько программистов. Основные характеристики системы, приведены в табл. 1:
Таблица 1
Основные характеристики тестируемой системы
Ха рактерн стика Значение
Язык С/С++
Количество программистов 3-7 в каждый момент времени
Число исходных файлов —3000 .с, ,срр, .Ь-файлов
Число функций в исходных файлах —19000 С/С++ функций и методов
Число тиражных сборок 2-3 в каждый момент времени
Число патчей/месяц 1-2 патча к каждой тиражной сборке
При тестировании модели был допущен ряд упрощений:
• рассматривались запросы и отказы, касающиеся только «ядра» системы. Кроме «ядра», в системе существует еще большой объем прикладного кода, в том числе — и написанного на других языках. Все запросы, в которых упоминались прикладные части системы, игнорировались и в рассмотрение не допускались;
• рассматриваемая система тесно взаимодействует с другими аналогичными программными продуктами — другими частями банковской системы.
Однако, поскольку рассматривалось только «ядро» системы, все запросы и отказы, возникающие вследствие взаимодействия с другими частями банковской системы, игнорировались и в рассмотрение не допускались; • иерархия системы строилась исключительно для отображения возможностей модели и не претендует на полноту отражения всех функций системы.
Построение обучающей выборки велось на основании данных, полученных из системы отслеживания проблем и системы контроля версий, характеристики обучающей выборки показаны в табл. 2.
Таблица 2
Характеристики обучающей выборки
Харя ктеристн ка Значение
Число рассматриваемых патчей 7 патчей к тиражным сборкам
Число реализованных запросов 154 запроса
Число отвергнутых запросов 29 запросов
Число элементарных изменений 595 измененных функций
Число обучающих примеров 512 обучающих примеров
Всего, по запросам, в исходном коде были изменены 595 функций. Вследствие объединения изменений (в случае, если два изменения функции совпадают по всем выбранным параметрам, такое изменение объединяется в одно — при этом число отказов, которое получается вследствие «сводного изменения» равно среднему арифметическому отказов объединенных изменений), число обучающих примеров для нейросетн изменения составило в итоге 512. .
Всего было обучено 15 нейросетей изменений, разделенных на три класса:
1. Трехслойная нейросеть со стандартными входами. Первый слой — 4 нейрона, второй —4 нейрона, 3 — I нейрон.
2. Двухслойная нейросеть со стандартными входами. Первый слой — 4 нейрона, второй — 1 нейрон.
3.-Двухслойная нейросеть со стандартными и одним дополнительным входом. Первый слой — 5 нейронов, второй - 1 нейрон. -Для тестирования модели был выбран патч другой сборки, выпускавшейся
практически одновременно с 3 и 4 патчамн обучающей выборки. Таким образом, квалификация программистов была оставлена той же, что и для обучающей выборки. Характеристики тестирующей выборки приведены в табл. 3.
Таблица Э
Характеристики тестирующей выборки
Хара ктеристи ка Значение
Число рассматриваемых патчей 1 патч к тиражной сборке
Число реализованных запросов 75 запросов
Число отвергнутых запросов 11 запросов
Тестирование моделей с первым классом нейросетей — трехслойных, со стандартными входами, показало результаты, приведенные на рис. 5.
Здесь
20
3
(О
■ Нейросетъ1
■ Нейросеть2
□ НейросетьЗ
□ Кейросеть4 Нейросеть5
Нейросети
Рис. 5. Результаты применения нейросетей первого класса
налицо два серьезных недостатка: • большой разброс в результатах прогнозирования — одна нейросеть
спрогнозировала 17 отказов в системе, другая - 2. Ориентироваться в такой ситуации
практически невозможно — модель не поможет, а только запутает человека;
• отсутствие более-менее правильных оценок во всех нейросетях — нн одна .- .из них не спрогнозировала правильное число отказов - 11. Ближе всего к этой оценке число в 8 отказов, однако, такое качество прогнозирования, естественно, неудовлетворительно.
Анализируя обстоятельства применения нейросети, можно предположить единственную причину подобного отклонения от действительности — недообучение нейросети. Для обучения трехслойной нейросети мощность обучающей выборки была явно недостаточна.
Нейросети второго класса - двухслойные, со стандартными входами -показали наилучший результат. Именно на основании данных, полученных с их помощью, можно сделать вывод о верной работе модели и идеи, которая в нее заложена. Результаты применения моделей этого класса показаны на рис. 6.
Как
20
15
5..
ю
N N Я _ ® л Г •о лГ гч «*}
т- "
? щт С
■ ''VI ■
В в
В Нейросеть 1 <
■ НейросетьЗ!:
□ НейросетьЗ ¡|
□ Нейросетъ4
■ Нейросетьб
видно,
двухслойные нейросети
были обучены намного
лучше чем трехслойные —
разброс выходных
значений достаточно мал,
а среднее
арифметическое
результатов отличается от
реального ненамного.
„ ' „ и Нейросети третьего
Рис. б. Результаты применения нейросетей ^^ были созданы ^
второго класса демонстрации
"I. возможности
безболезненного добавления новых параметров в модель Перед обучением
Нейросети
нейросетей данного класса, было произведено мини-исследование, показывающее — в результате исправления запросов с какими характеристиками, чаще всего вносятся дефекты.
Были случайным образом выбраны 500 запросов, из которых по 34 произошло изменение статуса с «Исправлен» на «Исправлен с ошибкой». На базе этих выбранных запросов, было проведено исследование влияния двух дополнительных полей запроса на возможность повторного появления отказа — важности запроса (очень высокая, высокая, средняя, низкая) и вида подразделения, которое обнаружило отказ (отдел тестирования, отдел внедрения, отдел поддержки и т.п.). Наибольшую поддержку получило правило, в котором говорится, что большая часть повторных отказов обнаруживается по запросам, имеющим значение поля «важность» = «высокая».
Таким образом, в ненросети третьего класса - двухслойные, с 4 стандартными и одним дополнительным входом — были добавлены еще 4 входных нейрона — соответствующие важностям запроса. В данной работе, это добавление не принесло большой пользы, однако полученные результаты показали правильность выбранного подхода. Результаты применения таких моделей показаны на рис. 7.
После подсчета прогнозируемого числа отказов в системе в целом, было проведено распространи ше отказов вверх по иерархии системы. Результаты этого
процесса показаны на рис. 8.
В таблице, внизу рисунка, три строки соответствуют трем классам
иейросетей, описанных ранее. Числа в таблице — это среднее число отказов, которое было спрогнозировано при использовании соответствующего класса иейросетей в данной функциональности. Числа около названий функциональностей — это число отказов, обнаруженное в реальности.
Отдельный раздел четвертой главы посвящен проблеме внедрения модели — рассматриваются и даются рекомендации по решению проблем, возникающих при эксплуатации модели в начале разработки исследуемой системы. Кроме того, рассматривается вариант внедрения модели в устоявшийся процесс разработки. Применение модели возможно в обоих случаях, однако всегда требуется некоторое время на точную настройку модели на данную систему.
Нейросети
'I
!е)Нейросеть1 и !аНейросеть2!:
¡□НейросетъЗ .□Нейросетей;. ■ Нейросетъ5;;
Рис. 7. Результаты применения иейросетей третьего класса
Исследуема^ систеиа
Числа отказов
1 класс 2.15 2.08 0.55
2 класс: 4.06 3.87 1,09
3 класс: 4,26 М5 1.14
Рис. 8, Распределен)» отказов по функционжльным блопм
Применения ПК «К.е1Сак» в процессе разработки тиражных банковских программных систем приведет к следующим положительным эффектам:
• сокращению времени, затрачиваемого на тестирование патчей;
• повышению качества разрабатываемого программного продукта;
• сокращению нагрузки на отдел тестирования за счет направления его сотрудников на тестирование только подверженных отказам частей программного продукта.
Результаты диссертационного исследования нашли отражение в учебном процессе, в виде набора лабораторных работ по дисциплине «Технология разработки программного обеспечения».
ОСНОВНЫЕ ВЫВОДЫ И РЕЗУЛЬТАТЫ
1. На основании проведенного анализа существующих моделей надежности ПО и исследований в области банковского ПО сделаны выводы о необходимости разработки новых подходов к моделированию оценки надежности банковского тиражного ПО.
2. Предложена методика прогнозирования характеристик надежности банковского тиражного программного обеспечения, позволяющая развивать и совершенствовать теорию надежности программного обеспечения.
3. Разработана модель прогнозирования характеристик надежности банковских тиражных программных систем на основе нейросетевых технологий, обладающая свойствами адаптивности, детализации, конкретизации. Благодаря этим качествам, модель не только позволяет оценить число отказов в очередной сборке тиражной программной системы еще до ее сборки, но и правильно распределить усилия тестировщиков, направив их на тестирование тех функциональных блоков, в которых ожидается наибольшее число отказов.
4. Применение в качестве ядра модели нейросети, позволило существенно повысить степень автоматизации оценки показателей надежности банковского тиражного программного обеспечения, за счет, в основном, отсутствия необходимости вычислять взаимные зависимости параметров модели.
5. Разработан программный комплекс «Reliability Calculator», позволяющий автоматизировать все этапы применения модели для прогнозирования числа отказов в очередной сборке тиражной программной системы.
6. Исследованы возможности применения нейросетей различной мощности для решения поставленной задачи. Проведены исследования быстродействия различных алгоритмов обучения нейросети, в результате которых выбран наиболее подходящий.
7. На основании результатов практического применения программного комплекса и модели, сделаны выводы о корректности модели и разработанного программного комплекса.
ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ
!. Никольский С.О. Анализ применимости моделей надежности к тиражному программному обеспечению / С.О, Никольский, В.К. Гулаков // Проблемы информатики в образовании, управлении, экономике и технике: сборник статей IV всероссийской научно-технической конференции / Под редакцией д.т.н., проф. В.М. Линькова. — Пенза, 2004.
2. Никольский С.О. Модель надежности тиражного программного обеспечения / С.О, Никольский, В.К. Гулаков // Вестник Брянского Государственного Технического Университета. — № 4 (4), 2004. — Брянск, с. 90-94.
3. Никольский С.О. Проблемы организации трассировки в сложных программных системах / С.О. Никольский, В.К. Гулаков // Качество инженерного образования: материалы 2-й международной научно-методической конференции. - Брянск, 2005.
4. Никольский С.О. Модель надежности программного обеспечения на основе интеллектуальных технологий / С.О. Никольский, В.К. Гулаков II Вестник компьютерных и информационных технологий. — Яа 7 (13), 2005 — М: Машиностроение, с. 43-48.
5. Никольский С.О. Программный комплекс для моделирования надежности тиражного программного обеспечения с использованием нейросстей / С.О. Никольский // Информационные технологии, энергетика и экономика: сб. трудов III межрег. науч.-техн. конф. студентов и аспирантов. — Смоленск, 2006.
6. Никольский С.О. Моделирование надежности тиражного программного обеспечения (reliability modeling for circulation software) / С.О. Никольский // Вестник Белгородского университета потребительской кооперации. — №2 (17), 2006. - Белгород, с. 203-207
Никольский Святослав Олегович
Моделирование оценки характеристик надежности банковских тиражных программных систем на основе нейросетевых технологий
Автореферат
Лицензия №02038} от 24.04.97. Подписано в печать 22.11.06. Формат 60x84 1/16. Бумага офсетная. Офсетная печать. Печ.я. Ц£. Уч.~изд. л.1. Т. 100 экз. Заказ 607. Бесплатно
Брянский государственный технический университет, 241035, г. Брянск, бульвар 50-летия Октября, 7, Лаборатория оперативной полиграфии БГТУ, ул. Институтская, 16.
Оглавление автор диссертации — кандидата технических наук Никольский, Святослав Олегович
Введение.
Глава 1 Анализ существующих моделей надежности программного обеспечения.
1.1. Основные положения теории надежности программного обеспечения .•.
1.2. Особенности применения теории надежности для банковских тиражных программных систем.
1.3. Классификация моделей надежности.
1.4. Анализ моделей типа «черный ящик».
1.4.1. Экспоненциальный класс моделей.
1.4.2. Гамма- и Вебула-классы моделей.
1.4.3. Модели категории бесконечных отказов.
1.5. Анализ моделей типа «белый ящик».
1.6. Анализ статических моделей надежности.
1.7. Обзор используемых в исследовании технологий.
1.7.1. Метрики кода программного обеспечения.
1.7.2. Инструментирование исходного кода.
1.7.3. Обнаружение дефектов с помощью анализа исходных кодов.
1.7.4. Тестирование программного обеспечения.
1.8. Выводы по главе.
Глава 2 Построение модели надежности на основе нейросетей.
2.1. Основные принципы модели.
2.2. Методы реализации предложенных принципов.
2.2.1. Общий вид разрабатываемой модели.
2.2.2. Структурный взгляд на программную систему.
2.2.3. Функциональный граф и иерархия системы.
2.2.4. Мера связи функций в функциональном графе.
2.2.5. Меры связи функций с функциональными блоками.
2.2.6. Меры связи блоков высшего уровня в иерархии системы.
2.2.7. Нейросеть изменения.
2.2.8. Сложность функций.
2.2.9. Адаптация модели.
2.2.10. Требования к процессу разработки.
2.3. Архитектура нейросети изменений.
2.3.1. Модель искусственного нейрона.
2.3.2. Выбор архитектуры нейронной сети.
2.3.3. Выбор алгоритма обучения нейронной сети.
2.3.4. Выбор числа скрытых слоев и нейронов в них.
2.4. Простейшая модель отказов для единичного изменения.
2.4.1. Структура системы.
2.4.2. Разработка системы.
2.4.3. Оценка внесенного изменения.
2.4.4. Распространения отказов по функциональному графу.
2.4.5. Распространение отказов верх по иерархии.
2.5. Расширение модели для многих изменений.
2.5.1. Цепочка отказов.
2.5.2. Добавление новых входов к нейросети изменений.
2.5.3. Раздвоение модели.
2.5.4. Реализация новых функций.i.
2.7. Выводы по главе.:.
Глава 3 Разработка программного комплекса «Reliability Calculator».
3.1. Этапы применения комплекса «Reliability Calculator».
3.2. Архитектура комплекса «Reliability Calculator».
3.2. Сущности и отношения в предметной области.
3.3. Функции программного комплекса.
3.3.1. Редактирование данных системы.
3.3.2. Инструментирование исходного кода исследуемой программной системы.
3.3.3. Загрузка результатов выполнения инструментированного кода.
3.3.4. Измерение сложности функций.
3.3.5. Загрузка результатов измерения сложности функций.
3.3.6. Загрузка сведений о запросах.
3.3.7. Обучение нейросети изменения.
3.3.8. Прогнозирование отказов по функциям.
3.3.9. Прогнозирование отказов по функциональным блокам.
3.3.10. Просмотр функционального графа.
3.4. Выводы по главе.
Глава 4 Применение ПК «RelCalc» для моделирования надежности крупной банковской тиражной программной системы.
4.1. Характеристики исследуемой программной системы.
4.2. Допущенные упрощения.
4.3. Обучение модели.
4.3. Тестирование модели.
4.3.1. Применение первого класса нейросетей.
4.3.2. Применение второго класса нейросетей.
4.3.3. Применение третьего класса нейросетей.
4.3.4. Прогнозирование числа отказов в функциональных блоках системы.
4.4. Варианты внедре'ния модели.;.
4.4.1. Внедрение модели в начале разработки.
2.6.2. Внедрение модели в устоявшийся процесс разработки.
4.4. Выводы по главе.
Введение 2006 год, диссертация по информатике, вычислительной технике и управлению, Никольский, Святослав Олегович
В последние десятилетия наблюдается значительный рост сложности программного обеспечения (ПО). Так, если в начале 1990-х годов программа, состоящая из ЮО'ООО строк представляла собой серьезную разработку, то сейчас часто встречаются программные продукты, состоящие из нескольких тысяч исходных файлов и сотен тысяч функций. При этом файл из ЮО'ООО строк, зачастую, не самый большой и сложный в проекте.
Сложные программные продукты разрабатываются теперь не группой из двух-трех человек, а сотнями программистов, возможно находящихся на значительном расстоянии друг от друга. При этом каждый из них, как правило, занимается только своей частью проекта. Человека, который бы хорошо ориентировался во всем проекте, не существует. Но любому программисту, работающему в крупной команде, приходится иногда заниматься доработкой чужого кода. Этот, а также и многие другие факторы, приводят к тому, что разработать абсолютно надежное программное обеспечение невозможно - отказы программ встречаются часто и, порой, очень мешают работе пользователя.
В качестве примера, как одна ошибка, допущенная программистом или проектировщиком на этапе разработки, может усложнить жизнь множеству людей, можно привести следующие случаи:
• американский космический аппарат Mariner 1 отправился 22 июля 1962 по направлению к Венере. Вследствие аппаратного отказа средств связи с ЦУП, корабль перешел на собственную программную систему пилотирования, содержащую дефект. В результате Mariner 1 сбился с курса, и его пришлось затопить в Атлантическом океане. Расследование показало, что в процессе системе навигации была совершена опечатка — при вводе одной из формул был пропущен символ [1];
• в 1988-96 гг. генератор случайных чисел Kerberos широко использовался в различных системах шифрования. Предполагалось, что программа должна выбирать ключ случайным образом из многих миллиардов чисел, но генератор случайных чисел выбирал из гораздо меньшего набора численностью примерно в миллион. Как результат, в течение восьми лет любой пользователь мог без труда проникнуть в компьютерную систему, которая использовала модуль Kerberos [2];
• 1985-87 гг. Несколько человек получили смертельную дозу облучения во время сеансов радиационной терапии с медицинским ускорителем Therac-25. Основанная на предыдущей версии ускорителя, "улучшенная" модель Therac-25 могла генерировать два вида излучения: слабое электронное бета-излучение и нормальное рентгеновское излучение. Еще одно "улучшение" состояло в том, что вместо электромеханической защиты пациента в устройстве была реализована новая программная защита. Обе функции были некорректно реализованы неопытным программистом, результатом чего стали как минимум шесть смертей и огромное количество несмертельных случаев переоблучения [3];
• 15 января 1990 г. Ошибка в новой версии прошивки междугородних коммутаторов телефонной сети AT&T привела к тому, что коммутатор перезагружался, .если получал специфический сигнал от соседнего коммутатора. Данный сигнал генерировался в тот момент, когда коммутатор восстанавливал свою работу после сбоя. 15 января 1990 один из коммутаторов подал тот подобный сигнал. Это привело к тому, что через некоторое время уже 114 соседних коммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс. человек остались без междугородней связи на 9 часов, пока инженеры не установили на коммутаторы предыдущую версию прошивки [4].
Понятно, что оценка параметров надежности программных систем -необходимость. Такие оценки нужны как пользователям, так и разработчикам.
Особенно остро вопрос надежности встает в условиях разработки банковского тиражного программного обеспечения. Отличительной особенностью подобных программных комплексов является то, что они одновременно разрабатываются множеством программистов, каждая сборка программного продукта должна быть разработана и протестирована в сжатые сроки, а любой отказ может привести к потере средств и репутации банком.
Целыо диссертационной работы является разработка и программная реализация математической модели, позволяющей прогнозировать характеристики надежности банковских тиражных программных систем и обладающей свойствами адаптивности, детализации и конкретизации.
При разработке модели были использованы основные положения теории надежности программного обеспечения; математический аппарат и методы теории искусственных нейронных сетей; основные положения и методы теории графов. При разработке программного модуля использовались основные положения теории реляционных баз данных, методы объектно-ориентированного программирования.
Научная новизна работы состоит в использовании качественно нового подхода к моделированию процесса оценки характеристик надежности банковского тиражного программного обеспечения, основанного на использовании нейросетевого аппарата для построения зависимости характеристик надежности от параметров внесенных в очередную сборку исследуемой системы изменений.
Практическую ценность работы составляют:
1. Методология моделирования оценки характеристик надежности банковского тиражного программного обеспечения.
2. Программный комплекс «Reliability Calculator», автоматизирующий все этапы применения модели.
3. Методика применения данного программного комплекса, полученные в результате практического его применения для моделирования оценки характеристик надежности крупной тиражной автоматизированной банковской системы.
Цель и поставленые задачи определили следующую структуру работы:
В первой главе рассматриваются основные положения и определения теории надежности программного обеспечения. Классифицируются, рассматриваются и анализируются некоторые существующие модели надежности программного обеспечения. При анализе моделей, основное внимание уделяется выделению их достоинств и недостатков. Отдельно рассматриваются некоторые смежные с теорией надежности области течения.
Во второй главе, на основании выводов из первой главы, ставится задача разработать новую модель надежности банковского тиражного программного обеспечения. Описываются основные принципы модели и предлагаются методы их реализации. Рассматривается простейший пример применения модели для прогнозирования числа отказов в программной системе, в которую вносится одно изменение.
Третья глава посвящена описанию разработанного программного комплекса (ПК) «Reliability Calculator», автоматизирующего применение модели. Описывается внутренняя архитектура ПО, использованные при разработке технологии. Рассматриваются все этапы применения ПО для моделирования характеристик надежности банковской тиражной программной системы.
В четвертой главе показываются результаты практического применения разработанного ПО и модели для прогнозирования числа отказов в очередной сборке крупной банковской тиражной программной системы. Делаются выводы о корректности заложенных в модель принципов и работоспособности разработанного ПО. Рассматриваются проблемы, которые могут возникнуть при внедрении модели и программного комплекса.
Результаты исследований позволили сформулировать следующие принципы, выносимые на защиту:
1. Математическая модель оценки характеристик надежности банковских тиражных программных систем на основе нейросетевых технологий.
2. Методика прогнозирования характеристик надежности банковского тиражного программного об'еспечения, основанная на вычислении числа отказов очередной сборки программы путем анализа внесенных в исходный код изменений.
3. Алгоритм и структура программного комплекса, автоматизирующего все этапы применения разработанной модели надежности.
4. Результаты практического применения разработанного программного комплекса и модели для прогнозирования числа отказов в очередной сборке крупной банковской тиражной программной системы.
Заключение диссертация на тему "Моделирование оценки характеристик надежности банковских тиражных программных систем на основе нейросетевых технологий"
4.4. Выводы по главе
Проведенные исследования показали, что предложенная модель и программа, реализующая ее принципы, может успешно применяться для моделирования надежностных характеристик банковских тиражных программных систем. Сделанные в результате исследований выводы, помогут разобраться с возникающими в ходе начальных этапов применения модели, проблемами.
ЗАКЛЮЧЕНИЕ
При проведении научных исследований, связанных с темой диссертационной работы, и решении поставленных задач были достигнуты следующие результаты:
1. На основании проведенного анализа существующих моделей надежности ПО и исследований в области банковского ПО сделаны выводы о необходимости разработки новых подходов к моделированию оценки надежности банковского тиражного ПО.
2. Предложена методика прогнозирования характеристик надежности банковского тиражного программного обеспечения, позволяющая развивать и совершенствовать теорию надежности программного обеспечения.
3. Разработана модель прогнозирования характеристик надежности банковских тиражных программных систем на основе нейросетевых технологий, обладающая свойствами адаптивности, детализации, конкретизации. Благодаря этим качествам, модель не только позволяет оценить число отказов в очередной сборке тиражной программной системы еще до ее сборки, но и правильно распределить усилия тестировщиков, направив их на тестирование тех функциональных блоков, в которых ожидается наибольшее число отказов.
4. Применение в качестве ядра модели нейросети, позволило существенно повысить степень автоматизации оценки показателей надежности банковского тиражного программного обеспечения, за счет, в основном, отсутствия необходимости вычислять взаимные зависимости параметров модели.
5. Разработан программный комплекс «Reliability Calculator», позволяющий автоматизировать все этапы применения модели для прогнозирования числа отказов в очередной сборке тиражной программной системы.
6. Исследованы возможности применения нейросетей различной мощности для решения поставленной задачи. Проведены исследования быстродействия различных алгоритмов обучения нейросети, в результате которых выбран наиболее подходящий.
7. На основании результатов практического применения программного комплекса и модели, сделаны выводы о корректности модели и разработанного программного комплекса.
Библиография Никольский, Святослав Олегович, диссертация по теме Математическое моделирование, численные методы и комплексы программ
1. Mariner 1 - Wikipedia, the free encyclopaedia Электронный ресурс.. Режим доступа: http://en.wikipedia.org/wiki/Mariner 1, свободный.
2. Dole В. Misplaced trust: Kerberos 4 session keys / B. Dole, S. Lodin, E. H. Spafford // Proceedings of 4th Symposium on Network and Distributed System Security, IEEE Press. 1997. pp. 60-71.
3. Porrello A. M. Death and Denial: The Failure of the THERAC-25, A Medical Linear Accelerator / Anne Marie Porrello. Режим доступа: http://www.csc.calnolv.edu/4dalbev/SWE/Papers/THERAC25.html, свободный.
4. Borisov N. AT&T Failure of January 15, 1990 / Nikita Borisov. Режим доступа: http://www.cs.berkeley.edu/~nikitab/courses/cs294-8/hwl.html, свободный.5. ГОСТ 28806-90.- 1990.
5. IEEE Standard Glossary of Software Engineering Terminology // IEEE Std 610.12-1990, IEEE Press. 1991.
6. Lyu Michael R. Handbook of Software Reliability Engineering / Michael R. Lyu // McGraw-Hill, 1976. 850 p.
7. Grottke Michael. Software Reliability Model Study / Michael Grottke // University of Erlangen-Nuremberg. 2001.-41 p.
8. Gokhale Swapna S. Important Milestones in Software Reliability Modeling / Swapna S. Gokhale, Peter N. Marinos, Kishor S. Trivedi // Proceedings of Software Engineering and Knowledge Engineering (SEKE), IEEE Press. 1996.
9. Myers Glenford J. Software Reliability: Principles and Practices / Glenford J. Myers // New York: John Wiley & Sons, Inc. 1976. -360 p.
10. Myers Glenford J. The Art of Software Testing / Glenford J. Myers // New York: John Wiley & Sons, Inc. 1979. - 192 p.
11. H.Jelinski Z. Software Reliability Research / Z. Jelinski, P.B. Moranda // Proceedings of Statistical Methods for the Evaluation of Computer System Performance, Academic Press. 1972. - pp. 465-484.
12. Littlewood B. A Bayesian Reliability Growth Model for Computer Software / B. Littlewood, J. Verrall // Journal of the Royal Statistical Society, series C. 1973. - vol. 22 (No. 3). - pp. 332-346.
13. Липаев B.B. Надежность программного обеспечения АСУ / В.В. Липаев. -М: Энергоиздат, 1981. 239 с.
14. Липаев В.В. Обеспечение качества программных средств. Методы и стандарты / В.В. Липаев. -М: СИНТЕГ, 2001. 380 с.
15. Липаев В.В. Документирование сложных программных средств /
16. B.В. Липаев. М: СИНТЕГ, 2005. 216 с.
17. Липаев В.В. Тестирование программ / В.В. Липаев. -М: Радио и Связь, 1986. 296 с.
18. Ромашок С.Г. Оценка надежности программного обеспечения /
19. C.Г. Романюк // Открытые системы. 1994. №4.
20. Борисенков С.В. Модель надежности программного обеспечения на базе геометрического закона распределения случайной величины / С.В. Борисенков, А.П. Воропаев, А.Н. Лукашкин // Двойные технологии. 1999. №3.
21. Борисенков С.В. О точностных характеристиках некоторых моделей надежности программного обеспечения / С.В.
22. Борисенков, А.П. Воропаев, В.А. Семенов, А.Н. Лукашкин // Двойные технологии. 1999. №3. 23.Dalai S.R. Software Reliability / S.R. Dalai, Michael R. Lyu, C.L.
23. Okumoto K. Optimum Release Time for Software Systems Based on Reliability and Other Performance Measures / K. Okumoto, A.L. Goel // The Journal of Systems and Software. 1980. - vol. 1 (No. 4). - pp. 315-318.
24. Schneidewind N.F. Analysis of Error Processes in Computer Software / N.F. Schneidewind // Sigplan Note. 1975. - vol. 10 (No. 6). - pp. 337-346.
25. Musa J.D. A theory of Software Reliability and Its Applications / J.D. Musa // IEEE Transactions on Software Engineering. 1975. - vol. SE-1 (No. 3).-pp. 312-327. 29.0hba M. Software Reliability Analysis Models / M. Ohba // IBM J.
26. Schick G.J. Assessment of Software Reliability / G.J. Schick, R.W. Wolverton // Proceedings of the Operations Research, Physica-Verlag, Wurzburg-Wien. 1973. - pp. 395-122.
27. Yamada S. S-Shaped Reliability Growth Modeling for Software Error Detection / S. Yamada, M. Ohba, S. Osaki // IEEE Transactions on Reliability. December 1983. - vol. R-32 (No. 5). - pp. 475-478.
28. Duane J.T. Learning Curve Approach to Reliability Monitoring / J.T. Duane // IEEE Transactions on Aerospace. 1964. - vol. 2. - pp. 563566.
29. Musa J.D. A Logarithmic Poisson Execution Time Model for Software Reliability Measurement / J.D. Musa, K. Okumoto // Proceedings Seventh International Conference on Software Engineering, Orlando, Florida. pp. 230-238.
30. Gaffney J.D. Ann Approach to Estimating Software Errors and Availability / J.D. Gaffney, C.F. Davis // Proceedings of the 11th Minnowbrook Workshop on Software Reliability. July 1998.
31. Agresti W.W. Projecting Software Defects From Analyzing Ada Designs / W.M. Evanco, W.W. Agresti // IEEE Transactions on Software Engineering. November 1992. - vol. 18 (No. 11). - pp. 988-997.
32. Methodology for Software Prediction and Assessment // Rome Laboratory, Technical Report RL-TR-92-52. 1992. - vol. 1 and 2.
33. Mills H.D. On the Statistical Validation of Computer Programs / H.D. Mills // IBM Federal Syst. Div., Gaithesburg, MD, Rep. 72-6015. -1972.
34. Brown J.R. Testing for Software Reliability / J.R. Brown, M. Lipow // Proc Int'l Conf. Reliable Software, Los Angeles, CA. April 1975. pp. 518-527.
35. Метрики Электронный ресурс. Режим доступа: http://met-rix.narod.ru/, свободный.
36. McCabe T.J. A Complexity Measure / T.J. McCabe // IEEE Transactions on Software Engineering. 1976. - vol. l.SE-2 (No. 4). -pp.308-320.
37. Tester's Edge Электронный ресурс. Режим доступа: http://www.testersedge.eom/glassiartoolkit.htm#e. свободный.
38. How Test Coverage Tools Work Электронный ресурс. Режим доступа: http://www.patersontech.com/TestCoverage/Operation.aspx, свободный.
39. Li Shengying. A Survey on Tools for Binary Code Analysis / Shengying Li // Stony Brook University. 2004. - 39 p.
40. Bison GNU Project - Free Software Foundation (FSF) Электронный ресурс. Режим доступа: http://www.gnu.org/software/bison/bison.html, свободный.
41. The LEX & YACC Page Электронный ресурс. Режим доступа: http://dinosaur.compilertools.net/#overview, свободный.
42. ANTLR Parser Generator Электронный ресурс. Режим доступа: http://www.antlr.org/, свободный.
43. Grammar List Электронный ресурс. Режим доступа: http://www.antlr.org/grammar/list, свободный
44. Comp.compilers: New С++ grammar release Электронный ресурс. Режим доступа: http://c0mpilers.iecc.c0m/c01r1parch/article/91 -07037, свободный.
45. Exuberant Ctags Электронный ресурс. Режим доступа: http://ctags.sourceforge.net/, свободный.
46. CSE Ноте Электронный ресурс. Режим доступа: http://www.microsoft.com/Windows/CSE/default.mspx, свободный.
47. Program Analysis Projects Электронный ресурс. Режим доступа: http://www.microsoft.com/cse/pa/pa projects.mspx, свободный.
48. Das Manuvir. ESP: Path-Sensitive Program Verification in Polynomial Time / Manuvir Das, Sorin Lerner, Mark Seigke // Conference on Programming Language Design and Implementation, Berlin, Germany. 2002. - pp. 57-68.
49. Serena PVCS Products Электронный ресурс. Режим доступа: http://www.svnergex.com/solutions/pvcs/products/, свободный
50. GNU cflow Электронный ресурс. Режим доступа: http://www.gnu.org/software/cflow/, свободный.
51. Fast Artificial Neural Network Library Электронный ресурс. Режим доступа: http://fann.sourceforge.net, свободный.
52. SourceForge.net: The Netron Project Электронный ресурс. Режим доступа: http://sourceforge.net/proiects/netron, свободный.
53. MSDN Home Page Электронный ресурс. Режим доступа: http://msdn.microsoft.coin, свободный.
54. Страуструп Бьерн. Язык программирования С++. Специальное издание. -М.: БИНОМ, 2004. 1098 с.
55. Ярушкина Н.Г. Основы теории нечетких и гибридных систем: Учеб. пособие. М.: Финансы и статистика, 2004. - 320 с.:ил.
56. Riedmiller Braun. A direct adaptive method for faster backpropagation learning: The RPROP algorithm / Braun Riedmiller. -1993
57. Тиражные решения Электронный ресурс. Режим доступа: www.trisoftrus.com/DesktopDefault.aspx?tabid-147&Mnu=4.108.14 7, свободный.
58. Некрасова Е. Вне тиража / Е. Некрасова // СЮ. 2006. - №8. - с. 143.
59. Решения R-Style Softlab Электронный ресурс. Режим доступа: http://www.softlab.ru/solutions/, свободный.
60. Решения DiaSoft Электронный ресурс. Режим доступа: http://www.diasoft.ru/live/page/qsp/id/10853/, свободный.
61. Интегрированная банковская система «БИСквит» Электронный ресурс. Режим доступа: http://www.bis.ru/index.htm, свободный.
62. Искусственные нейронные сети Электронный ресурс. Режим доступа: http://victoria.lviv.ua/html/oio/html/theme5 rus.htm, свободный.
63. Преимущества нейронных сетей Электронный ресурс. Режим доступа: http://www.neuropro.ru/neu3.shtml, свободный.
64. Популярные нейросетевые архитектуры Электронный ресурс. Режим доступа: http://cgm.graphicon.ru:8080/issue5/Paper vap/, свободный.
65. Деталыюе описание компонентов и работы нейросетей Электронный ресурс. Режим доступа: http://www.victoria.lviv.ua/html/oio/html/theme6 rus.htm, свободный.
66. Тарков М.С. Нейрокомпьютерные системы Электронный ресурс. / М.С. Тарков. Режим доступа: http://www.intuit.ru/department/expert/neuro/index.htm, свободный.
67. Sylvain Berlemont. Neural Networks: Multi-Layer Perceptron and Hopfield Network / Berlemont Sylvain, Nicolas Burrus, David Lesage, Francis Maes, Jean-Baptiste Mouret, Benoit Perrot, Maxime Rey, Nicolas Tisserand, Astrid Wang // CSI. 2004.
68. Silva F. Speeding up backpropagation / F. Silva, L. Almeida // Advanced Neural Computers, North Holland. 1990. - pp. 151-158.
69. Tollenaere T. SuperSAB: fast adaptive back-propagation with good scaling properties / T. Tollenaere // Neural Networks. 1990. - pp. 561-573.
70. A. Jacobs R. Increased rates of convergence through learning rate adaption / Jacobs R. A. // Neural Networks. 1988. - pp. 295-307.
71. A Feed Forward Neural Network. Understanding Back Propagation Электронный ресурс. Режим доступа: http://www.heat0nresearcli.c0m/articles/5/page2.html, свободный.
-
Похожие работы
- Издательская политика в последний период истории СССР(70-е- 80-е годы)
- Нейросетевое управление рентабельностью предприятия
- Разработка комбинированного нейросетевого способа, моделей и средств для оперативного управления сложными техническими системами
- Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных
- Разработка и исследование коллективных нейросетевых алгоритмов дикторонезависимого распознавания речевых сигналов
-
- Системный анализ, управление и обработка информации (по отраслям)
- Теория систем, теория автоматического регулирования и управления, системный анализ
- Элементы и устройства вычислительной техники и систем управления
- Автоматизация и управление технологическими процессами и производствами (по отраслям)
- Автоматизация технологических процессов и производств (в том числе по отраслям)
- Управление в биологических и медицинских системах (включая применения вычислительной техники)
- Управление в социальных и экономических системах
- Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
- Системы автоматизации проектирования (по отраслям)
- Телекоммуникационные системы и компьютерные сети
- Системы обработки информации и управления
- Вычислительные машины и системы
- Применение вычислительной техники, математического моделирования и математических методов в научных исследованиях (по отраслям наук)
- Теоретические основы информатики
- Математическое моделирование, численные методы и комплексы программ
- Методы и системы защиты информации, информационная безопасность