SOFTWARE QUALITY ENGINEERING
LECTURE NO: 01
COURSE INFORMATION
Software Quality Engineering(SE-301)
Credit hours: 3+0
Course Instructor: Wajeeha Yasser
SCHEDULE
Thursday: Alpha group
08:30 AM– 11:30 AM
Friday: Omega group
08:30 AM– 11:30 AM
MARKS DISTRIBUTION
Final Exam: 50%
Mid Exam: 25%
Quiz & Assignments: 25%
ATTENDANCE
At least 75% is required for appearing in Exam
Below 65%.... Only the Dean FT&IE can approve
4-5 quizzes, Best 3-4 will be counted
No retake for quiz or assignments
Assignment evaluation can be report and/or viva based
CONTACT
Room # 18, CS Block
[email protected] Office Hours:
Thursday 9:30 AM – 11:30 AM
BOOKS
Text Book:
Software Engineering : A Practitioner’s Approach, 8th
edition by Roger S. Pressman
Reference Books:
i) Software Quality Engineering: Testing Quality
Assurance and Quantifiable Improvement: by Jeff
Tian
ii) Software Engineering by Ian Somerville
COURSE OBJECTIVE
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.
COURSE LEARNING OUTCOMES
1. Explain the concepts of software quality, software quality assurance, software
configuration management and software process improvement..
2. Identify various software Verification & Validation techniques to find and
decrease the number of defects in a product prior to testing
3. Apply Software testing, testing techniques and strategies to assess and
improve the quality of software products.
COURSE CONTENTS
• Quality Concepts
• Quality Models
• Software Quality Assurance
• Walkthroughs
• Inspections and Audits
• Introduction to Software Testing
• Software Testing Strategies
• Black box Testing
• White box Testing
• Configuration Management
Process Improvement
WHAT IS?
Software
Software Process
Software Process Model
WaterFall Model
Incremental Software Model
Agile Software Development
SDLC(Software Development Life Cycle)
STLC (Software Testing Life Cycle)
COURSE OVERVIEW
With the pervasive use of software systems in modern society and people’s
reliance on them in daily life, work, and societal functions, we need to make sure
that these systems meet people’s expectations for quality and reliability.
This is the general subject of Software Quality Engineering.
MEETING PEOPLE’S QUALITY EXPECTATIONS
In general, people’s quality expectations for software systems they use and rely
upon are two-fold:
❖ 1. The software systems must do what they are supposed to do. In other words,
they must do the right things.
❖ 2. They must perform these specific tasks correctly or satisfactorily. In other
words, they must do the things right.
EXAMPLE (CONTD)….
The former requires that the software be the “right software”, or perform the
right functions. For example, an airline reservation system is supposed to handle
reservations, not intended to fly airplanes automatically.
The focus of the related activities is to validate the required software functions
under their intended operational environment
EXAMPLE (CONTD)..
The latter requires that the software systems perform their intended functions
without problems.
In the airline reservation system example, the system should help travel agents
or individual travelers make valid reservations within a pre-specified time limit,
instead of making invalid ones, taking too long to make a reservation, or refusing
to make reservations without proper justification.
The focus of the related activities is to verify that the implemented software
functions operate as specified.
EXAMPLE (CONT)..
EXAMPLE (CONT)..
EXAMPLE (CONT)..
MAIN TASKS FOR SOFTWARE QUALITY
ENGINEERING
The tasks for software QA and quality engineering are to ensure software
quality through the related validation and verification activities.
These activities need to be carried out by the people and organizations
responsible for developing and supporting these software systems in an overall
quality engineering process that inc1udes :
❖ quality planning;
❖ execution of selected QA or software validation and verification
activities;
❖ measurement and analysis to provide convincing evidence to demonstrate
software quality to all parties involved.
QUALITY PROBLEMS IN LARGE SOFTWARE
SYSTEMS
Many software systems nowadays are highly complex containing millions of lines
of source code. Examples :Microsoft Windows, UNIX operations systems
Such large and complex systems typically involve hundreds or even thousands of
people in their development over months or even years, and the systems are
often to be operated under diverse, and sometimes unanticipated, application
environments.
According to (Wirth, 1995), such “fat software” may be caused by
indiscriminately adding non-essential features, poor design, improper choices of
languages and methodologies, which could be addressed by disciplined
methodologies and return to essentials for “lean software”.
…QUALITY PROBLEMS IN LARGE SOFTWARE
SYSTEMS
there is no “silver bullet”
Accompanying the size and complexity problems are the many chances for other
problems to be introduced into the software systems.
Therefore, dealing with problems that may impact customers and users
negatively and trying to manage and improve software quality are a fact of life for
people involved in the development, management, marketing, and operational
support of most modern software systems.
Testing, quality assurance (QA), and quality engineering
TESTING
Software testing plays a central role among the software QA activities.
determine if the observed system behavior conforms to its specifications or
requirements.
If discrepancies exist between the two, follow-up actions can be carried out to
locate and remove the related problems in software code, which may also
include modifying the software design.
Even if no discrepancy is observed, the specific instances can be accumulated as
evidence to demonstrate that the software performs as specified.
Consequently, testing is the most frequently used means to assure and to
demonstrate software quality.
QUALITY ASSURANCE (QA)
QA alternatives supported by related techniques and activities, such as
inspection, formal verification, defect prevention, and fault tolerance etc.
Inspection is a critical examination of software code or other artifacts by human
inspectors to identify and remove problems directly, without resorting to
execution.
QUALITY ENGINEERING
all these QA activities need to be managed in an engineering process we call the
software quality engineering process, with quality goals set early in the
product development, and strategies for QA selected, carried out, and monitored
to achieve these preset quality goals.
QUALITY
Quality popular view:
Something “good” but not quantifiable
Something luxury and classy
QUALITY PROFESSIONAL VIEW:
Quality professional view:
– Conformance to requirement
(Crosby, 1979)
The requirements are clearly stated and the product must conform to it
Any deviation from the requirements is regarded as a defect
A good quality product contains fewer defects
– Fitness for use (Juran, 1970):
Fit to user expectations: meet user’s needs
A good quality product provides better user satisfaction
❖ meeting the customer‟s requirements, at the agreed cost, within the agreed timescales.
❖ “Fitness for purpose” [Joseph M Juran]
❖ Customer satisfaction
QUALITY DEFINITIONS
❑ There are many quality definitions some of them are listed below :
❖ The American Heritage dictionary defines quality as “a characteristic or attribute of Something”.
❖ IEEE Glossary: “Degree to which a system, component, or process meets (1)
specified requirements, and (2) customer or user needs or expectations”
❖ ISO 8402: “The totality of features and characteristics of a product or service that bear on its ability to satisfy specified or
implied needs”
❖ Another definition, coined by Gerald Weinberg in Quality Software Management Is: "Quality is value to some person."
This definition stresses that quality is inherently subjective - different people will experience the quality of the same software very
differently.
http://en.wikipedia.org/wiki/Quality_(business) [Quality definitions]
VARIATION CONTROL
❖ Variation control is the heart of quality control.
QUALITY DIMENSIONS
Specification Quality
❖ refers to how well the specifications are defined for the product or service
being provided.
Design Quality
❖ refers to how well the product or the service to be delivered is designed.
Development Quality
❖ Conformance to design
❖ Adherence to the coding guidelines
❖ Defect prevention guidelines
Conformance Quality
❖ Refers to how well an organization ensures that quality is built into a
product through the above three dimensions.
QUALITY ENGINEERING
❖ Quality engineering is the set of operational, managerial, and engineering
activities that a company uses to ensure that the quality characteristics of
a product are at the nominal or required levels.
SOFTWARE QUALITY - IEEE DEFINITION
Software quality is:
1. The degree to which a system, component, or
process meets specified requirements.
2. The degree to which a system, component, or
process meets customer or user needs or
expectations.
SOFTWARE QUALITY
❑ Software Quality can be defined as:
❖ “Conformance to explicitly stated functional and performance requirements, explicitly documented
development standards, and implicit characteristics that are expected of all professionally developed
softwares” [Roger Pressman. Software Engineering: A
Practitioner's Approach McGraw Hill 6 ed 2004]
❑ This definition emphasizes three important points
❖ Software requirements are the foundation from which quality is measured. Lack of
conformance to requirements is lack of quality
❖ Specified standards define a set of development criteria that guide the way in which
software is engineered. If the criteria are not followed , lack of quality will almost surely result.
❖ If a software conforms to its explicit requirements but fails to meet implicit requirements,
software quality is suspect.
QUALITY CONTROL
What is quality control?
❖ Quality control is defined as the processes and methods used to
monitor work and observe whether requirements are met. It focuses on
reviews and removal of defects before shipment of products.
❖ It is possible to have the same group that builds the product perform the quality
control function, or to establish a quality control group or department within
the organizational unit that develops the product.
ZERO QUALITY CONTROL
❖ An approach to quality control pioneered by process-control expert Shigeo
Shingo.
❖ ZQC is a quality control approach used to help achieve the target of zero
defects. It is based on the principle that defects can be prevented by controlling
the performance of a process so that it cannot produce defects – even when a
mistake is made by a person or machine.
QUALITY ASSURANCE & QUALITY CONTROL
❖ Quality Assurance: A set of activities designed to ensure that the
development and/or maintenance process is adequate to ensure a system
will meet its objectives.
❖ Quality Control: A set of activities designed to evaluate a developed work
product.
MEASURING QUALITY
❖ Measurement allows us to establish baselines for qualities. Developers must
know the minimum level of quality required.
❖ The present level of quality of a product needs to be evaluated so the need of
improvements can be investigated.
REFERENCE/S
Book: Software Quality Engineering: Testing Quality Assurance and Quantifiable
Improvement: by Jeff Tian
Chapter 2, “What is software quality”