Professional Documents
Culture Documents
5
Lecture-1-Introduction to Software Quality Assurance
Agenda:
1. Quality
2. Software Quality
3. Software Quality Assurance(SQA)
4. Software Quality Control (SQC)
5. SQA v/s SQC
Lecture-2-Introduction to Software Quality Assurance
Agenda:
1. Software Quality Control (SQC)
2. SQA v/s SQC
Quality Definition
• Quality means that a product satisfies the
demands of its specifications
• It also means achieving a high level of customer
satisfaction with the product
• In software systems this is difficult
– customer quality requirements (e.g. efficiency or
reliability) often conflict with developer quality
requirements (e.g. maintainability or reusability)
– software specifications are often incomplete,
inconsistent, or ambiguous
What is Quality?
Quality is defined as the product or services that should be "fit for use and purpose."
Quality is all about meeting the needs and expectations of customers concerning
functionality, design, reliability, durability, and price of the product.
What is Assurance?
Assurance is a positive declaration on a product or service. It is all about the product
which should work well. It provides a guarantee which would work without any problem
according to expectations and requirements.250Prime
What is Quality Assurance?
Quality Assurance is also known as QA Testing. QA is defined as an activity to ensure
that an organization is providing the best product or service to the customers.
Software Quality assurance is all about the Software Development lifecycle that includes
requirements management, software design, coding, testing, and release management.
Quality Assurance is the set of activities that defines the procedures and standards to
develop the product.
1. Functionality
Quality of software is defined as how effectively the software interacts with other
components of the system. The software must provide appropriate functions as per
requirement, and these functions must be implemented correctly.
2. Reliability
It is defined as the capability of the software to perform under specific conditions for a
specified duration.
3. Usability
Usability of software is defined as its ease of use. Quality of the software is also
identified as how easily a user can understand the functions of the software and how
much efforts are required to follow the features.
4. Efficiency
The efficiency of the software is dependent on the architecture and coding practice
followed during development.
5. Maintainability
Maintainability is also one of the significant factors to define the quality of the
software. It refers to identify the fault and fix in the software. It should be stable when
the changes are made.
6. Portability
Portability of the software, defined as how easily a system adapts to changes in the
specifications. Quality of the software is also determined by the portability of the
system how easy it is to install the software and how easy it is to replace a component
of the order in a given environment.
To ensure about a software score well on these quality attribute, we need the following
software Quality Assurance.
Lecture-3-Introduction to Software Quality Assurance
Agenda:
1. Building blocks of SQA / SQA Components
https://www.youtube.com/watch?v=tj2LwVZ6NX4
2. SQA Planning & Standards (ISO 9000, Six Sigma)
https://www.youtube.com/watch?v=Kz_7njsDUMQ
https://www.youtube.com/watch?v=4djhUDZx3yA
https://www.youtube.com/watch?v=ErEqnPDs2Tg
Lecture-4-Agenda:
2. Software Quality Factors
Quality Management Activities
• Quality assurance
– establishing organizational quality standards and
procedures
• Quality planning
– selecting and modifying applicable quality standards and
procedures for a particular project
• Quality control
– ensuring quality standards and procedures are followed
by development team
1. Pre-project Plan
Pre-project Plan ensures that the resources required for project, schedule, and budget
should be clearly defined. Plan for development and ensuring quality has been
determined.
1. Development Stage
In the Development Stage Component, Software Quality Assurance help to identify the
design and programming errors. Its Components are divided into the following sub -
classes: Reviews, Expert Opinions, and Software Testing.
o Infrastructure
o Release Management
o Source Control
o Code Reviews
o Automates Code Analysis
o Peer Code Reviews
o Testing
o Test management
o Bug and Issue Tracking
o Browser, Device and OS Testing
o Usability Testing
o Load Testing
o Automates Testing and Continuous Integration
o Monitoring and Analytics
o Availability Monitoring
o Business Analytics
o Exception Handling
o Log Monitoring
o Performance Monitoring
o Security Testing and Monitoring
o Customer Support
How to do Quality Assurance?
The whole process of quality assurance has to define the cycle called the PDCA cycle.
o Plan
o Do
o Check
o Act
Plan: The organization should plan and establish the process related objectives and
determine the process that is required to deliver a high-quality end product.
Do: Development and testing of processes and also change in the methods.
Check: Monitoring of processes, modify the methods, and check whether it meets the
predetermined objectives.
Act: Implement actions that are necessary to achieve improvements in the process.
An organization must use Quality Assurance to ensure that the product is designed and
implemented with correct procedures. This will help to reduce problems and errors in the
final product.
What Is Quality Management?
Quality management is the performance of managing various activities and
responsibilities within a system to guarantee that products and services are given, as
well as the means used to produce them, are compatible. It serves to manage and
have an aspired level of quality within the company.
Quality management consists of four essential elements, which cover the following:
Quality Planning – The method of classifying the quality measures related to the
project and determining how to reach them
Quality Improvement – The deliberate setting of a process to enhance the resolution
or safety of the result
Quality Control – The progressive attempt to support a process’s honesty and safety in
delivering an outcome
Quality Assurance – The regular or recommended actions needed to offer enough
security so that a particular service or goods will fasten the defined requirements
Quality management aims to guarantee that all the organization’s stakeholders work
collectively to change the company’s rules, products, services, and experience to
deliver the long-term benefit that arises from client happiness.
Quality Improvement Methods
Quality improvement systems include three elements: product improvement, method
improvement, and people-based improvement. There are various ways of quality management
and methods that can be used. They include Kaizen, Zero Defect Programs, Six Sigma, Quality
Circle, Taguchi Methods, the Toyota Production System, Kansei Engineering, TRIZ, BPR, OQRM,
ISO, and Top-Down & Bottom-Up requests among others.
Why are Standards Important?
• Standards provide encapsulation of best, or at least most
appropriate, practice
• Standards provide a framework around which the quality
assurance process may be implemented
• Standards assist in continuity of work when it’s carried out by
different people throughout the software product lifecycle
27
Quality Standards
• Key to effective quality management
• Product standards define the characteristics
exhibited by all components (e.g. programming
style issues)
• Process standards describe how a software process
is to be implemented
• Should encapsulate best practices - this helps avoid
repeating past mistakes
• Provide continuity by giving new team members a
means to understand the organizational priorities
Process Improvement is Continuous Improvement
We can never reach to perfection. The CMM too is evolving and improving. The focus is on
always doing better.
What is CMM ?
CMM stands for Capability Maturity Model.
Focuses on elements of essential practices and processes from various bodies of knowledge.
Describes common sense, efficient, proven ways of doing business (which you should already be
doing) - not a radical new approach.
CMM is a method to evaluate and measure the maturity of the software development process
of an organizations.
CMM v1.0 was developed by the Software Engineering Institute (SEI) at Carnegie Mellon
University in Pittsburgh, USA.
What is Maturity ?
Definitions vary but mature processes are generally thought to be:
Well defined
Repeatable
Measured
Analyzed
Improved
The CMM helps to solve the maturity problem by defining a set of practices and providing a
general framework for improving them. The CMM focus is on identifying key process areas and
the exemplary practices that may comprise a disciplined software process.
Immature vs Mature Organization:
There are following characteristics of an immature organization:
•Process improvised during project
•Approved processes being ignored
•Reactive, not proactive
•Unrealistic budget and schedule
•Quality sacrificed for schedule
•No objective measure of quality
There are following characteristics of an mature organization:
•Inter-group communication and coordination
•Work accomplished according to plan
•Practices consistent with processes
•Processes updated as necessary
•Well defined roles/responsibilities
•Management formally commits
What is CMMI ?
CMM Integration project was formed to sort out the problem of using multiple CMMs.
CMMI Product Team's mission was to combine three Source Models into a single
improvement framework to be used by the organizations pursuing enterprise-wide
process improvement. These three Source Models are :
•Capability Maturity Model for Software (SW-CMM) - v2.0 Draft C
•Electronic Industries Alliance Interim Standard (EIA/IS) - 731 Systems Engineering
•Integrated Product Development Capability Maturity Model (IPD-CMM) v0.98
CMM Integration:
•- builds an initial set of integrated models.
•- improves best practices from source models based on lessons learned.
•- establishes a framework to enable integration of future models.
Once you select the process areas, you must also select how much you would like to
improve the processes associated with those process areas (i.e., select the appropriate
capability level). Capability levels, and generic goals and practices, support the
improvement of processes in individual process areas.
Conversely, we will see that the staged representation encourages us to always look at
process areas in the context of the maturity level to which they belong. The process
areas are organized by maturity levels to reinforce this concept. When we use a process
area, we use the entire process area i.e, all goals and all practices.
The CMMI Process Areas (PAs) can be grouped into the following four categories to
understand their interactions and links with one another regardless of their defined
levels:
•Process Management
•Project Management
•Engineering
•Support
Each process area is defined by a set of goals and practices. There are two categories
of goals and practices −
•Generic goals and practices − They are a part of every process area.
•Specific goals and practices − They are specific to a given process area.
A process area is satisfied when the processes of a company cover all of the generic
and specific goals and practices for that process area.
Maturity Levels and Process Areas
Here is a list of all the corresponding process areas defined for a software organization. These
process areas may be different for different organization.
Level Focus Key Process Area Result
4 Quantitatively Higher
Organizational Process
Quantitatively Managed Performance Quality
Managed / Lower
Quantitative Project Risk
Management
3 Process Medium
Requirements Development
Defined Standardization Quality
Technical Solution /
Medium
Product Integration
Risk
Verification
Validation
Organizational Process Focus
Organizational Process
Definition
Organizational Training
Integrated Project Mgmt (with
IPPD extras)
Risk Management
Decision Analysis and
Resolution
Integrated Teaming (IPPD
only)
Org. Environment for
Integration (IPPD only)
Integrated Supplier
Management (SS only)
2 Basic Project Management Requirements Management Low Quality /
Managed High Risk
Project Planning
Configuration Management
Methodical Approach: The Six Sigma is not a merely quality improvement strategy in theory, as
it features a well defined systematic approach of application in DMAIC and DMADV which can be
used to improve the quality of production. DMAIC is an acronym for Design-Measure- Analyze-
Improve-Control. The alternative method DMADV stands for Design-Measure- Analyze-Design-
Verify.
Fact and Data-Based Approach: The statistical and methodical aspect of Six Sigma shows the
scientific basis of the technique. This accentuates essential elements of the Six Sigma that is a
fact and data-based.
Project and Objective-Based Focus: The Six Sigma process is implemented for an organization's
project tailored to its specification and requirements. The process is flexed to suits the
requirements and conditions in which the projects are operating to get the best results.
Customer Focus: The customer focus is fundamental to the Six Sigma approach. The quality
improvement and control standards are based on specific customer requirements.
Teamwork Approach to Quality Management: The Six Sigma process requires organizations to
get organized when it comes to controlling and improving quality. Six Sigma involving a lot of
training depending on the role of an individual in the Quality Management team.
Six Sigma Methodologies
Six Sigma projects follow two project methodologies:
1. DMAIC
2. DMADV
DMAIC
It specifies a data-driven quality strategy for improving processes. This methodology is used to
enhance an existing business process.
The DMAIC project methodology has five phases:
1.Define: It covers the process mapping and flow-charting, project charter development,
problem-solving tools, and so-called 7-M tools.
2.Measure: It includes the principles of measurement, continuous and discrete data, and scales of
measurement, an overview of the principle of variations and repeatability and reproducibility
(RR) studies for continuous and discrete data.
3.Analyze: It covers establishing a process baseline, how to determine process improvement
goals, knowledge discovery, including descriptive and exploratory data analysis and data mining
tools, the basic principle of Statistical Process Control (SPC), specialized control charts, process
capability analysis, correlation and regression analysis, analysis of categorical data, and non-
parametric statistical methods.
4.Improve: It covers project management, risk assessment, process simulation, and design of
experiments (DOE), robust design concepts, and process optimization.
5.Control: It covers process control planning, using SPC for operational control and PRE-
Control.
What is the difference between Quality Control and
Quality Assurance?
Quality Control is to examine the product or service and check for the result. Quality
assurance is to explore the processes which led to the end-product.
Each developer is responsible for Quality The testing team is responsible for Quality
Assurance. Control.
The focus of QA is to prevent defects in the The focus of QC is to identify deficiencies in the
developing software by paying attention to developed software by paying attention to
processes. testing processes.
Quality Assurance vs Quality Control
Quality Assurance
Software quality assurance is (also known as QA) a sequence of tasks to prevent defects and
ensure that the techniques, methods, approaches, and processes are designed for a specific
application must be implemented correctly. This is an ongoing process within the development of
a software system.
The development of units of an application is checked under the quality assurance specifications
in the sequence of their development.
Quality assurance test ensures the development of high-quality software because of its main
focus on the high-quality processes, good quality management system and periodic conformance
audit during the development of software. It is a managerial tool includes planned and systematic
activities and documentation to prevent problems related to quality.
The responsibility of quality assurance is not of any specific team, but it is a responsibility of
each member of the development team.
Quality Control also known as QC is a sequence of tasks to ensure the quality of
software by identifying defects and correction of defects in the developed software. It
is a reactive process, and the main purpose of this process is to correct all types of
defects before releasing the software. The process is done by eliminating sources of
problems (which cause to low the quality) through the corrective tools so that software
can meet customer's requirements and high quality.
The responsibility of quality control is of a specific team which is known as a testing
team that tests the defects of software by validation and corrective tools.
Responsibility Each and every member of the Only the specific testing team is responsible
development team is responsible for QA for QC
Quality Assurance activity works on the quality audit. Quality control activities involve
walkthrough.
The define the process is one of the activities of quality Quality control involves testing.
assurance
All the activities are concerned for QA and QC of any product, not for Software.
4. Software Quality Assurance used preventive Software testing used the corrective
technique. technique.
6. The software quality assurance applied to all the The scope of software testing applies
products that will be created by the organization. to a particular product being tested.
What are the differences between Software Quality
Assurance and Software Testing?
What are the types of Quality Assurance Function?
There are five types of Quality Assurance Function.
WRAP UP:
Quality Assurance focuses on the developed product is fit for use. For any organization,
processes and standard should be followed. It concentrates mainly on the quality of the
product/service that we provide to the customers during or after implementation of the
software.
Software Quality Factors
There are some characteristic common to all these “but’s”:
108
Software quality factors
Criteria for evaluation of software quality
Examples:
• Flight software that flies on a single mission
satellite will not be concerned with portability but
may be very concerned with reliability.
• A software system that remains on the ground
may be concerned with portability and not very
concerned by reliability.
111
How Does McCall factors improve quality
Correctness
• Employees salaries should not be late (Wrong)
• Employees salaries should be calculated accurately and must be ready
five days before the end of the month (Correct)
Reliability
• The system should be working as much time as possible (Wrong)
• The system should not be in failure status during working hours (9 to 4).
Total time of failure status should not exceed 20 minutes per month.
(Correct)
Software quality factors in requirements
document
Efficiency
• The GPS application should use as little as possible of mobile phone
battery (Wrong)
• The GPS application should not use more than 10% of battery power in
two hours time (Correct)
Integrity
• Students should be allowed to access their final marks(Wrong)
• Students should be allowed to view their final marks. They should not be
able to make any changes (Correct)
Software quality factors in requirements
document
Usability
• The billing system should be easy to use (Wrong)
• Billing staff should be able to learn the most important five functions of
the billing system in 3 working hours.
Software Quality Metrics
116
Metrics Collection
• Software measurement - the process of deriving a numeric value
for some attribute of a software product or a software process. Comparison of
these values to each other and to STD’s allows drawing conclusions about the
quality of software products or the process.
• Most of the “Ilities” can not be measured directly unless there’s historical data.
Instead tangible software product attributes are measured and the “Ility” factors are
derived using predefined relationships between measurable and synthetic attributes.
117
Software Measurement and Metrics
• Software measurement is concerned with
deriving a numeric value for an attribute of a
software product or process
• This allows for object comparisons bewteen
techniques or processes
• The systematic use of measurement is
essential to process improvement programs
Software Metric
• Any type of measurement that relates to a
software system, process, or document
– LOC, person-months, function points
• Metrics allow for the quantification of the
software or a software process
• May be used to predict product attributes or
to control the software process
Metrics Assumptions
• The software property of interest can be measured
• There is a known relationship between what we want
to measure and what we want to know
• The relationship has been formalized and validated
• It may be difficult to relate what can be measured to
desirable quality attributes
The Process of Product Measurement
121
Predictor and Control Metrics
123
The Ilities
124
Examples of Software Metric
125
Examples of OO Software Metric
126
Defect Prevention
Defect Prevention – establishment of practices that lower the reliance
on defect detection techniques to find majority of the bugs
• Lessons learned – learning from other peoples experiences and sharing own
experiences with the other projects
• Managing With Metrics – collecting the metrics, understanding it, and making
changes to the product or process based on analysis. Metrics must be standardized to
be effective.
• Risk Analysis – identifying potential risks and opportunities early in the program
and tracking them to realization.
• Build freeze – no changes are made to the code during formal tests.
• Unit-level testing guidelines – test plans and procedures for each UT
• Baseline acceptance criteria – establishment of closure criteria in advance (i.e. no
P1 STRs at FAT TRR)
127
Software Reliability
For example, large next-generation aircraft will have over 1 million source lines of software on-
board; next-generation air traffic control systems will contain between one and two million lines;
the upcoming International Space Station will have over two million lines on-board and over 10
million lines of ground support software; several significant life-critical defense systems will have
over 5 million source lines of software. While the complexity of software is inversely associated
with software reliability, it is directly related to other vital factors in software quality, especially
functionality, capability, etc.
Reliability Metrics
Reliability metrics are used to quantitatively expressed the reliability of the software product.
The option of which metric is to be used depends upon the type of system to which it applies &
the requirements of the application domain.
Some reliability metrics which can be used to quantify the reliability of the software product are
as follows:
1. Mean Time to Failure (MTTF)
MTTF is described as the time interval between the two successive failures. An MTTF of 200
mean that one failure can be expected each 200-time units. The time units are entirely
dependent on the system & it can even be stated in the number of transactions. MTTF is
consistent for systems with large transactions.
For example, It is suitable for computer-aided design systems where a designer will work on a
design for several hours as well as for Word-processor systems.
To measure MTTF, we can evidence the failure data for n failures. Let the failures appear at the
time instants t1,t2.....tn.
MTTF can be calculated as
Reliability Metrics
Requirements Reliability Metrics
Requirements denote what features the software must include. It specifies the functionality that
must be contained in the software. The requirements must be written such that is no
misconception between the developer & the client. The requirements must include valid
structure to avoid the loss of valuable data.