Home > Software Quality Tips > Software Requirements > Don't overlook nonfunctional software requirements
Software Quality Tips:
EMAIL THIS
 TIPS & NEWSLETTERS TOPICS 

SOFTWARE REQUIREMENTS

Don't overlook nonfunctional software requirements


Karl E. Wiegers, Ph.D.
06.20.2007
Rating: -3.62- (out of 5)


Software quality news and advice
Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


Nearly every software requirements specification I read consists almost entirely of functional requirements, descriptions of behaviors the product should exhibit under certain conditions. This is a natural emphasis. However, as you explore the requirements for your next system, be sure to also examine nonfunctional software requirements.

The most significant category of nonfunctional requirements also goes by the names software quality attributes, quality factors and quality of service requirements. These requirements don't describe what the system does, but rather how well it does the things it does. They are sometimes called the "ilities" because so many of them end in –ility: usability, portability, reliability, availability and so forth. They don't all end in –ility; others include efficiency, integrity, security, safety, robustness and performance. Some of these attributes (such as usability, availability, safety) describe aspects of external quality that are visible and important to users. Others describe internal quality properties, which are more important to developers and maintainers (testability, maintainability, reusability).

Quality attributes are difficult to specify, yet often they distinguish a product that merely does what it's supposed to from one that delights its users. Deficiencies in any of these quality dimensions have a huge impact on how the customer responds to the product. If you do not explore quality attributes during requirements elicitation, the customers will simply be lucky if they get what they expect.

From a technical perspective, quality attributes drive significant architectural and design decisions. It's far more difficult and expensive to re-architect a completed system to try to achieve essential quality goals than it is to design for them at the outset. The table below indicates typical ways in which specific types


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


RELATED CONTENT
Software Requirements
Requirements use cases tutorial: Advanced formats, test case comparisons
Use cases for software requirements tutorial: Strengths, flaws, formats
Quality assurance (QA) and testing's role in requirements
Defining requirements during software project feasibility analysis
Pros and cons of requirements-based software testing
How to avoid requirements creep
Making requirements walkthroughs more effective (and fun)
Using proactive test design methods to catch requirements issues early
Pictures communicate software requirements without slowing development
REAL business requirements key to calculating ROI for a project

Software requirements techniques (Prototyping, Storyboards, Modeling, State transitions)
Quality assurance (QA) and testing's role in requirements
Agile software development tutorial: Agile requirements gathering
Reporter's Notebook: Jack Vaughan on agile methodology
Pros and cons of requirements-based software testing
How to avoid requirements creep
Making requirements walkthroughs more effective (and fun)
Software development lifecycle (SDLC) trends 2009: Requirements, agile
Using proactive test design methods to catch requirements issues early
Is a requirements freeze in a software project a bad idea?
Requirements elicitation: Workshops vs. apprentice-style analysis

Software Requirements Documentation
Blueprint rolls out Requirements Center 2010
Writing a software requirements specification (SRS) for a portal app
Should QA check changes from outside the requirements document?
Agile software development tutorial: Agile requirements gathering
Defining requirements during software project feasibility analysis
Template for requirements use cases
What should a business analyst's requirements document include?
Determining software testing deliverables for a small project
Using proactive test design methods to catch requirements issues early
Pictures communicate software requirements without slowing development

RELATED GLOSSARY TERMS
Terms from Whatis.com − the technology online dictionary
requirements analysis  (SearchSoftwareQuality.com)

RELATED RESOURCES
2020software.com, trial software downloads for accounting software, ERP software, CRM software and business software systems
Search Bitpipe.com for the latest white papers and business webcasts
Whatis.com, the online computer dictionary


of quality requirements translate into categories of technical information.

[TABLE]

I'm afraid I have bad news. Certain attribute combinations have inescapable trade-offs. The most glaring conflict is between efficiency and most other attributes. Nearly any action you take to increase some level of quality is likely to have a negative impact on efficiency. Introducing additional security layers or designing for portability can lead to reduced efficiency. Similarly, optimizing efficiency might have a negative impact on, say, maintainability or portability. So it's essential for users and developers to decide which attributes are most important to the overall success of the product.

As you specify quality requirements, make sure that they are verifiable and are as quantitative as possible. Requirements such as "the system shall be robust" or "the system shall be user-friendly" are meaningless. There's no way to determine exactly what "robust" or "user-friendly" means or how to tell if you've achieved those goals. All requirements should be verifiable. That is, there should always be some way to determine whether a specific requirement has been satisfied. Elements of a well-defined nonfunctional requirement include the following:

Specifying quality attribute requirements this precisely is certainly more work than a simplistic approach of demanding 24x7 availability. But it's the best way to ensure that all project stakeholders share the same expectations and work toward the same objectives.

-----------------------------------------
About the author: Karl Wiegers is Principal Consultant with Process Impact in Portland, Ore. He is also the author of More About Software Requirements: Thorny Issues and Practical Advice; Software Requirements, 2nd Edition; Peer Reviews in Software: A Practical Guide; and Creating a Software Engineering Culture.

Rate this Tip
To rate tips, you must be a member of SearchSoftwareQuality.com.
Register now to start rating these tips. Log in if you are already a member.


Submit a Tip




DISCLAIMER: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.



Software Design & Testing - Project Management
About Us  |  Contact Us  |  For Advertisers  |  For Business Partners  |  Site Index  |  RSS
SEARCH 
TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations' technology projects - with its network of technology-specific websites, events and online magazines.

TechTarget Corporate Web Site  |  Media Kits  |  Site Map




All Rights Reserved, Copyright 2006 - 2009, TechTarget | Read our Privacy Policy
  TechTarget - The IT Media ROI Experts