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

Нефункциональные требования (NFR)

1) Безопасность (Security)

IDНазваниеОписание требованияПриоритетОбоснованиеКак проверяется
NFR-SEC-001Шифрование трафикаВсе запросы клиента к backend выполняются по HTTPS (TLS 1.2+). HTTP-запросы перенаправляются на HTTPS.MUSTВ системе обрабатываются персональные данные (аккаунт, переписка, фото, геометки). Без шифрования возможен перехват данных и юридические/репутационные риски.Открыть сервис и проверить протокол HTTPS, попытаться открыть HTTP, но должно переключаться на HTTPS.
NFR-SEC-002Доступ к операциям с объявлениямиДоступ к операциям создания/редактирования/закрытия объявления имеет только автор.MUSTЗащита от доступа к чужим данным и подмены действий (мошенничество, утечки).Другой пользователь пытается редактировать/закрыть чужое объявление, получает отказ.
NFR-SEC-003Доступ к диалогуДоступ к диалогу имеют только участники диалога.MUSTЗащита от доступа к чужим данным и подмены действий (мошенничество, утечки).Пользователь, не являющийся участником, пытается открыть диалог, получает отказ.
NFR-SEC-004Доступ к жалобам и модерацииПросмотр жалоб и действия модерации доступны только модератору.MUSTЗащита от доступа к чужим данным и подмены действий (мошенничество, утечки).Негативный тест: обычный пользователь пытается открыть раздел жалоб/модерации, получает отказ.
NFR-SEC-005Защита от подбора паролейПосле 5 неудачных попыток входа следует блокировка попыток для аккаунта на 15 минут.SHOULDПорог 5 попыток отсекает подбор пароля, но не мешает пользователю при единичных ошибках. 15 минут, достаточное время, чтобы снизить частоту попыток подбора без полной блокировки аккаунта. Это снижает риск подбора пароля, повышает безопасность входа.Смоделировать 5 неверных входов и убедиться, что вход блокируется на 15 минут.
NFR-SEC-006Логирование блокировки входаСобытие блокировки входа фиксируется в журнале событий.SHOULDСнижает риск подбора пароля и повышает безопасность входа.После срабатывания NFR-SEC-005 проверить наличие записи в логах.
NFR-SEC-007Хранение паролейПароли хранятся в базе данных только в зашифрованном виде/в виде хэша, восстановить исходный пароль из базы невозможно.MUSTДаже при утечке БД пароли не должны раскрываться в открытом виде.Проверить, что в БД нет хранения пароля в открытом виде.

2) Производительность (Performance)

IDНазваниеОписание требованияПриоритетОбоснованиеКак проверяется
NFR-PERF-001Скорость загрузки лентыЛента объявлений загружается ≤ 2 сек при выдаче до 50 объявлений.MUST50 – ограничение первой выдачи, чтобы не перегружать экран и сеть. 2 секунды – целевое время, при котором пользователь не бросает сценарий.
Быстрая лента повышает шанс, что пользователь не уйдёт на альтернативы (чаты/группы).
Замер времени загрузки ленты при выдаче 50 объявлений.
NFR-PERF-002Время ответа поиска/фильтровAPI поиска/фильтров возвращает результаты ≤ 500 мс при нагрузке до 100 RPS.MUST100 запросов/сек – оценка пикового чтения для MVP при 200 одновременных пользователях. Цель 500 мс выбрана как почти мгновенный отклик фильтров, иначе ухудшается сценарий поиска совпадений. Поиск и фильтры – ключевая ценность, задержки снижают эффективность нахождения совпадений.Нагрузочный тест API поиска/фильтров (100 запросов/сек) и замер времени ответа.
NFR-PERF-003Карта и маркерыПервичная загрузка карты и отображение маркеров в выбранном радиусе ≤ 2 сек при отображении до 300 маркеров (с кластеризацией).MUSTКарта – ключевая функция MVP, без приемлемой скорости падает полезность сервиса. 300 маркеров – предел, после которого карта становится визуально перегруженной, 2 секунды – целевое время первого появления карты/точек, иначе пользователю проще уйти в ленту.Тест: сформировать 300 объявлений в радиусе и провести замер времени загрузки карты и маркеров.

3) Надёжность (Reliability)

