АННОТАЦИЯ 3
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ 4
ВВЕДЕНИЕ 6
1 Анализ предметной области 8
1.1 VDOM Сервер 8
1.2 VDOMIDE 9
1.3 Приложения VDOM 10
1.4 Вывод по анализу предметной области 10
2 Анализ архитектуры VDOM сервера 12
2.1 Структура сервера 12
2.2 Описание модулей 19
2.3 Антипаттерны 22
2.3.1 Монолитность архитектуры 22
2.3.2 Использование исключений в качестве управления потоком 23
2.4 Требования предъявляемые при портировании сервера VDOM 24
2.5 Вывод по анализу архитектуры VDOM сервера 26
3 Подходы к решению проблемы переноса кода 27
3.1 Разбор различий версий языка 27
3.2 Выбор инструмента для переноса кода 27
3.3 Библиотека python-future 29
4 Описание процесса переноса кода 31
4.1 Первый этап переноса кода 31
4.2 Второй этап переноса кода 32
4.3 Третий этап переноса кода 33
5 Результаты работы 37
5.1 Результаты запуска на языке Python 3 37
5.2 Проведённое тестирование 41
5.3 Составленные рекомендации 47
ЗАКЛЮЧЕНИЕ 48
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 49
ПРИЛОЖЕНИЕ А Пример работы VDOM IDE 51
ПРИЛОЖЕНИЕ Б Пример работы приложения запущенного на VDOM 54
Сервер VDOM runtime позволяет создавать многофункциональные веб¬приложения, состоящие из объектов и ассоциаций между ними, способных выполнять задачи совершенно различного характера. VDOM-приложения могут представлять не только простой сайт с общей информацией, но и полноценное функциональное приложение, способное выполнять сложные операции.
VDOM является готовым к использованию веб-сервером, способным генерировать и публиковать веб-приложения без необходимости беспокоиться о вопросах обслуживания и безопасности.
Целью данной выпускной квалификационной работы является перенос всей архитектуры сервера VDOM с языка Python 2.7 на язык Python 3.10.
Потребность в переносе системы вызвана рядом факторов. В первую очередь это устаревание системы — из-за прекращения поддержки языка разработчиками критически важные сторонние модули и библиотеки тоже прекратят или уже прекратили обновляться и исправляться в связи с переносом на более современную версию языка. Во вторую очередь ищется возможность сделать VDOM сервер быстрее и перенос сервера на язык Python 3 как раз может статься такой возможностью. В третью очередь без своевременного обновления сервера возникает потребность в безопасности — полный отказ от поддержки языка означает отсутствие исправлений важных угроз безопасности и уязвимостей а это в свою очередь ведёт к нарушению безопасности всей платформы.
Такая цель сопровождается рядом сложностей, например сама платформа VDOM это не только монолитный Сервер, но ещё и набор структур, типов и компонентов, которые создаются динамически. Для всех этих элементов нужно подобрать свой особый подход.
Чтобы выполнить поставленную цель были сформулированы следующие задачи:
1. Изучить предметную область
2. Исследовать существующую архитектуру сервера;
3. Изучить кодовую базу сервера VDOM Runtime;
4. Изучить способы переноса программ и программных компонентов с Python 2 на Python 3;
5. Провести обновление кода на Python 3;
6. Провести тестирование и отладку обновлённого кода.
Результатами выпускной квалификационной работы является выполнение следующих задач:
1. Рассмотрены различия языков Python 2 и Python 3.
2. В ходе анализа выявлен, а затем исправлен антипаттерн использования исключений в качестве управления потоком.
3. Описан процесс переноса сервера с языка Python 2 на Python 3.
4. VDOM сервер портирован на язык Python 3.
5. Изменённая версия сервера была успешно добавлена в публичный репозиторий VDOM сервера. [12]
6. Составлены рекомендации по переносу кода.
7. Проведено тестирование и отладка обновлённого кода.
Цель работы по переносу сервера VDOM была успешно выполнена — сервер запускается и работает на Python 3 и выполняет весь требуемый функционал по запуску веб-приложений.
Результаты данной работы могут быть использованы для дальнейшего развития и улучшения сервера VDOM на языке Python 3.