Ответ
Сбор нефункциональных требований — кросс-функциональная задача, в которой участвуют несколько технических ролей.
Основные участники и их вклад:
-
Архитектор / Технический лид
- Определяет требования к масштабируемости, отказоустойчивости и общей архитектуре.
- Пример: "Система должна горизонтально масштабироваться под нагрузку в 10k RPS".
-
DevOps / SRE-инженер
- Формулирует требования к деплою, мониторингу, логированию и инфраструктуре.
- Пример: "Время восстановления сервиса (MTTR) должно быть не более 5 минут".
-
QA-инженер (Performance/Security)
- Определяет требования к производительности, нагрузочному тестированию и безопасности.
- Пример: "Время отклика 95-го перцентиля для API должно быть < 200 мс".
-
Бизнес-аналитик / Менеджер продукта
- Собирает бизнес-ожидания, которые трансформируются в NFR (например, требования к uptime SLA).
Пример документации и валидации NFR:
// NFR: "Время ответа эндпоинта GET /api/orders не должно превышать 150 мс"
@SpringBootTest
@AutoConfigureMockMvc
public class OrderApiPerformanceTest {
@Test
public void getOrder_ResponseTimeUnderThreshold() throws Exception {
for (int i = 0; i < 1000; i++) {
long startTime = System.currentTimeMillis();
mockMvc.perform(get("/api/orders/1"));
long responseTime = System.currentTimeMillis() - startTime;
assertThat(responseTime)
.as("Response time for request #%d", i)
.isLessThan(150); // Проверка против NFR
}
}
}
NFR должны быть измеримы, тестируемы и зафиксированы в документации (Confluence, ADR) и трекере задач (Jira).