Easy2Manage

Язык реализации: Java

Технологии: Angular, Spring Boot, MySql

Среда разработки: Intellij idea

Содержание

  1. Часть 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
    2.1 "To Be Архитектура"
    2.2 "As Is" архитектура
  3. Часть 3
    3.1 Сравнение и анализ
    3.2 Пути улучшения архитектуры

Часть 1

1. Тип приложения

Проект предполагает проектирование и создание web-приложения для управления проектами на языке Java с использованием технологий Angular, Spring Boot, MySql.

2. Выбор стратегии развертывания

Установка и развертывание приложения предполагается посредством сборки модулей (front-end, back-end, базы данных) в исполняемый .war архив. Данный архив можно будет скачать из сети или получить копию с флэш-накопителя.

3. Выбор технологии

Выбор технологий обусловлен простотой их осваивания и использования, а также их популярностью. Язык Java выбран по причине большого количества java-разработчиков в команде. Также он предоставляет большую вариативность функциональности для разработки, а также Spring framework. Spring Boot позволяет упростить процесс разработки встроенными возможностями. Данный фреймворк предоставляет все необходимые возможности для создания полноценного веб-приложения, используя технологию внедрения зависимостей и инверсии управлени. Angular позволяет создавать UI "на ходу", без необходимости пересобирать проект при добавлении каждой новой строчки. Это один из самых современных фреймворков для создания UI, использующий typescript.

4. Показатели качества

4.1. Качества дизайна

4.1.1. Удобство и простота обслуживания
  • В приложении реализован принцип единой ответственности, что позволяет добавлять или изменять функциональности отдельных компонент, не влияя на другие компоненты.
  • Интерфейсы системы легко расширяются и не завязаны на реализации.
4.1.2. Концептуальная целостность
  • Код отдельно взятых микросервисов соответствует одному стилю написания кода.
  • Названия переменных отражают их область использования.

4.2. Качества времени выполнения

4.2.1. Масштабируемость
  • Увеличение количества активных пользователей, проектов не влияет на производительность системы.
  • Максимальное колличество проектов, создаваемых одним пользователем ограничено.
4.2.2. Безопасность
  • Благодаря обработке ошибок и исключений обычный пользователь не может повлиять на работоспособность системы.
  • Данные о пользователях хранятся в криптостойком виде.

4.3. Качества системы

4.3.1. Тестируемость
  • Система позволяет достаточно просто создать критерий проверки для системы и ее компонентов и выполнить эти тесты.

4.4. Качества взаимодействия с пользователем

4.4.1. Удобство и простота использования
  • При наведении курсором на элементы пользовательского интерфейса появляются подсказки.

Часть 2

To Be Архитектура:

Архитектурное решение команды по реализации идеи можно увидеть на структурной схеме
Наглядный пример желаемого GUI приведен с помощью мокапов

As is architecture:

Диаграмма классов

Часть 3

1. Сравнение и анализ На данный момент архитектура AS-IS не имеет отличительных особенностей от архитектуры TO-BE. При разработке приложения команда придерживалась структурной схемы, которая представлена в виде диаграммы компонентов + развертывания. Также команда старается жестко придерживаться изначального решения в виде схемы базы данных и мокапов. При сравнении AS-IS и TO-BE архитектур можно увидеть сходства, хотя архитектуры представлены разными диаграммами. На AS-IS диаграмме классов можно заметить, что, к примеру, классы компонента Controller используют классы компонента Facade, что соответствует TO-BE архитектуре.

2. Пути улучшения архитектуры Одним из возможных путей улучшения архитектуры является разделение frontend части на функциональные компоненты(E2M-17). Также имеется возможность вынесения модуля безопасности в отдельный микросервис, что позволит, например, заменять данный модуль(E2M-18).