Software Quality Assurance


Overview

To frame our discussion, consider:

What quality perspectives can be applied to software?

What quality factors are useful in describing characteristics of the software solution?

What is the purpose of software quality assurance?

What are the responsibilities of an SQA team?


OUTLINE


Software Quality

Views of Quality

Transcendental

Quality can be identified but not defined. " As an affirmative - "I know it when I see it!!", and a negative - "I know when its missing!!".

User

The user view of quality is in the context of use. This view gauges quality with regard to fitness for use.

Manufacturing

Manufacturing process takes precedence over product. Here quality is assessed based on performing the right tasks to construct the product assuming such acts result in better products.

Product

The product view is conformance to specification. We build what we wanted to build as detailed in the specification.

Value-for-money

Equates quality with what customers are willing to pay. This view provides the foundation for trade-offs. This view is typical later in product development cycles when change requests are handled.

Types of Software


Type

GENERAL DESCRIPTION
SystemCompilers, editors, file management utilities, and operating systems are some examples. Characterized by heavy interaction with hardware, multiple users, and concurrent operation of processes
Real-TimeMeasures/analyzes/controls real-world events as they occur.
BusinessRestructures existing data in order to facilitate business operations or management decision making.
Engineering
and Scientific
Generally considered the number crunching software. Currently though, new applications would include CAD and simulation.
EmbeddedResides in ROM and is used to control products and systems for the consumer and industrial markets.
Personal Computer This category includes the traditional "individual productivity tools" as well as games and entertainment software.
Artificial
Intelligence
AI software makes use of nonnumerical algorithms to solve complex problems. These are sometimes referred to as expert systems or knowledge-based systems.

Quality Factors

From Pressman

1. Portability -- the ease with which software can be transferred from one computer system to another.
2. Reliability -- the ability of a program to perform a required function under stated conditions for a stated period of time.
3. Efficiency -- the extent to which software performs its intended functions with a minimum consumption of computing resources.
4. Accuracy -- the relation between the computed value and the specified to theoretically correct value.
5. Performance -- processing speed and/or system response time.
6. Robustness -- the extent to which software can continue to operate correctly despite the introduction of invalid inputs.
7. Correctness -- the extent to which software is free from design and coding defects, the extent to which software meets its specified requirements, the extent to which the software meets user expectations.

Quality Factor as Requirement



TYPE
OF
SOFTWARE
P
O
R
T
A
B
I
L
I
T
Y
R
E
L
I
A
B
I
L
I
T
Y
E
F
F
I
C
I
E
N
C
Y
P
E
R
F
O
R
M
A
N
C
E
R
O
B
U
S
T
N
E
S
S
C
O
R
R
E
C
T
N
E
S
S
System NYYYYY
Real-Time NYYYYY
Business YYNNNY
Engineering and Scientific YYNNNY
Embedded NYYYYY
Personal Computer YNNNNY
Artificial Intelligence YNNNNY

Other Quality Factors

Correctness
Reliability
Efficiency
Integrity
Usability
Maintainability
Testability
Flexibility
Portability
Reusability
Interoperability

FURPS (Hewlett Packard)

Functionality - assessed by evaluating the feature set and capabilities of the program, the generality of the functions that are delivered and the security of the system.
Usability - assessed by considering human factors, overall aesthetics, consistency, and documentation.
Reliability - evaluated by measuring the frequency and severity of failure, the accuracy of output results, the mean time between failure, the ability to recover from failure, and the predictability of the program.
Performance - measured by evaluating processing speed, response time, resource consumption, throughput, and efficiency.
Supportability - combines the ability to extend the program (extensibility), adaptability, serviceability, in addition to testability, compatibility, configurability, the ease with which a system can be installed, and the ease with which problems can be localized.

Trade-offs

PREHTUM
portabilityXXX
reliabilityXX
efficiencyXXXXXX
human
engineering
XXXXX
testabilityXXXXX
understandabilityXXXX
modifiabilityXXXX

Quality is Important

Corporate Success Depends on Quality

early 1980s - IRS hired Sperry Corp. to build an automated federal income tax form processing system. In 1985 an extra $90 million was needed to enhance the original $103 million system. In adequate performance caused the IRS to miss the deadline for refunds, costing the IRS an additional $40.2 million in interest and $22.3 million in overtime wages.

