Skip to content

Software Quality Factors

Software quality is a multi-faceted concept, encompassing various attributes that determine how well software meets user needs and engineering standards. These attributes are often called ‘quality factors’ or ‘quality characteristics’. Some factors can be measured directly (e.g., number of defects found in testing), while others are measured indirectly through related indicators (e.g., maintainability assessed via code complexity metrics).

Several models have been proposed to categorize these factors. A foundational model was developed by McCall, Boehm, and others in the late 1970s. While influential, contemporary practice often refers to the ISO/IEC 25010:2011 standard (part of the SQuaRE - Software product Quality Requirements and Evaluation series), which provides a more current and comprehensive framework.

McCall’s Quality Factor Model (Classic View)

Section titled “McCall’s Quality Factor Model (Classic View)”

McCall’s model, though older, provides a useful historical perspective and introduces key concepts. It groups 11 factors into three categories:

  • Product Operation: Aspects related to the software’s runtime behavior. (Correctness, Reliability, Efficiency, Integrity, Usability)
  • Product Revision: Aspects related to modifying the software. (Maintainability, Flexibility, Testability)
  • Product Transition: Aspects related to adapting the software to new environments. (Portability, Reusability, Interoperability)

Let’s briefly examine McCall’s factors within their categories:

  • Correctness: Does the software perform its specified functions accurately? Does it meet requirements?
  • Reliability: Does the software perform without failure under specified conditions for a specified period?
  • Efficiency: How well does the software utilize system resources (CPU, memory, network bandwidth, storage)?
  • Integrity (Security): How well is unauthorized access to software or data prevented?
  • Usability: How easy is the software to learn and operate for its intended users?
  • Maintainability: How easy is it to locate and fix defects or make modifications?
  • Flexibility: How easy is it to add new features or adapt the software to different requirements?
  • Testability: How easy is it to test the software to ensure it meets its requirements and find defects?
  • Portability: How easy is it to transfer the software to run in a different environment (hardware, OS, cloud platform)?
  • Reusability: Can parts of the software (code, components, designs) be used in other applications?
  • Interoperability: Does the software interact effectively with other systems or components?

ISO/IEC 25010 Quality Model (Modern Standard)

Section titled “ISO/IEC 25010 Quality Model (Modern Standard)”

The ISO/IEC 25010 standard presents a more detailed and widely accepted model for software product quality, categorized into eight main characteristics:

  • Functional Suitability: The degree to which a product or system provides functions that meet stated and implied needs when used under specified conditions. (Sub-characteristics: Functional completeness, functional correctness, functional appropriateness).
  • Performance Efficiency: Performance relative to the amount of resources used under stated conditions. (Sub-characteristics: Time-behaviour, resource utilization, capacity).
  • Compatibility: 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. (Sub-characteristics: Co-existence, interoperability).
  • Usability: 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. Includes Accessibility. (Sub-characteristics: Appropriateness recognizability, learnability, operability, user error protection, user interface aesthetics, accessibility).
  • Reliability: The degree to which a system, product or component performs specified functions under specified conditions for a specified period of time. (Sub-characteristics: Maturity, availability, fault tolerance, recoverability).
  • Security: 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. (Sub-characteristics: Confidentiality, integrity, non-repudiation, accountability, authenticity).
  • Maintainability: Represents the degree of effectiveness and efficiency with which a product or system can be modified by the intended maintainers. (Sub-characteristics: Modularity, reusability, analysability, modifiability, testability).
  • Portability: 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. (Sub-characteristics: Adaptability, installability, replaceability).

Understanding these factors, whether using McCall’s framework as a foundation or the more current ISO 25010 standard, is crucial for defining quality goals, selecting appropriate metrics, and guiding development and testing efforts. The specific factors emphasized often depend on the application domain, user expectations, and business objectives.

Consider developing a mobile banking app. Key quality factors would likely include:

  • Security (paramount for financial data)
  • Reliability (users must trust it works consistently)
  • Usability (easy for diverse users to navigate and perform transactions)
  • Performance Efficiency (quick response times, low battery usage)
  • Functional Correctness (transactions must be accurate)

For an internal data processing tool, Maintainability and Performance Efficiency might be prioritized differently than for the public-facing banking app.