Software Quality Assurance and Management
Software Quality Assurance and Management
Management
(SQA)
Quality Assurance and
Management
Lectures # 1 & 2
Quality
• Synonyms
– Excellence, superiority, class, eminence, value,
worth
• Antonym
– Inferiority
• Everyone claims to manufacture / develop /
sell / market “good” quality products /
services
Software Quality
• Quality as it relates to software
• Difficult to define
• Good software quality characteristics can be
identified
• Bad or undesirable characteristics can also be
identified
• Relates to all aspects of software (requirements /
design / code / tests / documents / training)
Software Quality Definitions - 1
• Low levels of defects when deployed,
ideally approaching zero
• High reliability, or the capability of running
without crashes or strange results
• A majority of clients with high user-
satisfaction when surveyed
Software Quality Definitions - 2
• A structure that can minimize “bad fixes” or
insertion of new defects during repairs
• Effective customer support when problems
do occur
• Rapid repairs for defects, especially for
high-severity defects
Beyond Absence of Defects
• Sense of beauty
• Sense of fitness for purpose
• Sense of elegance that goes beyond the
simple absence of overt flaws
• Has well-formed requirements
• Robust
Why Software Quality? - 1
• Reduces time to market for new products
• Enhances market share compared to direct
competitors
• Minimizes “scrap and rework” expenses
• Attracts and keeps “top-gun” personnel
• Minimizes the risk of serious litigation
Why Software Quality? - 2
• Minimizes the risk of serious operating
failures and delays
• Minimizes the risk of bankruptcy or
business failures, which may be attributed
directly to poor quality or poor software
quality
Achieving Software Quality
• “For a software application to achieve high
quality levels, it is necessary to begin
upstream and ensure that intermediate
deliverables and work products are also of
high quality levels. This means that the
entire process of software development
must itself be focused on quality”
– Capers Jones
Six Software Defect Origins
• Requirements
• Design
• Source code
• User manuals/training material
• “Bad fixes” or mistakes made during
repairs
• Flawed test cases used by the application
Six Root Causes of Poor
Software Quality
• Inadequate training of managers and staff
• Inadequate defect and cost measurement
• Excessive schedule pressure
• Insufficient defect removal
• High complexity levels
• Ambiguous and creeping requirements and
design (feature race & gimmicks)
Six Software Defect Elimination
Strategies
• Effective defect prevention
• High levels of defect removal efficiency
• Accurate defect prediction before the
project begins
• Accurate defect tracking during
development
• Useful quality measurements
• Ensuring high levels of user-satisfaction
Software Defects in Six
Application Size Ranges
• 1 function point or 125 C statements
• 10 function points or 1,250 C statements
• 100 function points or 12,500 C statements
• 1,000 function points or 125,000 C statements
• 10,000 function points or 1,250,000 C statements
• 100,000 function points or 12,500,000 C
statements
Software Quality in Six
Sub- Industries
• Systems software that controls physical devices
• Information systems that companies build for their
own use
• Outsource or contract software built for clients
• Commercial software built by vendors for lease or
sale
• Military software built following various military
standards
• End-user software built for private use by computer
literate workers or managers
Quality Attributes
• Quality attributes set is a way to represent
customer quality requirements
• Ask your current and prospective customers
about their definition of quality
• Develop a quality assurance program based
on the requirements of your customers
Product-Specific Attributes
• Ease of use
• Documentation
• Defect tolerance how much the product is reluctant
• Defect frequency
• Defect impact
• Packaging
• Price versus reliability
• Performance
Organization-Specific Attributes
• Service and support
• Internal processes
Achieving High Levels of
Software Quality - 1
• Enterprise-wide quality programs
• Quality awareness and training methods
• Quality standards and guidelines
• Quality analysis methods
• Quality measurement methods
• Defect prevention methods
• Non-test defect removal methods
Achieving High Levels of
Software Quality - 2
• Testing methods
• User-satisfaction methods
• Post-release quality control
Quality Assurance Organizations
• No quality assurance 60%
• Token quality assurance 20%
• Passive quality assurance 15%
• Active quality assurance 5%
– i.e Nasa
Best in Class Quality Results - 1
• Quality measurements
• Defect prevention
• Defect and quality estimation automation
• Defect tracking automation
• Complexity analysis tools
• Test coverage analysis tools
• Formal inspections
Best in Class Quality Results - 2
• Formal testing by test specialists
• Formal quality assurance group
• Executive and managerial understanding of
quality
Two Components of
Software Quality Improvement
• Reductions in total defect potentials using
methods of defect prevention
• Improvements in cumulative removal
efficiency levels
Categories of Software Defects
• Errors of commission: something wrong is
done
• Errors of omission: something left out by
accident
• Errors of clarity and ambiguity: different
interpretations
• Errors of speed and capacity
Software Defect Prevention
Req. Design Code Document Perf.
Defects Defects Defects Defects Defects
Reviews /
Inspections Fair Excellent Excellent Good Fair
Testing (all
forms) Poor Poor Good Fair Excellent
Correctness
Proofs Poor Poor Good Fair Poor
Defect Removal Efficiency
• Accumulation of defect statistics for errors
found prior to delivery, and then for a
predetermined period after deployment
(usually one year)
• US averages: 85%
• Best projects in best US companies: 99%
Defect Repair Rates - 1
• Reported data on defect repair rates is not
consistent
• Defect repair rates usually decline as
cyclomatic and essential complexity
increases
• Defect repair rates increase with experience
in application, language, inspections,
structured design and coding methods
Defect Repair Rates - 2
• Defect repair rates are higher for
maintenance specialists than others during
maintenance phase
• For coding errors, they correlate with
comment density. IBM’s study concluded
that 18% comment density is ideal
• It also found, flow charts had no impact, but
good error messages had great impact
Defect Seeding
• Willful insertion of errors into a software
deliverable prior to a review, inspection, or
testing activity
• It is the quickest way of determining defect
removal efficiency
• May be considered unpleasant by many
Defect Severity Levels
• Most software defect tracking systems
include a multi-tier “severity level” scale
• For example,
– Severity level 1: total failure of application
– Severity level 2: failure of major function(s)
– Severity level 3: minor problem
– Severity level 4: cosmetic problem(look & feel
or interface problem)
Defect Tracking
• It is important to use an accurate and
automated defect tracking system
• Defect tracking tools
– Tracking defects by severity level and by origin
– Routing defects to appropriate repair facility
– Keeping records of duplicate defects
– Invalid defects
– Repair information against defects
Software Quality Personnel
• Unfortunately are under-paid
• Usually are let go first in times of crisis
• “Top-gun” SQA personnel and managers
with proven track record are in high
demand from companies that have active
QA programs
Economics of Software Quality -
1
• High quality software applications have
shorter development schedules than low
quality applications because they do not get
hung up in integration and testing due to
excessive defect levels
• That is No rework is required if the quality
is properly maintained
Economics of Software Quality -
2
• High quality software applications have
lower development and maintenance costs
than low quality applications. This is
because the cumulative costs of finding and
fixing bugs is often the major cost driver for
software projects
Economics of Software Quality -
3
• High quality software applications have
better reliability levels and longer mean
times to failure than low quality
applications
• High quality commercial software packages
have larger market shares than low quality
commercial software packages
Economics of Software Quality -
4
• High quality software achieves better user-
satisfaction ratings than low quality
software
• High quality software projects score better
on employee morale surveys than do low
quality software projects
Economics of Software Quality -
5
• High quality software produced under contract or
an outsource agreement has a much lower
probability of ending up in court for breach of
contract or malpractice litigation than low quality
software
• High quality software benefits or augments the
performance levels of users, while poor quality
tends to degrade worker performance
Economics of Software Quality -
6
• Poor quality software can trigger truly
massive unplanned expense levels. Denver
airport example
Error-Prone Modules
• Those modules, which contain majority of
reported defects
• By isolating and repairing error-prone
modules, it is possible to make significant
quality improvements for comparatively
low costs
• Continuous analysis of factors that lead to
error-prone modules is required
Why Error-Prone Modules?
• Excessive schedule pressure on the
programmers
• Poor training or lack of experience in
structured methods
• Rapidly creeping requirements which
trigger late changes
• High complexity levels with cyclomatic
ranges greater than 15
“Good Enough” Software
Quality - 1
• Rather than striving for zero-defect levels or
striving to exceed in 99% in defect removal
efficiency, it is better to ship software with
some defects still present in order to speed
up or shorten time to market intervals
• Developed by the fact that major
commercial software companies have latent
software bugs in their released products
“Good Enough” Software
Quality - 2
• Major commercial software companies have
cumulative defect removal efficiency of
95% (and 99% on their best projects)
• This concept is very hazardous for ordinary
companies, which usually have their defect
removal efficiency level between 80%-85%
• Quality will be decrease for these
companies
Object-Oriented Quality Levels
• OO technology is being adopted world-
wide with a claim that it produces better
quality software products
• OO technology has a steep learning curve,
and as a result it may be difficult to achieve
high quality software
• More data needs to be reported
• UML may play a significant role
Orthogonal Defect Reporting - 1
• The traditional way of dealing with software
defects is to simply aggregate(combine) the
total volumes of bug reports, sometimes
augmented(increased) by severity levels and
assertions(confident statement) as to whether
defects originated in requirements, design,
code, user documents, or as “bad fixes”
Orthogonal Defect Reporting - 2
• In the orthogonal defect classification
(ODC) method, defects are identified using
the following criteria
– Detection method (design/code inspection, or any of a variety of testing
steps)