Those Other Requirements: Quality Attributes and Their Inescapable Trade-Offs
You understand the functional requirements for your product, but did you explore the necessary quality attributes? They’re essential too.
I’ll bet you’ve used software systems that did just what they were supposed to do but you hated them. Maybe they were too slow, or they crashed a lot, or the user interface was clumsy. These are examples of products that satisfied their functional requirements but not your quality expectations.
Not surprisingly, nearly all sets of software requirements focus on functionality, the things a product must be able to do or let the user do. Thoughtful analysts and designers also need to explore various types of nonfunctional requirements. The largest set of these fit in the category of quality attribute requirements, also called quality factors or quality of service requirements. Sometimes they’re called the “ilities” because many of them end in “-ility.”
This article provides a brief introduction to quality attributes and points out the trade-off decisions you’ll need to make among the various attributes. It’s not possible to optimize all of the quality factors at once. You need to determine which ones are most important to customer success and maximize those.
Quality Attribute Requirements
Carefully specifying quality attributes lets you build a product that delights its users, instead of merely doing what it’s supposed to. Excellent products reflect an optimum balance of competing quality characteristics. If you don’t explore the customers’ quality expectations during elicitation, you’re just lucky if the product satisfies them. Disappointed users and frustrated developers are the more likely outcome.
You don’t directly implement requirements concerning safety, reliability, portability, security or other characteristics. Instead, these quality attributes serve as the origin of many functional requirements. They also drive architectural and design decisions.
It costs a lot more to patch a completed system to achieve essential quality goals than to design for them at the outset. Just think of the…