
Всем привет! Меня зовут Наталья, я ведущий системный аналитик в MWS. В ИТ полно примеров того, как попытки решить задачу приводят к появлению совершенно непригодных инструментов. Формально они работают, но пользоваться ими либо крайне неудобно, либо невозможно. Кнопку вроде сделали, но кривую и не там. Сайт работает, но падает под нагрузкой. Парковку предусмотрели, но только для 10% клиентов.
Проблема в том, что в центре внимания чаще оказывается то, что именно должна делать система. А вот тому, как она это делает, уделяют гораздо меньше времени. В этой статье разберем, что такое нефункциональные требования, как их грамотно формулировать и какие подходы помогают выявлять их на практике.
Помните этот эпизод из «Приключений Алисы в Стране чудес» Льюиса Кэрролла?
«Дверей в зале было множество, но все оказались заперты; Алиса попробовала открыть их — сначала с одной стороны, потом с другой, но, убедившись, что ни одна не поддается, она прошла по залу, с грустью соображая, как ей отсюда выбраться. Вдруг она увидела стеклянный столик на трех ножках; на нем не было ничего, кроме крошечного золотого ключика, и Алиса решила, что это ключ от одной из дверей, но — увы! — то ли замочные скважины слишком велики, то ли ключик слишком мал, только он не подошел ни к одной, как она ни старалась. Пройдясь по залу во второй раз, Алиса увидела занавеску, которую не заметила раньше, а за ней оказалась маленькая дверца дюймов в пятнадцать вышиной. Алиса вставила ключик в замочную скважину — и, к величайшей ее радости, он подошел!
Она открыла дверцу и увидела за ней нору, совсем узкую, не шире крысиной, встала на колени и заглянула в нее — нора вела в сад удивительной красоты. Ах, как ей захотелось выбраться из темного зала и побродить между яркими цветочными клумбами и прохладными фонтанами. Но она не могла просунуть в нору даже голову. “Даже если б моя голова и прошла, — подумала бедная Алиса, — что толку! Кому нужна голова без плечей? Ах, почему я не складываюсь, как подзорная труба! Если б я только знала, с чего начать, я бы, наверное, сумела”».
Это идеальная метафора для нефункциональных требований. Запрос «возможность выйти из зала в сад» выполнен — дверь имеется, а вот качество реализации никуда не годится:
не подумали про совместимость — размер ключа не соответствует замочной скважине;
не учли удобство использования — стол на трех ножках вызывает вопросы, а дверь высотой в 15 дюймов (38,1 см) и вовсе делает попытку пройти бессмысленной;
не вспомнили про концептуальную целостность — судя по всему, последнюю дверь делали «другие подрядчики», раз спрятали ее за занавеской, нарушив единый стиль.
Что такое НФТ
Нефункциональные требования (NFR, Non-Functional Requirements) описывают качество работы системы — то, как система должна работать. Если функциональные требования отвечают на вопрос «что?», то нефункциональные — на вопросы «как?», «когда?», «где?» и «сколько?». Именно NFR напрямую влияют на то, понравится ли продукт клиентам и захотят ли они его использовать.
Фактически НФТ — это атрибуты качества: надежность, производительность, безопасность, удобство. Они задают ограничения дизайна и описывают взаимодействие системы с внешним миром, но без излишней технической детализации.

