Functional vs. Non-functional Requirements

Functional requirements describe what the system must do: register users, publish a post, upload a file, or process a payment. Non-functional requirements (NFRs) describe qualities and constraints: latency, availability, durability, security, cost, maintainability, and compliance.

Turn vague goals into measurable statements. “Fast” could mean p95 read latency below 200 ms for a specified workload. “Highly available” could mean 99.95% monthly availability for a defined API. Numbers must be negotiated with stakeholders; they are not universal defaults.

Separate must-haves from preferences. A payment platform may prioritize correctness and auditability over accepting every request during a partition. A social feed may prefer serving slightly stale content over failing completely. These choices influence architecture long before code is written.

Specifications & Requirements
  • Functional example:A user can create and retrieve a shortened URL.
  • Quality example:95% of redirects complete within 100 ms in the target region.
  • Constraint example:Personal data must be encrypted and retained for a defined period.
Key Takeaways
  • Write observable requirements.
  • Attach a workload, percentile, region, and time window to performance targets.
  • Different product features may require different consistency and availability choices.
Knowledge Check

Which is a non-functional requirement?