ВВЕДЕНИЕ 3
1. ПОСТАНОВКА ЗАДАЧИ 5
1.1 Существующие решения 5
1.2 Актуальность выбранных технологий 6
1.2 Требования к решению 8
1.3 Технология разработки 9
1.3.1 Архитектура серверной части приложения веб-приложения 9
1.3.2 Способы анализа кода 11
1.3.3 Метаданные фасада 13
1.3.4 Генерация путей к ресурсам 14
1.3.5 Запуск Web Generator 14
1.4 Вывод 15
2. РЕАЛИЗАЦИЯ ФРЕЙМВОРКА 15
2.1 Компоненты Web Generator 16
2.1.1 Аннотации 16
2.1.2 Сервис генерации кода и вспомогательные классы 19
2.1.3 Генерация методов контроллера 23
2.2 Реализация процесса запуска 30
2.2.1 Этапы настройки приложения 30
2.2.2 Интерфейс GenerationService 33
2.2.3 Расширение контейнера Spring Framework 33
2.3 Архитектура Web Generator 34
2.4 Сценарий работы 35
3. ПРИМЕНЕНИЕ РЕШЕНИЯ 36
3.1 Описание тестового приложения и применение Web Generator 36
3.2 Интеграционное тестирование сгенерированного кода 44
3.3. Применение решения на реальном проекте и оценка результатов 46
ЗАКЛЮЧЕНИЕ 46
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 47
ПРИЛОЖЕНИЕ
В настоящее время программистам приходится выполнять большое количество шаблонной работы, требующей применения ряда типовых решений. Подобные типичные задачи отнимают много времени, и в большинстве случаев отклонение от общепринятых лучших практик программирования приводит ко множеству ошибок.
Несмотря на нынешнюю тенденцию фреймворков облегчить и упростить создание программных продуктов посредством уменьшения повторяющегося кода, имеется потребность в создании программного инструмента, позволяющего ускорить процесс разработки.
Необходимость в подобном сервисе была выявлена на практике. В ходе работы над различными коммерческими проектами с использованием языка программирования Java и Spring Framework необходимо выполнять много шаблонной работы при написании классов контроллеров в веб-приложении. Данная проблема особенно актуальна в системах, в которых используются паттерн Модель-Представление-Контроллер (англ. Model-View-Controller - MVC) и REST- архитектура.
Целью работы является создание инструмента, обладающего элементами метапрограммирования [1], который позволит генерировать контроллеры при разработке серверной части веб-приложения на Java с использованием Spring Framework и концепцией REST API.
Для достижения поставленной цели были решены следующие задачи:
• Выбор способа генерации кода, проведение анализа возможных альтернатив.
• Выбор способа получения метаинформации о существующем коде для использования ее в качестве основы для будущих классов.
• Реализация системы анализа исходного кода для генерации URL-адресов.
• Применение выбранного метода генерации кода.
• Оценка влияния использования фреймворка на скорость и качество раз-работки веб-приложения.
В настоящей дипломной работе был реализован программный инструмент Web Generator, с помощью которого можно существенно ускорить разработку серверной части веб-приложения на языке программирования Java с ис-пользованием Spring Framework.
Фреймворк решает проблему написания шаблонного кода при разработке приложений.
Данный программный инструмент представляет собой генератор исходного кода контроллеров, где контроллеры являются компонентом приложения, в котором используется паттерн проектирования Model-View-Controller. Web Generator анализирует код классов, инкапсулирующих бизнес логику приложения, получает метаданные и на основе этой информации генерирует исходный код.
Для применения Web Generator необходимо подключить фреймворк, пометить классы сервис-слоя аннотациями и добавить постпроцессор Web Generator в конфигурацию приложения.
Разработанный фреймворк генерации кода может существенно повлиять на скорость и качество разработки системы. Данное утверждение проверено на практике при разработке коммерческого проекта.
Дальнейшая работа по развитию фреймворка предполагает выявление фрагментов в приложениях, где присутствует шаблонный код, таких как: конфигурация приложения, SQL-запросы и т.д. Кроме того, следует добавить возможность применения Web Generator при использовании других паттернов проектирования. Дальнейшее увеличение функционала системы позволит избавить разработчиков от выполнения однотипной работы.