Представление развёртывания и разработки (Deployment + Development)

Сложность: medium Тема: ARCH
развёртывание deployment разработка development UML диаграмма развёртывания диаграмма пакетов

Контекст задачи

Архитектура системы включает не только логическую структуру (компоненты, функции, данные), но и физическое размещение (развёртывание) и организацию кода (разработку).

Представление развёртывания (Deployment View) показывает:

  • на каких физических узлах (сервера, клиентские машины, облачные сервисы) размещаются компоненты;
  • какие сетевые соединения и протоколы используются;
  • как распределяются процессы и данные.

Представление разработки (Development View) показывает:

  • как код организован в пакеты/модули;
  • какие зависимости существуют между пакетами;
  • как пакеты группируются в слои или подсистемы.

Эти два представления тесно связаны: структура пакетов (Development) часто отражает, какие части кода будут развёрнуты на разных узлах (Deployment).

Формулировка

Разработайте представление развёртывания и разработки для вашей программной системы: постройте диаграмму развёртывания (UML Deployment Diagram) и диаграмму пакетов (UML Package Diagram), а затем согласуйте их между собой.

Теория и/или примеры

Литература и источники

  1. UML Deployment Diagram — нотация для физического размещения
  2. UML Package Diagram — нотация для организации кода
  3. Многоуровневая архитектура — клиент-сервер, трёхзвенная, микросервисная

Справка по диаграмме развёртывания

Элемент Нотация Пример
Узел (Node) 3D-прямоугольник [Веб-сервер], [СУБД]
Артефакт прямоугольник с иконкой app.jar, index.html
Связь (Association) линия между узлами
Протокол стереотип над связью <<HTTP>>, <<JDBC>>

Типы узлов:

  • Устройство (Device) — физическое оборудование (сервер, ПК, смартфон)
  • Исполняющая среда (Execution Environment) — контейнер, виртуальная машина, ОС

Справка по диаграмме пакетов

Элемент Нотация Пример
Пакет (Package) папка/вкладка Controllers, Models, Services
Зависимость пунктирная стрелка A ─ ─ ▶ B (A зависит от B)
Импорт <<import>> один пакет импортирует другой

Правила:

  • Избегайте циклических зависимостей между пакетами
  • Стремитесь к слоистой структуре (UI → Бизнес-логика → Данные)
  • Зависимости должны идти в одном направлении (сверху вниз)

Подзадача 1. Выбор модели развёртывания

Опишите, как будет развёрнута ваша система:

  • Локальное развёртывание (на ПК пользователя)
  • Клиент-сервер (клиент на ПК, сервер в дата-центре)
  • Веб-приложение (браузер → веб-сервер → БД)
  • Микросервисная архитектура (несколько сервисов в контейнерах)
  • Облачное развёртывание (AWS, Azure, Yandex Cloud)

Обоснование выбора: почему эта модель подходит для вашей системы?

Результат подзадачи 1: текстовое описание модели развёртывания (2-3 предложения + обоснование).

Подзадача 2. Диаграмма развёртывания (Deployment Diagram)

Постройте UML-диаграмму развёртывания, показывающую:

  • Физические узлы (сервера, клиентские устройства, облачные сервисы)
  • Исполняемые среды (ОС, контейнеры, виртуальные машины)
  • Артефакты (исполняемые файлы, библиотеки, конфиги)
  • Сетевые соединения и протоколы
  • Размещение компонентов на узлах (связь с компонентной архитектурой)

Пример диаграммы развёртывания

Результат подзадачи 2: диаграмма развёртывания (графическая или текстовая).

Подзадача 3. Выделение пакетов (логическая структура)

На основе компонентной архитектуры (Задача А) и функционального представления (Задача Б) выделите пакеты — крупные группировки кода.

Типовые пакеты (слои):

  • Presentation / UI — пользовательский интерфейс
  • Controllers — обработка запросов
  • Services — бизнес-логика
  • Repositories / Data Access — доступ к данным
  • Models / Entities — модели данных
  • Utils / Common — вспомогательные модули

Результат подзадачи 3: список пакетов с их назначением (минимум 4 пакета).

Подзадача 4. Диаграмма пакетов

Постройте UML-диаграмму пакетов, показывающую:

  • Пакеты (логические группировки кода)
  • Зависимости между пакетами (кто от кого зависит)
  • Слои (группировка пакетов по уровням)

Подзадача 5. Согласование развёртывания и разработки

Покажите, как пакеты (из диаграммы пакетов) соотносятся с узлами развёртывания (из диаграммы развёртывания).

Матрица «Пакет → Узел развёртывания»:

Пакет/Слой На каком узле развёртывается Почему
Presentation (UI) Клиент (браузер) / Веб-сервер UI отображается у пользователя или генерируется на сервере
Controllers Веб-сервер Обработка запросов на сервере
Services Веб-сервер / Сервер приложений Бизнес-логика на сервере
Data Access Сервер приложений / Тот же узел Доступ к БД с сервера
Models Все узлы (как DTO) Передаётся между узлами

Результат подзадачи 5: заполненная матрица согласования.

Результаты задачи

диаграмма развертывания с указанием пакетов


Критерии оценивания

Развёртывание (подзадачи 1-2)

  • Выбрана и обоснована модель развёртывания
  • Диаграмма развёртывания включает все физические узлы
  • Указаны протоколы и соединения между узлами
  • Артефакты размещены на соответствующих узлах

Разработка (подзадачи 3-4)

  • Выделены минимум 4 пакета с описанием назначения
  • Диаграмма пакетов отражает все выделенные пакеты
  • Зависимости между пакетами корректно показаны
  • Нет циклических зависимостей

Согласование (подзадача 5)

  • Матрица «Пакет → Узел» заполнена для всех пакетов
  • Распределение пакетов по узлам обосновано

Проверка качества (подзадача 6)

  • Проверены все принципы
  • Выявленные нарушения описаны
  • Предложены способы устранения нарушений (если есть)

Дополнительно (на «отлично»)

  • Учтены сценарии отказоустойчивости (репликация, резервирование)
  • Предложена конфигурация CI/CD с учётом развёртывания
  • Показано, как структура пакетов влияет на сборку и деплой