Формирование оптимальной структуры мультиверсионного программного обеспечения с помощью поиска в ширину
|
ВВЕДЕНИЕ 7
1 Теоретические сведения 10
1.1 Формулировка проблемы распределения компонентов в серийной kиз n
системе 10
1.2 Укрупнённый алгоритм распределения компонентов в серийной kиз n
системе 11
1.3 Выводы к разделу 1 12
2 Проектирование программной реализации 13
2.1 Назначение и основные требования к проектируемому ресурсу 13
2.2 Обзор существующих средств для создания ПО для синтеза оптимального
состава МВПС 14
2.3 Формирование структуры исходных данных 14
2.4 Организация вывода результатов расчёта 14
2.5 Выводы к разделу 2 15
3 Программная реализация 16
3.1 Архитектура системы 16
3.2 Программная реализация системы 16
3.3 Выводы к разделу 3 17
4 Экономическое обоснование проекта 18
4.1 Выбор методики расчета трудоемкости программирования 18
4.2 Расчет сметы затрат на разработку программных средств 19
4.2.1 Расходы на оплату труда 20
4.2.2 Материальные затраты 22
4.2.3 Амортизация оборудования 25
4.2.4 Прочие расходы 25
4.3 Смета по проекту 27
4.4 Выводы об экономической эффективности 29
5 Эргономика 30
5.1 Производительность работы 30
5.2 Проблемы, возникающие на этапе разработки GUI 31
5.2.1 Учет особенностей устройств ввода/вывода информации 31
5.2.2 Организация ввода данных 32
5.3 Принципы реализации пользовательского интерфейса 32
5.4 Вывод к разделу 5 32
СПИСОК СОКРАЩЕНИЙ 33
ЗАКЛЮЧЕНИЕ 34
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 35
1 Теоретические сведения 10
1.1 Формулировка проблемы распределения компонентов в серийной kиз n
системе 10
1.2 Укрупнённый алгоритм распределения компонентов в серийной kиз n
системе 11
1.3 Выводы к разделу 1 12
2 Проектирование программной реализации 13
2.1 Назначение и основные требования к проектируемому ресурсу 13
2.2 Обзор существующих средств для создания ПО для синтеза оптимального
состава МВПС 14
2.3 Формирование структуры исходных данных 14
2.4 Организация вывода результатов расчёта 14
2.5 Выводы к разделу 2 15
3 Программная реализация 16
3.1 Архитектура системы 16
3.2 Программная реализация системы 16
3.3 Выводы к разделу 3 17
4 Экономическое обоснование проекта 18
4.1 Выбор методики расчета трудоемкости программирования 18
4.2 Расчет сметы затрат на разработку программных средств 19
4.2.1 Расходы на оплату труда 20
4.2.2 Материальные затраты 22
4.2.3 Амортизация оборудования 25
4.2.4 Прочие расходы 25
4.3 Смета по проекту 27
4.4 Выводы об экономической эффективности 29
5 Эргономика 30
5.1 Производительность работы 30
5.2 Проблемы, возникающие на этапе разработки GUI 31
5.2.1 Учет особенностей устройств ввода/вывода информации 31
5.2.2 Организация ввода данных 32
5.3 Принципы реализации пользовательского интерфейса 32
5.4 Вывод к разделу 5 32
СПИСОК СОКРАЩЕНИЙ 33
ЗАКЛЮЧЕНИЕ 34
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 35
На сегодняшний день известны различные методы проектирования высоконадежного программного обеспечения [1-4]. Одним из наиболее перспективных подходов является мультиверсионное или N-версионное программирование (МВП или NVP), впервые предложенное А. Авизиенсом (A. Avizienis) и Л. Ченом (L. Chen) [5]. Он состоит в том, что в систему включается несколько программных компонент (версий), дублирующих друг друга по своему целевому назначению. Однако эти версии диверсифицированы, т.е. используют раз¬личные методы и алгоритмы для решения одних и тех же задач, они разрабатываются различными изолированными командами программистов с использованием различных языков программирования и средств разработки [2, 6]. Мультиверсионность исполнения программных компонент обеспечивает функционирование системы независимо от скрытых ошибок отдельных версий. Ключе¬вое преимущество мультиверсионного программирования состоит в том, что отказ системы может произойти только в случае сбоя существенного числа версий [7]. Версии подтверждают работу друг друга, что повышает достоверность получаемых результатов [8].
Мультиверсионное программирование предполагает, что возникновение сбоя в функционально эквивалентных версиях происходит в различных точках, благодаря чему сбои могут быть обнаружены и исправлены [9].
Использование модульного принципа на этапе технического проектирования связано с процессом оптимизации состава и взаимосвязей отдельных компонент мультиверсионных систем с целью достижения оптимальных характеристик, связанных с разработкой, отладкой и эксплуатацией систем [10].
Комплекс задач при выборе оптимальной структуры мультиверсионных программных систем включает выбор оптимального состава модулей и информационных массивов, а также структуры системы в целом, формализуемой в виде функциональной блок-схемы, с учетом заданных технико-экономических характеристик разрабатываемой системы.
Вопросы, связанные с оптимизацией структуры и состава мультиверсионных программных систем, рассмотрены в различных работах, где представ¬лены различные методы решения данной проблемы. Так Квасника и Квасника (Kvasnica и Kvasnica) в работе [11] используют псевдопараллельную оптимизацию для формирования структуры отказоустойчивого программного обеспечения (ПО) АСУ и ИУС, разработанного в соответствии с принципами мультиверсионного подхода. Они предлагают несколько процедур оптимизации, соответствующих особенностям наблюдаемой целевой функции.
Фам (Pham) для решения проблемы оптимизации стоимости мультиверсионных программных систем предлагает минимизирование ожидаемой стоимости МВПС с учётом необходимого уровня надёжности [12]. Он также решает проблему максимизации надёжности МВПО при заданных ограничениях на стоимость системы.
Избыточность повышает надёжность ПО, но вместе с тем увеличивает и его стоимость проектирования и разработки. В [13] Рао (Rao) и его коллеги представили бинарное решение целочисленного программирования для оптимизации избыточности в мультиверсионных программных системах.
Баскар (Bhaskar) и Кумар (Kumar) рассматривают вопросы, связанные с критичностью ошибок в мультиверсионной программной системе и стоимость их проявления. В своей работе [14] они предлагают модели для оптимальной временной реализации с учётом различных ограничений.
В работе [15] Капур (Kapur) и его коллеги предложили модель эффективности тестирования с учетом эффекта несовершенной отладки неисправностей и генерации ошибок. Кроме того, они также сформулировали задачу оптимального времени выпуска программного обеспечения для трёхверсионной программной системы под управлением нечёткой среды выполнения, а также обсуждали нечеткий метод оптимизации для решения задачи данного типа.
Возможно, наибольший вклад в решение проблемы оптимизации мультиверсионного программного обеспечения внесли Ямачи Х. (Yamachi H.), Ямамото Х. (Yamamoto H.) и Цужимура Ю. (Tsujimura Y.). Они сформулировали проблему проектирования оптимального состава МВПС, как двухкритериальную 0-1 нелинейную объектную модель целочисленного программирования, максимизирующую надёжность системы, вместе с тем минимизируя её стоимость [16-19]. Они решают проблему автоматизации путём использования многоцелевого генетического алгоритма, использующего представление случайных ключей для получения возможности эффективного генетического поиска и не общедоступности, а также вставки Парето, которая основана на разности между решениями Парето в процессе выбора [16-19].
В своих работах [20, 21] Ямачи Х. (Yamachi H.) и другие формулируют проблему проектирования МВПС, как многоцелевую проблему оптимизации по нахождению множества решений Парето. В работе [20] они предлагают алгоритм, который задействует метод поиска в ширину для нахождения решений Парето. В дальнейшем они предложили использовать метод ветвей и границ для нахождения множества решений Парето [21].
В данной работе рассматривается проблема максимизации надежности при ограничении на стоимость системы.
Мультиверсионное программирование предполагает, что возникновение сбоя в функционально эквивалентных версиях происходит в различных точках, благодаря чему сбои могут быть обнаружены и исправлены [9].
Использование модульного принципа на этапе технического проектирования связано с процессом оптимизации состава и взаимосвязей отдельных компонент мультиверсионных систем с целью достижения оптимальных характеристик, связанных с разработкой, отладкой и эксплуатацией систем [10].
Комплекс задач при выборе оптимальной структуры мультиверсионных программных систем включает выбор оптимального состава модулей и информационных массивов, а также структуры системы в целом, формализуемой в виде функциональной блок-схемы, с учетом заданных технико-экономических характеристик разрабатываемой системы.
Вопросы, связанные с оптимизацией структуры и состава мультиверсионных программных систем, рассмотрены в различных работах, где представ¬лены различные методы решения данной проблемы. Так Квасника и Квасника (Kvasnica и Kvasnica) в работе [11] используют псевдопараллельную оптимизацию для формирования структуры отказоустойчивого программного обеспечения (ПО) АСУ и ИУС, разработанного в соответствии с принципами мультиверсионного подхода. Они предлагают несколько процедур оптимизации, соответствующих особенностям наблюдаемой целевой функции.
Фам (Pham) для решения проблемы оптимизации стоимости мультиверсионных программных систем предлагает минимизирование ожидаемой стоимости МВПС с учётом необходимого уровня надёжности [12]. Он также решает проблему максимизации надёжности МВПО при заданных ограничениях на стоимость системы.
Избыточность повышает надёжность ПО, но вместе с тем увеличивает и его стоимость проектирования и разработки. В [13] Рао (Rao) и его коллеги представили бинарное решение целочисленного программирования для оптимизации избыточности в мультиверсионных программных системах.
Баскар (Bhaskar) и Кумар (Kumar) рассматривают вопросы, связанные с критичностью ошибок в мультиверсионной программной системе и стоимость их проявления. В своей работе [14] они предлагают модели для оптимальной временной реализации с учётом различных ограничений.
В работе [15] Капур (Kapur) и его коллеги предложили модель эффективности тестирования с учетом эффекта несовершенной отладки неисправностей и генерации ошибок. Кроме того, они также сформулировали задачу оптимального времени выпуска программного обеспечения для трёхверсионной программной системы под управлением нечёткой среды выполнения, а также обсуждали нечеткий метод оптимизации для решения задачи данного типа.
Возможно, наибольший вклад в решение проблемы оптимизации мультиверсионного программного обеспечения внесли Ямачи Х. (Yamachi H.), Ямамото Х. (Yamamoto H.) и Цужимура Ю. (Tsujimura Y.). Они сформулировали проблему проектирования оптимального состава МВПС, как двухкритериальную 0-1 нелинейную объектную модель целочисленного программирования, максимизирующую надёжность системы, вместе с тем минимизируя её стоимость [16-19]. Они решают проблему автоматизации путём использования многоцелевого генетического алгоритма, использующего представление случайных ключей для получения возможности эффективного генетического поиска и не общедоступности, а также вставки Парето, которая основана на разности между решениями Парето в процессе выбора [16-19].
В своих работах [20, 21] Ямачи Х. (Yamachi H.) и другие формулируют проблему проектирования МВПС, как многоцелевую проблему оптимизации по нахождению множества решений Парето. В работе [20] они предлагают алгоритм, который задействует метод поиска в ширину для нахождения решений Парето. В дальнейшем они предложили использовать метод ветвей и границ для нахождения множества решений Парето [21].
В данной работе рассматривается проблема максимизации надежности при ограничении на стоимость системы.
В данной дипломной работе был описан процесс создания экспертной системы, предназначенной для оптимального проектирования мультиверсионных программных систем и распределения компонентов внутри системы. А именно, были изучены теоретические аспекты данного вопроса и запрограммирован алгоритм решения приведённой выше проблемы.
Также в данной пояснительной записке описан процесс реализации дан¬ной системы: архитектура, структура данных.
Экономическое обоснование проекта и сведения об эргономике так же были представлены в данной пояснительной записке.
В ходе выполнения данного проекта мною были получены знания по работе с платформой .NET и Framework 4.5, а также знания по предметной области
Также в данной пояснительной записке описан процесс реализации дан¬ной системы: архитектура, структура данных.
Экономическое обоснование проекта и сведения об эргономике так же были представлены в данной пояснительной записке.
В ходе выполнения данного проекта мною были получены знания по работе с платформой .NET и Framework 4.5, а также знания по предметной области



