Weekly thoughts: What is the difference between Functional and Non-Functional requirements?

When I first see the question, the first answer that comes to me is that functional requirements are more aimed to solve the problem “what does the system do” while the non-functional requirements solve the problem of “how does the system do that”.

For example, in a library application, a functional requirement could be “a user can search a book from inputting a keyword” while a non-functional requirement could be “book search from inputting a keyword should be finished within 3 seconds.”

Sommerville(2015) also points out another difference between them. He mentions non-functional requirements “specify or constrain characteristics of the system as a whole” while functional requirements are “directly concerned with the specific services delivered by the system to its users”.

Let’s take the library app as an example again, functional requirements like “A user can borrow a book”, “A user can return a book” usually are related to some certain components in the app. However, the non-functional requirements like “make sure the app is lightweight” are related to the whole app’s memory use.

Also, Sommerville mentions one type of non-functional requirements is external requirements, which means “(a) broad heading covers all requirements that are derived from factors external to the system and its development process”. That’s very different from functional requirements since they are usually about the development process.

For example, one of the functional requirements for the library app might be “The system should allow a user to sign up an account with the user’s personal information”, but the non-functional requirement might be “the collection of data should conform to privacy legislation”, which is derived from political factors.

Note: After I finished this post yesterday, I went through all of my classmates’ post and some more reading materials, I have the feeling non-functional requirements are extremely critical for a product, even more than functional requirements because there are a lot of applications in the store aiming at almost the same functional requirements and have similar user stories. However, what makes them stand out is “how” they implement in terms of security issues and efficiency and other performance attributes. I am not sure if it is right since I don’t have too much real-life experience, but still want to add this extra thought here so if I understand it wrongly, let me know! Also, grateful for all my classmates that leave their valuable ideas! Very helpful :)

References

Sommerville, I(2015).Software Engineering. Tenth Edition. England: Pearson Education.

--

--

--

Software engineer and a blockchain noob. Excited about the new world!!LinkedIn:https://www.linkedin.com/in/yingqi-chen/

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Building a Flutter IOS App with Codemagic and Github Actions

How to get the MFC WhiteList — Infographic

Publish Events, not Logs

How to root Zen u5

Root android phone

Building a HTTP Proxy using Netcat on Linux

List Comprehension

3 top-tier apprenticeships you should apply to

Smartlink Roadmap Update: Token Vesting Locker, Vortex v2, and More

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Yingqi Chen

Yingqi Chen

Software engineer and a blockchain noob. Excited about the new world!!LinkedIn:https://www.linkedin.com/in/yingqi-chen/

More from Medium

Mountaineers Who Survived Deadly Bivouacs To Become Living Legends

The letters

QUICK SORT:

Decision Tree Algorithm