The end goal of a project is to deliver a high quality product exactly as the customer asked for. Functional requirements are the primary way that a customer communicates their requirements to the project team. Functional requirements help to keep project team going in the right direction.
Unclear requirements leads to a poorly defined scope that creates a lot of challenges from the beginning of the project. A poorly defined scope leads to extension in the schedule and increase in cost. The customer may not have the time and money to invest, so they just accept a product with low quality.
Typically, the customer has both needs and wants. After seeing the cost estimate, they may ask to reduce the scope. Usually removing some of the non-functional requirements reduces the scope. A lot of non-functional requirements can quickly drive up the cost, while insufficient non-functional requirements may lead to bad user experience.
Understanding the difference between functional and non-functional requirements will help both, the client and the IT supplier as they will be able to understand their requirements clearly. This leads to scope refinement, optimized cost, and finally a happy customer.
If there is any one thing any project must have in order to prevent failure, is a sensible and comprehensive collection of both the functional and non-functional requirements.
Any project’s requirements need to be well thought out, balanced and clearly understood by all involved, but perhaps of most importance is that they are not dropped or compromised halfway through the project.
However, what exactly is the difference between ‘functional’ and ‘non functional’ requirements? It’s not that complex, and once you understand the difference, the definition will be clear.
The official definition of ‘a functional requirement’ is that it essentially specifies something the system should do.
Typically, functional requirements will specify a behavior or function, for example:
“Display the name, total size, available space and format of a flash drive connected to the USB port.” Other examples are “add customer” and “print invoice”.
What are Functional Requirements?
The definition of a functional requirement is:
“Any requirement which specifies what the system should do.”
In other words, a functional requirement will describe a particular behavior of function of the system when certain conditions are met, for example: “Send email when a new customer signs up” or “Open a new account”.
A functional requirement for an everyday object like a cup would be: “ability to contain tea or coffee without leaking”.
Some of the more typical functional requirements include:
- Business Rules
- Transaction corrections, adjustments and cancellations
- Administrative functions
- Authorization levels
- Audit Tracking
- External Interfaces
- Certification Requirements
- Reporting Requirements
- Historical Data
- Legal or Regulatory Requirements
So what about Non-Functional Requirements? What are those, and how are they different?
Simply put, the difference is that non-functional requirements describe how the system works, while functional requirements describe what the system should do.
The definition for a non-functional requirement is that it essentially specifies how the system should behave and that it is a constraint upon the systems behaviour. One could also think of non-functional requirements as quality attributes for of a system.
What are non-functional requirements?
The definition of a non-functional requirement is:
“Any requirement that specifies how the system performs a certain function.”
In other words, a non-functional requirement will describe how a system should behave and what limits there are on its functionality.
Non-functional requirements cover all the remaining requirements which are not covered by the functional requirements. They specify criteria that judge the operation of a system, rather than specific behaviours, for example: “Modified data in a database should be updated for all users accessing it within 2 seconds.”
A non-functional requirement for the cup mentioned previously would be: “contain hot liquid without heating up to more than 45°C”.
Even in the case when the non-functional requirements are not met the basic functionality will not be impacted.
If the functionality of the product is not dependent on non-functional requirements then why are they important? The answer is in usability. Non-functional requirements affect the user experience as they define a system’s behavior, features, and general characteristics.
Non-functional requirements when defined and executed well will help to make the system easy to use and enhance the performance.
Non-functional requirements focus on user expectations, as they are product properties.
Let’s take an example of a functional requirement. A system loads a webpage when someone clicks on a button. The related non-functional requirement specifies how fast the webpage must load. A delay in loading will create a negative user experience and poor quality of the system even though the functional requirement is fully met.
Some typical non-functional requirements are:
- Performance – for example Response Time, Throughput, Utilization, Static Volumetric
- Data Integrity
As said above, non-functional requirements specify the system’s ‘quality characteristics’ or ‘quality attributes’.
Many different stakeholders have a vested interest in getting the non-functional requirements right particularly in the case of large systems where the buyer of the system is not necessarily also the user of the system.
The importance of non-functional requirements is therefore not to be trifled with. One way of ensuring that as few as possible non-functional requirements are left out is to use non-functional requirement groups. For an explanation on how to use non-functional requirement group, read this blog post which will give you four of the main groups to use.
Difference between functional and non-functional requirements:
|They define a system or its component.||They define the quality attribute of a system|
|It specifies, “What the system should do?”||It specifies, “How should the system fulfill the functional requirements?”|
|User specifies functional requirement.||Non-functional requirement is specified by technical peoples e.g. Architect, Technical leaders and software developers.|
|It is mandatory to meet these requirements.||It is not mandatory to meet these requirements.|
|It is captured in use case.||It is captured as a quality attribute.|
|Defined at a component level.||Applied to a whole system.|
|Helps you to verify the functionality of the software.||Helps you to verify the performance of the software.|
|Functional Testing like System, Integration, End to End, API testing, etc are done.||Non-Functional Testing like Performance, Stress, Usability, Security testing, etc are done.|
|Usually easy to define.||Usually more difficult to define.|
Examples of functional and non-functional requirements:
Below you can check the list of functional and non-functional requirements examples:
Functional Requirements Example:
- Authentication of a user when he/she tries to log into the system.
- System shutdown in the case of a cyber attack.
- Verification email is sent to user whenever he/she registers for the first time on some software system.
Non-functional Requirements Example:
- Emails should be sent with a latency of no greater than 12 hours.
- Each request should be processed within 10 seconds.
- The site should load in 3 seconds when the number of simultaneous users are > 10000
How to gather functional and non-functional requirements?
Guided brainstorming session is one of the best ways to gather requirements by getting all stakeholders together. You should include user representatives who are the best sources of non-functional requirements.
Basically functional requirements can be divided into 4 groups which are:
Business requirements. They contain the ultimate goal, such as an order system, an online catalogue, or a physical product. It can also include things like approval workflows and authorization levels.
Administrative functions. They are the routine things the system will do, such as reporting.
User requirements. They are what the user of the system can do, such as place an order or browse the online catalogue.
System requirements. These are things like software and hardware specifications, system responses, or system actions.
Once the functional requirements are defined then its time to think about the non-functional requirements, such as:
Usability. This focuses on the appearance of the user interface and how people interact with it. What colour are the screens? How big are the buttons?
Reliability / Availability. What are the uptime requirements? Does it need to function 24/7/365?
Scalability. As needs grow, can the system handle it? For physical installations, this includes spare hardware or space to install it in the future.
Performance. How fast does it need to operate?
Supportability. Is support provided in-house or is remote accessibility for external resources required?
Security. What are the security requirements, both for the physical installation and from a cyber perspective?
How to write functional and non-functional requirements?
There are different ways to write functional and non-functional requirements.
The most common way to write functional and non-functional requirements is through a requirements specification document. It is a written description of the required functionality.
It states the project objective and includes an overview of the project to provide context, along with any constraints and assumptions. The requirements specification document is should include visual representations of the requirements to help non-technical stakeholders understand the scope.
Closely related to a requirements specification document is a work breakdown structure or WBS. This breaks down the entire process into its components by “decomposing” the requirements into their elements until they cannot be broken down any further.
Another approach is user stories. They describe the functionality from the perspective of the end-user and states exactly what they want the system to do.
It effectively states “As a <type of user>, I want <goal> so that <reason>”. One benefit of user stories is that they do not require much technical knowledge to write. User stories can also be used as a precursor to a requirements specification document by helping define user needs.
Use cases are similar to user stories in that no technical knowledge is necessary. Use cases simply describe in detail what a user is doing as they execute a task. A use case might be “purchase product”, and describes from the standpoint of the user each step in the process of making the purchase.
Join 60,000+ Subscribers
For latest blogs, industry updates and exclusive tips.
*Your email is safe with us, we also hate spam
Join the discussion
explanation between non functional and functional was pretty clear.
This article is very simply, very good. Thanks for uploading it!
very simple guide sir……
Nice explanation, thanks.
Thank you for attacking this differentiation. I am someone that focuses on some areas that are often confused on the difference between functional and non-functioinal. I work in the space of Standards for Interoperability, Privacy, and Security. I see on your blog that you seem to have also included these concepts in both your functional and non-functional list. Thus I need some help further differentiating. For example: You say Authentication is Functional, yet Security is not. Where Authentication is a capability of security.
It means that system must be security and perform security functions. Whereas, security is also a requirement rather as a whole module than idividual module. The logic inside codes may be use to provide security that is functional requirements whereas the security certifications/tags can be taken as a non-functional.
Perfect! very well explained and so easy to understand!
Thanks a ton for explaining It in such a nice manner..finally doubt cleared.
I’d agree with John that it’s quite hard to see security as non-functional.
The other one is your non-functional example – surely a hard hat not breaking under a certain load is an example of a Functional requirement not a non-functional. By your own definition “functional requirements describe what the system should do” – it should not break under a certain load.
I’ve always thought of non-functional requirements as constraints –
Must be achievable with current technology
Must be deliverable by the deadline
Must be deliverable within budget
Good to see people tackling the issue though.
Think of non-functional requirements as constraints, incorporating too much non- functional requirements can be reason for shelving the project by senior stake holders:
• Must be achievable with current technology.
• Must be important to be included.
• Must be deliverable by the deadline.
• Must be deliverable within budget.
Good points Samarjeet!
There are many grey areas when differentiating Functional and non-functional.
In respect to security – the function is password logon. However the essence of security is along the lines of the systems ability to not be penetrated hence it doesn’t focus so much on the element for password operated entry more along the lines of getting information out of the system (username,[password) known as ‘ethical hacking’ which doesn’t just rely on the application but also infrastructure/dbase/account management system etc
And similarly with performance, its not the function handling that call, it depends on the infrastructure supporting that function and giving it the resources to handle the load.
Very simple and precise explanation. Thank You!
very good and it is useful for the student .thanks for uploading
I am from Taiwan, I live in the Taipei city .
I am confused with the functional requirements and non- functional requirements too.
Thanks for all of your explanations, they help me a lot.
Nicely exaplined really helped me out
Good and precise explanation….
Yes – I am in agreement with David Lloyd – as such topics as security: How do we handle Role based security to access certain documents? How can this be considered non- functional when it is the core of the project requirements?
Scalability – this should a functional requirement. Example – “System must support 150 concurrent AutoCAD sessions and 2500 read only users ”
– this one of those requirements that scans a few areas. will system hand that many users at a time? In testing this is one of the most crucial functions that must pass.
All in all – excellent blog.
SYSTEM MUST SUPPORT CONCURRENT USERS IS functional
SYSTEM MUST SUPPORT ‘HAPPY USERS’ IS NON-FUNCTIONAL
NON-FUNCTIONAL – THINK ABOUT ADJECTIVES, OR ADVERBS, OR HOW MUCH, MANY, HOW LONG, HOW SHORT. IT’S LIKE DESCRIBING THE FUNCTIONAL, WITH THE NON-FUNCTIONAL.
the system must run.. but 24/7, and an uptime of 24/7, is a non-functional requirement that says something about a functional requirement already established
Excellent blog and a great simplification.
I don’t want to beat any dead horses, but I think the point is that Functional vs. Non-functional requirements are always a muddy area. The more we deep think it, the more muddy and grey it gets. I can’t say how many time we’ve sat in a room with 15 people and can’t agree on this very subject.
Regarding security. It’s mostly non-functional in my experience, but there can certainly be some aspects of security that are spelled out in functional. This is always a hot button conversation with a lot of debate, but some of security can be an ability to statement and deserves to be included. Either way, they are important no matter where we place them. Be sure to use a traceability matrix and ensure that the requirements are all tested.
Nice job Ulf!
i have gained much from the explanation
Thanks for the explanation. Along the same line with security, I think Interoperability should be in the “functional requirement” group vs “non-functional requirement” group. For example:” System A shall exchange data (or communicate) with System B” is an example of functional requirement and the function is “exchange data or communicate”. If the definition of functional and non-functional is not clearly defined, then how system function decomposition can be performed accurately?
I have always looked at non-functionals as an expansion or constraint tied to a functional requirement. What are you thoughts on that thought process.
This article helped me a lot.
I am a software engineering student and a blogger too. I was just wondering and was looking around to differentiate fun and non-fun req. I found this article very useful and it helped me out for my assignment.
this is unsuccessful.
clear and crisp. Good explanation
Very simple and precise explanation. Great job Ulf!
Nice summary of concepts that may not always be crystal clear. Thanks.
If I have to design and develop an online application for a store with two interfaces, one mainly for the shop management to deal with data administration and the other will be used by customer. The interface requirements may keep on changing and team has to work with multiple versions. The development team has to deploy the proposed application considering all requirement changes. The major requirements of the system are • Provide comprehensive product details. • Detailed product categorization • Maintain customer profile • Email confirmation to customers.
• Provide shopping cart facility • Provide multiple payment methods.
How I can specify the Functional Requirements And Non Functional Requirements for my project???
Please help me to find it.
In tbe end, why does it matter functional requirements may be left out in the final agreement. Non functional requirements may be determined essential. Spending time categorising us nowhere near as important as collating and agreeing. If in doubt, collect them by area/type and worry not whether they are non-functionsl, as long as all parties agree they are clear, deliverable, correct and unambiguous.
Great write up! One question, would you differentiate “implementation” or “transition” requirements from non-functional? Or perhaps you only need functional and non-functional to describe the system versus how to get from current state to future state in the scope of your write up?
Thanks for your feedback. To take the system from one state to another, you will need both functional and non-functional requirements.
Typical non-functional requirements that are of importance in this case are usability and performance.
When adding features to an existing system it is important to describe even the existing functional features, since there are often features no longer used. Start writing them as user stories and deliver new functionality iteratively. I wish you luck!
well precise and good work ……
please explain why the following is a non functional requirement:
users must have authorized user names to access data records.
Very good Explanation
good!,one question why we need to classify requirments
Thanks for giving a detailed info… about the two types of requirements, but if you give these two types of requirements with example in some business area or in some project it is more clear for any reader.
In a better position now…
It’s a short ‘n’ clear info…big up
Thank you so much for the valuable insights.
I had exam of Software Engineering yesterday!
combo of your article and https://www.daaminotes.com/2017/10/17/functional-and-non-functional-requirements/ helped me a lot.
It was just the information I was looking for.
keep going 🙂
Informative post, this is. It is always nice to come across a post that is useful.
Very revealing bless you, I do think your current audience might want a whole lot more content such as this continue the excellent work.
This is the best explanation with easy-understandable examples I have found on web.
I think the “must not break under pressure of less than 10,000 PSI” is a functional requirement because it specifies something that the hard hat should (or in this case should not) do. A non-functional requirement might be something like “must be comfortable to wear” as this describes a quality of the hard hat. Interesting and useful article though – thanks.
Thanks for this REQ test, but i’m still confused is it works? or just a dumy test?
I would like to thank you for your nicely written post, its informative and your writing style encouraged me to read it till the end. Thanks
I am a student of level 05 in ICT, continuously every past papers asked the functional and non functional requirements and this site explain the difference between of both functions and gives suitable examples very clearly. Thank you so much @ReQtest.
Assign the paper to an author and set the deadline.
thank you reqtest for giving me wonderful information
It’ѕ really a nice and useful piece оf information. I am glad thɑt you shared this useul іnformation with ᥙs.
Plеase keep us informed ⅼike tһis. Tһank ｙ᧐u for sharing.
Awesome information over again! Thank you:)
If you are going for finest contents like myself, just go to see
this site everyday because it offers quality contents, thanks
Hello there! This is my first visit to your blog!
We are a team of volunteers and starting a new project in a community in the same niche.
Your blog provided us useful information to work on. You have done a