Диаграммы взаимодействия (interaction diagrams) — группа поведенческих диаграмм UML, показывающих обмен сообщениями между участниками в рамках одного сценария. Если диаграмма прецедентов (06.01.02 Поведенческие диаграммы (State, Activity, Use Case), 03.02.01 Диаграмма прецедентов (Use Case Diagram)) отвечает на «что делает система», а 03.02.04 Диаграмма состояний (State Machine Diagram) — «как меняется состояние объекта», то interaction diagrams фиксируют как участники обмениваются сообщениями, чтобы выполнить задачу. В UML 2.5 категорию Interactions представляют четыре вида диаграмм; в этой заметке детально Sequence и Communication, обзорно — Timing и Interaction Overview. Прикладное применение sequence в работе SA — в 03.02.03 Диаграмма последовательности (Sequence Diagram).

1. Суть темы

Interaction в UML 2.5 — одна семантическая модель обмена сообщениями; Sequence Diagram и Communication Diagram — два канонических представления (views) одного interaction, а не разные сценарии. В инструментах уровня Sparx EA или PlantUML (частично) их можно синхронизировать: изменение сообщений на sequence автоматически отражается на communication и наоборот. В diagram-as-code (Mermaid) communication обычно рисуют отдельно вручную.

Граница этой заметки и 03.02.03 Диаграмма последовательности (Sequence Diagram):

Здесь (06.01.03)Там (03.02.03)
Формальная нотация UML 2.5: типы сообщений, combined fragments, ref/sd, found/lost, gatesРабочий артефакт SA: детализация прецедента, трассировка, качество спецификации
Выбор Sequence vs Communication; сравнение представленийСколько диаграмм на прецедент, уровень абстракции lifeline, связь с SRS и тестами
Все четыре вида interaction diagrams (кратко)Практика «прецедент → sequence» без дублирования таксономии UML

Четыре вида interaction diagrams в UML 2.5:

ВидАкцентКогда вспомнить
Sequence DiagramХронология сообщений сверху внизДетализация сценария, API-вызовы, ветвления (alt, loop)
Communication DiagramСтруктурные связи объектов + нумерация сообщенийОбзор «кто с кем связан» в компактном сценарии
Timing DiagramСостояние lifeline на временной оси; ограничения длительностиТайминги, протоколы с жёсткими интервалами, state invariant на линии жизни
Interaction Overview DiagramActivity-подобный поток из ref на другие interactionМного связанных сценариев: «карта» из ссылок вместо одной длинной sequence

Timing и Interaction Overview в повседневной SA-практике встречаются реже Sequence и Communication; минимум нотации — в §2.5. Полная проработка Timing — по спецификации OMG UML 2.5.1 (раздел Interactions). Для обзора activity-подобных потоков см. также 03.02.02 Диаграмма деятельности (Activity Diagram): Activity описывает порядок действий, Interaction Overview — порядок ссылок на interaction (ref).

Sequence vs Activity для одного сценария: Activity удобна, когда важен алгоритм шагов без привязки к конкретным компонентам; Sequence — когда нужны именованные участники и контракты сообщений. Дублировать обе диаграммы имеет смысл только на разных уровнях абстракции (бизнес-поток → системные вызовы).

2. Ключевые понятия

2.1 Диаграмма последовательности (Sequence Diagram)

Диаграмма с явной временной осью (сверху вниз). Основной инструмент для чтения порядка вызовов и combined fragments.

Основные элементы:

ТипОбозначениеСемантика UML
СинхронноеСплошная линия, закрашенная стрелкаОтправитель блокируется до ответа
АсинхронноеСплошная линия, открытая стрелкаОтправитель не ждёт завершения обработки (сигнал, fire-and-forget)
Reply (return)Пунктир, открытая стрелкаОтвет на синхронный вызов
Create / DestroyСпециальные стрелки на lifelineСоздание экземпляра (<<create>>) / явное уничтожение (X на линии жизни)
Self-messageСтрелка к той же lifelineВнутренний вызов (валидация, маппинг)
Found / LostСтрелка от/к границе диаграммыСообщение из неизвестного или во внешний участник вне модели