Как описать НФТ
Нефункциональные требования существуют всегда, даже если они не записаны. Но если их не формализовать, все договоренности о том, как система должна работать, останутся только в головах ключевых разработчиков. Когда они уйдут, новичкам придется действовать методом проб и ошибок, пытаясь понять, какие именно требования учитывались, или переписывать все с нуля. Формализация NFR — это страховка от потери критически важных знаний.
Для классификации требований к ПО существует международный стандарт ISO 25010, но это не единственный подход. Широко используется модель FURPS+, предложенная Hewlett-Packard еще в начале 1990-х. Она помогает не упустить важные аспекты.
Модель FURPS+
F — Functionality (функциональность) — классические функциональные требования. Пример: нужна возможность выбора способа доставки на этапе оформления заказа.
U — Usability (удобство использования) — характеристики, определяющие удобство и привлекательность системы: эргономика, эстетика, интуитивность, обучаемость. Пример: адаптивный дизайн, который подстраивается под разные размеры экранов.
R — Reliability (надежность) — способность системы работать без сбоев и восстанавливаться после них: доступность, непрерывность, отказоустойчивость. Пример: наличие резервного копирования и автоматического восстановления после сбоя.
P — Performance (производительность) — скорость и эффективность работы: время отклика, пропускная способность, масштабируемость. Пример: система должна обрабатывать не менее 1000 запросов в секунду при нагрузке до 10 000 одновременных пользователей.
S — Supportability (поддерживаемость) — легкость сопровождения и модификации: тестируемость, документированность, совместимость. Пример: система должна быть написана на языке Python с использованием фреймворка Django.
Плюс («+») в названии модели означает, что к ней можно добавлять другие категории НФТ в зависимости от специфики проекта: экологичность, экономичность, правовые аспекты, ограничения и так далее. Пример: соответствие требованиям GDPR по обработке персональных данных.
Где брать НФТ и как их не упустить
В погоне за работоспособностью продукта нефункциональные требования часто остаются в тени. Но именно они определяют архитектуру и съедают значительную часть бюджета. Согласитесь: устройство системы, которая должна обслуживать удаленных пользователей 24/7, отличается от той, что работает только с парой сотрудников в офисе с 9 до 18.
Поэтому важно запрашивать и документировать в спецификации к ПО качественные характеристики и критерии их принятия. Чтобы ничего не упустить, нужно задавать правильные вопросы заказчикам и пользователям еще на старте:
Какая максимальная нагрузка системы ожидается в час пик?
Какая должна быть скорость отклика системы при выполнении запросов (например, время загрузки страницы, время обработки оплаты)?
Как система будет реагировать на сбои в работе (например, автоматическое переключение на резервный сервер)?
Как часто должна проводиться резервная копия данных пользователей и как долго они должны храниться?
Какие меры защиты используются для защиты персональных данных пользователей (например, шифрование, двухфакторная аутентификация)?
Как система защищена от атак DDoS и других киберугроз?
Как система обрабатывает и хранит платежные данные (например, соответствует ли система требованиям PCI DSS)?
Готовы ли пользователи смириться с прерыванием работы или им критически важен непрерывный доступ?
Должна ли система соответствовать законодательным нормам (в сфере безопасности, персональных данных и так далее)? Требуется ли лицензирование?
Какие системы решали похожую задачу ранее? Каковы были их соглашения об уровне обслуживания (SLA)?
Существуют ли готовые паттерны архитектуры и DevOps, политики безопасности (в части шифрования, аутентификации и так далее)?
Ваша главная задача на этом этапе — перевести расплывчатые пожелания в измеримые критерии, исключающие разночтения.
Плохо: «Приложение должно максимально быстро реагировать на действия пользователя».
Хорошо: «Пользователь, находясь в сети 3G, должен получать расчет стоимости услуги не более чем за 2 секунды».
Не забывайте о приоритизации. Например, договоренность «для данного модуля доступность важнее скорости отклика» поможет команде принимать взвешенные архитектурные решения и не тратить время и деньги на улучшение того, что не влияет на пользовательский опыт.
НФТ могут меняться с появлением новых задач и проектов. Пример того, где это не учли, — IKEA. После объявления о финальной онлайн-распродаже сайт не справился с нагрузкой (ссылка). Понятно, что в 2022 году компании было не важно сохранение клиентской базы, но в обычных условиях несогласованность действий маркетологов (которые создали ажиотаж) и ИТ-службы (которая рассчитывала на определенный поток посетителей) привела бы к потере и новых, и действующих клиентов.
Сбор НФТ — это не разовая акция, а непрерывный процесс. Встройте его в свои рабочие ритуалы:
анализируйте сбои — это отличный источник требований по отказоустойчивости и мониторингу;
представляйте путь развития системы. Задайте себе вопрос: «Что будет через три года, когда данных станет в 10 раз больше?». Ответ на него поможет заложить масштабируемость заранее.
С чего начать, если раньше НФТ никто не писал
Не пытайтесь объять необъятное и задокументировать все требования для уже работающей системы. Это демотивирует и займет вечность. Попробуйте начать с малого:
сделайте раздел с НФТ в техническом задании обязательным для нового функционала и значимых изменений;
на ретроспективах по инцидентам спрашивайте: «Какое формальное требование мы можем записать, чтобы эта проблема больше не повторилась?»;
возьмите 3–5 самых важных пользовательских сценариев и пропишите НФТ специально для них.
Нефункциональные требования часто остаются в тени функциональности, ведь их игнорирование редко приводит к мгновенным трудностям на этапе разработки. Чаще они проявляются позже — при росте нагрузки, масштабировании, появлении новых интеграций или в момент инцидента.
Но этих проблем можно избежать. Документирование НФТ фиксирует ожидания бизнеса, задает четкие критерии качества и синхронизирует взгляды заказчиков, разработчиков и администраторов. Это снижает риски, экономит деньги и, в конечном счете, помогает создавать системы, которые не просто работают, а делают это удобно, надежно и предсказуемо.
Комментарии (7)

