Тип работы:
Предмет:
Язык работы:


Инструментальная поддержка автоматической кодогенерации алгоритмически диверсифицированного программного обеспечения

Работа №17416

Тип работы

Магистерская диссертация

Предмет

информатика

Объем работы66
Год сдачи2017
Стоимость4900 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
277
Не подходит работа?

Узнай цену на написание


ВВЕДЕНИЕ 5
1. Диверсификация 8
1.1. Виды диверсификации и сферы применения 8
1.2. Техники диверсификации 9
1.3. Вывод 12
2. Мультиверсионное программирование 13
2.1. Модель мультиверсионного программного обеспечения 13
2.2. Алгоритмы голосования 14
2.3. Примеры алгоритмов голосования 15
2.3.1. Усреднённое голосование 15
2.3.2. Формализованные алгоритмы голосования 15
2.2.3. Классические алгоритмы голосования 16
2.3. Вывод 18
3. Модель акторов и её применение к NVP 19
3.1. Модель акторов 19
3.2. Применение модели акторов к NVP 22
4. Кодогенерационная модель 23
4.1. Исходная модель: диаграммы деятельности 23
4.1.1. Язык описания диверсифицированных вызовов 28
4.2. Промежуточная модель 30
4.3. Процесс кодогенерации 34
4.4. Вывод 39
5. Разработка инструментария 39
5.1. Микрофреймворк Zmok 41
5.2. Классы утилит, модуль Hydra.Utils 43
5.3. Ядро системы, модуль Hydra.Core 44
5.3.1. Обобщённая модель графа 44
5.3.2. Модель диаграммы деятельности 45
5.3.3. Промежуточная модель 49
5.3.4. Модуль диверсификации: банк алгоритмов и контекст
диверсификации 51
5.4. Редактор 52
5.4.1. Система событий 52
5.4.2. Модификация редактора графов 55
5.4.3. Пример работы программы 60
5.5. Вывод 62
ЗАКЛЮЧЕНИЕ 63
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 64

В современном информационном мире, когда активно автоматизируются многие сферы человеческой деятельности, надёжность становится критическим свойством программного обеспечения. Незапланированный отказ ПО может привести к потере доходов (например, из-за простоя сайта интернет-магазина или биржевого робота), а то и вовсе гибели большого числа людей (из-за отказа АСУ АЭС или сбои в ПО медицинского оборудования [1]).
Один из способов обеспечения надёжности — избыточность. То есть запуск нескольких копий программы, работающих параллельно. Таким образом, отказ одной копии не вовлечёт за собой отказ всей системы. Однако у такого подхода есть один недостаток — если в системе изначально была заложена ошибка, то высока вероятность, что все копии откажут одновременно. Этого можно избежать с помощью мультиверсионного программирования (N-Version Programming, NVP) [2].
Мультиверсионное программирование - способ обеспечения избыточности программного обеспечения, при котором все экземпляры ПО (либо его модулей) отличаются друг от друга, то есть диверсифицированы.
Традиционный подход к диверсификации ПО, при котором каждую версию разрабатывает отдельная команда, весьма дорогостоящ, а в случае, когда диверсификация применяется как способ повысить защищённость ПО, и вовсе бессмысленна. Автоматическая диверсификация ПО и модулей из спецификаций или моделей позволяет избавиться от этих трат.
Существующие системы диверсификации:
• Дополнения (skins) к Valgrind, например, RISE (Randomized Instruction Set Emulation),
• Некоторые DRM-системы, например, Denuvo,
• Project Diversify. Набор инструментов, разработанный INRIA и IRISA.
В работе рассматривается проблема генерации программного кода по модели с учётом специфики диверсифицированного программного обеспечения.
Проблема является актуальной в связи с тем, что практически не существует инструментов автоматизированной кодогенерации, учитывающих специфику мультиверсионного программирования, а именно диверсификацию и стратегию выбора (алгоритм голосования). Существует лишь небольшое количество таких работ: Project Diversify, разрабатываемый французскими институтами INRIA и IRISA, который не поддерживает NVP, и инструмент, разрабатываемый Д.В. Грузенкиным, который на данный момент находится в разработке [3].
Объектом диссертационного исследования является мультиверсионное программное обеспечение.
Предмет исследования - генерация программного кода с учётом диверсификации.
Цель диссертационного исследования состоит в разработке инструментария кодогенерации мультиверсионного программного обеспечения из графической модели описания (UML диаграмма деятельности).
Научная новизна работы заключается в разработке кодогенерационной модели, а также применении модели акторов к NVP.
В главе 1 описывается процесс диверсификации, её виды, сферы применения и техники диверсификации программного обеспечения.
В главе 2 рассматривается методология мультиверсионного программирования. Рассматриваются алгоритмы голосования такие, как усреднённое голосование, формализованные алгоритм голосования абсолютным большинством и алгоритм голосования абсолютным большинством.
В главе 3 описывается модель акторов, а также предлагается модифицированная структурная модель мультиверсионного программного обеспечения с применением акторов.
В главе 4 рассматривается процесс кодогенерации, ограниченное подмножество диаграммы деятельности UML, описывается разработанная промежуточная модель.
В главе 5 описывается разработанный инструментарий для генерации диверсифицированного программного кода из диаграммы деятельности

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


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


