Software Quality Characteristics

Software Quality Characteristics

Robert D. Cameron
January 7, 2013

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)