Home | Login | Recent Changes | Search | All Pages | Help

NonFunctionalRequirements

Not things that a product shouldn't do, but qualities or attributes that a product should have. In my experience, usually discovered as part of the ReverseSoftwareLifecycle.

2004.03.07 PhilStubbington


I see NonFunctionalRequirements as the key to software. They are the reason we write software in the first place.

Functional requirements are never the driving force for software. The reason I say this is that we humans can do any functional requirement as well as any computer can. All a computer can do is some combination of:

  • Store and retrieve information.
  • Copy information from one place to another.
  • Derive new information from existing information.

Every functional requirement is a combination of those three behaviors. But humans can do all of that stuff, too. The reason we write software is not that we can't do those things, but that we want to do them faster, or at less cost, or more reliably, or with greater availability. Those reasons are all NonFunctionalRequirements.

-- DaleEmery 2004-03-07.


The term "non-functional requirement" keeps striking me as nonsensical. Why would anyone bother building something non-functional ?

If the function of something is to do payroll faster than an army of payroll clerks could, then both "do payroll" and "faster" are part of its function. How then does it make sense to split the description of that function into "functional" and "non-functional" requirements ?

What's critical about the computer isn't only the three things it does, but also all the things it doesn't do. For instance, it never gets bored, or asks for a raise.

LaurentBossavit 04.03.08


Tom Gilb uses the word "attribute," as do Don Gause and Jerry in Exploring Requirements. I like "attribute" a little better because it tells us something about what the requirement is, where "non-functional" tells us what the requirement isn't. But "attribute" seems kinda general. The SEI uses the term "quality attribute," which also has pluses and minuses.

DaleEmery 2004-03-08


The system shall store all pay records.

The system shall transfer money into workers' accounts.

These are verbs, action words, or functions.

The system shall be fast (just how fast to be defined later).

The system shall be accurate (just how accurate to be defined later).

These are adjectives or attributes and not functions.

The attributes or non-functions are often much more important in the marketplace than the functions. Consider the automobile. Comfort, style, color, economy, safety. These are not functions, but they are probably much more important in the marketplace than "carry four people."

DwaynePhillips 9 March 2004


The more I think about requirements, the more I believe that the requirements attributes, or what others refer to as non-functional requirements are the things that drive the design and architecture. To continue Dwayne's car example, I suspect that the attribute "Make the car low enough for a short woman to safely carry around a pile of kids" is why we have minivans and not all SUVs. JohannaRothman 2004.03.09


Updated: Tuesday, March 9, 2004