← К публикациям
Черновик

Как превратить бизнес-требования в функциональные — и не начать с кнопки

Практический маршрут от бизнес-потребности к проверяемому поведению программного продукта — без преждевременного выбора интерфейса или технологии.

Хаотичные карточки запросов проходят через воронку и превращаются в ясную последовательность проверяемых карточек

Бизнес-требование объясняет, зачем менять продукт. Функциональное требование описывает, какое наблюдаемое поведение системы приблизит этот результат.

«Нужен Telegram-бот», «добавьте кнопку» или «сделайте систему управления взаимоотношениями с клиентами (CRM)» — это уже варианты решения. Команда может аккуратно реализовать один из них и не устранить исходную проблему.

Первый вопрос звучит иначе: какое изменение в работе бизнеса или пользователя должно произойти и как мы его измерим? Ответ задаёт границы функции, правила и критерии приёмки.

Ниже — моя рабочая методика. Она делает предположения команды видимыми и связывает затраты на разработку с проверяемым результатом.

Не смешивать четыре уровня

В обсуждении требований полезно различать четыре вещи.

УровеньВопросПример
Бизнес-результатЗачем это нужно?Довести долю заявок с первым ответом за 15 минут рабочего времени до 95 %.
Пользовательская цельКто пытается получить какой результат?Менеджер хочет быстро взять новую заявку в работу.
Функциональное требованиеЧто система должна делать?Система создаёт карточку заявки, назначает ответственного и уведомляет его.
РеализацияКак именно это будет сделано?Очередь событий, таблица заявок, интеграция с мессенджером.

Проблема возникает, когда обсуждение перескакивает с результата сразу к реализации. Фраза «нужен бот» не говорит, кто отвечает за обращение, как обнаружить повтор или что делать, если уведомление не доставлено.

До фиксации постоянного решения стоит прояснить цель, границы и правила поведения. Быстрый прототип можно сделать раньше, если команда прямо проверяет им неизвестное и не выдаёт прототип за согласованное требование.

Начать с бизнес-потребности, а не с экрана

Сквозной пример ниже вымышленный. Цифры показывают форму требования, а не результат реального проекта.

Сейчас: часть заявок с сайта остаётся без ответа до следующего дня.

Нужно: сократить время первой реакции и не терять обращения.

Показатель: 95 % заявок получают первый ответ в течение 15 минут рабочего времени.

Первый ответ: канал подтвердил доставку исходящего сообщения,
а время подтверждения записано в карточке заявки.

Ограничения: персональные данные доступны только сотрудникам отдела продаж;
работа не должна зависеть от ручного копирования из почты.

Если целевое число ещё не согласовано, его записывают как гипотезу или открытый вопрос. Иначе точность формулировки маскирует отсутствие решения.

На этом этапе стоит договориться о пяти пунктах:

  1. Кто владеет проблемой и кто примет результат.
  2. Как сейчас выглядит процесс и где в нём возникает потеря, задержка или риск.
  3. Какой результат считается полезным и как его измерить.
  4. Какие ограничения нельзя нарушать: деньги, право, сроки, доступы, существующие интеграции.
  5. Что точно не входит в изменение.

Явная граница не даёт задаче «автоматизировать заявки» незаметно превратиться в переделку всей CRM.

Перевести результат в пользовательские сценарии

Результат создаёт весь процесс: система регистрирует и маршрутизирует обращение, а менеджер отвечает на него. Поэтому следующий слой описывает действия участников и системы.

Для примера с заявками можно выделить:

  • клиент отправляет обращение;
  • система регистрирует его без потери данных;
  • менеджер получает и берёт обращение в работу;
  • руководитель видит, что обращение ждёт слишком долго;
  • система или сотрудник корректно обрабатывает повторную заявку.

Для этого не нужна большая схема на унифицированном языке моделирования (UML). Достаточно записать, кто начинает сценарий, какой результат хочет получить, что считается успехом и что может пойти иначе. В платеже, импорте данных или выдаче доступа нужно разобрать основной успешный путь, отказ, повтор и частичное выполнение.

