Quality
What is Software Quality?
Software quality is a judgment about the value of software from a particular perspective. Software quality is often decomposed into individual quality characteristics.
User Perspective
From a user persepctive there are several characteristics that are important.
- Does the software provide the full range of desired functionality for its intended purpose?
- Does the software function reliably to produce correct results on correct input?
- Does the software function safely and securely in response to bad input?
- Is the software easy to use?
- Does the software perform responsively or does it seem unnecessarily slow?
- Does the software work well with other software that the user employs?
Operational Perspective
While considering user quality issues to be important, the IT group responsible for deploying and maintaining software may be concerned with other issues.
- Is the software secure from malicious attacks intended to compromise other components of IT infrastructure?
- Does the software make good use of computing resources or does it seem to require more memory and processing power than is necessary?
Developer Perspective
Beyond the user and operational perspectives, the developers of software may consider other quality factors, specifically focusing on the quality of the source code.
- How easy is it modify the software to adapt it to changing requirements?
- Can the software be adapted to operate well on a variety of different computing platforms?
Standard Software Quality Characteristics
ISO/IEC 9126 defines software quality as a structured set of individual quality characteristics.
- Functionality
- Reliability
- Usability
- Efficiency
- Maintainability
- Portability
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.
Quality Characteristic | Subcharacteristic | Definition |
---|---|---|
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.
- Security
- Compatability
In essence, the Interoperability and Security subcharacteristics have been promoted to be their own top-level characteristics.
Quality Metrics
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.
- Functionality (partial assessment)
- Reliability (specifically, fault tolerance)