WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

загрузка...
   Добро пожаловать!

Pages:     | 1 || 3 |

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

Структурные или функциональные блоки системы, находящиеся на нижнем уровне иерархии, связаны (рис. 1) с функциями исходного кода.

Рис. 1. Структурно-функциональная схема исследуемой программной системы

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

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

Каждое элементарное изменение оценивается по параметрам:

  • - сложность функции до изменения – положительное число. Сложность функции в модели оценивается по метрике МакКейба.
  • - сложность изменения – неотрицательное число, подсчитываемое как абсолютная величина разности сложности функции до изменения и сложности функции после изменения. Чем больше сложность изменения, тем больше вероятность допущения ошибки.
  • - квалификация программиста, выполнившего изменение – число в пределах [0; 1], выражающее общий уровень знаний программиста (определяется путем экспертной оценки).
  • - опыт работы программиста с изменяемой функцией – число, обозначающее знание программистом данной изменяемой функции и функций, ее окружающих. Можно предложить следующий метод для определения :, где - мера связи функции с функциональным блоком, - квалификация программиста в функциональном блоке. Суммирование идет по всем функциональным блокам. Значение ограничено лишь неравенством и не ограничено каким-либо значением сверху.
  • - произвольное число дополнительных параметров изменения. Свободное добавление и удаление этих параметров в модель, обеспечивает свойство адаптивности.

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

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

Нейросеть обучается по усовершенствованному варианту алгоритма обратного распространения ошибки – RPROP. Основное его отличие заключается в том, что изменение весов связей происходит с учетом информации об изменении функции ошибки на каждом шаге. Веса изменяются на величину, вычисляемую по формуле (2).

,

где, E – функция ошибки, - вес связи между нейронами i и j, t – итерация обучения. Фактически, в RPROP происходит следующее: каждый раз, как только частная производная изменения соответствующего веса меняет свой знак (что означает, что последнее изменение веса было слишком большим и алгоритм «перепрыгнул» через локальный минимум), значение изменения веса уменьшается или увеличивается путем умножения на соответственно. В случае если производная положительна, значение веса уменьшается на, а если производная отрицательна – увеличивается на :

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

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

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

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

Отличительными чертами разработанной математической модели являются:

  1. В отличие от других моделей, разработанная математической модель определяет связи между характеристиками надежности программы и параметрами изменений, вносимых в данную программу.
  2. Количество параметров математической модели теоретически неограниченно, а добавление новых и удаление старых параметров приводит исключительно к необходимости переобучения нейросети, но не изменения всей модели в целом.
  3. Математическая модель позволяет получить характеристики надежности не только всей исследуемой программы в целом, но и отдельных ее частей.
  4. Математическая модель является адаптируемой, в том смысле что она может применяться для моделирования оценки характеристик надежности широкого класса банковских тиражных программных продуктов.
  5. Выходные данные математической модели являются числовыми и не столь строго регламентированы, как в других моделях – пользователь может получать различные данные, используя одну и ту же модель и подменяя лишь ядро модели – нейросеть.

Третья глава посвящена описанию разработанного программного комплекса «Reliability Calculator» (далее ПК «RelCalc»). Перед разработкой ПО были выделены все этапы его применения для моделирования надежностных характеристик исследуемой системы (рис. 3).

Как видно из рисунка, основными этапами применения ПК «RelCalc» являются:

  • инструментирование исходного кода исследуемой системы – необходимый этап формирования функционального графа и иерархии исследуемой системы. На этом этапе, в начало каждой функции исходного кода на C++ вставляется код, который при входе и выходе из функций записывает сведения об этом в текстовый файл специального формата (трассировочный файл);

Рис. 2. Этапы применения программного комплекса "Reliability Calculator"

  • обработка трассировочного файла – на этом этапе данные трассировочного файла разбираются и загружаются в базу данных. Таким образом, после этого этапа в базе данных содержатся сведения обо всех использованных функциях исходного кода, об их связях между собой, обо всех функциональностях и их связях с функциями;
  • оценка сложности исследуемых функций – на этом этапе определяется сложность каждой из использованных функций исходного кода;
  • обучение нейросети изменений – комплексный этап, включающий в себя загрузку сведений о запросах и цепочках запросов (выполненных в более ранние сборки системы), выбор пользователем дополнительных параметров модели, автоматическую подготовку обучающего набора и, собственно, обучение нейросети;
  • прогнозирование числа отказов в функциональном графе – еще один комплексный этап, в ходе которого в БД «RelCalc» загружаются сведения обо всех выполненных в исследуемую сборку запросах, автоматически подготавливаются наборы данных для нейросети изменений, эти наборы подаются на вход нейросети, полученное число отказов распространяется по функциональному графу;
  • прогнозирование числа отказов в иерархии систем3ы – на этом этапе полученное число отказов распространяется вверх по иерархии системы, и в итоге получаются искомые данные – число отказов во всех функциональностях системы и во всей системе в целом.