IDНазваниеОписание требованияПриоритетОбоснованиеКак проверяется
NFR-REL-001Доступность сервисаДоступность backend и основных функций (лента/поиск/создание/диалоги) ≥ 99.5% в месяц.MUSTДля MVP допускается компромисс, но частые простои убивают доверие и новые публикации/отклики. 99.5% выбрано как реалистичная цель для MVP при небольшой команде и внешних зависимостях.Мониторинг доступности за месяц / отчёт по инцидентам.
NFR-REL-002Ежедневное резервное копирование БДРезервное копирование БД выполняется ежедневно.MUSTПотеря объявлений/диалогов критична: ломает доверие и метрики «закрыто».Проверить расписание и наличие ежедневных бэкапов.
NFR-REL-003Хранение бэкаповХранение бэкапов БД составляет ≥ 30 дней.SHOULDСрок хранения 30 дней выбран как минимально достаточный для обнаружения ошибок (например, некорректного удаления объявлений, скрытых багов, жалоб пользователей спустя 1–2 недели). Такой период позволяет восстановиться даже если проблема выявлена не сразу.Потеря объявлений/диалогов критична: ломает доверие и метрики «закрыто».Проверить политику хранения/наличие бэкапов за прошлые периоды.
NFR-REL-004Допустимая потеря данныхПри аварии допустимая потеря данных составляет ≤ 24 часа.SHOULDДопустимая потеря данных ≤ 24 часа логически следует из ежедневного резервного копирования, в худшем случае теряются изменения, внесённые после последнего бэкапа. Для MVP это приемлемый уровень риска.Восстановление из последнего бэкапа, сравнение с временем последней копии.
NFR-REL-005Срок восстановленияПосле сбоя восстановление сервиса выполняется не более чем за 4 часа.SHOULDВремя восстановления ≤ 4 часов выбрано как реалистичная цель для MVP при небольшой команде и отсутствии круглосуточной поддержки. Данный срок включает восстановление БД из бэкапа и перезапуск сервиса.Поднять сервис из бэкапа и зафиксировать время восстановления.
NFR-REL-006Работа при недоступности картыПри недоступности API карты сервис остаётся работоспособным: лента/поиск доступны, место можно указать/фильтровать текстом (район/адрес/ориентир).MUSTВнешний провайдер карты может упасть, нужна альтернатива, чтобы сервис не останавливался.Имитация недоступности карты, проверка публикации/поиска с текстовым местом.

4) Ёмкость (Capacity)

IDНазваниеОписание требованияПриоритетОбоснованиеКак проверяется
NFR-CAP-001Пиковая нагрузка MVPСистема устойчиво обслуживает: до 200 одновременных пользователей, до 100 RPS на чтение (лента/поиск), до 20 RPS на запись (создание/маркетинга.MUSTОценка для пилота: чтение доминирует (просмотр ленты/поиска чаще, чем публикации), поэтому лимит чтения выше записи. 200 одновременных пользователей соответствует пилотному запуску без массового маркетинга.Нагрузочный тест на чтение и записи, проверка отсутствия критичных ошибок/таймаутов.
NFR-CAP-002Объём активных объявлений (в месяц)Система поддерживает до 1 000 новых объявлений в месяц.SHOULDНужны прогнозируемые лимиты для MVP и базы сопоставлений. 1 000 объявлений в месяц — ожидаемая величина для пилота в Москве (в среднем 30–40 объявлений в день), достаточная для появления совпадений.Заполнить тестовыми данными до 1 000 объявлений за расчётный период; проверить работоспособность ленты и поиска (скорость, отсутствие ошибок).
NFR-CAP-003Объём архива объявленийСистема поддерживает хранение до 100 000 объявлений в архиве.SHOULDАрхив 100 000 объявлений обеспечивает накопление истории без заметного ухудшения работы поиска при корректной индексации. Это запас для роста в рамках одного региона.Заполнить архив тестовыми данными до 100 000 записей, проверить корректность выборок и стабильность работы поиска.
NFR-CAP-004Лимиты медиафайловДля объявления: до 5 фото, размер одного фото ≤ 10 МБ (общий лимит на объявление ≤ 50 МБ).MUST5 фото достаточно, чтобы показать предмет/животное с разных ракурсов. 10 МБ – верхняя граница размера одного фото с телефона. 50 МБ на объявление ограничивает злоупотребления и расходы на хранение/трафик в MVP.Попытка загрузить 6-е фото/файл >10 МБ/суммарно >50 МБ, тогда система должна отказать.

5) Удобство использования (Usability)

