Functional vs Non Functional Requirements

By 5th April 2012 October 9th, 2019 Requirements

If there is any one thing any project must have in order not to be doomed to failure, that 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 behaviour 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”.

A functional requirement for a milk carton would be “ability to contain fluid without leaking”

Some of the more typical functional requirements include:

  • Business Rules
  • Transaction corrections, adjustments and cancellations
  • Administrative functions
  • Authentication
  • 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.

A non-functional requirement for a hard hat might be “must not break under pressure of less than 10,000 PSI”

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.”

Some typical non-functional requirements are:

  • Performance – for example Response Time, Throughput, Utilization, Static Volumetric
  • Scalability
  • Capacity
  • Availability
  • Reliability
  • Recoverability
  • Maintainability
  • Serviceability
  • Security
  • Regulatory
  • Manageability
  • Environmental
  • Data Integrity
  • Usability
  • Interoperability

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.

Join 60,000+ Subscribers

For latest blogs, industry updates and exclusive tips.

*Your email is safe with us, we also hate spam

Recent Blogs

Join the discussion

  • rudiman says:

    This article is very simply, very good. Thanks for uploading it!

  • ashok kumar burania says:

    very simple guide sir……

  • Vijay says:

    Nice explanation, thanks.

  • John Moehrke says:

    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.

    • Ramesh says:

      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.

  • Archana M N says:

    Perfect! very well explained and so easy to understand!

  • jasmit says:

    Thanks a ton for explaining It in such a nice manner..finally doubt cleared.

  • David Lloyd says:

    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.

    • Samarjeet says:

      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.

  • Amit Kumar says:

    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!

  • SREENU says:

    very good and it is useful for the student .thanks for uploading

  • HM Lee says:

    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.

  • Jeff says:

    cool explanation..awesome

  • Nicely exaplined really helped me out

  • Anoop says:

    Good and precise explanation….

  • Harrison Koroso says:

    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.

  • joe says:


    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

  • Jeff Scherer says:

    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!

  • berntech says:

    i have gained much from the explanation

  • JLT says:

    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?

  • ANB says:

    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.

  • Andy says:

    This article helped me a lot.
    Thank you.

  • Aqil Amjid says:

    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.
    Thank You

  • amila says:

    this is unsuccessful.

  • Kuldip Rabari says:

    awesome website

  • Bimal says:

    clear and crisp. Good explanation

  • Arch says:

    Very simple and precise explanation. Great job Ulf!

  • Keith Emery says:

    Nice summary of concepts that may not always be crystal clear. Thanks.

  • Sarr says:

    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.

  • Henry says:

    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.

  • Eric Richens says:

    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?

    • Ulf Eriksson says:

      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!

  • Fahad Rahim says:

    well precise and good work ……

  • Suraj Sama says:

    please explain why the following is a non functional requirement:
    users must have authorized user names to access data records.

  • majid jamil says:

    nice work

  • Karthick says:

    Very good Explanation

  • Henok Tesfaye says:

    good!,one question why we need to classify requirments

  • Dagmawi Tewodros says:

    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.

  • Salim says:

    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 helped me a lot.
    It was just the information I was looking for.
    keep going 🙂
    Thanks 🙂

  • Investdirect says:

    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.

  • Sandra says:

    This is the best explanation with easy-understandable examples I have found on web.

  • Andy says:

    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.

  • Al zakir says:

    Thanks for this REQ test, but i’m still confused is it works? or just a dumy test?

  • oveiya says:

    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

  • Dharshi says:

    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.

  • Brittny Wessel says:

    Assign the paper to an author and set the deadline.

  • rohit aggarwal says:

    thank you reqtest for giving me wonderful information

  • Card sell says:

    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 y᧐u for sharing.

  • Juan Rister says:

    Awesome information over again! Thank you:)

Leave a comment

Add Comment