Lec 1-SOFTWARE QUALITY ENGINEERING Introduction
Lec 1-SOFTWARE QUALITY ENGINEERING Introduction
ENGINEERING
LECTURE # 1
INTRODUCTION
1 12/06/2024
Course Information
Introduction
The purpose of the course is to introduce fundamental
notions of software quality and the techniques used to build
and check quality in software systems. A particular emphasis
is placed on quantitative assessment of software quality and
quality control using software testing techniques.
Learning Outcomes
By the end of this course, students should have a good grasp
of software quality, Software Quality Assurance,
Configuration management, Static Testing techniques, White
box testing and Black box testing techniques, Software
metrics and models, Debugging, Quality Management,
Process Improvement and Cleanroom Software Engineering.
2 12/06/2024
Books and Resources
Software Quality Engineering, 6th Edition by
Jeff Tian
4 12/06/2024
Grading Criteria
Grading
Mid Terms - 30%
Final Term - 50%
Quiz - 05 %
Assignment - 10 %
Presentations - 05%
5 12/06/2024
Software Quality
Quality
Quality Engineering
Quality Types
Quality Control vs Quality Assurance
Different views of Quality
Quality Models
Cost of Quality
6 12/06/2024
What is quality?
Quality, simplistically, means that a product
should meet its specification.
This is problematical for software systems
There is a tension between customer quality
requirements (efficiency, reliability, etc.) and
developer quality requirements (maintainability,
reusability, etc.);
Some quality requirements are difficult to specify in an
unambiguous way;
Software specifications are usually incomplete and
often inconsistent.
7 12/06/2024
Quality Engineering
Software quality assurance (SQA) consists
of a means of monitoring the software
engineering processes and methods used
to ensure quality.
8 12/06/2024
DEFINING QUALITY
Perfection
Consistency
Eliminating waste
Speed of delivery
Compliance with policies & procedures
Providing good, usable products
Doing it right the first time
Delighting or pleasing customers
Total customer service & satisfaction
9 12/06/2024
Quality Types
Functional Quality — a measure
of what the software does vs. what it’s
supposed to do
10 12/06/2024
Quality Types
Process quality: Software processes implement
best practices of software engineering in an
organizational context. Process quality expresses
the degree to which defined processes were
followed and completed.
Product quality: Software products are the output
of software processes. Product quality is
determined by the degree to which the developed
software meets the defined requirements.
Quality in use: Quality in use addresses the degree
to which a product is fit for purpose when exposed
to a particular context of use.
11 12/06/2024
Different Views of Quality
Transcendental View
User View
Manufacturing View
Product View
Value based View
12 12/06/2024
Quality Models
Standard quality models
McCall
ISO/IEC 9126
IEEE
Application or company specific quality
models
FURPS
GQM Approach
13 12/06/2024
Cost of Quality
Prevention cost:
Appraisal cost:
Failure cost:
Internal failure cost
External failure cost
14 12/06/2024
Quality Assurance
Quality Assurance
Dealing with Pre- Post Release Defects
Classification Scheme for Quality
Assurance
Defect prevention
Defect Reduction
Defect Containment
15 12/06/2024
Software Quality Assurance
“All planned & systematic activities
implemented within quality system, &
demonstrated as needed, to provide
adequate confidence that an entity
will fulfill requirements for quality”.
16 12/06/2024
Classification scheme for QA
Defect Prevention
Education and training
Process conformance and standards enforcement
Tools/technologies and techniques
Defect Containment
Software Fault Tolerance
Fault Containment
17 12/06/2024
Software Quality Assurance
SQA Team
SQA Plan
Software Review
Formal Technical Reviews
Review Guidelines
18 12/06/2024
SQA Team
Testing Manager
Test Team Lead
Test Analyst
Tester
Independent Test Observer
19 12/06/2024
SQA Plan
The software quality assurance plan is an
outline of quality measures to ensure quality
levels within a software development effort.
The plan is used to compare the actual levels
of quality during development with the planned
levels of quality.
If the levels of quality are not within the
planned quality levels, management will
respond appropriately as documented within
the plan.
20 12/06/2024
Software Reviews
What is software review?
Why software reviews?
Objectives
Review Meeting Constraints
Review Meeting Results
21 12/06/2024
Software Configuration
Management
Configuration
Software Configuration Management
Baselines
Software Configuration Items
SCM Process
SCM Tasks
22 12/06/2024
Software Configuration
Management
Software Configuration Management is the
art of
identifying, organizing and controlling
modifications
to the software being built by a
programming team. It
maximizes productivity by minimizing
mistakes
23 12/06/2024
Baselines
IEEE Std. No. 610.12-1990 defines
baselines as,
“ A specification or product that has
been
formally reviewed and agreed upon,
that
thereafter serves as the basis for
further
development, and that can be changed
only
through formal change control
procedures.”
24 12/06/2024
Software Configuration Items
The items that comprises all information
produced as
a part of software process are collectively
called a
software configuration items.
25 12/06/2024
SCM Tasks
Identifications of objects
Version Control
Change Control
Configuration Auditing
Status Reporting
26 12/06/2024
Software Testing
What is Software Testing?
Software Testing Activities
Software Testing Principles
Test Cases
Basic Types of testing
Methods of Testing
27 12/06/2024
Software Testing
“Testing is the process of
executing a program or
system with the intent of
finding errors.”
by Myers 1979
28 12/06/2024
Test Case
A test case in software engineering is a set
of conditions or variables under which a
tester will determine whether an
application or software system meets
specifications.
29 12/06/2024
Methods of Testing
Manual Testing
Automated Testing
30 12/06/2024
Types of Testing
31 12/06/2024
Static Testing
Introduction of static testing
Static Testing Approach
Static Testing Methods
Inspections
Walkthroughs
Desk Checking
Peer Ratings
32 12/06/2024
Static Testing
In software development, static testing,
also called dry run testing, is a form of
software testing where the authors
manually read their documents/code to find
any errors.
33 12/06/2024
Static Testing Methods
Inspections
Fagan Inspection
Gilb Inspection
Two Person Inspection
N-Fold Inspection
Meetingless Inspection
Walkthroughs
Desk Checking
Peer Ratings
34 12/06/2024
Black Box Testing Methods
Equivalence Class Partitioning Testing
Boundary Value Testing
Omission Testing
Null Case Testing
Volume Testing
Load Testing
Stress Testing
Performance Testing
Resource Testing
Requirements/Specification Testing
Button Press Testing
35 12/06/2024
Black Box Testing Methods
State Transition Testing
Installation Testing
Security Testing
Integration Testing
Compatibility Testing
Configuration Testing
Documentation Testing
Smoke Testing
Sanity Testing
Usability Testing
Exploratory Testing
36 12/06/2024
White Box Testing Methods
Statement Coverage
Segment Coverage
Branch Coverage
Compound Condition Coverage
Basis Path Testing
Data Flow Testing
Loop Testing
37 12/06/2024
Debugging
Debugging
Bug Life Cycle
Reporting
Bug/Defect Types
Defect Report
Methods of Debugging
38 12/06/2024
Debugging
Debugging is the activity which is
performed after executing a successful test
case.
Debugging consists of determining the
exact nature and
location of the suspected error and fixing
the error.
39 12/06/2024
Bug Lifecycle
40 12/06/2024
Reporting
Daily
Weekly
End of Cycle
41 12/06/2024
Bug Types
Showstopper
Critical
Non-Critical (Minor)
42 12/06/2024
Methods of Debugging
Debugging by Brute Force Attack
Debugging by Induction
Debugging by Deduction
Debugging by Backtracking
Debugging by Testing
43 12/06/2024
Quality Management
Quality Management Overview
Quality Assurance
Quality Planning
Quality Control
Software Measurement and Metrics
44 12/06/2024
Quality Management
The term Quality management has a
specific meaning within many business
sectors. This specific definition can be
considered to have the following main
components:
quality assurance
quality planning
quality control
45 12/06/2024
Quality management
Quality management ensures that an organization,
product or service consistently functions well. It has
four main components: quality planning, quality
assurance, quality control and quality improvement.
Quality management is focused not only on product
and service quality, but also on the means to achieve it.
Quality management, therefore, uses quality assurance
and control of processes as well as products to achieve
more consistent quality. Quality control is also part of
quality management. What a customer wants and is
willing to pay for it, determines quality. It is a written or
unwritten commitment to a known or unknown
consumer in the market. Quality can be defined as how
well the product performs its intended function.
46 12/06/2024
Software Metrics
A software metric is a quantitative measure
of degree to which a system, component or
process possesses a given attribute.
47 12/06/2024
Process Improvement
Process Improvement
Process and product quality
Process analysis
Process change
CMMI Model
Six Sigma
48 12/06/2024
Process Improvement
“Process improvement” means making
things better or more
formally Understanding existing processes
and introducing
process changes to improve product
quality, reduce costs or
accelerate schedules.
49 12/06/2024
Process & Product Quality
50 12/06/2024
Process Analysis
Questionnaires and Interviews
Ethnographic Analysis
51 12/06/2024
Process Change
Involves making modifications to existing
processes.
52 12/06/2024
CMMI
CMMI is a process improvement approach that provides
organizations with the essential elements of effective
processes that ultimately improve their performance.
53 12/06/2024
Capability Maturity Model
Integration (CMMI)
Capability Maturity Model Integration (CMMI) is a
process level improvement training and appraisal
program. Administered by the CMMI Institute,
a subsidiary of ISACA, it was developed at Carnegie
Mellon University(CMU). It is required by many U.S.
Government contracts, especially in software
development. CMU claims CMMI can be used to guide
process improvement across a project, division, or an
entire organization. CMMI defines the following maturity
levels for processes: Initial, Managed, Defined,
Quantitatively Managed, and Optimizing. Version 2.0
was published in 2018 (Version 1.3 was published in
2010, and is the reference model for the rest of the
information in this article). CMMI is registered in the U.S.
Patent and Trademark Office by CMU.
54 12/06/2024
55 12/06/2024
Six Sigma
Six Sigma is a business
management strategy originally
developed by Motorola, USA in
1986. As of 2010, it is widely used
in many sectors of industry.
Six Sigma seeks to improve the
quality of process outputs by
identifying and removing the causes
of defects (errors) and minimizing
variability in manufacturing and
business processes.
56 12/06/2024
Six Sigma
This is done by using empirical and
statistical quality management methods and
by hiring people who serve as Six Sigma
experts. Each Six Sigma project follows a
defined methodology and has specific value
targets, such as reducing pollution or
increasing customer satisfaction.
The term Six Sigma originates from statistical
quality control, a reference to the fraction of a
normal curve that lies within six standard
deviations of the mean, used to represent a
defect rate.
57 12/06/2024
Cleanroom Software Engineering
Cleanroom Software Engineering
Cleanroom Functions
Cleanroom Strategy
58 12/06/2024
cleanroom software
engineering
The cleanroom software
engineering process is a
software development process intended to
produce software with a certifiable level of
reliability. The central principles are
software development based on formal
methods, incremental implementation
under statistical quality control, and
statistically sound testing.
59 12/06/2024
Central principles of cse
The basic principles of the cleanroom process are
Software development based on formal methods
Software tool support based on some mathematical formalism includes model
checking, process algebras, and Petri nets. The Box Structure Method might be one
such means of specifying and designing a software product. Verification that the
design correctly implements the specification is performed through team review,
often with software tool support .Incremental implementation under statistical
quality control.
Cleanroom development uses an iterative approach, in which the product is
developed in increments that gradually increase the implemented functionality. The
quality of each increment is measured against pre-established standards to verify
that the development process is proceeding acceptably. A failure to meet quality
standards results in the cessation of testing for the current increment, and a return
to the design phase.
Statistically sound testing
Software testing in the cleanroom process is carried out as a statistical
experiment. Based on the formal specification, a representative subset of software
input/output trajectories is selected and tested. This sample is then statistically
analyzed to produce an estimate of the reliability of the software, and a level of
confidence in that estimate.
60 12/06/2024