Lives are at stake



Achieving quality in software


Group


Primary
Objective
Rank
on
Primary

Secondary
Objective

Rank on
Secondary

Core
Used

Output
Readability

Program
Readability

Statements Used

Time
(hours)
1minimum
core
1minimum
statements
21996545274
2minimum
execution
time
minimum
prog.
hours
567684510050
3output
readability
1program
readability
1134381116630
4program
readability
2output
readability
24690229040
5minimum
statements
1minimum
core
22486633330
6minimum
prog.
hours
1program
read ability
685483612628

Defects

1. The later in the life cycle that an error is detected the more expensive it is to repair.

2. Errors remain latent and are not detected until well after the stage at which they are made.

IBM Defect Model

No Early Defect Detection

Early Defect Detection

3. There are numerous requirements errors.

Estimates indicate that 56% of all errors are errors during the requirements stage.

4. Requirements errors are typically nonclerical. 77% requirements errors on A7E were nonclerical.

Reviews

The software industry relies heavily on testing, executing the program using prepared data, in an attempt to find defects. In fact, software developers plan and conduct several types of testing during the course of product development. There is unit testing, integration testing, and acceptance testing. Each of these testing strategies employs a variety of techniques for developing test cases.

In 1976, M. Fagan called in to question the robustness of execution-based testing as a defect detection strategy. He introduced the inspection process into software development at IBM. The idea was simple have a group read the artifact (code, requirement, design, test plan, etc.) looks for problems. For the past twenty years data has accumulated regarding the effectiveness of this strategy for defect detection. The data continues to show that informal and formal reviews can be more effective than execution-based testing in finding defects.

Taxonomy of Techniques

Structured Walkthrough

This is an informal technique involving the author of the artifact and one or more other developers familiar with the development activity. Meetings are loosely defined, lasting 30-60 minutes. Walkthroughs do not require documentation of the meeting results.

Code Reading

In code reading two or more developers read the code independently, then meet with author individually to discuss it. There is typically no process defined for code reading, nor is there a documentation expected as an outcome.

Code Inspection

The code inspection was originated by Fagan. Fagan defined a systematic process for the activity. The process definition included planning, preparation , inspection, rework and followup. Included in the process definition were specific roles for the participants.

During the inspection meeting the author/reader paraphrases the material, while the participants ask question that may lead to the discovery of defects.

Software Review

The author conducts an informal meeting with readers to establish background and distributed material. The reviewers go through the material individually using a checklist as a guide. The author collects the checklists and consolidates the results. The summary results are presented at a group meeting.

Active Design Review

This method is more directed than code reading. Reviewer receive a checklist. The questionnaire focuses the reviewer's attention on a particular set of issues. Different reviewers get different questionnaires, thus, reviewers concentrate on different sets of issues. The author meets with the reviewers individually to review their findings.

Defect-Based Reading

The starting point for defect-based reading is a model of possible defects in requirements documents. For each defect class a set of questions was developed that would characterize the defect class, e.g. the class of data type inconsistencies. The questions also characterize a set of steps that should be performed while reading. The set of steps is called a scenario. While reading the document and following the different steps, the reader tries to answer the questions provided in the scenario.

Defect-based reading has been shown to be more effective than ad-hoc reading and checklist-oriented reading. The message from the research appears to be the use of scenarios.These seem to support reviewers' focus on specific defect classes.

Meetingless Reviews

Current work in defining processes for reviews includes calling into question the viability of group-based techniques which require meetings. Porter and Johnson (Porter97) found that meetingless methods can be as effective as meeting-based ones. Individual strategies find more issues to resolve but these have a higher false positive (identified problems that later were determined not to be defects) and duplication rates. The duplication rates can be reduced by specializing the roles during the process.

Computer-mediated Technical Reviews

In the software engineering community there is considerable work in progress related to supporting technical reviews. Some the effort relates to supporting clerical functions of distribution and defect report collection and rework tracking. Other work is aimed at synchronous distributed reviews where the review does is not required to be in the room (or the same country).

SQA

Software Quality Assurance is a planned and systematic pattern of actions required to ensure quality in software.

Major Activities


Go To Lecture [Outline] [Overview]

Go To [Course Outline]


References