Перейти к содержимому

Обзорная диаграмма взаимодействия

Обзорная диаграмма взаимодействия (interaction overview diagram) — это разновидность диаграммы взаимодействия (interaction diagram). По внешнему виду она похожа на диаграмму деятельности, но её узлами являются не обычные действия, а взаимодействия или ссылки на взаимодействия.

Эта диаграмма полезна, когда большой сценарий состоит из нескольких отдельных взаимодействий. Вместо того чтобы строить одну огромную диаграмму последовательности, можно показать общий поток управления и разложить сложные части на отдельные диаграммы последовательности (sequence diagrams), диаграммы коммуникации (communication diagrams) или другие диаграммы взаимодействия (interaction diagrams).

Иначе говоря, обзорная диаграмма взаимодействия отвечает на вопрос: из каких взаимодействий состоит крупный сценарий и в каком порядке они выполняются?

На обзорной диаграмме взаимодействия используются элементы, похожие на элементы диаграммы деятельности:

  • начальный узел (initial node);
  • конечный узел деятельности (activity final node);
  • конечный узел потока (flow final node);
  • решение (decision node);
  • слияние (merge node);
  • развилка (fork node);
  • соединение потоков (join node);
  • поток управления (control flow);
  • ссылка на взаимодействие (interaction use);
  • встроенное взаимодействие (inline interaction).

Главное отличие от обычной диаграммы деятельности в том, что содержательными узлами выступают взаимодействия. Например, один узел может ссылаться на диаграмму последовательности “Оформление заказа”, другой — на взаимодействие “Проверка оплаты”, третий — на взаимодействие “Отправка уведомления”.

Ссылка на взаимодействие (interaction use) позволяет сослаться на уже описанное взаимодействие. Это удобно, когда один и тот же фрагмент сценария используется в нескольких местах модели.

Например:

ref Проверить доступность товара
ref Создать заказ
ref Запустить оплату
ref Отправить уведомление

Такая запись означает, что подробности каждого взаимодействия описаны отдельно. Обзорная диаграмма не обязана раскрывать все сообщения внутри этих фрагментов.

Как и на диаграмме деятельности, на обзорной диаграмме взаимодействия можно показывать ветвления, объединения, параллельное выполнение и завершение потоков.

Примеры:

  • после проверки заявки сценарий идёт в ветку “одобрить” или “отклонить”;
  • уведомление клиента и запись в журнал выполняются параллельно;
  • при ошибке оплаты поток завершается без создания доставки;
  • повторная проверка выполняется до тех пор, пока внешний сервис не вернёт результат или не истечёт таймаут.

При этом важно помнить: диаграмма не должна превращаться в обычную activity diagram, где каждый узел — маленькое действие. Её смысл именно в управлении крупными взаимодействиями.

Обзорная диаграмма взаимодействия полезна, если сценарий слишком крупный для одной диаграммы последовательности.

Хорошие случаи использования:

  • нужно показать верхнеуровневую структуру сложного сценария;
  • один сценарий состоит из нескольких повторно используемых взаимодействий;
  • нужно связать несколько sequence diagrams в один процесс;
  • нужно показать ветвление между разными взаимодействиями;
  • нужно избежать одной перегруженной диаграммы последовательности.

Если сценарий небольшой, обзорная диаграмма взаимодействия обычно не нужна. Достаточно диаграммы последовательности или диаграммы деятельности.

Обзорная диаграмма взаимодействия находится между activity diagram и sequence diagram. От диаграммы деятельности она берёт поток управления, решения, развилки и соединения потоков. От диаграмм взаимодействия она берёт взаимодействия как содержательные блоки.

В учебной модели её можно использовать как карту сложного сценария: общий поток показан на одной диаграмме, а каждый крупный шаг раскрыт отдельной диаграммой последовательности.

Частые ошибки при использовании обзорной диаграммы взаимодействия:

  • заменять ею обычную диаграмму деятельности без ссылок на взаимодействия;
  • делать узлами слишком мелкие действия вместо крупных взаимодействий;
  • ссылаться на взаимодействия, которые нигде не описаны;
  • строить её для простого сценария, где достаточно одной sequence diagram;
  • смешивать разные уровни детализации в одном потоке;
  • забывать синхронизировать ветви диаграммы с альтернативными и исключительными сценариями use case.