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

Расширенная нотация диаграммы последовательности

Фрагмент окружает часть взаимодействия и задаёт оператор, по которому она читается.

Оператор Когда использовать
alt несколько взаимоисключающих ветвей с защитными условиями
opt необязательная ветвь с одним условием
loop повторение при условии или в диапазоне
par независимые части могут выполняться параллельно
break при условии фрагмент заменяет оставшуюся часть сценария
critical фрагмент выполняется атомарно относительно параллельных частей
assert показанная трасса допустима как единственная
neg показанная трасса недопустима

strict, seq, consider и ignore уточняют допустимый порядок и набор сообщений. Это специализированные средства: добавляйте их, когда обычных операторов недостаточно для контракта взаимодействия.

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

Состояние линии жизни можно дополнительно ограничить инвариантом, а внешнюю границу взаимодействия — найденным и потерянным сообщениями. Найденное сообщение (found message) показывает сообщение от неизвестного внешнего отправителя, потерянное сообщение (lost message) — сообщение неизвестному внешнему получателю. Они особенно полезны для асинхронного обмена, когда граница рассматриваемого взаимодействия важна, но вносить внешнего участника на схему не нужно.

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

Если один сценарий собирается из нескольких ref, используйте обзорную диаграмму взаимодействия. Временные ограничения относятся к диаграмме синхронизации, а не к расстоянию между сообщениями. Различие асинхронного вызова и сигнального сообщения раскрыто в основной диаграмме последовательности.