NFR Prioritization
Balancing competing requirements, trade-off matrices, stakeholder alignment
NFR prioritization is the structured process of ranking non-functional requirements by business impact, technical feasibility, and cost — because no system can simultaneously maximize all NFRs without infinite budget. The core insight is that NFRs trade off against each other: maximum security adds latency, maximum availability adds cost, maximum portability prevents use of optimal native services. Trade-off matrices and stakeholder workshops (using techniques like MoSCoW, weighted scoring, or quality attribute workshops from ATAM) make these trade-offs explicit before architecture decisions lock them in. Documenting prioritization rationale in ADRs prevents re-litigation of settled decisions as teams and stakeholders change.
Key Points
- ATAM (Architecture Tradeoff Analysis Method) is the formal IEEE method for evaluating architectures against quality attribute scenarios — used for high-stakes systems in defense, finance, healthcare.
- MoSCoW for NFRs: Must Have (system fails without it), Should Have (important but workarounds exist), Could Have (nice to have), Won't Have (explicitly deferred).
- Security vs. performance trade-off: TLS handshake adds 1-3 RTTs; encryption/decryption adds CPU overhead — quantify the cost before assuming security is prohibitive.
- Availability vs. cost trade-off: each additional "nine" of availability roughly doubles infrastructure cost — business must calculate the cost of downtime to justify the investment.
- Consistency vs. availability (CAP theorem): under network partition, choose one — financial transactions choose consistency (CP); social feeds choose availability (AP).
- Portability vs. operational simplicity trade-off: using managed cloud services accelerates delivery but increases lock-in — evaluate lock-in risk by asking "what is the migration cost in 5 years?".
- NFR prioritization must be revisited at each major milestone (MVP, scale-up, international expansion) as business context changes — what was a 'Could Have' at MVP becomes a 'Must Have' at 10M users.
- Weighted scoring matrix: assign weights to NFR categories (security 30%, performance 25%, cost 20%, maintainability 15%, portability 10%) then score each architectural option against each NFR.
Real-World Example
When WhatsApp was acquired by Facebook for $19B in 2014, it operated with 450M users and only 32 engineers — a testament to deliberate NFR prioritization. They explicitly deprioritized feature richness, portability, and UI polish in favor of extreme reliability, performance, and cost efficiency, using Erlang's actor model and FreeBSD to achieve millions of concurrent connections per server.