Software Engineering Series Article 6
Software quality refers to the total set of characteristics and features of a software system or product that reflect its ability to satisfy specified or implied requirements.
Software quality management refers to the independent inspection of the software development process. It consists of three main activities: quality assurance, quality planning, and quality control.
Software Quality Assurance (SQA) refers to planned and organized activities conducted to ensure that the software system or product fully meets user quality requirements. Its purpose is to produce high-quality software.
Software Quality Characteristics
To discuss software quality, you first need to understand software quality characteristics. Several software quality models exist to describe these characteristics, such as the ISO/IEC 9126 software quality model and the Mc Call software quality model.
ISO/IEC 9126 Software Quality Model
The ISO/IEC 9126 software quality model consists of three levels: the first level is quality characteristics, the second is quality sub-characteristics, and the third is metrics.

Functionality
A set of attributes related to the existence of a set of functions and their specified properties. Functions are those that satisfy specified or implied needs.
- Suitability: Software attributes related to whether a set of functions is provided for specified tasks and whether these functions are appropriate.
- Accurateness: Software attributes related to the ability to provide correct or consistent results or effects.
- Interoperability: Software attributes related to the ability to interact with other specified systems.
- Compliance: Software attributes that make the software adhere to relevant standards, conventions, regulations, and similar rules.
- Security: Software attributes related to the ability to prevent unauthorized intentional or accidental access to programs and data.
Reliability
The ability of the software to maintain its performance level over a specified period of time and under specified conditions.
- Maturity: Software attributes related to the frequency of failures caused by software faults.
- Fault tolerance: Software attributes related to the ability to maintain specified performance levels in the event of software errors or violations of specified interfaces.
- Recoverability: Software attributes related to the ability to re-establish performance levels and recover directly affected data after a failure, and the time and effort required for this purpose.
Usability
A set of attributes related to the effort required for use and the individual evaluation of such use by a specified or implied set of users.
- Understandability: Software attributes related to the effort users spend understanding logical concepts and their applications.
- Learnability: Software attributes related to the effort users spend learning its application (e.g., operation control, input, output).
- Operability: Software attributes related to the effort users spend on operation and operation control.
Efficiency
Software attributes related to the relationship between the software’s performance level and the amount of resources used under specified conditions.
- Time behavior: Software attributes related to response and processing times and throughput when the software performs its functions.
- Resource behavior: Software attributes related to the amount of resources used and the duration of resource use when the software performs its functions.
Maintainability
A set of attributes related to the effort required to make specified modifications.
- Analyzability: Software attributes related to the effort required to diagnose deficiencies or causes of failure, or to identify parts to be modified.
- Changeability: Software attributes related to the effort required for modification, debugging, or adaptation to environmental changes.
- Stability: Software attributes related to the risk of unexpected effects caused by modifications.
- Testability: Software attributes related to the effort required to validate the modified software.
Portability
A set of attributes related to the ability of the software to be transferred from one environment to another.
- Adaptability: Software attributes related to the processing or means of moving software to different environments.
- Installability: Software attributes related to the effort required to install the software in a specified environment.
- Conformance: Software attributes that make the software adhere to standards or conventions related to portability.
- Replaceability: Software attributes related to the possibility and effort of using one software to replace another specified software in that software environment.
Mc Call Software Quality Model
The Mc Call software quality model defines 11 quality characteristics from three aspects of software products: product revision, product transition, and product operations.
Mc Call also provides a three-level model framework. The first level is quality characteristics, the second is evaluation criteria, and the third is metrics.

