Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm trying to understand the difference between non-functional requirements and quality attributes. Are they the same thing?

You can find a set of quality attributes in the ISO9126 standard.

I know that each system is defined by a set of functional requirements and every of this requirements has associated one or more quality attributes. For example, suppose that you have the requirement that describes the login functionality of a system. You can associate to that requirement the attributes of security and performance.

If i say that the system can not take more than 1 second to respond, I'm talking about a constraint.

So, where the concept of non-functional requirements kicks in? Are they defined by the users? How can I identify them?

share|improve this question
To answer your question: yes, non-functional requirements and quality attributes are the same thing. –  devoured elysium May 2 '11 at 8:06

2 Answers 2

up vote 7 down vote accepted

I think that you are thinking about this a little too hard. Functional and non-functional requirement are not really as separable as you are suggesting, Take the login case for example.

The user SHALL be able to log in through a web interface. Technically, this is a functional requirement.

The system MUST respond to log in requests within 1 second. Technically, this is a non-functional requirement.

Either way they are both just as important regardless of specific classification.

Requirements can come from any number of places. You might want to have better performance than a competitor. A customer might have specific needs. There might be a request from marketing or sales. There isn't one place were they come from. Though, you could probably abstract away all the different sources and refer to them as customers. Ultimately that is what they are.

You can identify the difference using the following metric. Functional requirements describe what a system will do. A non-functional requirement specifies how it does it.

share|improve this answer

The rule is simple and clear.

Functional requirements are things the system does.

Non-functional requirements are quality attributes or aspects of how the system is designed, built or implemented.

  • Performance (1 second)
  • Maintainability
  • Adaptability
  • Cost
  • security
  • usability (which is a property of the system as a whole)
  • testability
  • scalability

Read this. It's very clear. http://en.wikipedia.org/wiki/Non-functional_requirement

Non-functional requirements show up the same way functional requirements show up. Users. The context in which the system will be implemented. Lots of places. Management. Other organizations. Network admins, sys admins, database admins. Everyone who is a stakeholder or merely a bystander will contribute non-functional requirements.

When looking at "requirements documents" over the last 30 years, I can say this. Many requirements documents written by large, in-house IT organizations are political statements with perhaps 80% non-functional requirements and less than 20% functional requirements.

I read one that had a single sentence that was a functional requirement. The rest of the 30 page document talked about platform, and support, and backups and restores, and operating systems and database, and standards, and operations, and lots and lots of stuff that the system did not do.

share|improve this answer
LOL, I have had the opposite experience of lots of functional requirements and no non-functional ones until the systemm is done and it isn't fast enough (or secure enough, etc.), BUt then our requirements are written by people on the business side. –  HLGEM Jan 10 '13 at 21:46

protected by Robert Harvey Mar 20 '14 at 17:34

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.