Not logged in. Login

Software 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 CharacteristicSubcharacteristicDefinition
FunctionalitySuitabilityThe capability of the software to provide an adequate set of functions for specified tasks and user objectives.
AccuracyThe capability of the software to provide the right or agreed-upon results or effects.
InteroperabilityThe capability of the software to interact with one or more specified systems.
SecurityThe 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.
ReliabilityMaturityThe capability of the software to avoid failure as a result of faults in the software.
Fault ToleranceThe capability of the software to maintain a specified level of performance in case of software faults or of infringement of its specified interface.
RecoverabilityThe capability of the software to reestablish its level of performance and recover the data directly affected in the case of a failure.
UsabilityUnderstandabilityThe 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.
LearnabilityThe capability of the software product to enable the user to learn its applications.
OperabilityThe capability of the software product to enable the user to operate and control it.
AttractivenessThe capability of the software product to be liked by the user.
EfficiencyTime BehaviorThe capability of the software to provide appropriate response and processing times and throughput rates when performing its function under stated conditions.
Resource UtilizationThe capability of the software to use appropriate resources in an appropriate time when the software performs its function under stated condition.
MaintainabilityAnalyzabilityThe 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.
ChangeabilityThe capability of the software product to enable a specified modification to be implemented.
StabilityThe capability of the software to minimize unexpected effects from modifications of the software.
TestabilityThe capability of the software product to enable modified software to be validated.
PortabilityAdaptabilityThe 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.
InstallabilityThe capability of the software to be installed in a specified environment.
CoexistenceThe capability of the software to coexist with other independent software in a common environment sharing common resources.
ReplaceabilityThe 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)
Updated Fri Jan. 06 2023, 10:47 by cameron.