Various quality standards have been proposed to accommodate these different quality views and expectations. The standard ISO/IEC-9126 was one of the most influential in the software engineering community. Nevertheless, researchers and practitioners detected several problems and weaknesses in this standard. For that reason, the ISO/IEC-9126 international standard is superseded by the ISO/IEC-25000 series of international standards on Software product Quality Requirements and Evaluation (SQuaRE). This section provides a high-level overview of this standard.
The ISO/IEC-2500 quality reference model distinguishes different views on software quality:
- Internal quality: This concerns the properties of the system, that can be measured without executing it.
- External quality: This concerns the properties of the system, that can be observed during its execution.
- Quality in use: This concerns the properties experienced by its consumer during operation and maintenance of the system.
Ideally, the development (process quality) influences the internal quality; then, the internal quality determines the external quality. Finally, external quality determines quality in use. This chain is depicted in the following picture:
ISO/IEC-2500 Product Quality Reference Model
The quality model of ISO/IEC-25000 divides the product quality model (that is, the internal and external attributes) into eight top-level quality features: functional suitability, performance efficiency, compatibility, usability, reliability, security, maintainability, and portability. The following definitions have been extracted directly from the standard:
- Functional suitability: This represents the degree to which a product or system provides functions that meet stated and implied needs when used under specified conditions.
- Performance efficiency: This represents the performance relative to the amount of resources used under stated conditions.
- Compatibility: This is the degree to which a product, system or component can exchange information with other products, systems or components, and/or perform its required functions, while sharing the same hardware or software environment.
- Usability: This is the degree to which a product or system can be used by specified users to achieve specified goals with effectiveness, efficiency, and satisfaction in a specified context of use.
- Reliability: This is the degree to which a system, product, or component performs specified functions under specified conditions for a specified period of time.
- Security: This is the degree to which a product or system protects information and data so that persons or other products or systems have the degree of data access appropriate to their types and levels of authorization
- Maintainability: This represents the degree of effectiveness and efficiency with which a product or system can be modified to improve it, correct it, or adapt it to changes in environment and in requirements
- Portability: This is the degree of effectiveness and efficiency with which a system, product, or component can be transferred from one hardware, software, or other operational or usage environment to another
On the other hand, the attributes of quality in use can be categorized into the following five characteristics:
- Effectiveness: This is the accuracy and completeness with which users achieve specified goals.
- Efficiency: These are the resources expended in relation to the accuracy and completeness with which users achieve goals.
- Satisfaction: This is the degree to which user needs are satisfied when a product or system is used in a specified context of use.
- Freedom from risk: This is the degree to which a product or system mitigates the potential risk to economic status, human life, health, or the environment.
- Context coverage: This is the degree to which a product or system can be used with effectiveness, efficiency, freedom from risk, and satisfaction in both specified contexts of use and in contexts beyond those initially explicitly identified.