Связи на C2
На структурной диаграмме связи показывают устойчивые зависимости: какой элемент знает о другом, использует его или обращается к нему. Конкретную последовательность действий и обмен данными во времени мы опишем позже на диаграммах потоков данных.
В уроке используются три способа создания связи: через левую панель, через
контекстное меню исходного элемента и с помощью выбора пары элементов при
зажатой клавише Shift. После первых примеров остальные связи создаются в
ускоренном темпе, а внимание уделяется правилам моделирования зависимостей.
Исходная диаграмма
Перед началом на C2 уже находятся актёры, внешние системы, бизнес-контейнеры и техническая инфраструктура. Иконки платформ были назначены в предыдущем уроке.
Три способа создания
Первую связь удобно создать через кнопку связи в левой панели. В форме явно задаются источник, целевой элемент, наименование и описание взаимодействия.
Во втором способе сначала выбирается исходный элемент, а затем команда создания связи в его контекстном меню. Источник подставляется автоматически, остаётся выбрать целевой элемент.
Третий способ самый быстрый: выберите источник, удерживайте Shift и выберите
целевой элемент. Система сразу откроет форму с заполненными концами связи.
Иерархия связей
Для связи между контейнерами система может указать родительскую связь уровня C1. Так формируется иерархия: верхнеуровневая зависимость между системами раскрывается через конкретные взаимодействия их контейнеров. В следующих уроках покажем, как раскрывать такую структуру непосредственно на C1.
Что показывает структурная связь
Структурная диаграмма отвечает на вопросы «кто от кого зависит», «кто о ком знает» и «кто с кем взаимодействует». Она не должна повторять сценарий работы системы шаг за шагом. Поэтому наименования связей лучше делать обобщёнными: например, взаимодействие через REST API, брокер сообщений или пакетную обработку данных.
Несколько связей между одной парой элементов допустимы, если они представляют разные способы взаимодействия. Позже каждый поток данных можно связать с одной из них и быстро получить список процессов, использующих конкретный протокол или канал обмена.
Иногда полезно раздельно моделировать чтение из базы данных и запись в неё. Это позволяет анализировать процессы чтения и изменения данных независимо, а при необходимости планировать разделение нагрузки и применение CQRS.