1. Сбор и формализация требований: от слов заказчика к чёткому ТЗ
Сбор и формализация требований: от слов заказчика к чёткому ТЗ
Представьте: заказчик говорит «мне нужна система для управления складом», а через три месяца выясняется, что он имел в виду не учёт товаров, а роботизированную сортировку с интеграцией в 1С. Кто виноват? Тот, кто не собрал требования правильно. Сбор и формализация требований — это фундамент, на котором строится всё остальное: архитектура, документация, сроки и бюджет. Если здесь ошибиться, дальше всё пойдёт по наклонной.
Почему заказчик не может сказать, чего хочет
Заказчик мыслит бизнес-задачами, а не системами. Когда он говорит «хочу, чтобы всё было просто», он имеет в виду конкретный сценарий: например, менеджер заходит в систему, видит список заказов и за два клика меняет статус. Но он не скажет этого сам — потому что не знает, какие детали важны для разработки.
Ваша задача как системного аналитика — вытащить из заказчика скрытые ожидания. Для этого существует три категории требований, которые нужно собрать и разделить:
Эти три уровня связаны иерархией: бизнес-требование порождает пользовательские, а те — функциональные. Если вы начнёте сразу с функциональных, упустите контекст, и система будет технически рабочей, но бесполезной для бизнеса.
Алгоритм сбора требований: пять шагов
Шаг 1. Интервью с заказчиком. Не спрашивайте «что вы хотите?» — это слишком широко. Задавайте наводящие вопросы: «Опишите типичный рабочий день сотрудника, который будет работать с системой», «Что сейчас занимает больше всего времени?», «Что происходит, когда что-то идёт не так?» Записывайте всё дословно, не фильтруя.
Шаг 2. Наблюдение за процессом. Если есть возможность — посмотрите, как работают люди прямо сейчас. Часто заказчик описывает идеальный процесс, а на деле сотрудники обходят систему через Excel или мессенджеры. Именно эти обходные пути показывают реальные боли.
Шаг 3. Классификация требований. Разложите всё собранное по трём корзинам: бизнес, пользователи, функционал. Один и тот же запрос может порождать требования на всех трёх уровнях. Например, фраза «чтобы не терялись заказы» превращается в бизнес-требование «снизить процент потерянных заказов до 0,5%», пользовательское «менеджер получает уведомление о новом заказе в течение 30 секунд» и функциональное «система отправляет push-уведомление через WebSocket при создании заказа».
Шаг 4. Приоритизация. Не все требования равнозначны. Используйте метод MoSCoW для расстановки приоритетов:
| Категория | Значение | Пример | |-----------|----------|--------| | Must have | Без этого система не работает | Авторизация пользователей | | Should have | Сильно улучшает продукт | Экспорт отчётов в Excel | | Could have | Приятное дополнение | Тёмная тема интерфейса | | Won't have | Не в эту версию | Мобильное приложение |
Шаг 5. Формализация в документ. Собранные требования нужно оформить в структурированный документ — модель требований. Каждое требование получает уникальный идентификатор (BR-001 для бизнеса, UR-001 для пользовательских, FR-001 для функциональных), описание, приоритет и критерий приёмки.
Типичные ловушки при сборе требований
Первая ловушка — подмена решением. Заказчик говорит «нужна база данных MySQL», но на самом деле ему нужна надёжная система хранения. Не фиксируйте технологию как требование — это решение, которое принимаете вы или архитектор.
Вторая ловушка — молчаливое согласие. Заказчик кивает на всё, что вы предлагаете, а потом в середине проекта говорит «я думал, это будет работать иначе». Решение — после каждого интервью отправляйте протокол встречи с формулировкой «Я зафиксировал следующее. Пожалуйста, подтвердите или исправьте».
Третья ловушка — вечная кухня. Требования постоянно меняются, и вы бесконечно их переписываете. Введите правило: после утверждения базового набора все изменения оформляются через процедуру управления изменениями — заявка, оценка влияния на сроки и бюджет, согласование.
Практический приём: карта требований
Вместо плоского списка требований стройте карту требований — иерархическую структуру, где на вершине стоит бизнес-цель, ниже — пользовательские сценарии, ещё ниже — функциональные спецификации. Это помогает видеть, откуда взялось каждое требование, и быстро находить пробелы: если у бизнес-цели нет привязанных пользовательских требований — значит, что-то упущено.
Карта требований — это живой документ. Он обновляется на протяжении всего проекта и становится главным ориентиром при принятии решений. Когда разработчик спрашивает «а зачем нам это делать?» — вы показываете путь от функционального требования вверх к бизнес-цели. Это убивает 90% лишних споров.