Перейти к содержимому

Шаблон NFR

Шаблон нефункциональных требований.

Шаблон NFR

NFR описывает не что система делает, а как хорошо она должна работать: производительность, доступность, безопасность, надежность, наблюдаемость, масштабируемость.

Паспорт документа

ПолеЗначение
Система / продукт<название>
Функциональность<название>
Автор<ФИО>
СтатусЧерновик / На согласовании / Согласовано
Версияv1.0

Цель

Опишите, какие характеристики качества нужно обеспечить и почему они важны.

Производительность

IDМетрикаТребованиеУсловия измерения
PERF-001Время ответа APIp95 <= <N> мс, p99 <= <N> мсПри нагрузке <RPS>
PERF-002Пропускная способностьНе менее <N> запросов/секНа <контур>
PERF-003Время фоновой обработкиНе более <N> минутДля пачки <N> записей

Нагрузка

IDПоказательЗначение
LOAD-001Средняя нагрузка<N> запросов/сек
LOAD-002Пиковая нагрузка<N> запросов/сек
LOAD-003Количество пользователей<N> активных пользователей
LOAD-004Максимальный размер сообщения<N> КБ/МБ

Доступность

IDМетрикаТребование
AV-001Availability<99.9% / 99.95% / 99.99%>
AV-002Допустимый простойНе более <N> минут в месяц
AV-003Режим работы24/7 / 8x5 / рабочие дни

Надежность

IDТребованиеОписание
REL-001ТаймаутыTimeout <N> мс для вызова <сервис>
REL-002RetryПовторять временные ошибки <условия>
REL-003Circuit BreakerОткрывать цепь при <условие>
REL-004Graceful degradationПри сбое <сервис> использовать <поведение>
REL-005ИдемпотентностьПовтор не должен создавать дубли

RTO / RPO

IDМетрикаЗначениеКомментарий
DR-001RTO<N> минут/часовМаксимальное время восстановления
DR-002RPO<N> минут/часовМаксимально допустимая потеря данных

Масштабируемость

IDТребованиеОписание
SC-001Горизонтальное масштабированиеСервис масштабируется добавлением экземпляров
SC-002StatelessСервис не хранит состояние пользователя в памяти процесса
SC-003ПартиционированиеДля Kafka использовать ключ <key>

Безопасность

IDТребованиеОписание
SEC-001АутентификацияДоступ только для авторизованных пользователей/сервисов
SEC-002АвторизацияПроверять право <permission>
SEC-003TLSВнешние вызовы выполняются по HTTPS/TLS
SEC-004МаскированиеПДн/секреты не логируются в открытом виде
SEC-005АудитКритичные действия фиксируются в audit log

Наблюдаемость

IDТребованиеОписание
OBS-001ЛогированиеЛогировать ключевые этапы операции с correlationId
OBS-002МетрикиПубликовать latency, error rate, throughput
OBS-003ТрейсингПередавать traceId между сервисами
OBS-004АлертыАлерт при росте ошибок выше <N>%

Совместимость

IDТребованиеОписание
COMP-001API compatibilityИзменение не ломает существующих клиентов
COMP-002Schema compatibilityНовые поля необязательные или имеют default

Критерии приемки NFR

IDКритерий
AC-NFR-001Нагрузочный тест подтверждает p95 <= <N> мс при <RPS>.
AC-NFR-002При сбое зависимости пользователь получает контролируемую ошибку.
AC-NFR-003По correlationId можно найти все логи операции.
AC-NFR-004Секреты и ПДн не попадают в логи.

Открытые вопросы

IDВопросКому адресованСтатус
Q-001<вопрос><роль / ФИО>Открыт

Критерии приемки документа

IDКритерий
AC-DOC-001Документ согласован с владельцем продукта / архитектором / разработкой, если применимо.
AC-DOC-002Все спорные места вынесены в открытые вопросы или зафиксированы как ограничения.
AC-DOC-003В документе нет неоднозначных формулировок вроде “быстро”, “удобно”, “корректно” без измеримого критерия.