Software quality is a judgment about the value of software from a particular perspective. Software quality is often decomposed into individual quality characteristics.
From a user persepctive there are several characteristics that are important.
While considering user quality issues to be important, the IT group responsible for deploying and maintaining software may be concerned with other issues.
Beyond the user and operational perspectives, the developers of software may consider other quality factors, specifically focusing on the quality of the source code.
ISO/IEC 9126 defines software quality as a structured set of individual quality characteristics.
These characteristics are further decomposed into subcharacteristics as shown in the following table, adapted from Chapter 17 of Software Testing and Quality Assurance: Theory and Practice by Naik and Tripathy, 2008.
|Functionality||Suitability||The capability of the software to provide an adequate set of functions for specified tasks and user objectives.|
|Accuracy||The capability of the software to provide the right or agreed-upon results or effects.|
|Interoperability||The capability of the software to interact with one or more specified systems.|
|Security||The capability of the software to prevent unintended access and resist deliberate attacks intended to gain unauthorized access to confidential information or to make unauthorized modifications to information or to the program so as to provide the attacker with some advantage or so as to deny service to legitimate users.|
|Reliability||Maturity||The capability of the software to avoid failure as a result of faults in the software.|
|Fault Tolerance||The capability of the software to maintain a specified level of performance in case of software faults or of infringement of its specified interface.|
|Recoverability||The capability of the software to reestablish its level of performance and recover the data directly affected in the case of a failure.|
|Usability||Understandability||The capability of the software product to enable the user to understand whether the software is suitable, and how it can be used for particular tasks and conditions of use.|
|Learnability||The capability of the software product to enable the user to learn its applications.|
|Operability||The capability of the software product to enable the user to operate and control it.|
|Attractiveness||The capability of the software product to be liked by the user.|
|Efficiency||Time Behavior||The capability of the software to provide appropriate response and processing times and throughput rates when performing its function under stated conditions.|
|Resource Utilization||The capability of the software to use appropriate resources in an appropriate time when the software performs its function under stated condition.|
|Maintainability||Analyzability||The capability of the software product to be diagnosed for deficiencies or causes of failures in the software or for the parts to be modified to be identified.|
|Changeability||The capability of the software product to enable a specified modification to be implemented.|
|Stability||The capability of the software to minimize unexpected effects from modifications of the software.|
|Testability||The capability of the software product to enable modified software to be validated.|
|Portability||Adaptability||The capability of the software to be modified for different specified environments without applying actions or means other than those provided for this purpose for the software considered.|
|Installability||The capability of the software to be installed in a specified environment.|
|Coexistence||The capability of the software to coexist with other independent software in a common environment sharing common resources.|
|Replaceability||The capability of the software to be used in place of other specified software in the environment of that software.|
ISO/IEC 25010 (2011) refines this model with two new top-level categories particularly related to internet technologies.
In essence, the Interoperability and Security subcharacteristics have been promoted to be their own top-level characteristics.
Quality characteristics are high-level concepts which reflect important aspects of quality, but are not directly measurable. Instead, a software quality plan must define suitable metrics that can be used to assess one or more quality characteristics or subcharacteristics.
For example, in assessing the quality of an XML parser, one might use the XML W3C Conformance Test Suite. This test suite includes tests designed to cover all the requirements of the W3C Extensible Markup Language (XML) Recommendation, with a particular focus on the requirements for handling errors in well-formedness or validity of XML documents. As such the percentage of test cases passed can be used as a metric to assess the following characteristics of the XML parser in question.