Как написать use case для уведомления клиента
Что проверяют
Умеете ли вы оформлять требования по шаблону и видеть сценарий целиком: кто его запускает, что считается успехом, что происходит при сбоях. Следом часто просят расписать поток «клиент не получил уведомление» или спрашивают, чем use case отличается от user story.
Как отвечать
Сначала уточните контекст: о каком событии уведомляем (статус заказа, списание, напоминание), по каким каналам и кто выбирает канал. Затем текстовый use case по шаблону Кокберна:
- название: глагол и объект, «Уведомить клиента о смене статуса заказа»;
- уровень и граница: чаще это подфункция, которую включают другие сценарии через отношение include, а в границе системы ваш сервис уведомлений;
- акторы: основной тот, кто запускает сценарий, здесь сервис заказов или таймер; клиент это заинтересованное лицо и получатель; вспомогательные акторы: SMS-шлюз, почтовый сервис, сервис push-уведомлений;
- триггер и предусловия: статус заказа изменился, у клиента есть контакт и согласие на рассылку;
- основной поток: система выбирает каналы по настройкам клиента, заполняет шаблон, передаёт сообщение шлюзу, фиксирует статус доставки;
- расширения: шлюз недоступен (повтор с растущим интервалом, после N попыток резервный канал); клиент отписался; контакт невалиден; ночное время (отложить отправку); дубль события (не слать повторно);
- постусловия: гарантия успеха (уведомление ушло хотя бы по одному каналу, есть запись в журнале) и минимальная гарантия (при любом исходе записана попытка и причина отказа).
Нефункциональные требования вынесите отдельно: допустимая задержка в секундах, лимиты шлюза, хранение согласий.
Где спотыкаются
Делают актором саму «систему уведомлений». Разрабатываемая система не бывает актором своего use case, акторы находятся снаружи границы.
Описывают только основной поток. Основная ценность аналитика в расширениях: отказ шлюза, отписка, повтор события.
Пишут в шагах интерфейс и реализацию: «нажимает кнопку», «пишет в таблицу notifications». Use case описывает намерения и ответственность, детали дизайна живут в других артефактах.