Материалы

Use Case: что это и как это описать?

Полезные материалы Главное

Что такое Use Case?

В мире разработки программного обеспечения, где требования заказчиков, ожидания пользователей и технические возможности сплетаются в сложный клубок, жизненно важно иметь инструменты, которые помогают навести порядок. Одним из таких фундаментальных инструментов для аналитиков и проектировщиков является Use Case (Юзкейс), или по-русски — сценарий использования.
Use Case — это сценарная техника описания взаимодействия между пользователями (или другими системами) и разрабатываемой системой для достижения конкретной цели. Проще говоря, это последовательность шагов, которая отвечает на вопросы:
  • Кто использует систему (пользователь, актор)?
  • Какую цель он преследует?
  • Что он делает и как система отвечает на каждом шаге?
  • Какой результат считается успешным?
Классический пример: пользователь хочет зарегистрироваться на сайте. Его цель — создать аккаунт. Use Case описывает, как он нажимает кнопку «Регистрация», система показывает форму, пользователь заполняет данные, система проверяет их и создает запись, отправляя подтверждение на email.
Автором этой техники в ее современном виде считается Ивар Якобсон, который в 1987 году предложил описывать требования к системе не просто как набор разрозненных функций, а как целостные сценарии, отражающие контекст и последовательность действий пользователя. Это позволило добиться большей полноты и согласованности требований. Позже Алистер Коберн в своей книге «Современные методы описания функциональных требований» систематизировал и популяризировал этот подход, предложив, в том числе, и сокращенные форматы юзкейсов.

Зачем это нужно? Роль в проекте

Use Case — это не просто документация для галочки. Они несут реальную пользу всем участникам проекта:
  1. Для заказчиков и руководителей: Юзкейс понятен даже не-технарям. Каждый сценарий несет в себе четкую бизнес-ценность (например, «оформить заказ» или «зарегистрировать клиента»). Это позволяет управлять проектом на верхнем уровне, не погружаясь в технические детали, и легко расставлять приоритеты.
  2. Для аналитиков и менеджеров продукта: Это основной инструмент для выявления и структурирования функциональных требований. В процессе описания сценариев «всплывает» сопутствующая информация: бизнес-правила, роли пользователей, требования к интерфейсу.
  3. Для разработчиков: Юзкейс дает ясное и непротиворечивое описание того, что должна делать система, не предписывая, как именно это реализовывать. Он служит надежным ориентиром при проектировании архитектуры и написании кода.
  4. Для тестировщиков: Готовый юзкейс — это практически готовый тест-кейс. Тестировщик проходит по описанным шагам и проверяет, соответствует ли поведение системы ожидаемому. Любое расхождение легко зафиксировать в баг-репорте со ссылкой на конкретный шаг сценария.

Виды Use Case's: от диаграммы до текста

Use Case могут быть представлены в разной степени детализации.
  • Диаграмма вариантов использования (Use Case Diagram): Это высокоуровневое, графическое представление. Система изображается в виде прямоугольника, за пределами которого находятся «акторы» (стилизованные человечки), а внутри — овалы с названиями сценариев (например, «Оформить заказ», «Оплатить покупку»). Линии показывают, кто какими сценариями пользуется.
  • Здесь нужна иллюстрация, на которой изображена простая Use Case Diagram для интернет-магазина. В прямоугольнике "Интернет-магазин" находятся овалы: "Найти товар", "Добавить в корзину", "Оформить заказ". За пределами прямоугольника — акторы "Покупатель" и "Администратор". Линии связывают "Покупателя" со всеми тремя овалами, а "Администратора" — с овалом "Управление товарами".
  • Текстовый Use Case: Это детальное, пошаговое описание одного сценария. Именно его чаще всего имеют в виду, когда говорят о написании юзкейса.

Сокращенный Use Case: пишем по шагам

Для многих проектов, особенно в гибких методологиях разработки (Agile), нет необходимости создавать гигантские документы на 20 страниц. Достаточно сокращенного формата, который, как советует Коберн, фокусируется на главном. Его структура включает несколько ключевых полей:
  1. Название: Кратко и ясно, в формате «Глагол + Существительное» (например, «Добавить товар в корзину»).
  2. Основной актор: Тот, кто инициирует сценарий и чью цель мы описываем (Покупатель).
  3. Цель: Какой результат хочет получить актор.
  4. Предусловия: Условия, которые должны быть выполнены до начала сценария (например, «Пользователь авторизован», «Товар есть в наличии»).
  5. Триггер: Событие, которое запускает сценарий (например, «Пользователь нажимает кнопку "В корзину"»).
  6. Успешный сценарий (Happy Path): Последовательность шагов, которая приводит к цели без ошибок. Это главная, самая важная часть.
  7. Результат (Гарантии успеха): Конечное состояние системы после успешного выполнения сценария (например, «Товар добавлен в корзину пользователя, отображается сообщение об успехе»).
  8. Расширения (Альтернативные потоки): Что происходит, если что-то пошло не так (например, «Товара нет в наличии», «Пользователь не авторизован»).

