Software Quality Assurance
What is the process?
"Our" lifecycle may be:
Waterfall (linear-sequential), Spiral, Incremental,
Formal, or other
But all include: Code Generation and Testing
What are our "goals" ? (What do we want from the
software development process?)
We want:
To be able to develop software quickly (calendar
months)
To minimize resource needs: (few(er) people,
for a shorter time - effort)
To create re-useable components (modules, designs,
even requirements)
To reduce costs of fixing defects in delivered software
???? Can we do this:
(For a 200 KLOC DP product)
CMM level 1 organization:
Duration 30 months (6.7 KLOC/Month)
Effort 594 Person Months
( 340 LOC/Person/Month)
Total Cost $5,440,000
CMM level 3 organization:
Duration 15 months (13 KLOC/Month)
Effort 79.5 Person Months
( 2500 LOC/Person/Month)
Total Cost $728,000
CMM level 5 organization:
Duration 9 months (22 KLOC/Month)
Effort 16 Person Months
( 14,000 LOC/Person/Month)
Total Cost $146,000
So we know how to do what we want (above)
(CMM)
Institute Basic Project Management (repeatable)
We define and document processes
Measure and manage quality and productivity
Optimize and continually improve processes
We have seen the costs of fixing defects increase
later in the development process
To minimize the costs, fix defects early. How?
Even if the costs are minimized, if the product is not
high "quality" it won't meet requirements
(Or won't be used, or won't sell)
What is quality?
Which is better:
Cars:
Yugo, (Trabi, Maruti, etc) OR
Cadillac (Saturn, M.Benz, Volvo, etc.)
Why?
Who makes good computers?
Who makes good electronics, cameras?
Who makes good software?
Why? How do you determine?
(Who makes bad software?)
How can we determine "quality"?
The (old?) American Car Companies method:
"We getting better all the time"
(Don't change anything…)
The Saturn (Japan, from older US) method:
Measure now (metrics)
Improve the metrics
Quality can be:
Speed
Capacity (sizes, etc.)
Number of defects
Kinds of defects ("cosmetic", or lose data)
V and V
Validation: Are we building the right product?
Verification: Are we building the product right?
(Boehm)
Quality control is: inspections, reviews, and tests
with feedback.
Quality Assurance
Auditing and reporting aspects of management.
Is quality free?
(There was a book by this name) NO.
What are the costs of quality?
Building in quality:
(Prevention)
Planning
Formal Technical Reviews
Training
Special software, equipment
Appraisal:
Inspection
Testing
Costs of failure (defect):
(In house, before shipping)
Rework
Repair
Analysis of failure
Missed deadlines
Low morale
Dismissing employees (firing, killing)
(In the field, after shipping)
Product Return
Canceled sales
Penalties
Help desk support
Warranties
SQA
Based on requirements
(What else?)
Standards and development steps measured
"Implicit requirements" - maintainability, useablity
In other industries:
Bell Labs in 1916, formal QA
Many other "test" groups
In software:
Was the responsibility of programmer
(small systems)
Now?
Independent test groups
SQA (needs to:)
Prepare SQA plan
Participates in development of software process
description for a project
Reviews SE for compliance
Audits work (for compliance)
Documents deviations
Records and Reports noncompliance
Software reviews:
Use other people (diverse group) to:
Suggest improvements
Eliminate unnecessary work
Make product: more manageable, predictable,
uniform
What are defects?
Errors, faults, bugs, bugettes
As defects occur in a phase, if they are not removed
in that phase (step), they are "amplified" (effort, cost)
in the next and latter phases (steps)
Formal Technical Reviews:
(walkthroughs, inspections, reviews)
Goal: Find errors, verify requirements, follow
standards, training
FTR:
3 to 5 people
peers, no managers
Advance preparation required, no more than
2 hours
Meeting less than 2 hours
FTR guidelines:
review product, not person
Set agenda, follow it
Limit debate and response
Don't solve problems
Take written notes
Limit participants and prepare in advance
Schedule resources, etc
Training for reviewers
SQA
(Use statistics)
Collect and categorize defect information
Trace underlying cause
Pareto principle (80 % defects in 20% causes -
modules) identify which
Correct those
MTBF = MTTF + MTTR
Availability (per cent of time)
Safety and hazards: how dangerous
SQA plan: what documents?
ISO 9000 (ISO 9001, ISO 9000-3)
what must be done, not HOW