# 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 -&gt; OK for stale data to be shown at times.
    
* System should have low latency -&gt; Users expect things to be fast, think about caching, fan-out on write, etc.
    
* System should be scalable -&gt; Should be able to handle more users, tweets, etc. Think about bandwidth and storage.
