Describing a SystemFunctional Vs Nonfunctional Requirements

Functional requirements should describe what a system does, not how it. Nonfunctional requirements are those that describe how a system should work. These two types of requirements are often confused, but it's important to be able to identify and distinguish between them.

Functional Requirements

Functional requirements are those that describe what a system should do. For example, if you were designing a messaging app, a functional requirement would be the ability to send and receive messages. Functional requirements are typically expressed in terms of inputs and outputs; in our messaging app example, the input would be the message that you want to send, and the output would be the message appearing in the recipient's inbox. 

Nonfunctional Requirements 

Nonfunctional requirements are those that describe how a system should work. They are usually concerned with aspects such as performance, scalability, security, and usability. For our messaging app example, a non-functional requirement would be the need for messages to be delivered instantaneously (i.e. with low latency). 

What to Know

Both functional and non-functional requirements are important for your system design interview because you need to be able to understand and articulate both types of requirements in order to design a well-rounded system. Where many candidates trip up is in confusing functional requirements with implementation details. It's important to remember that functional requirements should describe WHAT a system does, not HOW it does it. So, when you're preparing for your interview, make sure that you can clearly distinguish between the two types of requirements

Head over to any problem to see the difference between functional and Nonfunctional requirements

Related Problems