Quality is Time
Many software quality attributes are largely about time. People's time. This is especially true for business systems.
For example, it's easy to see that response time is about time. What about other quality attributes, such as ease of use or maintainability or availability? To see how these attributes relate to time, we can ask two questions:
- What makes this attribute important?
- How would I observe this attribute?
Grab your favorite software quality taxonomy and play along, testing each attribute with the questions above. If you don't have a favorite, use one of mine:
- The Software Engineering Institute's "Quality Attributes" technical report.
- Chapter 19 of Tom Gilb's Principles of Software Engineering Management .
For example, how would you observe usability? If you wanted to know whether your software were easy to use, what would you look for? I would watch people using the software, and measure how long it took them to do some task that was important in their work. The key phrase "how long it took them" tells me that usability is at least partly about time.
What makes usability important? When software is hard to use, I have to think more to figure out how to accomplish my goal. I make guesses, and try things. Some things work and some do not. When my attempts don't work, I have to back them out and try something else. Lots of extra thinking. Lots of extra mouse clicks.
So what? Thinking isn't hard in a physical sense. Neither is clicking a mouse (up to a point—repetitive stress can do real damage). What makes thinking and clicking "hard" is the time it takes. I prefer easy-to-use software because it helps me do my work faster. Usability is important to me because it saves my time.
Though there is more to usability than this (see Constantine and Lockwood's Software for Use ), time is a key element of ease-of-use. The same is true for many other quality attributes. Maintainability, for example, is largely about how much effort (people-time) it takes to repair a defect. Extensibility is about how much effort it takes to add a feature. Portability is about how much effort it takes to move the system to a new environment. What about availability? When a system that I need is not available, it takes longer to do the job.
As with usability, though there is more to these quality attributes than people's time, time is a key element of each.
I need to remember this when I am negotiating the requirements for a software system, and prioritizing these quality attributes against each other or against schedule and cost. When I trade off one quality attribute for another, and the attribute strongly affects people's time, I am trading off one person's time for another's.
Whose time are your quality tradeoffs affecting?