Software quality is a field of study and practice that describes the desirable attributes of software products.
Two approaches to software quality are prevalent:
A software defect can be regarded as any failure to address end-user requirements. Common defects include missed or misunderstood requirements and errors in design, functional logic, data relationships, process timing, validity checking, coding, etc.
The defect management approach is based on counting and managing defects. Defects are commonly categorized by severity, and the numbers in each category are used for planning. More mature software development organizations use tools such as defect leakage matrices (for counting the numbers of defects that pass through development phases prior to detection) and control charts to measure and improve development process capability.
This approach to software quality is best exemplified by fixed quality models, such as ISO/IEC 25010:2011. This standard describes a hierarchy of eight quality characteristics, each composed of sub-characteristics:
Additionally, the standard defines a quality in use model composed of five characteristics:
A fixed software quality model is often helpful for considering an overall understanding of software quality. In practice, the relative importance of particular software characteristics typically depends on software domain, product type, and intended usage. Thus, software characteristics should be defined for, and used to guide the development of, each product.
Quality function deployment provides a process for developing products based on characteristics derived from user needs.
Contributed by Dan Houston, Ph.D.