- Часть 1
1.1 Тип приложения
1.2 Выбор стратегии развертывания
1.3 Выбор технологии
1.4 Показатели качества
1.4.1 Качества дизайна
1.4.1.1 Удобство и простота обслуживания
1.4.1.2 Концептуальная целостность
1.4.2 Качества времени выполнения
1.4.2.1 Масштабируемость
1.4.2.2 Безопасность
1.4.3 Качества системы
1.4.2.1 Тестируемость
1.4.4 Качества взаимодействия с пользователем
1.4.2.1 Удобство и простота использования - Часть 2
2.1 "To Be Архитектура"
2.2 "As Is" архитектура - Часть 3
3.1 Сравнение и анализ
3.2 Пути улучшения архитектуры
Проект предполагает проектирование и создание web-приложения для управления проектами на языке Java с использованием технологий Angular, Spring Boot, MySql.
Установка и развертывание приложения предполагается посредством сборки модулей (front-end, back-end, базы данных) в исполняемый .war архив. Данный архив можно будет скачать из сети или получить копию с флэш-накопителя.
Выбор технологий обусловлен простотой их осваивания и использования, а также их популярностью. Язык Java выбран по причине большого количества java-разработчиков в команде. Также он предоставляет большую вариативность функциональности для разработки, а также Spring framework. Spring Boot позволяет упростить процесс разработки встроенными возможностями. Данный фреймворк предоставляет все необходимые возможности для создания полноценного веб-приложения, используя технологию внедрения зависимостей и инверсии управлени. Angular позволяет создавать UI "на ходу", без необходимости пересобирать проект при добавлении каждой новой строчки. Это один из самых современных фреймворков для создания UI, использующий typescript.
- В приложении реализован принцип единой ответственности, что позволяет добавлять или изменять функциональности отдельных компонент, не влияя на другие компоненты.
- Интерфейсы системы легко расширяются и не завязаны на реализации.
- Код отдельно взятых микросервисов соответствует одному стилю написания кода.
- Названия переменных отражают их область использования.
- Увеличение количества активных пользователей, проектов не влияет на производительность системы.
- Максимальное колличество проектов, создаваемых одним пользователем ограничено.
- Благодаря обработке ошибок и исключений обычный пользователь не может повлиять на работоспособность системы.
- Данные о пользователях хранятся в криптостойком виде.
- Система позволяет достаточно просто создать критерий проверки для системы и ее компонентов и выполнить эти тесты.
- При наведении курсором на элементы пользовательского интерфейса появляются подсказки.
Архитектурное решение команды по реализации идеи можно увидеть на структурной схеме
Наглядный пример желаемого GUI приведен с помощью мокапов
1. Сравнение и анализ На данный момент архитектура AS-IS не имеет отличительных особенностей от архитектуры TO-BE. При разработке приложения команда придерживалась структурной схемы, которая представлена в виде диаграммы компонентов + развертывания. Также команда старается жестко придерживаться изначального решения в виде схемы базы данных и мокапов. При сравнении AS-IS и TO-BE архитектур можно увидеть сходства, хотя архитектуры представлены разными диаграммами. На AS-IS диаграмме классов можно заметить, что, к примеру, классы компонента Controller используют классы компонента Facade, что соответствует TO-BE архитектуре.
2. Пути улучшения архитектуры Одним из возможных путей улучшения архитектуры является разделение frontend части на функциональные компоненты(E2M-17). Также имеется возможность вынесения модуля безопасности в отдельный микросервис, что позволит, например, заменять данный модуль(E2M-18).