Introduction
In the previous section, we identified software quality metrics as one of the components of SQA. We shall examine this component in detail in this section. Software quality cannot be measured directly; it can only be measured indirectly. Therefore, instead of defining metrics that will directly measure the quality of software, we define factors that determine the quality of software. These factors are called software quality factors. Many people have developed different factors that affect the quality of software. We shall consider these various software quality factors.
3.1 McCall software quality factors
McCall et al categorized software quality factors according to the following:
Figure 3.1.1 shows the McCall software quality factors according to the various categories:
Maintainability Portability Flexibility Reusability Testability Interoperability Product Product Revision Transition Product
Operation
Correctness Usability Efficiency
Reliability Integrity
Figure 3.1.1 McCall software quality factors
McCall et al defined each of these software quality factors as follows:
This is the amount of computing resources and code required by a program to perform its function
This is the extent to which access to software or data by unauthorized person can be controlled.
This is the effort required to learn, operate, prepare input and interpret output of a program.
This is the effort required to locate and fix an error in a program.
This is the effort required to modify an operational program.
This is the effort required to test a program, to ensure that it performs its intended function.
This is the effort required to transfer the program from one hardware and/or software system environment to another.
This is the extent to which a program or part of a program can be reused in other applications.
This is the effort required to couple one system to another.
3.2 Hewlett-Packard (HP) software quality factors
HP, Hewlett-Packard developed a set of software quality factors, which is given the acronym FURPS, where F is for Functionality, U is for Usability, R is for Reliability, P is for Performance and S is for Supportability.
This is assessed by evaluating the feature set and capability of the program, the generality of function that are delivered, and the security of the overall system.
This is assessed by considering the human interface design of the software, overall aesthetics, consistency and documentation.
This is evaluated by measuring the frequency and severity of failure, the accuracy of output results, the mean time to failure (MTTF), the ability to recover from failure, and the predictability of the program.
This is measured by processing speed, response time, resource consumption, throughput and efficiency.
This combines the following: extensibility, adaptability, serviceability, testability, compatibility, configurability.
3.3 ISO software quality factors
ISO, International Standard Organization developed a standard, called ISO 9126, which aims at identifying key software quality factors as follows:
This is the degree to which the software satisfies stated needs, under the following: suitability, accuracy, interoperability, compliance and security.
This is the amount of time that the software is available for use, under the following: maturity fault, tolerance, recoverability.
This is the degree to which the software is easy to use, under the following: understandability, learnability and operability.
This is the degree to which the software makes optimal use of system resources, under the following: time behavior, resource behavior.
This is the degree with which repair may be made to the software, under the following: analyzability, changeability, stability, testability.
This is the ease with which the software can be transposed from one environment to the other, under the following: adaptability, installability, conformability, replaceability.