1. Leveson, N.G. Safeware: System Safety and Computers / N.G. Leveson.
— 1-st ed. — Addison-Wesley Professional, 1995. — 704 с.
2. Avizienis, A. N-Version Programming: A Fault-Tolerance Approach to Reliability of Software Operation / A. Avizienis, L. Chen // The Twenty-Fifth International Symposium on Fault-Tolerant Computing. — USA, Pasadena, 1995.—с. 113-119.
3. Грузенкин, Д.В. Модель двухфазной трансляции кода мультиверсий программных модулей / Д.В. Грузенкин, Р.Ю. Царев, А.С. Кузнецов // Фундаментальные исследования. — Пенза : Издательский дом «Академия Естествознания», 2015. — с. 886-890.
4. Compiler-Generated Software Diversity / T. Jackson, B. Salamat, A. Homescu [et al.] // Moving Target Defense. — USA, New York, 2011. — с. 184.
5. Reason, J., The Contribution of Latent Human Failures to the Breakdown of Complex Systems / J. Reason // Philosophical Transactions of the Royal Society of London. - 1990. — т. 327, №1241. — с. 593.
6. Multi-tier diversification in Web-based software application / S. Allier, O. Barais, B. Baudry [et al.] // IEEE Software. — 2015. — т. 32, №11. — с. 83-90.
7. Baudry, B., The Multiple Facets of Software Diversity: Recent Developments in Year 2000 and Beyond / B. Baudry, M. Monperrus // ACM Computing Surveys. — USA, New York, 2015. — т. 48, №16. — с. 26,
8. Larsen, P. SoK: Automated Software Diversity / P. Larsen, A. Homescu, S. Brunthaler, M. Franz // IEEE Symposium on Security and Privacy. — 2014. — c. 276-291.
9. Pappas, V., Practical Software Diversification Using In-Place Code Randomization / V. Pappas, M. Polychronakis, A. D. Keromytis // Moving Target Defense II. — USA, New York, 2013. — с. 204.
10. Randell, B. System Structure for Software Fault-Tolerance / B. Randell // IEEE Trans. Soft. Eng. — 1975. — т. SE-1. — с. 220-232.
11. Царёв, Р. Ю., Мультиверсионное программное обеспечение. Алгоритмы голосования и оценка надёжности : монография / Р. Ю. Царёв, А. В. Штарик, Е. Н. Штарик. — Красноярск : Сиб. федер. ун-т, 2013. — 120 с.
12. Bharathi, V., N-Version programming method of Software Fault Tolerance: A Critical Review / V. Bharathi. — Conference of Nonlinear Systems and Dynamics. — India, Kharagpur, 2003. — c. 232.
13. Хоп, Г., Шаблоны интеграции корпоративных приложений / Г. Хор, Б. Вульф. — М.: ООО «И.Д. Вильямс», 2007. — 672 с.
14. Hewitt, C. A universal modular ACTOR formalism for artificial intelligence / C. Hewitt, P. Bishop, R. Steiger // IJCAI'73 Proceedings of the 3rd international joint conference on Artificial Intelligence. — USA, Stanford, 1973.— с. 235-245.
15. Agha, G.A. Actors: A Model of Concurrent Computation In Distributed Systems / G.A. Agha. — 1985. — 190 с.
16. Mitchell, J. C., Concepts in Programming Languages / J. C. Mitchell. —
Press Syndicate of the University of Cambridge, 2002. — 584 с.
17. Буч, Г. Язык UML. Руководство пользователя / Г. Буч, Дж. Рамбо, И. Якобсон. — М.: ДМК Пресс, 2006. — 496 с.
18. Рамбо, Дж. UML: специальный справочник / Дж. Рамбо, А. Якобсон, Г. Буч. — СПб.: Питер, 2002. — 656 с.
19. Siebenhaller, M. Drawing activity diagrams / M. Siebenhaller, M. Kaufmann // SoftVis'06 Proceedings of the 2006 ACM symposium on Software visualization. — UK, Brighton, 2006. — с. 159-160.
20. Гома, Х. UML. Проектирование систем реального времени, параллельных и распределённых приложений. — М.: ДМК Пресс, 2011. — 704 с.
21. Ахо, А.В. Компиляторы. Принципы, технологии и инструментарий / А.В. Ахо, М.С. Лам, Р. Сети, Дж.Д. Ульман. — 2-е изд. — М.: Вильямс, 2008.— 1184 с.
22. The Java® Language Specification. Java SE 8 Edition / J. Gosling, B.
Joy, G. Steele, G. Bracha, A. Buckley. — Oracle, 2015. — 768 с.
23. Gupta, M. K. Akka Essentials. — Birmingham: Packt Publishing, 2012.— 334 с.
24. Roestenburg R. Akka in action / R. Roestenburg, R. Bakker, R. Williams. — Manning Publications, 2014. — 394 с.
25. Гамма, Э. Приёмы объектно-ориентированного программирования. Паттерны проектирования / Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес.— СПб: Питер, 2003. — 368 с.
26. Блох, Дж. Java. Эффективное программирование. — М.: Лори, 2002.— 224 с.


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