Software quality
What Is Software Quality?
Software quality is a measure of how well a software product satisfies the stated and implied needs of its stakeholders under specified conditions of use. It encompasses both the internal properties of the code, such as structure, maintainability, and testability, and the external behavior experienced by users, including reliability, performance, and security. The concept has been formalized across multiple generations of international standards, most notably through the ISO/IEC 25010 quality model, which defines quality as "the degree to which the system satisfies the stated and implied needs of its various stakeholders, and thus provides value."
Quality is not a single property but a structured set of characteristics that can be independently defined, measured, and traded against one another. A system optimized for performance efficiency may sacrifice portability; one optimized for security may impose usability constraints. Understanding these tensions is central to software quality engineering.
Quality Models and Characteristics
A quality model provides the vocabulary and structure for specifying what "good" means for a given software product. The ISO/IEC 25010 standard organizes product quality into nine top-level characteristics: functional suitability, performance efficiency, compatibility, interaction capability, reliability, security, maintainability, portability, and risk mitigation. Each characteristic is further decomposed into measurable sub-characteristics. Reliability, for example, encompasses maturity, availability, fault tolerance, and recoverability as separately assessable dimensions.
The IEEE has developed complementary frameworks. The IEEE 730 standard on software quality assurance, first published in 1979 and revised most recently in 2014, defines the processes required to plan, implement, and control quality across a software project lifecycle. It distinguishes product assurance, which focuses on the artifact under development, from process assurance, which monitors the development process itself, and aligns with the lifecycle framework defined in ISO/IEC/IEEE 12207.
Algorithmic efficiency is one property that intersects both product quality and process quality: a well-specified algorithm may be correct and maintainable but still fail quality thresholds if it cannot meet response-time requirements under realistic workloads. The IEEE Standards Association page for IEEE 730 describes the standard's scope and its harmonization with international lifecycle frameworks.
Measurement and Metrics
Quality measurement translates abstract characteristics into quantifiable indicators. For reliability, metrics include mean time between failures and defect density. For maintainability, metrics include cyclomatic complexity, code coupling, and the proportion of code covered by automated tests. For security, metrics may count known vulnerability classes per thousand lines of code or track time-to-patch for reported defects.
The IEEE 730-2014 Standard for Software Quality Assurance Processes specifies that a Software Quality Assurance Plan must identify the metrics to be collected, the tools used to collect them, and the thresholds that trigger corrective action. This requirement makes measurement an integral part of the development contract, not an afterthought applied at release time.
Static analysis tools, dynamic profiling, and formal verification each address different aspects of quality measurement. Static analysis detects structural defects before execution; dynamic profiling surfaces performance and resource-use issues at runtime; formal verification provides mathematical proof of correctness for specified properties.
Assurance Processes
Software quality assurance (SQA) comprises the planned, systematic activities that provide confidence that a product will satisfy its quality requirements. These activities include design reviews, code inspections, test planning, defect tracking, and process audits. IEEE Standard 730 requires that SQA activities be integrated with the development lifecycle rather than applied only at designated checkpoints, reflecting the finding that defects caught early cost significantly less to correct than those discovered in system testing or production.
Applications
Software quality has applications in a wide range of fields, including:
- Safety-critical systems engineering, where defects can result in physical harm or loss of life
- Financial services, where software failures carry regulatory and reputational risk
- Medical device development, subject to FDA and IEC 62304 software lifecycle requirements
- Enterprise software, where maintainability and portability directly affect total cost of ownership
- Open-source ecosystems, where community-driven quality processes substitute for institutional SQA programs