Software Quality Assurance: Chapter # 2
Software Quality Assurance: Chapter # 2
Chapter # 2
What is Software Quality?
By:
Muhammad Imran
Assistant Prof. of Computer Science
Govt. Millat Degree College Mumtazabad, Multan
What is software?
Software – IEEE definition
Software is:
Computer programs, procedures, and possibly associated documentation and data pertaining to
the operation of a computer system.
This definition lists the following four components of software:
■ Computer programs (the “code”)
■ Procedures
■ Documentation
■ Data necessary for operating the software system.
To sum up, software quality assurance always includes, in addition to code quality, the quality of
the procedures, the documentation and the necessary software data.
The origin of software failures lies in a software error made by a programmer. An error can be a
grammatical error in one or more of the code lines, or a logical error in carrying out one or more
of the client’s requirements. However, not all software errors become software faults. In other
words, in some cases, the software error can cause improper functioning of the software
in general or in a specific application. In many other cases, erroneous code lines will not affect
the functionality of the software as a whole; in a part of these cases, the fault will be corrected or
“neutralized” by subsequent code lines.
We are interested mainly in the software failures that disrupt our use of the software. This
requires us to examine the relationship between software faults and software failures. Do all
software faults end with software failures? Not necessarily: a software fault becomes a software
failure only when it is “activated” – when the software user tries to apply the specific, faulty
application. In many situations, a software fault is never activated due to the user’s lack of
interest in the specific application or to the fact that the combination of conditions necessary to
activate the fault never occurs.
■ The developer reuses software modules taken from an earlier project without sufficient
analysis of the changes and adaptations needed to correctly fulfill all the new requirements.
■ Due to time or budget pressures, the developer decides to omit part of the required functions in
an attempt to cope with these pressures.
■ Developer-initiated, unapproved improvements to the software, introduced without the client’s
approval, frequently disregard requirements that seem minor to the developer. Such “minor”
changes may, eventually, cause software errors.
5. Coding errors
A broad range of reasons cause programmers to make coding errors. These include
misunderstanding the design documentation, linguistic errors in the programming languages,
errors in the application of CASE and other development tools, errors in data selection, and so
forth.
■ Team members who need to coordinate their own codes with code modules developed by
“non-complying” team members can be expected to encounter more than the usual number of
difficulties when trying to understand the software developed by the other team members.
■ The design review team will find it more difficult to review a design prepared by a non-
complying team.
■ The test team will find it more difficult to test the module; consequently, their efficiency is
expected to be lower, leaving more errors undetected.
8. Procedure errors
Procedures direct the user with respect to the activities required at each step of the process. They
are of special importance in complex software systems where the processing is conducted in
several steps, each of which may feed a variety of types of data and allow for examination of the
intermediate results.
9. Documentation errors
The documentation errors that trouble the development and maintenance teams are errors in the
design documents and in the documentation integrated into the body of the software. These
errors can cause additional errors in further stages of development and during maintenance.
Typical errors of this type are:
■ Omission of software functions.
■ Errors in the explanations and instructions given to users, resulting in “dead ends” or incorrect
applications.
■ Listing of non-existing software functions, that is, functions planned in the early stages of
development but later dropped, and functions that were active in previous versions of the
software but cancelled in the current version.
Software Quality - IEEE definition:
Software quality is:
1. The degree to which a system, component, or process meets specified requirements.
OR
2. The degree to which a system, component, or process meets customer or user needs or
expectations.
We will use the expanded definition of SQA, which will serve as the basis for the
inclusion and evaluation of various components of the SQA system.
Two phrases are constantly repeated within the context of software quality:
“Quality control” and “quality assurance”. Are they synonymous? How are they related?
Quality Assurance is the set of activities that determine the procedures and standards to
develop a product.