Сценарии, потоки и исключения
Сценарий варианта использования
Заголовок раздела «Сценарий варианта использования»Диаграмма использования показывает, какую функциональность система предоставляет актору. Спецификация варианта использования добавляет цель, условия и связи с требованиями. Но для проектирования процесса нужно ещё одно представление: сценарий.
Сценарий описывает последовательность шагов, в которой актор и система вместе достигают результата. Хороший сценарий не должен быть похож на описание интерфейса или кода. Он фиксирует смысловые действия:
- пользователь выбирает услугу;
- система проверяет доступные интервалы;
- пользователь подтверждает запись;
- система создаёт заявку и отправляет уведомление.
Действия вроде “нажать синюю кнопку”, “вызвать эндпоинт” или “сделать SQL-запрос” обычно относятся к другому уровню детализации. В аналитическом сценарии важнее понять, что происходит в предметной области.
Основной поток
Заголовок раздела «Основной поток»Основной поток описывает наиболее простой успешный путь к цели. Он нужен как скелет сценария: если этот поток непонятен, альтернативы и ошибки только усложнят модель.
Основной поток лучше записывать как нумерованный список:
- Актор инициирует действие.
- Система запрашивает или показывает необходимые данные.
- Актор вводит или подтверждает данные.
- Система проверяет условия.
- Система фиксирует результат.
- Актор получает подтверждение.
Это не универсальный шаблон, а типовая форма. В конкретной системе шагов может быть больше или меньше, но каждый шаг должен быть осмысленным и проверяемым.
Например, для варианта использования “Оформить заказ” основной поток может включать выбор товаров, проверку наличия, подтверждение адреса, создание заказа и отправку подтверждения. На этом уровне не нужно описывать конкретные кнопки интерфейса или SQL-запросы. Важно показать, как актор и система совместно приходят к результату.
Альтернативные потоки
Заголовок раздела «Альтернативные потоки»Альтернативный поток описывает допустимое отклонение от основного сценария. Цель всё ещё может быть достигнута, но путь отличается.
Примеры альтернатив:
- пользователь выбирает другой способ оплаты;
- система предлагает ближайшее свободное время вместо выбранного;
- актор изменяет данные до подтверждения;
- система находит уже существующую запись и предлагает её использовать.
Альтернативы удобно привязывать к конкретным шагам основного потока. Например, 3a означает альтернативу к шагу 3, а 5a - альтернативу к шагу 5. Если альтернатива может возникнуть почти в любой момент, её можно описать как глобальную.
Для заказа альтернативой может быть применение промокода, выбор другого способа доставки или изменение состава заказа до подтверждения. Цель сценария при этом сохраняется: заказ всё ещё должен быть оформлен, просто путь к этому результату отличается.
Исключительные потоки
Заголовок раздела «Исключительные потоки»Исключительный поток описывает ошибку или ситуацию, в которой сценарий не завершается обычным успешным результатом.
Примеры исключений:
- введённые данные не проходят проверку;
- внешний сервис недоступен;
- объект уже изменён другим пользователем;
- у актора нет прав на действие;
- бизнес-правило запрещает продолжение процесса.
Исключение не всегда означает аварийное завершение. Иногда система может сохранить черновик, показать причину отказа или вернуть процесс на предыдущий шаг. Поэтому в исключительном потоке важно фиксировать минимальные гарантии: что система обязана сохранить даже при неуспешном завершении.
В примере с заказом исключительный поток может возникнуть, если товара нет на складе, платёж не прошёл или внешний сервис доставки недоступен. В каждом случае нужно указать не только саму ошибку, но и реакцию системы: отменить операцию, сохранить корзину, предложить другой вариант или зафиксировать неуспешную попытку.
Шаги сценария обычно нумеруются так, чтобы было понятно, к какому месту относится отклонение. Основной поток можно обозначать числами 1, 2, 3. Альтернативы и исключения удобно записывать как 2a, 2b, 4a. Глобальные ошибки, которые могут возникнуть почти в любой момент, можно описывать отдельно, но всё равно нужно указать, как они влияют на результат сценария.
Связь с диаграммой деятельности
Заголовок раздела «Связь с диаграммой деятельности»Диаграмма деятельности появляется из сценария, а не заменяет его. Основной поток становится основной цепочкой действий. Альтернативные и исключительные потоки превращаются в ветвления, guards, flow final или activity final. Данные, документы и события из шагов сценария становятся object flow или кандидатами в классы.
Если на диаграмме деятельности есть ветка, которой нет в сценарии, это повод уточнить спецификацию use case. Если в сценарии есть условие, которого нет на диаграмме, модель процесса неполна.