Functional vs Non Functional Requirements

by Mark Debono / 05 April 2012 / 17 comments

 

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.

About the author: Mark Debono

Mark Debono

Mark is part of ReQtest's international marketing team. He writes all our content including the content you find in our blog and newsletters. He also helps manage our social media profiles. Mark’s goal is to make our blog and newsletters informative, helpful and easy to understand.

17 Comments

  1. [...] Functional vs Non Functional Requirements [...]

  2. rudiman says:

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

  3. [...] the article Functional vs Non Functional Requirements where Mark Debono [...]

  4. Vijay says:

    Nice explanation, thanks.

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

  6. Archana M N says:

    Perfect! very well explained and so easy to understand!

  7. jasmit says:

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

  8. 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
    etc

    Good to see people tackling the issue though.

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

  10. Very simple and precise explanation. Thank You!

  11. SREENU says:

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

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

  13. Jeff says:

    cool explanation..awesome

Leave a Reply

Your email address will not be published. Required fields are marked *