IDНазваниеОписание требованияПриоритетОбоснованиеКак проверяется
NFR-UX-001Быстрая публикация объявления80% новых пользователей способны создать объявление (категория+место+время+приметы) за ≤ 3 минуты без обращений в поддержку (usability-тест на 10–20 пользователях).SHOULD3 минуты соответствует продуктовой цели MVP (быстро создать объявление). 80% – минимально приемлемая доля успешного прохождения ключевого сценария без помощи. 10–20 человек достаточно для пилотной проверки и выявления основных проблем.Usability-тест: 10–20 человек, замер времени и доли успешно завершивших сценарий.
NFR-UX-002Понятные ошибки и валидацияОшибки формы показываются рядом с полем, текст ошибки объясняет, что исправить (без технических терминов).MUSTЕсли пользователь не поймёт ошибку, то объявление не будет создано и падают совпадения и эффективность сервиса.Проверка подсветки и текста ошибок.

6) Совместимость (Compatibility)

IDНазваниеОписание требованияПриоритетОбоснованиеКак проверяется
NFR-COMP-001Поддержка браузеров и адаптивностьВеб-интерфейс корректно работает в Chrome/Firefox/Safari, адаптивность для ширины 320–1440 px.SHOULDПользователи приходят с разных устройств, нельзя терять аудиторию из‑за верстки.Кроссбраузерный тест ключевых сценариев и проверка отображения на мобильном телефоне/десктопе.
NFR-COMP-002Работа без карты как UI-сценарийЕсли карта не загружается, интерфейс предоставляет альтернативу: лента/фильтры доступны, место можно вводить текстом.MUSTЗакрывает зависимость от внешнего API на уровне пользовательского интерфейса.Имитировать сбой карты, убедиться, что лента/фильтры/ввод места текстом доступны.

7) Нормативно-правовые требования (Regulatory)

IDНазваниеОписание требованияПриоритетОбоснованиеКак проверяется
NFR-REG-001Согласия и документыДо использования функций, связанных с персональными данными (регистрация/диалоги/публикация фото), пользователь имеет доступ к политике конфиденциальности и пользовательскому соглашению, а система фиксирует факт принятия.MUSTСервис обрабатывает персональные данные, нужны прозрачные правила и фиксация согласий.Проверить: без принятия документов регистрация/публикация недоступны; факт принятия фиксируется (дата/время/версия документа).
NFR-REG-002Минимизация персональных данных в публикацияхСистема не требует и не просит публиковать категории с персональными данными(серия/номер документа, номер карты, адрес проживания). Для таких типов действуют правила публикации и подсказки, что нельзя публиковать.MUSTСнижает риск утечек и мошенничества, способствует безопасной передачи вещи.Проверить формы: нет обязательных полей “номер/серия/адрес”; при выборе типа показываются подсказки “что нельзя публиковать”.
NFR-REG-003Реактивная модерация и удаление контентаПо жалобам модератор может скрыть объявление, запросить правку или ограничить аккаунт.SHOULDПлатформа с пользовательским контентом без механизма реакции быстро превращается в спам/мошенничество.Тест: отправить жалобу, увидеть её у модератора; применить действие “скрыть”, объявление пропадает из выдачи.

2.2 Обоснование непокрытых категорий

В НФТ MVP сознательно включены категории, которые прямо влияют на ценность сервиса и безопасность пользователей: Security, Performance, Reliability, Capacity, Usability, Compatibility, Regulatory.

Ниже описаны категории, которые не детализированы в MVP, и написана аргументация.

1) Масштабируемость (Scalability)

  • Почему не критична: MVP ограничен Москвой и пилотной аудиторией. На старте важнее подтвердить, что сервисом пользуются (есть объявления, есть отклики, закрытия), чем закладывать требования под федеральную нагрузку.

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

  • План: уточнить требования по масштабированию в V2/V3 на основе данных пилота (реальные пики, рост объявлений, нагрузка по модулям).

2) Наблюдаемость (Observability)

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

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

  • План: в V2 добавить детальные метрики, дашборды и уведомления по порогам (после появления статистики и типовых инцидентов).

3) Поддерживаемость (Maintainability)

  • Почему не критична: На этапе MVP важнее проверить работоспособность ключевых сценариев и собрать обратную связь. Детальные требования к процессам разработки и качеству кода целесообразно формализовать после пилота, на основе фактических рисков и темпа изменений.

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

  • План: в V2 закрепить минимальные требования к тестированию критичных сценариев (публикация/поиск/owner-check) и к документации API.