Разработанный программный комплекс состоит из нескольких модулей, отношения между которыми показаны на рис. 4.

Рис. 3. Архитектура программного комплекса "Reliability Calculator"

Здесь, в виде прямоугольников, нарисованных сплошными линиями, изображены модули разработанного ПК «RelCalc», в виде пунктирных прямоугольников – используемые сторонние библиотеки. Соединительные линии представляют свое отношение «предоставляет функции». Так, модуль instrumCmn.dll предоставляет функции модулю relMark.dll.

Конструктивно, программный комплекс состоит из 3-х исполняемых файлов:

  • relCalc.exe – основной исполняемый файл, предоставляющий доступ ко всем функциям системы. Только используя этот модуль можно получить доступ к справочникам системы, вручную отредактировать загруженные данные, получить итоговые результаты.
  • relMark.exe – утилита командной строки, позволяющая инструментировать исходные файлы на языке C/C++.
  • relMcCabe.exe – альтернатива использованию relCalc.exe для определения сложности функций.

Для инструментирования и измерения сложности функций исходного кода исследуемого проекта используется модуль instrumCmn.dll, написанный на основе кода утилиты Exuberant Ctags, и модуль relMark.dll, представляющий собой интерфейс между прикладным кодом и instrumCmn.dll.

Модуль, занимающийся обучением нейросети – relLearn.dll – использует функции модуля низкого уровня relFann.dll, который, по сути, является прослойкой между библиотекой Fast Artificial Network Library и прикладным кодом. Тестированием нейросети занимается непосредственно исполняемый модуль relCalc.exe.

Функцию распространения отказов по функциональному графу реализует модуль relErrorConductor.dll, использующий для доступа к БД, как и все остальные модули, модуль relDS.dll.

Загрузкой данных из текстовых файлов занимаются модули loadSCR.dll (данные о запросах на доработку), loadRS.dll (загрузка трассировочных файлов), loadMcCabe.dll (загрузка сведений о сложности функций).

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

Сама исследуемая система написана на языке программирования C/C++ и является тиражной в том смысле, что имеются несколько одновременно поддерживаемых сборок и к ним регулярно выходят патчи. В разработке системы одновременно принимают участие несколько программистов. Основные характеристики системы, приведены в табл. 1:

Таблица 1

Основные характеристики тестируемой системы

Характеристика

Значение

Язык

C/C++

Количество программистов

3-7 в каждый момент времени

Число исходных файлов

~3000.c,.cpp,.h-файлов

Число функций в исходных файлах

~19000 C/C++ функций и методов

Число тиражных сборок

2-3 в каждый момент времени

Число патчей/месяц

1-2 патча к каждой тиражной сборке

При тестировании модели был допущен ряд упрощений:

  • рассматривались запросы и отказы, касающиеся только «ядра» системы. Кроме «ядра», в системе существует еще большой объем прикладного кода, в том числе – и написанного на других языках. Все запросы, в которых упоминались прикладные части системы, игнорировались и в рассмотрение не допускались;
  • рассматриваемая система тесно взаимодействует с другими аналогичными программными продуктами – другими частями банковской системы. Однако, поскольку рассматривалось только «ядро» системы, все запросы и отказы, возникающие вследствие взаимодействия с другими частями банковской системы, игнорировались и в рассмотрение не допускались;
  • иерархия системы строилась исключительно для отображения возможностей модели и не претендует на полноту отражения всех функций системы.

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

Таблица 2

Характеристики обучающей выборки

Характеристика

Значение

Число рассматриваемых патчей

7 патчей к тиражным сборкам

Число реализованных запросов

154 запроса

Число отвергнутых запросов

Pages:     | 1 || 3 |






© 2011 www.dissers.ru - «Бесплатная электронная библиотека»