Definition
Software quality refers to the degree to which a software product or system meets specified functional and non‑functional requirements, conforms to standards, and satisfies the needs of its users and stakeholders. It encompasses attributes such as reliability, efficiency, maintainability, usability, and security, and is evaluated through both qualitative and quantitative measures.
Overview
Software quality is a central concern in software engineering and management, influencing development processes, testing strategies, and lifecycle maintenance. Standards such as ISO/IEC 25010 (formerly ISO/IEC 9126) define a quality model that classifies software attributes into internal quality (attributes observable without execution) and external quality (attributes observable during execution). Quality assurance (QA) activities—including requirements verification, design reviews, code inspections, and testing—aim to detect and prevent defects, whereas quality control (QC) focuses on identifying defects in the final product.
Metrics commonly used to assess software quality include defect density, mean time to failure (MTTF), mean time to repair (MTTR), cyclomatic complexity, and code coverage. Organizations may adopt quality models like Six Sigma, CMMI, or Agile quality practices (e.g., Definition of Done, continuous integration) to institutionalize quality goals throughout development.
Etymology/Origin
The term “software” emerged in the late 1950s to differentiate program code from hardware. “Quality,” derived from the Latin qualitas meaning “of what kind,” entered technical discourse in engineering during the early 20th century. The compound phrase “software quality” began appearing in academic literature and industry standards in the 1970s and 1980s as systematic approaches to evaluating and improving software products were formalized.
Characteristics
Key characteristics commonly associated with software quality include:
- Functionality – Conformance to stated and implied functional requirements.
- Reliability – Ability to perform under specified conditions for a given period.
- Usability – Ease of learning, operating, and controlling the software.
- Efficiency – Optimal use of system resources such as CPU time, memory, and network bandwidth.
- Maintainability – Ease with which the software can be modified to correct defects, improve performance, or adapt to a changed environment.
- Portability – Ability to be transferred from one hardware or software environment to another.
- Security – Protection against unauthorized access, data breaches, and other threats.
- Compatibility – Ability to operate with other software components or systems.
These attributes are often prioritized differently depending on the application domain (e.g., safety‑critical systems versus consumer mobile apps).
Related Topics
- Software Quality Assurance (SQA) – Systematic activities to ensure that software processes and products comply with quality standards.
- Software Testing – Execution of a program with the intent of finding defects; includes unit, integration, system, and acceptance testing.
- Software Metrics – Quantitative measures used to assess various aspects of software quality.
- ISO/IEC 25010 – International standard defining a quality model for software products.
- CMMI (Capability Maturity Model Integration) – Framework for process improvement that includes quality objectives.
- DevOps and Continuous Delivery – Practices that integrate development and operations to enhance quality through automation and rapid feedback.