Quality is absence of defects. Quality is conformance to specifications. Quality means no complaints from customers. Is that all? Or it is all these and much more?
The meaning and scope of quality depends upon how one looks at it. For a person who has developed the software, more specifically programmers, the product is deemed to be a good product because he has found very few defects. For a person who is entrusted with the task of inspecting or testing the product the quality is good when he sees very few deviations from specifications. For customer support it is absence of customer complaints that reflect superior quality.
Is it enough if we have favorable indicators on these parameters? Or there is more to quality than what they indicate. While all the above parameters are important they tell only part of the story. Absence of defects may not mean there are no defects to be found. It may as well mean the testing process is inadequate. Conformance to specification would require much more detailed analysis than what it indicates on the surface. What if the specifications are not detailed? Does the software conform to every aspect of the specification including what it must do and what it should not do? Similarly no complaints from customer may mean many things. Do we have a process to capture customer feedback? Does customer live with certain degree of inconvenience because he is not trained to use the software?
Building quality software therefore goes much beyond focusing on some of these parameters. While it is absolutely necessary to measure the performance of the product against each of these indicators it is also important to find out whether the process that produces these results is a capable process. Can the software delight the customers? Is ease of use considered in design? Is it mistake-proof? Are people required to substantially change their working method for the worse? Are the risks of defects appearing in critical areas assessed and considered in design, coding and testing?
The meaning and scope of quality is therefore not static. It evolves over a period of time while still adhering to the basic tenets. People who are entrusted with the task of quality standards for a software product therefore must be skilled and must have the wisdom to keep enlarging the scope to address all aspects that are important to users in the product value chain.