Back to roadmap
Module 1 · Foundations & MethodDay 00325 min

Functional vs Non-Functional Requirements

What the system does vs how well it does it.

Day 003

Functional vs Non-Functional Requirements

Latency
service
Availability
service
Features
service
UX flows
service
Architecture
datastore
Signal path
FRs vs NFRs and the architecture they drive
Functional
note
flow
Features
service
Functional
note
flow
UX flows
service
Non-functional
note
flow
Latency
service
Memory hook

Functional vs Non-Functional Requirements: what the system does vs how well it does it

Mental model

frame the problem before drawing the system

Design lens

Tighter latency targets push compute and data to the edge.

Recall anchors
FunctionalNon-functional

Why it matters

Functional requirements answer 'what does the system do?' — sign up, post a tweet, search products. Non-functional requirements answer 'how well does it do them?' — at what latency, at what scale, with what availability, at what cost. Most architectural decisions are driven by NFRs, not FRs.

Deep dive

FRs are usually easy to list and look like product specs. NFRs are easy to wave away with words like 'fast' and 'reliable' that mean nothing in design. The job is to turn each NFR into a number: p95 < 200ms, 99.9% monthly availability, 10k QPS sustained at peak.

NFRs frequently collide with each other. Strong consistency fights low latency. High availability fights cost. Encryption everywhere fights debuggability. Ranking NFRs is a product decision; making the tradeoff visible is an engineering one.

Some NFRs are architecturally load-bearing: a 99.99% target almost forces multi-region active-active; sub-50ms global p95 forces edge compute; sub-cent unit cost forces aggressive caching and shared infrastructure.

Demo / scenario

Spec says 'a fast, reliable checkout that scales globally.'

  1. Translate 'fast' → p95 add-to-cart < 150ms, p95 checkout < 800ms.
  2. Translate 'reliable' → 99.95% checkout success/month, no double-charge.
  3. Translate 'globally' → users in NA/EU/APAC get <200ms p95.
  4. Notice that 'no double-charge' is a correctness FR disguised as an NFR.

Tradeoffs

  • Tighter latency targets push compute and data to the edge.
  • Higher availability targets multiply infra cost roughly with each 9.
  • 'No double-charge' forces idempotency keys end-to-end.

Diagram

Functional
What
Non-functional
How well
Latency
Availability
Features
UX flows
Architecture
FRs vs NFRs and the architecture they drive.

Mind map

Check yourself

Loading quiz…

Sources & further reading