Google





Software Quality Attributes

Luc K. Richard
January 5, 2005

Functional requirements describe functions and features the users need for the system to work. They represent the requirements we typically think of when we describe systems, and make up the majority of a functional specification document.

The following statements are examples of functional requirements for an online store:

Nonfunctional Requirements

In addition to the functional requirements are other requirements that don't actually do anything, but that are critical nevertheless. These nonfunctional requirements, also called “quality attributes”, specify system characteristics that are required for acceptance of the system by the end user. It is therefore imperative that you document such requirements in the functional specification.

An example of a quality attribute is reliability: the extent to which the system will execute without failure for a specific period of time. If this requirement is not specified, chances are it’s not going to be properly tested by your Quality Assurance team. On the other hand, if it’s properly documented and you use a Requirement Traceability Matrix to map it to a series of test cases, then you will be able to verify the system’s reliability and improve it if required before releasing it.

While customers do not generally provide such requirements, it is your responsibility to gather them. I've seen systems that met the functional spec, but were in the end rejected because they didn't meet the customer’s security and performance requirements. Don't let this happen to you. Make sure you capture nonfunctional requirements in your functional spec, and that you test against these requirements before releasing the product.

While there are dozens of nonfunctional requirements, you generally do not need to specify all of them. As a general rule, just like when identifying features, you only need to specify nonfunctional requirements that are important to the acceptance of the system. Following is a list of quality attributes, along with a brief description and some sample requirements.

Reliability: The extent to which the system will execute without failure for a specific period of time.

Availability: The percentage of “up-time” during which the system is fully operational.

Security: The ability to prevent and/or forbid restricted actions.

Performance: The systems ability to meet latency, throughput, and resource utilization requirements.

Usability: The end user’s ability to learn the system and complete tasks.

Scalability: The system’s ability to handle a large amount of data.

Summary

When managing your next project, make sure the nonfunctional requirements are clearly specified and well documented. This will not only help out your product development team make decisions while designing the system’s architecture. It will also make possible the acceptance of the product by the customer.

 

Related Tools:


This article was originally published on www.gantthead.com.