Важно: асинхронная стрелка на диаграмме — UML-семантика «отправитель не блокируется», а не автоматически «очередь Kafka» или message broker. Связь с брокерами и event-driven архитектурой — в 03.05.04 Асинхронное взаимодействие (очереди, Kafka, Events) и 03.05.06 Event-Driven Architecture; на диаграмме достаточно подписи async или lifeline :EventBus, если это аналитическая абстракция.

Reply: в учебных и обзорных диаграммах return часто опускают. При спецификации контрактов (03.05.03 Спецификации контрактов (OpenAPI, AsyncAPI, Protobuf)) явно моделируйте return, если важны тело ответа, коды ошибок или обязательность ответа для следующего шага.

  • Комбинированные фрагменты (Combined Fragments) — рамка с оператором UML:
ОператорНазначениеЧастота в SA
altУсловное ветвление (if/else)Высокая
optНеобязательный фрагментВысокая
loopЦиклСредняя
parПараллельные потокиСредняя
breakПрерывание окружающего фрагментаНизкая
criticalКритическая секцияНизкая
refСсылка на другую interaction-диаграммуСредняя (декомпозиция)
assert, negУтверждение / недопустимое взаимодействиеРедко (формальная верификация)
  • Gates — именованные точки на границе фрагмента ref или sd, через которые interaction стыкуется с внешним контекстом. Логически близки к found/lost, но привязаны к границе именованного фрагмента, а не к краю листа; полезны при стыковке с 03.01.02 Моделирование контекста системы (Context Diagram) и 03.01.04 Интерфейсы и интеграционные взаимодействия.
  • Interaction Use (ref) и Interaction Occurrence (sd) — ref вставляет ссылку на уже существующую именованную interaction (например, ref UC-05-Payment); sd оборачивает фрагмент текущей диаграммы в именованный блок для повторного использования (sd PaymentFlow { ... }). Это основной способ декомпозиции длинных сценариев вместо одной «спагетти»-диаграммы.

Уровни строгости инструментов — не смешивайте при sign-off с заказчиком:

УровеньПримерыЧто считать нормой
OMG UML 2.5Спецификация, Sparx EA, Lucidchart (UML-режим)Полная семантика: gates, found/lost, Create/Destroy, ref/sd
PlantUML@startuml sequenceБольшинство combined fragments; communication — workaround через object diagram
MermaidsequenceDiagramУдобно для Git-ревью; не UML 1:1: rect — только визуальная группировка Mermaid, не оператор UML; ref и found/lost — с ограничениями

В Mermaid поддерживаются фрагменты alt, opt, loop, par, break, critical; rect — дополнение Mermaid для рамки, не combined fragment UML. ref и found/lost — с ограничениями или вручную через Note.

2.2 Диаграмма коммуникации (Communication Diagram)

То же interaction, но без явной временной оси: объекты — прямоугольники, связи — линии ассоциаций из 06.01.01 Структурные диаграммы (Class, Object, Package), порядок — нумерация сообщений на связях (1, 1.1, 2). Условия и циклы задаются guard-подписями на сообщениях: [есть на складе] 5: провестиОплату(), *[i:=1..n].

Канон UML: объекты + ассоциации между ними + сообщения с номерами на линиях связи, а не отдельные направленные рёбра «от узла к узлу». В EA и на экзаменах по UML проверяют именно эту топологию.

Communication не «не умеет ветвления» — ветки отражаются в guards и иерархической нумерации, но читать сложный alt на communication труднее, чем на sequence.

2.3 Сопоставимый пример: оформление заказа

Один сценарий — ветвление «есть / нет на складе» — в обоих представлениях.

Sequence (Mermaid):

sequenceDiagram
    actor Пользователь
    participant WebUI as Веб-интерфейс
    participant OrderService as СервисЗаказов
    participant StockService as СервисСклада
    participant PaymentGateway as ПлатёжныйШлюз

    Пользователь->>WebUI: Инициировать оформление заказа
    WebUI->>OrderService: создатьЗаказ(данные)
    activate OrderService
    OrderService->>StockService: проверитьНаличие(товар, кол-во)
    activate StockService
    StockService-->>OrderService: результат проверки
    deactivate StockService
    alt есть на складе
        OrderService->>PaymentGateway: провестиОплату(сумма)
        activate PaymentGateway
        PaymentGateway-->>OrderService: успешно
        deactivate PaymentGateway
        OrderService->>StockService: зарезервировать(товар, кол-во)
        OrderService-->>WebUI: заказ создан, статус «оплачен»
    else нет на складе
        OrderService-->>WebUI: ошибка «товар закончился»
    end
    deactivate OrderService
    WebUI-->>Пользователь: уведомление о результате

