Non-Functional Requirements
Brief Introduction
Let’s say you are building a website that allows users to book flight tickets. The requirements for the functioning of your website are simple: The user should be able to search for available flights with appropriate filters, select any flight, and make payments to book the flight.
While these are enough requirements for the system to function, you should also care about user experience. Users who visit your website expect certain things when browsing today’s modern websites. For example: the user should be able to load the page in under 2 seconds. If your website takes more than 10 seconds to load, then even though your website will load at 10.1 seconds, the user will get frustrated and move away to other websites.
Similarly, making payments to book the flight is a functional requirement of the system. However, the payment should be secured enough that it does not leak the user’s bank account details or other sensitive data is a non-functional requirement of the system.
While Functional requirements tell what a system is supposed to do, Non-functional Requirements define how the system should operate including things like speed, security, reliability, data integrity, etc.
Another example to consider is sending an email after a successful booking is a functional requirement whereas sending an email within 1 minute of a successful booking provides a good customer experience and thus it’s a non-functional requirement.
(Sponsored)
A big shout out to the sponsor for this edition who help to run this newsletter for free ?? Multiplayer auto-documents your system, from the high-level logical architecture down to the individual components, APIs, dependencies, and environments. Perfect for teams who want to speed up their workflows and consolidate their technical assets.
Types of Non-functional Requirements
To put it into a more formalized approach to analyzing non-functional requirements, here’s a short list with a detailed description:
(FR = Functional Requirement, NFR = Non-functional Requirement)
Some important NFRs sketched using Multiplayer
There’s a whole list of other Non-functional requirements like usability of the app/website, compliance with GDPR rules for Europe, etc. I would keep them out of the scope of our discussion for now as they are a little bit more specific.
领英推荐
Why discussing Non-functional requirements while designing a system is important?
Primarily because of two important reasons:
Case Study: Video Streaming platform
Let’s say you think about designing a video streaming platform. The following will be considered as the non-functional requirements of the platform:
By addressing these NFRs, we will be able to build a streaming platform that delivers a high-quality video streaming experience.
Comparison between Functional and Non-Functional requirements
At last, I would like to put in some examples for a clear distinction between functional requirements and non-functional requirements.
FR vs NFR sketched using Multiplayer
That’s it, folks for this edition of the newsletter. Hope you liked this edition. I wanted to explore more around Semantic Search but will reserve that for the future editions.
Please consider liking ?? and sharing with your friends as it motivates me to bring you good content for free. If you think I am doing a decent job, share this article in a nice summary with your network. Connect with me on Linkedin or Twitter for more technical posts in the future!
Curious Engineer is a reader-supported publication. To receive new posts and support my work, consider becoming a free subscriber.
See you all in the next one!
Front end Devloper
3 周Useful articles thanks for Sharing it Vivek Bansal
Software Engineer | NodeJs | Typescript | ReactJs | AWS | Java
3 周I think in the case study, the bandwidth point should be included in the Functional requirement. What you think Vivek Bansal