Software Engineering Online

The Many Faces of Quality

In general, dictionaries define quality as a degree or grade of excellence. Philip Crosby, a recognized quality expert, states that "quality is conformance to requirements." The IEEE Standard Glossary of Software Engineering Terminology further refines the quality definition to apply to technical products by stating that it is the degree to which a system, component, or process meets specified requirements and customer/user needs and expectations.

Although each definition is correct, they progress from simple to complex to address the domain to which they apply. From the dictionary definition of simple degree, the definitions progress in the more technical direction of favorable comparison to requirements. IEEE broadens the scope of quality to incorporate needs and expectations of the targeted customer.

And this is the essential characteristic of quality:  its definition and application changes depending on the domain in which it is operating. For this reason, it is not an easy task to address all of the faces of quality, even within the domain of software engineering.

Quality, Quality Control, and Quality Assurance 

Distinguishing between common terms that include the word "quality" can assist practitioners in determining the content and direction of their quality programs. A straightforward way to consider the faces of quality is to think of goals and methods.

You want the product to conform to requirements, meet the customers' needs, and be accepted. You want your product to be considered a quality product. However, quality by happenstance is just good luck. To make quality more than luck, you need methods that will strengthen your chances of success.

Quality control is an iterative method of comparing the product to requirements and taking action if there is a difference. A defined set of quality control activities provides consistency and strength to your efforts to ensure that your product is considered one of quality.

Quality assurance supports quality control by providing evidence and confidence of the ability of the software process to produce a software product that meets specified requirements. For example, a testing phase is a part of the quality control process, while quality assurance is concerned with adherence to the documented process of testing. Quality Assurance ensures that the organization "says what it does and does what it says."

Who is Responsible for Quality?

Quality is the responsibility of all engaged in an effort--customers, team members, managers, and executives. No one can say that it is the other guy's problem. Audits, metrics, and satisfaction surveys are all tools, but there is nothing that will replace individual ownership.