Например, основной путь «клиент оставил заявку» неполон без вопросов: что делать с повтором, незаполненным телефоном, временной недоступностью CRM, обращением вне рабочих часов? Ответы на них часто и становятся настоящими требованиями.

Получить функциональные требования

Теперь можно описать требуемое поведение системы. Хорошая формулировка не диктует устройство кода и оставляет возможность выбрать реализацию:

Для менеджера система должна показать новую назначенную заявку и отправить уведомление, чтобы он мог начать работу до истечения целевого времени ответа.

Из одного бизнес-результата могут получиться следующие функциональные требования (FR):

IDТребованиеЗачем оно нужно
FR-01Система принимает заявку из формы и создаёт карточку с контактами, источником и временем поступления.Обращение доступно для обработки.
FR-02Система назначает заявку следующему дежурному менеджеру по круговой очереди. Менеджеры не на смене пропускаются.У заявки появляется конкретный владелец.
FR-03Система отправляет назначенному менеджеру уведомление не позднее 30 секунд после создания карточки.Менеджер узнаёт о работе вовремя.
FR-04Система обнаруживает заявку с тем же телефоном, поступившую за последние 24 часа, и связывает её с существующей карточкой.Повтор не запускает параллельную обработку.
FR-05Система записывает время первого доставленного исходящего сообщения.Результат можно измерить одинаково для всех заявок.
FR-06Система показывает руководителю долю заявок с первым ответом за 15 минут рабочего времени и список заявок за пределами этого срока.Руководитель видит целевой показатель и отклонения.

Если правило распределения неизвестно, в требованиях фиксируют открытый вопрос и его владельца. Круговая очередь, закрепление по территории и ручное назначение дают разное поведение; разработчик не должен выбирать его случайно.

Рядом с функциональными требованиями почти всегда живут ещё два слоя.

Бизнес-правила определяют, когда и при каких условиях действует функция: «рабочее время — с 09:00 до 18:00 по часовому поясу организации», «вне рабочих часов отсчёт соглашения об уровне обслуживания (SLA) приостанавливается», «повтором считается заявка с тем же телефоном в пределах 24 часов». Их фиксируют рядом с требованиями, а не в комментариях к макету. Как вывести требования и тесты из сценария и вести правила отдельным каталогом, подробно разобрано в статье «Что выводится из сценария использования: требования, тесты и бизнес-правила».

Нефункциональные требования задают свойства работы системы: доступность, защиту данных, аудит и производительность. Например: «контактные данные доступны только менеджерам продаж и руководителю», «каждое изменение ответственного записывается в журнал».

Сделать поведение проверяемым

Требование без способа проверить результат остаётся темой для спора на приёмке. Конкретные примеры можно оформить в подходе «разработка на основе поведения» (BDD):

Сценарий: новая заявка назначена следующему дежурному менеджеру
  Допустим Анна и Борис находятся на смене
  И предыдущая заявка была назначена Анне
  И клиент отправил форму с уникальным номером телефона
  Когда система получила заявку в рабочее время
  Тогда она создаёт одну карточку заявки
  И назначает её Борису
  И отправляет Борису уведомление не позднее 30 секунд

Сценарий: первый ответ попадает в целевой показатель
  Допустим заявка поступила в 10:00 рабочего дня
  И была назначена Борису
  Когда Борис отправил ответ
  И канал подтвердил доставку в 10:07
  Тогда система записывает 10:07 как время первого ответа
  И учитывает заявку среди получивших ответ за 15 минут

Важен не синтаксис, а зафиксированные исходное состояние, действие и наблюдаемый результат. Согласованный сценарий можно превратить в автоматическую проверку.

Для каждого изменения стоит отдельно проверить негативные и пограничные случаи:

  • заявка пришла повторно;
  • CRM временно недоступна;
  • менеджер не подтвердил получение;
  • пользователь не имеет права видеть данные;
  • часть операции выполнилась, а часть — нет;
  • порог времени пересёкся с нерабочими часами.

Если случай отложен, команда записывает связанный риск и человека, который принял решение.

