(Last modified Thu Apr 17 22:42 2008)
This is the most commonly-encountered division.
Nonfunctional requirements are often called goals.
| Examples | "Provide safe, reliable, and quick transportation around campus" | (functional) |
|---|---|---|
| "Print a receipt for every transaction" | (functional) | |
| "Be self-explanatory and easy to use". | (non-functional) |
A slightly different classification is also made for them. behavioral requirements or developmental quality requirements (or requirements that are neither):
| Examples | "Turn out the lights when the room is unoccupied" | (behavioral) |
|---|---|---|
| "Be thoroughly testable so that customers will have a high level of confidence". | (developmental quality) |
Functional/non-functional and behavioral/developmental-quality don't quite divide requirements the same way. Most notably, there are nonfunctional requirements (such as, perhaps, "Cost less than $500 per copy") that are arguably neither behavioral requirements (because they don't address the system's behavior) nor developmental quality requirements (because they don't characterize the development process). There are arguably behavioral requirements (such as, perhaps, "Secretly provide access to internal program state needed to make testing more effective") that are more closely related to a nonfunctional requirements such as testability than to any ordinary functional requirements. It seems that every developmental-quality requirement would also be a non-functional requirement, and any functional requirement would also be a behavioral requirement (I have not come up with counterexamples, in any case).
Nonfunctional requirements can be divided into operationalizable and checkable NFRs (and perhaps a third category of neither operationalizable nor testable -- this has not been established yet)
Example: Security (an NFR), refined into Confidentiality (also NFR) and then into PIN-authenticated (functional).
Example: Performance (NFR), refined into "Check database workload", refined into "Monitor and report number of queries answered per second" (FR).