Урок по треку Системный анализ 8 мин

UML для аналитика за 8 минут

Диаграммы последовательностей, активности, состояний и классов: когда какая.

UML (текущая версия 2.5.1) содержит 14 видов диаграмм, но аналитику на практике нужны четыре-пять. На собесе спрашивают, когда какую рисовать, и просят набросать последовательность для интеграции.

Диаграмма последовательностей (sequence)

Показывает, кто кому и в каком порядке отправляет сообщения. Главная диаграмма интеграционного аналитика.

Клиент -> API Gateway: POST /orders
API Gateway -> Order Service: создать заказ
Order Service -> Payment Service: зарезервировать оплату
Payment Service --> Order Service: 201 reserved
Order Service --> API Gateway: 201 Created
API Gateway --> Клиент: 201 Created

Элементы:

  • Линия жизни (lifeline): участник, вертикальная пунктирная линия.
  • Синхронное сообщение: сплошная стрелка с закрашенным наконечником, отправитель ждёт ответа.
  • Асинхронное сообщение: открытый наконечник, отправитель не ждёт.
  • Ответ: пунктирная стрелка.
  • Комбинированные фрагменты: alt (ветвление, if/else), opt (необязательный блок), loop (цикл), par (параллельно).

Описывают их часто в PlantUML или Mermaid: текст лежит в репозитории рядом с требованиями.

Диаграмма активности (activity)

Похожа на блок-схему: действия, решения (ромб), параллельные ветки (fork/join), дорожки (partitions). Подходит для алгоритма или процесса внутри системы. Для бизнес-процессов с участием многих ролей чаще берут BPMN.

Диаграмма состояний (state machine)

Описывает жизненный цикл объекта: в каких состояниях он бывает и какие события переводят его между ними.

[*] --> Новый
Новый --> Оплачен : оплата прошла
Новый --> Отменён : отмена клиентом
Оплачен --> Собран : склад собрал
Собран --> Доставлен : курьер вручил
Оплачен --> Отменён : отмена [до сборки] / возврат денег

Запись перехода: событие [условие] / действие. Диаграмма сразу показывает недопустимые переходы: из «Доставлен» в «Новый» нельзя. Из неё получаются проверки в коде и тест-кейсы.

Диаграмма классов (class)

Классы с атрибутами и операциями и отношения:

  • Ассоциация: связь, «знает о».
  • Агрегация (пустой ромб): целое и части, части живут отдельно (команда и сотрудники).
  • Композиция (закрашенный ромб): части не живут без целого (заказ и строки заказа).
  • Обобщение (наследование, треугольник).
  • Зависимость (пунктир со стрелкой): временно использует.
  • Кратность: 1, 0..1, *, 1..*.

Аналитик чаще рисует доменную модель: классы-понятия предметной области без методов. Это близко к ER-диаграмме.

Диаграмма вариантов использования (use case)

Акторы (человечки) и варианты использования (овалы), связи include (всегда входит) и extend (расширяет при условии). Даёт обзор границ системы, но сценарии всё равно пишут текстом.

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

Компоненты показывают, из каких частей состоит система и через какие интерфейсы они общаются. Развёртывание: на каких узлах что работает. Для этих задач всё чаще используют C4-модель (контекст, контейнеры, компоненты, код).

Какую выбрать

ВопросДиаграмма
Кто кого вызывает в интеграции?последовательностей
Какие статусы у заявки?состояний
Как устроен алгоритм расчёта?активности
Какие сущности в домене?классов или ER
Что вообще умеет система и для кого?вариантов использования

Частые ошибки

  • Рисовать всё подряд «для полноты». Диаграмма нужна, когда отвечает на конкретный вопрос.
  • Путать синхронный вызов с асинхронным на sequence.
  • Состояния называть действиями («Оплатить» вместо «Оплачен»).
  • Забывать ошибочные ветки (alt для таймаута и отказа).

Что спросят на собесе

  • Какие диаграммы UML используешь и для чего?
  • Нарисуй sequence для оплаты заказа через внешний эквайринг.
  • Чем агрегация отличается от композиции?
  • Опиши статусную модель заявки диаграммой состояний.
  • Чем диаграмма активности отличается от BPMN?

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.