College of Engineering
Department of Computer Engineering
SWE 401 – Software Quality Assurance
Dr. Khaled Almakadmeh
© Khaled Almakadmeh 1
Chapter 1
Definitions and Concepts
© Khaled Almakadmeh 2
Agenda
Software Quality and Software Quality Assurance
Software product – A definition
Principles of Software Quality Assurance
Software errors, faults, and failures
Causes of software errors
Software quality assurance versus software quality control (SQC)
Software quality engineering and software engineering
© Khaled Almakadmeh 3
Software Quality & Software Quality Assurance
Software quality is the degree to which a software product meets
established requirements; however, quality depends upon the
degree to which established requirements accurately represent
stakeholder needs, wants, and expectations.
A high-quality software product is expected to meet all written
development requirements and to meet the relevant regulations and
professional conventions.
Quality is also achieved through fulfillment of stakeholder needs and
wants.
© Khaled Almakadmeh 4
Software Quality & Software Quality Assurance
Software quality assurance is a set of activities that define and
assess the adequacy of software process to provide evidence that
establishes confidence that the software processes are appropriate
for and produce software products of suitable quality for their
intended processes.
A key attribute of SQA is the objectivity of the SQA function with
respect to the project.
The SQA function may also be organizationally independent of the
project, that is, free from technical, managerial, and financial
pressures from the project.
© Khaled Almakadmeh 5
Software Quality & Software Quality Assurance
SQA is based on the planning and implementation of a series of
activities that are integrated into all stages of software development
process.
These activities are performed to substantiate the client’s confidence
that the software product will meet all the technical requirements.
A close relationship exist between software product quality, project
schedule, and project budget, where schedule and budget failures
result, almost always, in unavoidable software quality failure.
© Khaled Almakadmeh 6
Software Quality & Software Quality Assurance
Software quality assurance – An expanded definition
A set of activities that define and assess adequacy of software
process to provide evidence that establishes confidence that the
software processes are appropriate for producing software
products of suitable quality, for their intended processes, or for
their intended operation services and fulfils the requirements of
schedule and budget.
© Khaled Almakadmeh 7
Objectives of SQA Activities
Ensuring an acceptable level of confidence that the software product
and software operation services will conform to functional technical
requirements and be suitable quality for its intended use.
Ensuring an acceptable level of confidence that the software
development and software operation process will conform to
scheduling and budgetary requirements.
Initiating and managing activities to improve and increase efficiency
of software development, software operation, and SQA activities.
These activities yield improvements to the prospects’ achieving of
functional and managerial requirements while reducing costs.
© Khaled Almakadmeh 8
What is a software product?
Software product is a collection of components necessary to ensure
proper operation, and efficient maintenance during its life cycle. The
components include (1) computer programs, (2) documentation, (3)
data necessary for its operation and maintenance.
The computer programs activate the computer system to perform
the required applications. The computer programs include several
types of code, such as source code, executable code, test code, and
so on.
Documentation. It includes the various design reports, test reports,
and user and software manuals, and so on.
© Khaled Almakadmeh 9
What is a software product?
Data necessary for operating the software system. The required
data include lists of codes and parameters, and standard test data.
The purpose of the standard test data is to ascertain that no
undesirable changes in the code or software data have occurred
during bug corrections and other software maintenance activities,
and to support the detection of causes for any malfunctioning.
The composition of software product components varies significantly
according to the software development tools and methodology.
© Khaled Almakadmeh 10
Principles of Software Quality Assurance
Customer focus: organizations depend on customers and need to
understand their current and future needs, fulfill their requirements,
and achieve their satisfaction.
Leadership: organization’s leaders shall create an environment in
which employees are involved in achieving the quality targets.
Involvement of employees: involvement of employees at all levels
enables benefiting from their capabilities to promote software quality
issues.
© Khaled Almakadmeh 11
Principles of Software Quality Assurance
Process approach: managing activities and resources as
processes results in their improved efficiency.
System approach to management: process management
achieves higher effectiveness and efficiency through identification,
analysis, and understanding of interrelated processes.
Continual improvement: continual combined improvement of
quality and processes’ effectiveness and efficiency performance are
a permanent objective of the organization.
© Khaled Almakadmeh 12
Principles of Software Quality Assurance
Factual approach of decision-making: decisions should be based
on data and information.
Mutually beneficial supplier relationships: understanding that an
organization’s supplier relationships based on mutual benefits
contributes to improved performance of the organization regarding
quality, efficiency, and effectiveness.
© Khaled Almakadmeh 13
Software Errors, Faults, and Failures
The origin of software failures lies in a software error made by a
software designer or programmer. An error maybe a grammatical
error in one or more of the code lines, or a logical error in carrying
out one or more of the specification requirements.
A software fault is a software error that causes improper functioning
of the software in a specific application, and in rare cases, of the
software in general. But not all software errors become software
faults.
Software failures disrupt the use of the software. A software failure is
a result of a severe software fault. They are “activated,” that is, when
a user tries to apply the specific software section that is faulty.
© Khaled Almakadmeh 14
Software Errors, Faults, and Failures
© Khaled Almakadmeh 15
Causes of Software Errors
As software errors are the cause of poor software quality, it is
important to investigate their causes, to prevent them.
It should be noted that these errors are all human errors, made by
system analysts, programmers, software testers, documentation
experts, managers, and sometimes clients and their representatives.
A. Faulty definition of requirements
o Erroneous definition of requirements
o Lack of essential requirements
o Incomplete requirements definition
© Khaled Almakadmeh 16
Causes of Software Errors
B. Client–developer communication failures
o Misunderstanding of client’s instructions in the requirement document.
o Misunderstanding of the client’s requirement changes presented to the
developer in written form or verbally during the development period.
o Misunderstanding of the client’s responses to design issues presented
by the developer.
o Lack of attention to client messages relating to requirement changes,
and client responses to questions raised by the developer.
© Khaled Almakadmeh 17
Causes of Software Errors
C. Deviations from software requirements
o Developer reuses software modules from previous project without
sufficient analysis of the changes and adaptations needed to correctly
fulfill all relevant customer requirements.
o Developer decides to omit part of required functions to better handle
time or budget pressures.
o Developer-initiated improvements to the software introduced without
managerial or client approval.
© Khaled Almakadmeh 18
Causes of Software Errors
D. Logical design errors
o Definitions that represent software requirements by means of erroneous
algorithms.
o Process definitions that contain sequencing errors.
o Erroneous definition of boundary conditions.
o Omission of required software system states.
o Omission of definitions concerning reactions to illegal operation of the
software system.
E. Coding errors
o A wide range of reasons cause programmers to make coding errors.
These include misunderstanding the design documentation, linguistic
errors in programming languages, errors in the application of CASE and
other development tools, errors in data selection, and so on.
© Khaled Almakadmeh 19
Causes of Software Errors
F. Noncompliance with documentation and coding instructions
o Almost every development unit has its own documentation and coding
standards that define the content, order and format of the documents,
and code developed by team members. For this purpose, the unit
develops and publicizes templates and coding instructions.
G. Shortcomings of the testing process
o Incomplete test plans failing to test all or some parts of the software.
o Failure to document and report detected errors and faults.
o Failure to promptly correct detected software faults.
o Incomplete testing of software error corrections.
o Incomplete corrections of detected errors due to time pressures.
© Khaled Almakadmeh 20
Causes of Software Errors
H. User interface and procedure errors
o User interfaces direct users in areas such as the performance of input
and output activities, and data collection and processing.
o User interface and procedure errors may cause processing failures even
in cases of error-free design and coding.
I. Documentation errors
o Omission of software functions.
o Errors in the explanations and instructions given to users, resulting in
“dead ends” or incorrect applications.
o Listings of non-existing software functions.
© Khaled Almakadmeh 21
Software Quality Control
Software quality control relates to the activities needed to evaluate
the quality of a final software product, with the main objective of
eliminating any product that does not qualify.
The main objective of software quality assurance is to minimize the
cost of ensuring quality of a software product with a variety of
infrastructure activities and activities performed throughout software
development and maintenance stages.
© Khaled Almakadmeh 22
Software Quality Engineering & Software
Engineering
Software quality engineering employs the development of quality
assurance methodologies, procedures, and tools together with
methods for follow-up of quality assurance activities performed by
software development and maintenance teams.
Software engineering includes application of systematic, disciplined,
quantifiable approach to development, operation, and maintenance
of software.
© Khaled Almakadmeh 23