Professional Documents
Culture Documents
Overview
Software plays a major role in modern organizations, as it is used to run the computer-
based systems which collect, store, transform, and organize the data used to conduct
business. Unfortunately, the development of software is a major headache for
organizations. Frequently software is delivered late and does not meet user requirements
due to defects.
Many software problems may be attributed to the development of low quality software
that is characterized by numerous defects. It has been suggested by software experts that
the way to address these types of software problems is to improve software quality
through quality assurance methods. Quality improvements will reduce defects and thus
speed up development time (due to less rework required prior to release) and decrease the
costs and personnel demands associated with program maintenance (due to fewer defects
in the released software).
One of the most well known software quality techniques is the software inspection. A
software inspection is a group meeting which is conducted to uncover defects in a
software "work product" (e.g., requirements specification, user interface design, code,
test plan). The software inspection approach is a formally defined process involving a
series of well defined inspection steps and roles, a checklist to aid error detection, and the
formal collection of process and product data.
Software inspections are conducted in industry because they have been found to be an
effective way to uncover defects. The detection rate for an inspection varies depending on
the type of work product being inspected and the specific inspection process used.
Studies have found that 30 to 90 percent of the defects in a work product may be
uncovered through the inspection process. Early detection of defects can lead to cost
savings. For example, one study has estimated that inspection-based techniques at
Hewlett-Packard have yielded a cost saving of $21 million. It should be noted that
inspections may take up a significant portion of a project's time and budget if performed
on a consistent basis throughout the life of a project. According to an industry estimate
from AT&T, project teams may devote four to fifteen percent of project time to the
inspection process. While allocating this amount of time on inspections may seem high,
the benefit of reducing software defects has been found to outweigh the cost of
conducting inspections.
The favorable attitude that many in the software development field have toward the
inspection process is underscored by a statement made by Barry Boehm (a well known
expert in the field of systems development), who has written that "the [software
inspection] has been the most cost effective technique to date for eliminating software
errors."
• A work product refers to the models, designs, programs, test plans, etc. that are
generated during the systems development process. Examples of work products
corresponding to some of the different system life cycle phases include:
o Analysis phase: DFDs, ER diagrams, project dictionary entries, process
specifications
o Design phase: input/output forms, reports, database design, structure
charts
o Implementation phase: program code, test plan for code
o Anything that may ultimately hinder the quality of the final software
product is considered a defect. Defects may happen throughout the
development process. For example, errors regarding DFDs and the project
dictionary may occur during the analysis phase; poor user interfaces may
be generated during the design phase; and "buggy" code and incomplete
testing plans may be generated during the implementation phase.
• Inspections are justified on an economic basis. The earlier that a software defect
can be identified, the cheaper it is to fix. For example, studies show that a defect
that is found during system testing can be 10 to 100 times more expensive to fix
than defects found early in the development life cycle (e.g., analysis and design).
• Data collected during the inspection process (e.g., the types and rates of defects)
can be used to help improve the software development process. For example, if
software developers in an organization tend to make the same types of errors on
multiple projects, the organization may wish to understand the root cause for
these problems and take action to improve the development process.
• Inspections can help to improve communication and learning
o Among IS personnel
o Between IS and user personnel
• An "Action List" of the errors/deficiencies that need to be fixed. This list is then
passed onto the person who produced the work product.
Does a software inspection entail error detection AND error correction, or just error
detection?
• Only error detection. Error correction is delegated to the person who produced the
work product.
• No. Organizations that conduct inspections have found that it is best to use the
inspection process to improve the quality of a work product and not use the
inspection for performance appraisal. They have found that if inspections are used
to formally track performance of IS personnel for performance appraisals, then
the inspections become too much of a high-stress activity and some personnel do
not want to participate.
What may be some of the potential problems that happen during inspection meetings?
• To help address some of the potential problems with group inspections, successful
inspection teams follow a set of guidelines/ground rules. Specific guidelines
include:
Sources:
Boehm, V. "Indutrial sofware metrics top ten list," IEEE Software, September 1987, 84-
85.
Ebenau, R. and Strauss, S. Software Inspection Process, McGraw-Hill, New York, New
York, 1994.
Grady, R. and Van Slack, T. "Key lessons in achieving widespread inspection use," IEEE
Software, 11(4), July 1994.