Communication (иллюстрация порядка; Mermaid не поддерживает нативный Communication Diagram):

Рисунок ниже показывает последовательность сообщений 1, 2, 3… того же сценария. Это не канонический вид UML Communication (нет ассоциаций с нумерацией на связях) — для формальной модели используйте EA или draw.io в UML-режиме (07.04 Инструменты моделирования (Sparx EA, Lucidchart, draw.io)).

graph LR
    Пользователь((Пользователь)) --- WebUI[Веб-интерфейс]
    WebUI --- OS[СервисЗаказов]
    OS --- SS[СервисСклада]
    OS --- PG[ПлатёжныйШлюз]

    Пользователь -->|1: инициировать| WebUI
    WebUI -->|2: создатьЗаказ| OS
    OS -->|3: проверитьНаличие| SS
    SS -->|4: результат| OS
    OS -->|"[есть на складе] 5: провестиОплату"| PG
    PG -->|"[есть на складе] 6: успешно"| OS
    OS -->|"[есть на складе] 7: зарезервировать"| SS
    OS -->|"[есть на складе] 8: заказ создан"| WebUI
    OS -->|"[нет на складе] 5a: ошибка"| WebUI
    WebUI -->|9: уведомить| Пользователь

PlantUML: отдельного синтаксиса @startcommunication в PlantUML нет (запрос в сообществе с 2014 г.). Для communication-подобного вида используют object diagram или deployment/workaround с нумерованными подписями на связях; sequence-синтаксис с номерами 1:, 2: — это sequence diagram, а не канонический Communication Diagram по UML.

2.4 Сравнение Sequence и Communication

КритерийSequence DiagramCommunication Diagram
АкцентПорядок и хронология сообщенийСтруктурные связи и номера сообщений
Временная осьЯвная (сверху вниз)Нет; порядок по нумерации
Сложная логика (alt, par)Отлично (combined fragments)Возможно через guards; читается хуже
Согласованность с class diagramНеявнаяЯвная (линки = ассоциации)
ЧитаемостьЗависит от сложности: простой happy path — понятен многим; много alt/par — тяжелее для бизнес-аудиторииЗависит от сценария: короткий happy path с нумерацией 1, 2, 3 иногда проще sequence; длинный сценарий с guards — сложнее
МасштабДесятки сообщений + ref для декомпозицииКомпактные сценарии (условно ≤10–15 сообщений)

Обе диаграммы связаны с диаграммой классов: lifeline / объект — экземпляр класса; сообщение должно соответствовать операции (или сигналу) класса-получателя.

2.5 Timing и Interaction Overview (обзор нотации)

Timing Diagram — горизонтальная ось времени; каждая lifeline показывает состояние (или значение) в интервалах. Ключевые элементы:

  • State invariant — условие на lifeline в момент времени (например, {status = active}).
  • Duration constraint — ограничение длительности между событиями ({d .. 500ms}).
  • Смена состояния — ступеньки на линии; сообщения — короткие стрелки между lifelines.

Применение: протоколы с таймаутами, SLA по времени отклика, встраиваемые системы. В типовой SA-документации чаще хватает sequence с текстовым NFR по времени (08.02 Нефункциональные требования (НФТ) — классификация и стандарты).

Interaction Overview Diagram — activity-подобный поток, где узлы — не действия, а ref на другие interaction:

[ref: Авторизация] → (alt: роль?) → [ref: Оформление заказа] → [ref: Уведомление]

Поток управления (ветвления, merge) — как на Activity Diagram, но содержимое узлов — ссылки на sequence/communication. Удобна как карта из десятка связанных сценариев вместо одной перегруженной sequence; детали каждого блока — в именованной interaction через ref/sd.

3. Как применяется в работе аналитика

