Представление развёртывания и разработки (Deployment + Development)
Контекст задачи
Архитектура системы включает не только логическую структуру (компоненты, функции, данные), но и физическое размещение (развёртывание) и организацию кода (разработку).
Представление развёртывания (Deployment View) показывает:
- на каких физических узлах (сервера, клиентские машины, облачные сервисы) размещаются компоненты;
- какие сетевые соединения и протоколы используются;
- как распределяются процессы и данные.
Представление разработки (Development View) показывает:
- как код организован в пакеты/модули;
- какие зависимости существуют между пакетами;
- как пакеты группируются в слои или подсистемы.
Эти два представления тесно связаны: структура пакетов (Development) часто отражает, какие части кода будут развёрнуты на разных узлах (Deployment).
Формулировка
Разработайте представление развёртывания и разработки для вашей программной системы: постройте диаграмму развёртывания (UML Deployment Diagram) и диаграмму пакетов (UML Package Diagram), а затем согласуйте их между собой.
Теория и/или примеры
Литература и источники
- UML Deployment Diagram — нотация для физического размещения
- UML Package Diagram — нотация для организации кода
- Многоуровневая архитектура — клиент-сервер, трёхзвенная, микросервисная
Справка по диаграмме развёртывания
| Элемент | Нотация | Пример |
|---|---|---|
| Узел (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 с учётом развёртывания
- Показано, как структура пакетов влияет на сборку и деплой