Randy Miller's Blog

MSF for Agile Software Development News

Quality of Service Requirements

The name 'Quality of Service Requirement' was suggested as alternative to 'nonfunctional requirement' or 'quality attribute' in MSF for Agile Software Development by Sam Guckenheimer. In retrospect, I believe that it was a good idea. 'Nonfunctional requirements' always sounded to me like the way that nasty tasting cough syrup tastes. If you implement a nonfunctional requirement, does your system become nonfunctional? For all who like that name, I am just kidding....

Quality attributes have been studied extensively by the Software Engineering Institute. I first heard about the relationship between quality attributes and scenarios at SD East in Boston this year. As MSF for Agile Software Development utilizes scenarios to achieve a finer level of granularity than use cases, I am always eager to see what others are doing to improve them. I discovered the SEI work after we had adopted an internal Microsoft approach called LAAM which may or may not have been based on it. LAAM and quality attributes are surprisingly similiar.

Nonfunctional requirements, quality attributes, and quality of service requirements are names for the constraints on functional requirements such as performance, security, and platform. There are certainly many more types of quality of service requirements than these but these three are the most common. The important aspect of a quality of service requirement is that it does not describe functionality but instead constrains other functionality, the presentation of that functionality, the implementation of that functionality, or its environment. Since there are many different types of qualities of service, the format varies. For example, we can just list the platforms that we must support (the most important being Microsoft Windows, of course) if all of our functionality is available on each of the platforms.

Life gets tricky when you start getting specific. For example, we can't ask for our system to be 'fast'. 'Fast' is poorly defined and probably in the eye of the beholder. I remember a requirement in one of the requirements documents that I received as a developer asking for the system to be 25% faster. This may have been achievable but it would have been a complete waste of time. For most systems, 20% of the functionality is used 80% of the time. Therefore, optimizing the other 80% of the functionality may yield diminishing returns. In describing quality of service requirements such as performance, we should target specific areas.

For those quality of service requirements that need to target an area, we use the following format: context, stimulus, response. For example, consider the quality of service requirement,

 

"During a catalog search, return the search results in under 3 seconds.”

 

"During a catalog search" is the context, "return the search results" is the stimulus, and "in under 3 seconds" is the response. For any targeted quality of service requirement, you can use this format. The context and stimulus should appear in a scenario for any externally visible quality of service requirement.

Quality of service requirements have the greatest impact on the architecture. A good architecture will facilitate easier delivery of quality of service requirements. But then a good architecture is important for so many reasons.

Published Monday, November 28, 2005 2:56 PM by RandyMiller

Comments

 

Business Analysis Insight » Non-Functional Requirements or Whatever They’re Called said:

April 13, 2006 3:47 PM
 

Ken Brubaker said:

I had forgotten my Sam Guckenheimer book Software Engineering with Microsoft Visual Studio Team...

August 14, 2007 8:53 AM
 

SergioTarrillo's RichWeblog said:

En cada tema que tratemos de la serie MCPD , iniciaremos con una pequeña frase o pregunta, que llame

December 1, 2007 3:22 AM
Anonymous comments are disabled

About RandyMiller

Granville “Randy” Miller works in the Project Recovery team for Microsoft Consulting. He is the co-author of Advanced Use Case Modeling and A Practical Guide to Extreme Programming. He brings 20 years of software development experience in the delivery of software applications. He has been actively promoting modeling, software development technology, and software process for over a decade in various public forums. He has an Advanced Certification in UML 2.0.

© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker