Как показать синхронное и асинхронное взаимодействие на диаграмме последовательностей
Что проверяют
Знаете ли вы нотацию точно. Стрелки на диаграмме различаются мелкой деталью, и по ней читатель понимает, ждёт отправитель ответа или нет.
Как отвечать
Различие в типе наконечника стрелки:
- синхронный вызов: сплошная линия с закрашенным треугольным наконечником. Отправитель ждёт, его полоса активности продолжается всё время выполнения вызванной операции;
- ответ на синхронный вызов: пунктирная линия с открытым наконечником. Часто её опускают, если возврат очевиден, но при разборе интеграций лучше рисовать;
- асинхронное сообщение: сплошная линия с открытым (незакрашенным) наконечником. Отправитель продолжает работу сразу, не дожидаясь ответа. Ответ, если он предусмотрен, приходит отдельным сообщением позже.
Что ещё стоит назвать, потому что именно это делает диаграмму полезной:
- полосы активности показывают, кто чем занят: у синхронного вызова полоса отправителя не прерывается, у асинхронного он свободен сразу;
- блоки взаимодействия:
altдля альтернатив (успех и отказ),optдля необязательного шага,loopдля повторов,parдля параллельных ветвей; - ограничения по времени подписываются рядом со стрелкой: таймаут, срок ожидания ответа;
- обмен через очередь удобно рисовать отдельной линией жизни для брокера, тогда видно, что отправитель и получатель не связаны напрямую;
- самовызов рисуется стрелкой на собственную линию жизни.
Практический совет аналитику: асинхронные шаги обязательно сопровождать сценариями ожидания и отказа. Именно на диаграмме становится видно, что после «сообщение отправлено» никто не описал, что увидит пользователь, пока ответа нет.
Где спотыкаются
Рисуют все стрелки одинаково, и из диаграммы нельзя понять модель взаимодействия.
Показывают только успешный путь, оставляя обработку ошибок на усмотрение разработчика.
Смешивают уровни: бизнес-шаги и вызовы конкретных методов на одной картинке.