Software Quality Assurance
Software Quality Assurance
(COMPUTER SCIENCE)
SEM – V
Trupti Wani Note: This PPT is used only for educational purpose
• Software Quality Management is a process that ensures the required level of
software quality is achieved when it reaches the users, so that they are satisfied
by its performance. The process involves quality assurance, quality planning,
and quality control.
We would expect the quality to be a concern of all producers of goods and services. However,
the distinctive characteristics of software and in particular its intangibility and complexity,
make special demands.
Increasing criticality of software: The final customer or user is naturally concerned about
the general quality of software, especially its reliability. This is increasing in the case as
organizations become more dependent on their computer systems and software is used more
and more in safety-critical areas. For example, to control aircraft.
The intangibility of software: This makes it challenging to know that a particular task in a
project has been completed satisfactorily. The results of these tasks can be made tangible by
demanding that the developers produce 'deliverables' that can be examined for quality.
Accumulating errors during software development: As computer system development
is made up of several steps where the output from one level is input to the next, the errors
in the earlier ?deliverables? will be added to those in the later stages leading to accumulated
determinable effects. In general the later in a project that an error is found, the more
expensive it will be to fix. In addition, because the number of errors in the system is
unknown, the debugging phases of a project are particularly challenging to control.
Characteristics of Quality
When we examine an item based on its measurable characteristics, two kinds of quality
may be encountered: quality of design and quality of conformance.
Quality of design refers to the characteristics that designers specify for an item. The grade
of materials, tolerances, and performance specifications all contribute to the quality of
design. As higher-grade materials are used, tighter tolerances and greater levels of
performance are specified, the design quality of a product increases, if the product is
manufactured according to specifications.
Quality of conformance is the degree to which the design specifications are followed
during manufacturing. Again, the greater the degree of conformance, the higher is the level
of quality of conformance. In software development, quality of design encompasses
requirements, specifications, and the design of the system. Quality of conformance is an
issue focused primarily on implementation. If the implementation follows the design and
the resulting system meets its requirements and performance goals, conformance quality is
high
In software development, quality of design encompasses requirements, specifications, and the design of the
system.
Quality of conformance is an issue focused primarily on implementation. If the implementation follows the
design and the resulting system meets its requirements and performance goals, conformance quality is high
Quality Control
Variation control may be equated to quality control. But how do we achieve quality control? Quality
control involves the series of inspections, reviews, and tests used throughout the software process to
ensure each work product meets the requirements placed upon it. Quality control includes a feedback loop
to the process that created the work product. The combination of measurement and feedback allows us to
tune the process when the work products created fail to meet their specifications. This approach views
quality control as part of the manufacturing process. Quality control activities may be fully automated,
entirely manual, or a combination of automated tools and human interaction. A key concept of quality
control is that all work products have defined, measurable specifications to which we may compare the
output of each process. The feedback loop is essential to minimize the defects produced.
Quality Assurance
Quality assurance consists of the auditing and reporting functions of management. The goal of quality
assurance is to provide management with the data necessary to be informed about product quality, thereby
gaining insight and confidence that product quality is meeting its goals. Of course, if the data provided
through quality assurance identify problems, it is management’s responsibility to address the problems and
apply the necessary resources to resolve quality issues.
Cost of Quality
The cost of quality includes all costs incurred in the pursuit of quality or in performing
quality-related activities. Cost of quality studies are conducted to provide a base- line for the
current cost of quality, identify opportunities for reducing the cost of quality, and provide a
normalized basis of comparison. The basis of normalization is almost always dollars. Once we
have normalized quality costs on a dollar basis, we have the necessary data to evaluate where
the opportunities lie to improve our processes. Furthermore, we can evaluate the effect of
changes in dollar-based terms. Quality costs may be divided into
costs associated with prevention,
appraisal, and
failure.
Failure costs are those that would disappear if no defects appeared before shipping a
product to customers. Failure costs may be subdivided into internal failure costs and
external failure costs.
Internal failure costs are incurred when we detect a defect in our product prior to
shipment. Internal failure costs include
• rework
• repair
• failure mode analysis
External failure costs are associated with defects found after the product has been
shipped to the customer. Examples of external failure costs are
• complaint resolution
• product return and replacement
• help line support
• warranty work
Software Quality Assurance
SQA Encompasses
•A quality management approach
•Effective Software engineering technology (methods and tools)
•Formal technical reviews that are tested throughout the software process
•A multitier testing strategy
•Control of software documentation and the changes made to it.
•A procedure to ensure compliances with software development standards
•Measuring and reporting mechanisms.
SQA Activities
Software quality assurance is composed of a variety of functions associated with two different
constituencies ? the software engineers who do technical work and an SQA group that has
responsibility for quality assurance planning, record keeping, analysis, and reporting.
Disadvantage of SQA:
There are a number of disadvantages of quality assurance. Some of them include adding more
resources, employing more workers to help maintain quality and so much more.
SQA plan :
Software quality assurance encompasses a broad range of concerns and activities that focus on the
management of software quality. These can be summarized in the following manner [Hor03]:
Standards
The IEEE, ISO, and other standards organizations have produced a broad array of software engineering
standards and related documents. Standards may be adopted voluntarily by a software engineering
organization or imposed by the customer or other stakeholders. The job of SQA is to ensure that standards
that have been adopted are followed and that all work products conform to them.
Change management
Change is one of the most disruptive aspects of any software project. If it is not properly managed, change can lead
to confusion, and confusion almost always leads to poor quality. SQA ensures that adequate change management
practices have been instituted.
Education
Every software organization wants to improve its software engineering practices. A key contributor to
improvement is education of software engineers, their managers, and other stakeholders. The SQA organization
takes the lead in software process improvement and is a key proponent and sponsor of educational programs.
Vendor management
Three categories of software are acquired from external software vendors—shrink-wrapped packages (e.g.,
Microsoft Office), a tailored shell [Hor03] that provides a basic skeletal structure that is custom tailored to the
needs of a purchaser, and contracted software that is custom designed and constructed from specifications provided
by the customer organization. The job of the SQA organization is to ensure that high-quality software results by
suggesting specific quality practices that the vendor should follow (when possible), and incorporating quality
mandates as part of any contract with an external vendor.
Security management
With the increase in cyber crime and new government regulations regarding privacy, every software organization
should institute policies that protect data at all levels, establish firewall protection for WebApps, and ensure that
software has not been tampered with internally. SQA ensures that appropriate process and technology are used to
achieve software security.
Safety
Because software is almost always a pivotal component of humanrated systems (e.g., automotive or aircraft
applications), the impact of hidden defects can be catastrophic. SQA may be responsible for assessing the
impact of software failure and for initiating those steps required to reduce risk.
Risk management
Although the analysis and mitigation of risk is the concern of software engineers, the SQA organization
ensures that risk management activities are properly conducted and that risk-related contingency plans have
been established.
SOFTWARE REVIEWS
Software reviews are a "filter" for the software engineering process. That is, reviews are applied at various
points during software development and serve to uncover errors and defects that can then be removed. Software
reviews "purify" the software engineering activities that we have called analysis, design, and coding. A review—
any review—is a way of using the diversity of a group of people to: 1. Point out needed improvements in the
product of a single person or team; 2. Confirm those parts of a product in which improvement is either not
desired or not needed; 3. Achieve technical work of more uniform, or at least more predictable, quality than can
be achieved without reviews, in order to make technical work more manageable. Many different types of
reviews can be conducted as part of software engineering. Each has its place. An informal meeting around the
coffee machine is a form of review, if technical problems are discussed. A formal presentation of software design
to an audience of customers, management, and technical staff is also a form of review. In this book, however, we
focus on the formal technical review, sometimes called a walkthrough or an inspection. A formal technical
review is the most effective filter from a quality assurance standpoint. Conducted by software engineers (and
others) for software engineers, the FTR is an effective means for improving software quality.
Review Guidelines
Guidelines for the conduct of formal technical reviews must be established in advance, distributed to all
reviewers, agreed upon, and then followed. A review that is uncontrolled can often be worse that no
review at all. The following represents a minimum set of guidelines for formal technical reviews:
1. Review the product, not the producer. An FTR involves people and egos. Conducted properly, the
FTR should leave all participants with a warm feeling of accomplishment. Conducted improperly,
the FTR can take on the aura of an inquisition. Errors should be pointed out gently; the tone of the
meeting should be loose and constructive; the intent should not be to embarrass or belittle. The
review leader should conduct the review meeting to ensure that the proper tone and attitude are
maintained and should immediately halt a review that has gotten out of control.
2. Set an agenda and maintain it. One of the key maladies of meetings of all types is drift. An FTR must
be kept on track and on schedule. The review leader is chartered with the responsibility for
maintaining the meeting schedule and should not be afraid to nudge people when drift sets in.
3. Limit debate and rebuttal. When an issue is raised by a reviewer, there may not be universal
agreement on its impact. Rather than spending time debating the question, the issue should be
recorded for further discussion off-line
4. Enunciate problem areas, but don't attempt to solve every problem noted. A review is not a problem-
solving session. The solution of a problem can often be accomplished by the producer alone or with the
help of only one other individual. Problem solving should be postponed until after the review meeting.
5. Take written notes. It is sometimes a good idea for the recorder to make notes on a wall board, so that
wording and priorities can be assessed by other reviewers as information is recorded.
6. Limit the number of participants and insist upon advance preparation. Two heads are better than one,
but 14 are not necessarily better than 4. Keep the number of people involved to the necessary minimum.
However, all review team members must prepare in advance. Written comments should be solicited by the
review leader (providing an indication that the reviewer has reviewed the material).
7. Develop a checklist for each product that is likely to be reviewed. A checklist helps the review leader to
structure the FTR meeting and helps each reviewer to focus on important issues. Checklists should be
developed for analysis, design, code, and even test documents.
8. Allocate resources and schedule time for FTRs. For reviews to be effective, they should be scheduled as
a task during the software engineering process. In addition, time should be scheduled for the inevitable
modifications that will occur as the result of an FTR.
9. Conduct meaningful training for all reviewers. To be effective all review participants
should receive some formal training. The training should stress both process-related issues
and the human psychological side of reviews. Freedman and Weinberg [FRE90] estimate
a one-month learning curve for every 20 people who are to participate effectively in
reviews.
10. Review your early reviews. Debriefing can be beneficial in uncovering problems with
the review process itself. The very first product to be reviewed should be the review
guidelines themselves.
STATISTICAL SOFTWARE QUALITY ASSURANCE
Statistical quality assurance reflects a growing trend throughout industry to become more quantitative about
quality. For software, statistical quality assurance implies the following steps:
There is no doubt that the reliability of a computer program is an important element of its
overall quality. If a program repeatedly and frequently fails to perform, it matters little whether
other software quality factors are acceptable. Software reliability, unlike many other quality
factors, can be measured directed and estimated using historical and developmental data.
Software reliability is defined in statistical terms as "the probability of failure-free operation of
a computer program in a specified environment for a specified time" [MUS87]. To illustrate,
program X is estimated to have a reliability of 0.96 over eight elapsed processing hours. In
other words, if program X were to be executed 100 times and require eight hours of elapsed
processing time (execution time), it is likely to operate correctly (without failure) 96 times out
of 100.
If we consider a computer-based system, a simple measure of reliability is meantime
between-failure (MTBF),
where MTBF = MTTF + MTTR
The MTBF reliability measure is equally sensitive to MTTF and MTTR. The availability
measure is somewhat more sensitive to MTTR, an indirect measure of the maintainability of
software.
Six Sigma for Software Engineering
Six Sigma is the most widely used strategy for statistical quality assurance in industry today.
Originally popularized by Motorola in the 1980s, the Six Sigma strategy “is a rigorous and
disciplined methodology that uses data and statistical analysis to measure and improve a company’s
operational performance by identifying and eliminating defects’ in manufacturing and service-related
processes” [ISI08]. The term Six Sigma is derived from six standard deviations—3.4 instances
(defects) per million occurrences—implying an extremely high quality standard.
The Six Sigma methodology defines three core steps:
• Define customer requirements and deliverables and project goals via welldefined methods of
customer communication.
• Measure the existing process and its output to determine current quality performance (collect defect
metrics).
• Analyze defect metrics and determine the vital few causes. If an existing software process is in
place, but improvement is required,
Six Sigma suggests two additional steps: • Improve the process by eliminating the root causes of
defects.
• Control the process to ensure that future work does not reintroduce the causes of defects.
These core and additional steps are sometimes referred to as the DMAIC (define, measure,
analyze, improve, and control) method. If an organization is developing a software process
(rather than improving an existing process), the core steps are augmented as follows:
• Design the process to (1) avoid the root causes of defects and (2) to meet customer
requirements.
• Verify that the process model will, in fact, avoid defects and meet customer requirements.
This variation is sometimes called the DMADV (define, measure, analyze, design, and verify)
method.
THE ISO 9000 QUALITY STANDARDS
A quality assurance system may be defined as the organizational structure, responsibilities, procedures, processes,
and resources for implementing quality management [ANS87]. Quality assurance systems are created to help
organizations ensure their products and services satisfy customer expectations by meeting their specifications.
These systems cover a wide variety of activities encompassing a product’s entire life cycle including planning,
controlling, measuring, testing and reporting, and improving quality levels throughout the development and
manufacturing process. ISO 9000 describes quality assurance elements in generic terms that can be applied to any
business regardless of the products or services offered. To become registered to one of the quality assurance system
models contained in ISO 9000, a company’s quality system and operations are scrutinized by third-party auditors
for compliance to the standard and for effective operation. Upon successful registration, a company is issued a
certificate from a registration body represented by the auditors. Semiannual surveillance audits ensure continued
compliance to the standard. The requirements delineated by ISO 9001:2000 address topics such as management
responsibility, quality system, contract review, design control, document and data control, product identification and
traceability, process control, inspection and testing, corrective and preventive action, control of quality records,
internal quality audits, training, servicing, and statistical techniques.
In order for a software organization to become registered to ISO 9001:2000, it must establish policies and
procedures to address each of the requirements just noted (and others) and then be able to demonstrate that these
policies and procedures are being followed.
a nk yo u
T h