Диаграмма последовательности
Диаграмма последовательности показывает, как объекты обмениваются вызовами во времени — кто кого вызывает и в каком порядке, для одного конкретного сценария.
Client OrderService OrderRepository EmailService
│ │ │ │
│── createOrder() ─▶│ │ │
│ │── save(order) ─────▶│ │
│ │◀──── orderId ───────│ │
│ │── sendConfirmation() ───────────────────▶│
│◀── orderId ────────│ │ │
Вертикальные линии — объекты, время идёт сверху вниз. Горизонтальные стрелки — вызовы методов, в порядке, в котором они реально происходят.
Копнуть глубже
Зачем диаграмма последовательности, если есть диаграмма классов. Диаграмма классов показывает статичную структуру (“кто из кого состоит”), а диаграмма последовательности — динамику конкретного сценария (“что происходит, когда пользователь нажимает кнопку оформить заказ”). Это разные вопросы — структура и поведение во времени.
Когда она реально полезна:
- Объяснить команде сложный многошаговый процесс (например, как проходит OAuth2-авторизация);
- Найти узкое место — если на схеме видно 5 последовательных синхронных вызовов, может стоит сделать их параллельными;
- Задокументировать взаимодействие микросервисов между собой, когда нужно понять полный путь запроса.
Для простых однострочных вызовов рисовать такую диаграмму избыточно — она оправдана для сценариев с несколькими участниками и нетривиальным порядком вызовов.
• чем она отличается от диаграммы классов по смыслу (если дошёл до 2-го слоя).