funca
30.03.2026 07:25Архитектура в большей степени определяется НФТ. Условный велосипед для индивидуальных гонок или для шаринга в условиях города это принципиально два разных девайса. Хотя функциональность, видимая со стороны наблюдателя, практически ни чем не отличается.
Фактически, проект, где есть только функциональные требования и нет НФТ это прототип. На практике такая проблема часто возникает из-за своеобразного подхода к сетапу команд. Например, на проекте есть бизнес-аналитик и нет архитектора, а у разработчиков нет права голоса для принятия решений по существу. В результате все как очумелые пилят фичи, а при сдаче эксплуатацию все разваливается.
MikhailZakharov
По моему опыту, нефункциональные требования - это хороший пример серой зоны разграничения задач по управлению продуктом и его реализации. Должно ли быть требование по быстродействию отдельный "НФТ", или частью функционального требования. Или менее очевидное требование всегда использовать сторонние компоненты без критических уязвимостей. Является ли оно "НФТ" или должно быть часть руководства по безопасной разработке.
Suggestive
Согласен, НФТ - это действительно зачастую серая зона требований, в которую никто не хочет погружаться.
По отнесению к НФТ - быстродействие не является функцией системы, поэтому оно и относится к нефункциональным требованиям. Безопасность обычно тоже не является отдельной функцией, а некой общей характеристикой системы, поэтому тоже относится к НФТ.
MikhailZakharov
Если начать уточнять пользователей, то в итоге все "НФТ" можно свести к пользовательским, условно функциональным, требованиям. Те же требования безопасности могут быть критериями к продукту от отдела ИБ клиента. Я ориентируюсь на свой пузырь корпоративных аппаратных продуктов. И часто требования типа "обеспечить удаленное включение" и "обеспечить соответствие ФСТЭК" находятся в одной группе, без разделения на функциональные и не функциональные. Так как первое от пользователя "Администратор", а второе от пользователя "директор по IT"
funca
У любого требования должен быть источник. Да, например персона, которой это больше всех надо. Но классификация FT / NFT про другое. Здесь важнее отделить "что" от "как", конкретную полезную функцию от ограничений уровня всей системы.
Польза в разделении труда, экспертизы и полномочий. Иначе люди начинают лезть со своими подходами в области, где они ни чего не понимают, и перестают приносить value.
MikhailZakharov
Сейчас поймал себя на мысли, что непонятна цель классификации. Перечитал статью, и тоже не нашел ответа "зачем" кроме того, что их важно не упускать. Если мы идем от персоны, и ценности, то в итоге и получаем требование. Требование оцениваем по любой методике и ставим в очередь. Какая разница функциональное оно или нет.
Скорее всего надо начинать от определения "функция". Что именно подразумевается. Если взять ваш пример с велосипедом ниже, то функциональность видимая со стороны наблюдателя может быть разной, в зависимости от наблюдателя, и того, что он хочет получить.
В классификации от HP на которой ссылается в статье приводится следующий пример Architectural Requirement (именно такой термин используется): The persistence will be handled by a relational database. Но указание типа базы данных важно, если в этом есть ценность, т.е. есть персона, которая эту ценность получает. В случае реализации пользовательского сценария вообще неважно что именно внутри. До тех пор пока это укладывается в экономику производства и сопровождения продукта.