Functional vs non-functional requirements, what is the difference?

Functional vs non-functional requirements, what is the difference?

What is the fundamental difference between functional and non functional requirements?

    Requires Free Membership to View

    When you register, you'll receive targeted emails designed to keep you informed of the most relevant information on Agile development, application security, testing & QA, software requirements, and more.

    Hannah Smalltree, Editorial Director

    By submitting your registration information to SearchSoftwareQuality.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchSoftwareQuality.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

Basically, functional requirements describe the features, functioning, and usage of a product/system/software from the perspective of the product and its user. Although referred to as "requirements," they really are a form of design, albeit high-level. Functional requirements also often are called "functional specifications," and "specification" is a synonym for design.

Non-functional requirements are not non-functional at all. Rather, they describe various quality factors, or attributes, which affect the functionality's effectiveness. They do not exist in the abstract but only with respect to relevant functionality. They are often called "ilities," because many end in "ility," such as, usability, reliability, and maintainability.

For instance, if the software doesn't satisfy relevant usability requirements for applicable functional usage, users can't use it appropriately and thus will not achieve the required functioning. Inadequate usability may cause errors which nullify the value of the functioning, such as miscalculating something. Usability difficulties could cause the user not to use (all) the functions necessary to achieve the value, perhaps because they're not able to employ the necessary functions. It may take so long and be so unpleasant to use the software that the user can't use it as much as is needed or even abandons its use entirely.

I have been asked this question many times throughout my career, that I have answered it most recently for SearchSoftwareQuality.com. Read more about differentiating between functional and non functional requirements.

This was first published in December 2009