Software Quality 2: What?
Once again there was a long, long search on the Internet. Not a lot is written about why software quality is important, maybe even less is written about what quality looks like. The most interesting piece I could find is a study by Kitchenham and Pfleeger titled "SOFTWARE QUALITY: THE ELUSIVE TARGET" In this study, Kitchenham and Pfleeger state that the "what" of software quality consists of five different views:
- The Transcendental view
"We don't know how to define quality but we'll know it when we see it."
- The User view
Is the software fit for the purpose of the user?
- The Manufacturing view
Does the software confirm to it's specifications?
- The Product view
Quality is an inherent characteristic of the product
- The Value-based view
How much is the customer willing to pay for it?
If we look at this list, the usual definition of software quality as "bug-free" seems too limited. High-quality software isn't just free of defects, it's also that which the user needs and expects.
Of course, the level of these definitions isn't detailed enough to actually implement but if any implementation is to hold any value, it should at least look at the last four of those items (the first one is not quantifiable. The Development Team should keep it in mind but you can't define activities that will support this view).
As we stated that every definition of "Why" should be supported by at least one definition of "What", we can state:
- Predictability is supported by The Manufacturing View and The Product View.
If the product conforms to it's inherent characteristics and it's specifications then it will be predictable.
- Customer Satisfaction is supported by The User View, The Product View and The Value-based view.
If the product does what the user needs and the product conforms to it's inherent characteristics, the user will likely be willing to pay for it and be satisfied.
- Morale/Mastery is supported by The Manufacturing View and The Product View.
Producing something that is productively correct will drive the Mastery driver of Morale.
- Morale/Purpose is supported by The User View.
Producing something that a user needs will drive the Purpose driver of Morale.
- The Bottom Line is supported by The Value-based view.
Well, that's an easy one.... If the user is willing to pay for it, this supports the bottom line.
This mapping proves that What we're doing is correct. But these statements aren't necessarily implementable. In my next blog post I will explore How we can implement these principles in our software/product development process.