Knowledge Nugget: What is a Non-Functional Requirement?


Read this Knowledge nugget if you want to learn what a non-functional requirement is and how it relates to Software Engineering terminology.A non-functional requirement is a qualitative characteristic of a software system. Features of software systems that can not be observed directly. Non-functional requirements (NFRs) will fall into the categories listed below. This is not an exclusive list but will give an idea what a non-functional requirement is:

  • Performance,

  • Scalability,

  • Availability,

  • Reliability,

  • Disaster Recovery,

  • Security,

  • Maintainability,

  • Extensibility and Flexibility,

  • Usability,

  • and others.

Besides addressing functional requirements – with for example user interfaces – software systems must also address non-functional requirements. This means, the Software Architecture and design must make sure that every non-functional requirement listed by a client is addressed by the Architecture put in place. Governing and addressing non-functional requirements is one of the primary objectives for a Software Architect.

Just as functional requirements, non-functional requirements are business driven as well and reflect the need for important characteristic in a software system.

Because non-functional requirements are often more concrete they can more easily be translated into system requirements. Important with addressing non-functional requirements is that the Software Architect carefully thinks about solutions, their alternatives, advantages and disadvantages, and makes sure that the requirements are covered but that the resulting solution is not “over-engineered”.

Non-functional requirements, just like functional requirements, are ideally managed in requirements management tools but can also be managed in text documents or any other tool you like.

The best place to address non-functional requirements from a technical perspective is the architecture and the design. If a functional requirement is not concrete enough to be addressed directly, break down into non-functional requirements that can be concretely addressed and measured.

Examples

Here some examples of non-functional requirements:

  • The application must be able to process 10 messages per second.

  • The application must be available for 80% within a 10 hour window between 7am and 7pm.

References

[Pic2010] Pichler, M. 2010, “How to document Software Architecture (for Business Applications)”, A Practical Guide to Software Architecture [online] available at https://applicationarchitecture.wordpress.com/2010/02/04/documenting-software-architecture-for-business-applications/

[Pic2010] Pichler, M. 2010, “Introduction to the process of developing Software Architectures”, A Practical Guide to Software Architecture [online] available at https://applicationarchitecture.wordpress.com/2010/01/19/introduction-into-the-development-of-software-architectures/

Copyright © 2010 Michael Pichler

Advertisements

One thought on “Knowledge Nugget: What is a Non-Functional Requirement?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s