Software Review
Generally, “quality” is understood as “user satisfaction.” To satisfy users, the following two conditions are necessary:
- The design specification meets user requirements, which is called design quality.
- The program executes correctly according to the design specification, which is called program quality.
Review Content of Design Quality
The objects of design quality review are the software requirement specifications and data requirement specifications produced during the requirement analysis phase, and the software preliminary design specifications produced during the preliminary design phase. Reviews are generally conducted from the following aspects:
- Evaluating whether software specifications meet user requirements, i.e., whether the overall design philosophy and design policy are clear; whether requirement specifications are approved by the user or higher authorities; and whether requirement specifications are consistent with preliminary design specifications.
- Reviewing reliability, i.e., whether input anomalies (errors or overloads), hardware failures, and software failures can be avoided, and whether alternative or recovery means can be taken promptly if they occur.
- Reviewing the implementation of security measures, i.e., whether system access credentials are checked.
- Reviewing the implementation of operational characteristics, i.e., the appropriateness of operation commands and information; the appropriateness of input data and input control statements; the appropriateness of output data; and the appropriateness of response times.
- Reviewing performance implementation, i.e., whether specified performance target values are achieved.
- Reviewing whether the software has modifiability, extensibility, interchangeability, and portability.
- Reviewing whether the software has testability.
- Reviewing whether the software has reusability.
Review Content of Program Quality
Program quality review is usually conducted from the developer’s perspective and is directly related to development technology. It focuses on the software’s own structure, interfaces with the operating environment, and the impact of changes.
The structure of the software includes:
- Functional structure. Items to check:
- Data structure
- Functional structure
- Correspondence between data structure and functional structure
- Generality of functions
- Module hierarchy
- Module structure. While module hierarchy is static, the dynamic structure must also be checked. Modules are divided into processing modules and data modules. Checking items for such structures include:
- Control flow structure
- Data flow structure
- Correspondence between module structure and functional structure
- Structure of the processing procedures
Interfaces with Operating Environment
The operating environment includes hardware, other software, and users. Main inspection items include:
- Interface with hardware. Including interface conventions with hardware, i.e., regulations made according to hardware manuals; handling of hardware failures and overloads.
- Interface with users. Including interface conventions with users, i.e., input data structure; output data structure; handling of abnormal inputs and overload inputs; user access credential checks, etc.
Software Fault Tolerance Technology
Technologies to improve software quality and reliability can be roughly divided into two categories: error avoidance (preventing errors from entering software during development) and fault tolerance (minimizing the impact of unavoidable errors).
Definition of Fault-Tolerant Software
- Software with specified functions that has the ability to shield the effects of its own errors (software errors) to a certain extent.
- Software with specified functions that can automatically recover from an error state to a normal state to a certain extent.
- Software with specified functions that can still complete expected functions to a certain extent when an error occurs.
- Software with specified functions that possesses fault-tolerance capabilities to a certain extent.
General Methods for Fault Tolerance
The primary means of implementing fault tolerance is redundancy. Redundancy refers to resources added beyond those strictly necessary to implement the system’s specified functions, including hardware, software, information, and time. These resources can significantly improve system reliability. Generally, redundancy technology is divided into four categories:
- Structural Redundancy. This is the most common technique, divided into three types based on operation:
- Static redundancy
- Dynamic redundancy
- Hybrid redundancy
- Information Redundancy. Adding extra information to detect or correct errors in computation or transmission.
- Time Redundancy. Repeating the execution of instructions or programs to eliminate the impact of transient errors.
- Redundancy Overhead Technology. The resources and techniques required to implement the above redundancy technologies, including programs, instructions, data, and the space and channels to store and move them.
In fault tolerance for shielding hardware errors, redundancy overhead technology includes:
- Redundant storage and invocation of critical programs and data.
- Implementation of detection, voting, switching, reconfiguration, error correction, and recalculation.
In fault-tolerant systems for shielding software errors, redundancy overhead technology includes:
- Storage and invocation of redundant backup programs.
- Programs for error detection and error recovery.
- Firmware required to implement fault-tolerant software.
Software Tools
Software used to assist activities in software development, operation, maintenance, management, and support processes is called a software tool.
Software Development Tools
Corresponding to various activities in the software development process, development tools usually include requirement analysis tools, design tools, coding and debugging tools, testing tools, etc.
Software Maintenance Tools
Software that assists activities in the software maintenance process is called a software maintenance tool. It helps maintenance personnel perform various tasks on software code and documentation. Main maintenance tools include version control tools, document analysis tools, development information repository tools, reverse engineering tools, and re-engineering tools.