Interaction diagrams на проекте обычно следуют за текстовым сценарием прецедента — см. цепочку в 06.01.02 Поведенческие диаграммы (State, Activity, Use Case). На нотационном уровне аналитик решает:

Нотационное решениеКуда за контекстом
Sequence vs Communication vs Overview§2.4 и §2.5 этой заметки
Sync/async, return, Create/Destroy§2.1; архитектура async — 03.05.04 Асинхронное взаимодействие (очереди, Kafka, Events), 03.05.06 Event-Driven Architecture
Декомпозиция через ref/sd§2.1; границы системы — 03.01.02 Моделирование контекста системы (Context Diagram)
Трассировка, качество артефакта, «прецедент → sequence», связь с тестами03.02.03 Диаграмма последовательности (Sequence Diagram)
Контракты API по сообщениям03.05.03 Спецификации контрактов (OpenAPI, AsyncAPI, Protobuf), 10.01.04 Шаблон спецификации REST API

Пошаговая методика и критерии качества SA-артефакта здесь не дублируются — они живут в 03.02.03 Диаграмма последовательности (Sequence Diagram).

4. Типовые ошибки и ограничения

  • Смешение UML-async и «Kafka-async» — открытая стрелка ≠ обязательно брокер; уточняйте в подписи или тексте спецификации.
  • Разные сценарии на Sequence и Communication — при сравнении views одного interaction содержание должно совпадать (те же участники, ветки, сообщения).
  • Перегрузка одной диаграммы — десятки сообщений без ref; используйте Interaction Overview или набор связанных sequence.
  • Неверный уровень lifeline — классы Java на диаграмме согласования с заказчиком; актор + «Система» там, где нужна декомпозиция сервисов.
  • Пропуск reply (return) при контрактах — без явного return легко потерять коды ошибок и тело ответа в требованиях.
  • Create vs «исчезновение» lifeline — уничтожение объекта моделируется явной стрелкой Destroy (X на lifeline), а не просто обрывом линии; создание — стрелкой <<create>> к новой lifeline.
  • Mermaid как «строгий UML» — diagram-as-code удобен для ревью в Git (07.05 Системы контроля версий (Git) для документации), но не покрывает found/lost, gates, полный ref; для формальной модели — EA / PlantUML + OMG.
  • rect в Mermaid ≠ combined fragment UML — не переносите Mermaid-ограничения в требования к нотации на sign-off.
  • PlantUML sequence с номерами ≠ Communication Diagram — не выдавайте workaround за канонический вид UML.
  • Graph LR как Communication — направленные рёбра Mermaid не заменяют ассоциации с нумерацией на связях.
  • Дублирование 03.02.03 — не превращайте эту заметку в руководство по ведению артефакта; держите фокус на нотации UML 2.5.

Связи с другими разделами базы

Источники и дополнительные материалы

  • OMG Unified Modeling Language (OMG UML), Version 2.5.1 — раздел Interactions (Sequence, Communication, Timing, Interaction Overview). https://www.omg.org/spec/UML/2.5.1
  • OMG UML 2.5.1 Specification (PDF) — нормативное описание interaction views и combined fragments. https://www.omg.org/spec/UML/2.5.1/PDF
  • Гради Буч, Джеймс Рамбо, Ивар Якобсон. «Язык UML. Руководство пользователя» — полное описание диаграмм взаимодействия. 2-е изд., ДМК Пресс.
  • Мартин Фаулер. «UML. Основы» — практические советы по Sequence и Communication. 3-е изд., Символ-Плюс.
  • Крэг Ларман. «Применение UML и шаблонов проектирования» — образцы sequence для паттернов GRASP. 3-е изд., Вильямс.
  • PlantUML Sequence Diagram Guide — синтаксис sequence и combined fragments. https://plantuml.com/sequence-diagram
  • PlantUML Q&A: UML Communication diagram — обходной путь через object/deployment diagram (нативного communication-синтаксиса нет). https://forum.plantuml.net/6559/uml-communication-diagram
  • Mermaid Sequence Diagram Documentation — ограничения Mermaid (sequence only, без Communication). https://mermaid.js.org/syntax/sequenceDiagram.html
  • Scott W. Ambler. «The Elements of UML 2.0 Style» — рекомендации по стилю оформления interaction diagrams.