Триггер: что приводит сценарий в действие

Триггер — это конкретное событие, которое служит стартовым сигналом для выполнения юзкейса. Без четкого понимания триггера сценарий может висеть в воздухе, оставляя непонятным, когда же он должен начаться.
Триггеры могут быть разными:
  • Действие пользователя: Самый частый случай. Например, «Пользователь нажимает кнопку "Оплатить"», «Пользователь выбирает товар из списка».
  • Внешнее событие: Например, «Поступил новый заказ от интеграционного партнера», «Истек срок резервирования товара».
  • Временной триггер: «Наступила дата ежемесячного формирования отчета».
Указание триггера делает юзкейс завершенным и понятным для всей команды, так как четко очерчивает точку входа в сценарий.

Заглядываем за угол: негативные и альтернативные сценарии

Описывать только «счастливый путь» (Happy Path) — верный способ получить хрупкий продукт, который ломается при первом же нестандартном действии пользователя. Реальная жизнь полна исключений, и именно для их обработки служат альтернативные и негативные сценарии.
Альтернативные сценарии — это ветвления от основного потока, которые все же позволяют пользователю достичь цели, но другим путем. Цель достигается, но не так, как в основном сценарии.
  • Пример: В сценарии «Оформить заказ» пользователь может выбрать разные способы доставки: курьером или самовывоз. Выбор «самовывоза» — это альтернативный сценарий, который исключает шаги по вводу адреса доставки, но все равно приводит к цели — оформленному заказу.
Негативные сценарии — это обработка ошибок и исключительных ситуаций, когда цель не достигается. Эти сценарии критически важны для удобства пользователя и стабильности системы.
  • Примеры:
  • Пользователь вводит неверный пароль при авторизации.
  • На складе закончился товар, который пытаются добавить в корзину.
  • Платежная система отвергла транзакцию.
  • Пользователь пытается зарегистрироваться с email, который уже существует в системе.
В негативном сценарии система должна корректно обработать ошибку: показать понятное сообщение, откатить возможные изменения (если они были) и вернуть пользователя в стабильное состояние системы, чтобы он мог попробовать снова или выйти из сценария.
Здесь нужна иллюстрация, на которой изображена блок-схема. В центре — прямоугольники с основными шагами сценария "Оформить заказ". От ключевых шагов отходят стрелки "да" (ведущие дальше по основному потоку) и "нет" (ведущие в боковые блоки, помеченные как "Альтернативный сценарий: Самовывоз" и "Негативный сценарий: Ошибка оплаты").

Полный пример: «Добавить товар в корзину»

Давайте рассмотрим, как все эти элементы складываются в единую картину.

Типичные ошибки новичков

  1. Монолог пользователя. Описываются только действия пользователя, без ответных реакций системы. Помните: юзкейс — это диалог.
  2. Избыточная детализация интерфейса. Не нужно писать «пользователь кликает левой кнопкой мыши на синюю кнопку в правом верхнем углу». Достаточно: «пользователь нажимает кнопку "Сохранить"».
  3. Игнорирование альтернативных и негативных сценариев. Реальный мир не идеален. Если не описать, что делать при ошибке, разработчики или тестировщики додумают это за вас, и результат может вас не обрадовать. Это одна из самых частых и дорогостоящих ошибок.
  4. Нечеткий или пропущенный триггер. Без ясного триггера непонятно, когда сценарий начинается, что приводит к путанице.
  5. Нарушение принципа «черного ящика». Не стоит описывать внутреннюю реализацию системы («система делает запрос к таблице users в базе данных»). Описывайте только наблюдаемое поведение.
Научиться создавать не просто хорошие, а безупречные Use Case’s— это ключевой навык. На практическом курсе по разработке требований к ПО в Stenet School вас ждет глубокое погружение в техники описания сценариев, работа с триггерами, пред- и постусловиями, а также разбор всех типичных ошибок под руководством опытного преподавателя

Заключение

Use Case — это не просто документ, а способ мышления. Он заставляет сфокусироваться на пользователе и его цели, обеспечивая ясность и целостность требований. Продумывание триггеров, «счастливого пути», а также всех возможных развилок и ошибок через альтернативные и негативные сценарии — это признак зрелого аналитика и залог надежного продукта. Начните с простых сокращенных форматов, потренируйтесь описывать сценарии из повседневной жизни, и вы быстро увидите, как этот инструмент повышает качество коммуникации в проекте и помогает создавать именно тот продукт, который будет работать стабильно и удобен для ваших пользователей.