Карта / UML-диаграммы / Диаграмма последовательности

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

Диаграмма последовательности показывает, как объекты обмениваются вызовами во времени — кто кого вызывает и в каком порядке, для одного конкретного сценария.

Client          OrderService       OrderRepository       EmailService
  │                   │                     │                   │
  │── createOrder() ─▶│                     │                   │
  │                   │── save(order) ─────▶│                   │
  │                   │◀──── orderId ───────│                   │
  │                   │── sendConfirmation() ───────────────────▶│
  │◀── orderId ────────│                     │                   │

Вертикальные линии — объекты, время идёт сверху вниз. Горизонтальные стрелки — вызовы методов, в порядке, в котором они реально происходят.

Копнуть глубже

Зачем диаграмма последовательности, если есть диаграмма классов. Диаграмма классов показывает статичную структуру (“кто из кого состоит”), а диаграмма последовательности — динамику конкретного сценария (“что происходит, когда пользователь нажимает кнопку оформить заказ”). Это разные вопросы — структура и поведение во времени.

Когда она реально полезна:

  • Объяснить команде сложный многошаговый процесс (например, как проходит OAuth2-авторизация);
  • Найти узкое место — если на схеме видно 5 последовательных синхронных вызовов, может стоит сделать их параллельными;
  • Задокументировать взаимодействие микросервисов между собой, когда нужно понять полный путь запроса.

Для простых однострочных вызовов рисовать такую диаграмму избыточно — она оправдана для сценариев с несколькими участниками и нетривиальным порядком вызовов.

🎤 Закрыл тему, если можешь объяснить:
• что показывает диаграмма последовательности и как читать стрелки;
• чем она отличается от диаграммы классов по смыслу (если дошёл до 2-го слоя).