Тема: Инструментальная поддержка автоматической кодогенерации алгоритмически диверсифицированного программного обеспечения
Характеристики работы
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
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
📖 Введение
Один из способов обеспечения надёжности — избыточность. То есть запуск нескольких копий программы, работающих параллельно. Таким образом, отказ одной копии не вовлечёт за собой отказ всей системы. Однако у такого подхода есть один недостаток — если в системе изначально была заложена ошибка, то высока вероятность, что все копии откажут одновременно. Этого можно избежать с помощью мультиверсионного программирования (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 описывается разработанный инструментарий для генерации диверсифицированного программного кода из диаграммы деятельности



