Расширенная нотация диаграммы последовательности
Комбинированные фрагменты
Заголовок раздела «Комбинированные фрагменты»Фрагмент окружает часть взаимодействия и задаёт оператор, по которому она читается.
| Оператор | Когда использовать |
|---|---|
alt |
несколько взаимоисключающих ветвей с защитными условиями |
opt |
необязательная ветвь с одним условием |
loop |
повторение при условии или в диапазоне |
par |
независимые части могут выполняться параллельно |
break |
при условии фрагмент заменяет оставшуюся часть сценария |
critical |
фрагмент выполняется атомарно относительно параллельных частей |
assert |
показанная трасса допустима как единственная |
neg |
показанная трасса недопустима |
strict, seq, consider и ignore уточняют допустимый порядок и набор сообщений. Это специализированные средства: добавляйте их, когда обычных операторов недостаточно для контракта взаимодействия.
Ссылки и границы
Заголовок раздела «Ссылки и границы»ref (использование взаимодействия, interaction use) ссылается на отдельное взаимодействие. Это помогает не помещать длинный повторяющийся сценарий в каждую диаграмму. Ворота (gate) обозначают точку, через которую сообщение пересекает границу фрагмента или взаимодействия.
Состояние линии жизни можно дополнительно ограничить инвариантом, а внешнюю границу взаимодействия — найденным и потерянным сообщениями. Найденное сообщение (found message) показывает сообщение от неизвестного внешнего отправителя, потерянное сообщение (lost message) — сообщение неизвестному внешнему получателю. Они особенно полезны для асинхронного обмена, когда граница рассматриваемого взаимодействия важна, но вносить внешнего участника на схему не нужно.
Инвариант состояния у линии жизни фиксирует условие, которое должно быть истинно в отмеченный момент. Он должен согласовываться с диаграммой состояний, а не быть произвольным комментарием.
В модели
Заголовок раздела «В модели»Если один сценарий собирается из нескольких ref, используйте обзорную диаграмму взаимодействия. Временные ограничения относятся к диаграмме синхронизации, а не к расстоянию между сообщениями. Различие асинхронного вызова и сигнального сообщения раскрыто в основной диаграмме последовательности.