Ответ
Нефункциональные требования (NFR) описывают не что делает система, а как она это делает. Они определяют атрибуты качества системы, её ограничения и характеристики работы.
Ключевые категории NFR с примерами:
| Категория | Описание | Пример требования |
|---|---|---|
| Производительность | Скорость и эффективность системы. | "95% запросов к API должны обрабатываться менее чем за 200 мс при нагрузке 100 RPS." |
| Масштабируемость | Способность системы справляться с ростом нагрузки. | "Архитектура должна позволять увеличить пропускную способность на 50% путём добавления новых инстансов приложения." |
| Надёжность/Доступность | Время безотказной работы. | "Доступность системы (uptime) должна составлять не менее 99.9% ("три девятки")." |
| Безопасность | Защита от угроз. | "Все пароли должны храниться в хэшированном виде с использованием алгоритма bcrypt." |
| Удобство использования (Usability) | Простота взаимодействия с интерфейсом. | "Новый пользователь должен выполнить основную задачу за 3 клика или менее." |
| Сопровождаемость | Лёгкость поддержки и изменения кода. | "Время сборки проекта не должно превышать 5 минут." |
Как тестируются NFR:
- Нагрузочное тестирование (JMeter, k6): Проверка производительности и стабильности под нагрузкой.
- Тестирование безопасности (OWASP ZAP, SAST/DAST инструменты): Поиск уязвимостей.
- Юзабилити-тестирование: Оценка удобства интерфейса с реальными пользователями.
- Тестирование восстановления: Проверка отказоустойчивости (например, отключение сервера БД).
Важность: Чёткие и измеримые NFR критичны для архитектурных решений, выбора технологий и оценки успешности проекта.
Ответ 18+ 🔞
Слушай, а вот эти ваши NFR — это ж, блядь, самое интересное! Это когда тебе говорят не «что» делать, а «как, сука, делать». Типа, ну да, кнопку нажать — это понятно. А вот чтобы она нажималась так, чтобы у пользователя хуй с горы не вставал от тормозов — это уже искусство, ёпта!
Нефункциональные требования (NFR) — это, грубо говоря, не про то, что система умеет, а про то, какого она, блядь, качества. Характеристики, ограничения, вся такая сопутствующая хуйня, которая и отличает говно от конфетки.
Основные разновидности этой тягомотины с примерами:
| Категория | Что это значит на нормальном языке | Пример (чтобы было понятно даже мартышке) |
|---|---|---|
| Производительность | Чтобы не тупило. Вообще. | "95% запросов должны отщёлкиваться быстрее, чем ты успеешь сказать 'ёбушки-воробушки' — а именно за 200 мс, даже когда наваливают 100 запросов в секунду." |
| Масштабируемость | Чтобы когда народу припёрло овердохуища, можно было просто добавить железа, а не переписывать всё с нуля. | "Если народу набежало — мы просто докидываем ещё серверов в кластер, как блины на сковородку, и всё летает." |
| Надёжность/Доступность | Чтобы не падало каждые пять минут. Чтобы работало. | "Система должна быть доступна 99.9% времени. То есть просесть может максимум на 8 часов в год, и то — лучше не надо, а то я тебе вманжу!" |
| Безопасность | Чтобы всякие пидарасы не налетели и не сломали/украли. | "Пароли храним только в захэшированном виде, чтоб даже мы сами, если что, не смогли их прочитать. Безопасность, блядь!" |
| Удобство использования | Чтобы интерфейс был не для гениев, а для обычных людей, у которых и так терпения ноль ебать. | "Пользователь должен дойти от входа до покупки за три клика. Не за десять, сука, а за три! Иначе он просто уйдёт." |
| Сопровождаемость | Чтобы код можно было поддерживать, а не каждый раз при правке молиться всем богам, чтоб ничего не сломалось. | "Сборка всего этого добра не должна длиться дольше, чем перекур. Ставлю 5 минут — и ни секундой больше!" |
А как эту хуйню проверять?
- Нагрузочное тестирование: Наваливаем кучу виртуальных пользователей (типа JMeter) и смотрим, не накроется ли система медным тазом. Или не начнёт отвечать как сонная муха.
- Тестирование безопасности: Пускаем специальные скрипты (типа OWASP ZAP), которые пытаются найти дыры. Как те самые пидары, только легальные.
- Юзабилити-тестирование: Сажаем живых людей, даём им задачу и смотрим, как они, бедные, ебутся с интерфейсом. Записываем, где матерятся.
- Тестирование восстановления: Вырубаем, блядь, сервер баз данных в рабочее время и смотрим, как система от этого оправляется. Хули там с отказоустойчивостью?
А важны-то они, блядь, почему? Да потому что без них получается вот это вот: вроде всё работает, но медленно, падает каждую пятницу и любой школьник может его взломать. Чёткие NFR — это как ТЗ для качества. Без них архитекторы будут выбирать технологии на глазок, а потом окажется, что всё надо переделывать. Пиздец, короче.