The difference between functional and non-functional requirements

By 3rd April 2015 October 9th, 2019 Requirements

Functional and non-functional requirements need to be carefully selected in order to ensure that they make sense in the context of the final outcome of the project and conveyed to all the team members working on it.

Missing out on a requirement or misapplying one could spell disaster for a project.
Requirements generally fall into two types: functional and non-functional.

The difference between them is fairly straightforward, nevertheless, in the this article we’ll define the two types of requirements and provide examples of each to point out more concretely the fundamental difference between them.

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

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

Non-functional requirements

The definition of a non-functional requirement is:

Any requirement which 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 generally specify the system’s quality attributes or characteristics, 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”.

Typical non-functional requirements include:

  • Performance – for example: response time, throughput, utilization, static volumetric
  • Scalability
  • Capacity
  • Availability
  • Reliability
  • Recoverability
  • Maintainability
  • Serviceability
  • Security
  • Regulatory
  • Manageability
  • Environmental
  • Data Integrity
  • Usability
  • Interoperability

It is important to correctly state non-functional requirements since they’ll affect your users experience when interacting with the system.

One way to prevent missing out on important non-functional requirements is to use non-functional requirement groups as a guide for listing them down.This blog post provides an explanation of each of the four main non-functional requirements groups and how they are used.

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

  • Jack Martin says:

    Very nice, i like the way you explained. I also wrote something on similar lines on functional-and-non-functional-testing. Hope you like it –

  • G Bradley says:

    I think the example of the coffee cup is not good at all.

    The distinction between a coffee cup not leaking (functional) and not getting too hot (non functional) is so small I can’t distinguish between them.

    • Alessandro says:

      Hi, G Bradley.

      If you focus in the type of question that each answer responds, maybe be more easy to get the difference. Because, according the text, Functional requirements can be understood as: what a system should do, and Non-functional requirements can be understood as: how the system should do.

      What does my cup of coffee do?
      ” … contain tea or coffee without leaking”.

      How is it done?
      ” … without heating up to more than 45 °C”.

      I hope this helps.

  • Fahad Saeed says:

    Thank you so much it was really helpful. thumbs up

  • Thank you so much for the valuable insights.
    I had exam of Software Engineering yesterday and this helped me a lot.
    It was just the information I was looking for.
    keep going 🙂
    Thanks 🙂

  • shegiz says:

    thanks for you
    and I like your way of description

  • Rahul Kamble says:

    It’s really good.I have been looking for a good article on requirements,you ended my search.

  • Jessica says:

    Thank for sharing these valuable insights. This information is really helpful, keep up the good work 🙂

  • Godfrey says:

    Thank you very much. I have been looking for this difference for days now

  • Sufyan says:

    It is really helpful for me to understand The concept of functional and non-functional requirements.

  • frivy says:

    Thank you it has been helpful i now understand functional and non-functional requirements.

Leave a comment

Add Comment