Ask Learn
Preview
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
I've seen various taxonomies of requirements. Like all taxonomies, any set of requirement types exists to classify or partition requirements into coherent groups for further analysis. Most break down the list of requirements into things reminiscent of "who or where the requirement comes from."
For example, one taxonomy I've seen recently described:
Another taxonomy may be:
I've seen others as well. Most will have a category that contains "non-functional" requirements. And there's where my heartburn lay.
When creating classifiers of a type, whether in OO, or in taxonomy efforts, it is a very good idea to avoid creating a type called "All-Other." If you create a type called "All-Other," that tells me that you don't really know enough about your domain, and you don't know why you have things in your domain that you cannot classify, but you do, so you create a category for "everything I cannot classify" and throw all elements in.
How do you know you have one of these types in your taxonomy? If the definition of the class contains a negative, as in Non-Functional or Non-Testable or Non-useful.
Basically, the category of 'non-functional requirements' is an "all-other" category.
Over the years, software development has matured to the point where we have categories for most requirements, and they are well understood, so the stuff that falls into the "non-functional requirements" category is very constrained. We have a coherent set because we have identified all of the elements that don't belong there. Yet the name remains.
I'd like to suggest that we kill off the classification of "non-functional" requirements, and replace the name with "quality metric requirements." Basically, that's all that is left in the modern "All-Other" requirements class: those requirements that reflect a measurable goal of system quality, usually expressed as a metric. For example: "the online store must be available for browsing of the product catalog 24 hours per day, reliably 99.99% of the time." Availability is a notorious 'non-functional requirement.'
But if we replace the category of 'non-functional requirements' and call it a quality metric requirement, then we get three benefits:
So my suggestion for a requirements type taxonomy would be:
It is time to get rid of the 'all-other' category of software requirements.
Anonymous
October 14, 2008
Hi Nick. Agree completely. It is certainly a conceptual error to define an engineering concept in negative terms, in other words in terms of what it isn't. But in addition to being a conceptual error, it is also a psychological error, because it makes us believe that the concept is somehow unimportant. See http://rvsoapbox.blogspot.com/2008/10/so-called-non-functional-requirements.html
Anonymous
October 15, 2008
The comment has been removed
Anonymous
October 15, 2008
The "Outside-in Software Development" approach says to figure out what goal - and whose goal - you seek to satisfy for all requirements. Even internal ones. So a serviceability aid serves the goal of your support team to turn bugs faster / more productively.
Anonymous
October 15, 2008
Hi Nick,
I have taken offense to "Non-functional" requirements for years. I have been calling them "Service Quality requirements", very similar to your proposal.
Anonymous
October 15, 2008
Where do the commercial requirements go in your taxonomy - for example, the requirement that a given service should cost less than $x per transaction? You could regard this as a quality requirement, but most people don't seem to.
Anonymous
October 15, 2008
The comment has been removed
Anonymous
October 18, 2008
Nick - your 100% correct with this one, I prefer the term quality requirements normally. It's frustrating that too often I have to explain that by this term I mean 'non-functional requirements' though.
I can't check right now, but in one of the SEI books on software archicture (either Documenting Software Architecture in Practise or Documenting Software Architectures) there's a side bar on the subject that comes to the same conclusion - and that's were I got my term from.
Anonymous
October 20, 2008
I agree, for years I have tried to get the quality metric requirements defined as Service Level Agreement (SLA) they can then be tied to a specific busines user, class of users, vary depending on the needs of a particular group. If I use a requirements DB I can then print an SLA from teh requirements and everyone readily understands what you mean.
Anonymous
October 20, 2008
Good point, Ed,
In our IT Traceability model, Service level agreements are directly tied to Quality Metric Requirements. We are doing the same things.
Perhaps it is time to start calling this a 'best practice.'
--- N
Anonymous
October 21, 2008
The comment has been removed
Anonymous
October 22, 2008
I'm happy you include cost as a quality metric. However there is a great deal of material in circulation that fails to mention cost (including ISO 9126), so I think it takes a constant effort to make sure it stays visible.
Anonymous
October 22, 2008
The comment has been removed
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in