Functional vs Non Functional Requirements

Functional vs Non Functional Requirements

Functional requirements

Functional requirements are about what the system does.

They typically start with the phrase "User should be able to...".

For Twitter, as an example:

  • User should be able to log in.

  • User should be able to tweet.

  • User should be able to follow other users.

  • User should be able to reply to tweets.

  • User should be able to like tweets.

  • User should be able to search for tweets.

  • ...

Non-functional requirements

Non-functional requirements are about how the system behaves.

They typically start with phrases like "System should...".

For Twitter, as an example:

  • System should be highly available -> OK for stale data to be shown at times.

  • System should have low latency -> Users expect things to be fast, think about caching, fan-out on write, etc.

  • System should be scalable -> Should be able to handle more users, tweets, etc. Think about bandwidth and storage.