Декомпозировать в работу, не потеряв смысл

Когда поведение согласовано, вариант использования (UC) можно разбить на пользовательские истории (US), а затем — на технические задачи, включая интерфейс программирования приложений (API):

Бизнес-результат: 95 % заявок получают первый ответ за 15 минут
  └── вариант использования UC-01: обработать новое обращение
        ├── пользовательская история US-01: создать и показать новую заявку
        ├── US-02: назначить ответственного и уведомить его
        ├── US-03: показать просроченные обращения руководителю
        └── задачи реализации: форма, API, хранение, интеграция, метрики, тесты

Вариант использования удерживает пользовательскую цель, пользовательская история ограничивает поставляемый срез, а техническая задача описывает работу команды. Подробнее об этих артефактах — в статье «Use cases, user stories и BDD для AI-агента».

Декомпозиция считается удачной, если для любой задачи можно пройти цепочку вверх: задача → функция → пользовательский сценарий → бизнес-результат. И в обратную сторону: результат → требования → критерии приёмки → тест или другой след проверки. Эта связь называется трассировкой; она полезна не ради отчётности, а чтобы вовремя заметить лишнюю работу и непокрытую цель.

Минимальный пакет для старта разработки

Для небольшого изменения достаточно одной страницы:

# [Название изменения]

## Бизнес-результат
Что меняется, как измеряем успех, кто принимает результат.

## Границы
Что входит, что не входит, ограничения и зависимости.

## Сценарии и правила
Роли, основной путь, важные альтернативы и бизнес-правила.

## Требуемое поведение
Список функциональных и нефункциональных требований.

## Приёмка
Наблюдаемые примеры, показатели и способ проверки.

## Открытые вопросы
Что пока неизвестно, кто и к какому моменту принимает решение.

Для интеграций, денег, персональных данных и необратимых операций документ растёт вместе с ценой ошибки и количеством неизвестных.

Проверка перед передачей в разработку

Перед стартом полезно задать шесть вопросов:

  1. Можем ли мы одним предложением назвать бизнес-результат и его меру?
  2. Ясно ли, кто пользователь, владелец процесса и принимающий результат?
  3. Описано ли поведение системы, а не заранее выбранный технический механизм?
  4. Зафиксированы ли правила, исключения, права доступа и интеграционные границы?
  5. Есть ли примеры, по которым бизнес и команда одинаково проверят готовность?
  6. Видны ли неизвестные решения, а не замаскированы ли они словами «по умолчанию»?

Если на несколько вопросов ответ «нет», команда выбирает режим: короткое исследование, обратимый прототип или явное принятие риска. Неясность не получает статус готового требования.

Работа с требованиями завершена, когда команда может пройти цепочку в обе стороны: от затрат бизнеса до проверяемого поведения и от результата теста до исходной цели.

Термины

  • Система управления взаимоотношениями с клиентами (CRM) — система, в которой компания хранит обращения и организует работу с клиентами.
  • Унифицированный язык моделирования (UML) — набор обозначений для визуального описания устройства и поведения программных систем.
  • Функциональное требование (FR) — описание наблюдаемого поведения, которое должна обеспечить система.
  • Соглашение об уровне обслуживания (SLA) — согласованный показатель качества или срока обслуживания; в примере — допустимое время первого ответа.
  • Разработка на основе поведения (BDD) — способ согласовывать требования через конкретные примеры исходного состояния, действия и ожидаемого результата.
  • Вариант использования (UC) — описание того, как участник достигает цели с помощью системы, включая существенные альтернативные пути.
  • Пользовательская история (US) — небольшая порция пользовательской ценности, которую команда может обсудить, реализовать и принять.
  • Интерфейс программирования приложений (API) — формализованный способ взаимодействия программных компонентов.

Хотите внедрить это у себя?

Помогаю командам перейти на агентную разработку: как советник, через обучение команды или внедрение изменений с проверкой эффекта по данным. Короткие заметки между статьями выходят в Telegram-канале.

Работать со мной или канал «Жизнь стартапа в стране ИИ»