Chapter 7
Software Development
At a Glance
Instructor’s Manual Table of Contents
Overview
Objectives
Teaching Tips
Quick Quizzes
Discussion Questions
Additional Projects
Additional Resources
Key Terms
Lecture Notes
Overview
Chapter 7 discusses designing quality into the software development process, and begins with an
overview of the software development process and methods of testing software. The
Capability Maturity Model Integration is introduced as a way in which an organization can
ensure the quality of their software. The second half of the chapter presents quality
assurance for safety-critical software and the ethical issues specific to systems where
software failure has dire consequences.
Objectives
As students read this chapter, they should consider the following questions:
Why must companies place an increased emphasis on the use of high-quality software in
business systems, industrial process-control systems, and consumer products?
What potential ethical issues do software manufacturers face in making trade-offs between
project schedules, project costs, and software quality?
What are the four most common types of software product liability claims?
What are the essential components of a software development methodology, and what are
the benefits of using such a methodology?
How can the Capability Maturity Model Integration® improve an organization’s software
development process?
What is a safety-critical system, and what special actions are required during its
development?
Teaching Tips
Vignette—Stock Markets Susceptible to Software Glitches
1. Explain Regulation National Market System (Reg NMS), the reason for its implementation
I. Strategies for Engineering Quality Software
1. Introduce the terms high-quality software systems and software defect.
2. Briefly discuss some notable software bugs that have occurred over the past several years
(see page 265).
3. Introduce the terms software quality, quality management, and deliverables.
4. Note that a primary cause of poor software quality is that many developers do not know
Teaching
Tip
It may not be intuitive to students who have never written a computer program,
or who are new to programming, why professionally developed software would
have defects. Take time to explain reasons why software is released with bugs,
known and unknown.
A. The Importance of Software Quality
1. Introduce the terms business information system and decision support system (DSS).
2. Explain that software is used to control many industrial processes in an effort to reduce
costs, eliminate human error, improve quality, and shorten the time it takes to
manufacture products. Use examples to aid the discussion.
3. As a result of the increasing use of computers and software in business, many companies
Teaching
Tip
Emphasize that there is an ethical decision to be made: Is it unethical to release
software with known defects? Is it unethical to fix every defect at the risk of
delaying the product release, increasing its cost, and possibly reducing its
profitability? Discuss how to balance these competing interests.
II. Software Product Liability
1. Introduce the terms product liability and strict liability.
2. Defendants in a strict liability action may use several legal defenses, including the doctrine
of supervening event, the government contractor defense, and an expired statute of
limitations. Explain that under the doctrine of supervening event, the original seller is not
liable if the software was materially altered after it left the sellers possession and the
alteration caused the injury.
A. Software Development Process
1. Point out that systems analysts, programmers, architects, database specialists, project
managers, documentation specialists, trainers, and testers are all involved in large
software projects.
2. Introduce the term software development methodology.
3. Note that a methodology also offers guidelines for managing the quality of software
during the various stages of development. Use Figure 7-1 to aid the discussion.
4. Studies have shown that the cost to identify and remove a defect in an early stage of
Teaching
Tip
It may be helpful to provide an example of why it is more cost effective to
identify defects early, rather than late, in the development cycle.
Dynamic Software Testing
1. Introduce the terms dynamic testing, black-box testing, and white-box testing.
Other Types of Software Testing
B. Capability Maturity Model Integration
1. Capability Maturity Model Integration (CMMI)—developed by the Software
Engineering Institute at Carnegie Mellonis a process-improvement approach that
defines the essential elements of effective processes.
2. Introduce the term CMMI-Development (CMMI-Dev)—a specific application of
the issues that are most critical to software quality and process improvement. Use Table
7-1 to aid the discussion.
5. Discuss the results from CMMI-DEV implementations, as documented by the Software
Engineering Institute. CMMI-DEV is a set of guidelines for 22 process areas related to
Quick Quiz 1
1. _____ is the degree to which a software product meets the needs of its users.
2. _____ focuses on defining, measuring, and refining the quality of the development process
and the products developed during its various stages.
3. The liability of manufacturers, sellers, lessors, and others for injuries caused by defective
products is commonly referred to as _____.
4. _____ means that the defendant is held responsible for injuring another person, regardless
of negligence or intent.
III. Key Issues in Software Development
1. Use the next sections to discuss safety-critical systems and the special precautions
companies must take in developing them.
A. Development of Safety-Critical Systems
1. A safety-critical system is one whose failure may cause injury or death. Explain that the
safe operation of many safety-critical systems relies on the flawless performance of
software; such systems control automobiles’ antilock brakes, nuclear power plant
reactors, airplane navigation, elevators, and numerous medical devices, to name just a
few. Use the examples on page 275 to aid the discussion.
2. Introduce the terms system safety engineer and hazard log.
4. Introduce the terms risk, redundancy, and N-version programming.
5. Explain that after an organization determines all pertinent risks to a system, it must
decide what level of risk is acceptable. This decision is extremely difficult and
controversial because it involves forming personal judgments about the value of human
life, assessing potential liability in case of an accident, evaluating the surrounding
natural environment, and estimating the system’s costs and benefits.
B. Quality Management Standards
1. The International Organization for Standardization (ISO), founded in 1947, is a
worldwide federation of national standards bodies from 161 countries. Note that the
organization issued its 9000 series of business management standards in 1988.
2. The ISO 9001 family of standards serves as a guide to quality products, services, and
which organizations can be certified.
3. Discuss the steps involved in becoming ISO 9001 certified.
4. Explain that the failure mode and effects analysis (FMEA) is an important technique
used to develop ISO 9000-compliant quality systems by both evaluating reliability and
determining the effects of system and equipment failures.
Quick Quiz 2
1. What is a safety-critical system?
2. _____ is an approach to minimizing the impact of software errors by independently
implementing the same set of user requirements N times.
3. _____ is the probability of an undesirable event occurring times the probability that the
event would go undetected times the magnitude of the event’s consequences if it does
happen.
4. The term _____ refers to the provision of multiple interchangeable components to perform
a single function in order to cope with failures and errors.
Discussion Questions
1. Is Open Source code more reliable than other code?
2. Is it possible to make a safety-critical system 100% reliable?
3. Are the maturity levels in the CMMI in part representative of how long a product has been
on the market? For example, if a product is new, is it more likely to be in the first three
levels of maturity, or if a product has been released for a long time and has undergone
many upgrades, is it more likely to be in the optimizing level? Can one organization be
simultaneously in several levels, depending on the age of the product in question?
Additional Projects
1. Consider the example of the Therac 25 discussed on pages 291-292. Write a paper on steps
that could have been taken to prevent the injuries and death caused by a bug in the
software.
Additional Resources
1. A software quality assurance FAQ:
Key Terms
Black-box testing—a form of software testing in which input is provided to the program
and the output is verified against the expected output, and if they are the same the software
passes the test. The tester does not need to know anything about how the software works
Breach of warranty—when a product fails to meet the terms of its warranty
Business information system—a set of interrelated components that include hardware,
software, databases, networks, people, and procedures that collect data, process it, and
disseminate the output
CMMI-Development (CMMI-DEV)—specific application of CMMI that is frequently
used to assess and improve software development practices
Contributory negligence—the defendant demonstrates that the plaintiffs own actions
contributed to the plaintiffs injuries
Decision support system (DSS)—a type of business system which can help develop
accurate forecasts of customer demand, recommend stocks and bonds, and schedule shift
workers
Deliverable—products developed as part of a software product, such as statements of
requirements, flowcharts, and user documentation
Dynamic testing—a form of software testing where the tester runs the code, entering data,
and compares the results with expected results
Failure mode—a failure mode describes how a product or process could fail to perform
the desired functions described by the customer
Failure mode and effects analysis (FMEA)—a technique used to evaluate reliability and
determine the effect of system and equipment failures
Hazard log—hazard log is used at each stage of the software development process to
assess how it has accounted for detected hazards
products, services, and management
N-version programming—a form of redundancy that involves the execution of program
instructions simultaneously by two different systems
Product liability—the liability of manufacturers, sellers, lessors and others for injuries
caused by defective products
Reliability—the probability of a component or system performing without failure over its
product life
Risk—the probability of an undesirable event times the magnitude of the events
consequences if the event occurs
Safety-critical system—a system whose failure may cause injury or death
Software defect—any error that, if not removed, could cause a software system to fail to
meet its users’ needs
Software development methodology—a standard, proven work process that enables
systems analysts, programmers, project managers, and others to make controlled and
orderly progress in developing high-quality software
Software quality—the degree to which a software product meets the needs of its users
Static testing—a form of testing in which software programs called static analyzers look
for suspicious patterns in programs that may indicate a defect
Strict liability—the defendant is held responsible for injuring another person, regardless
of negligence or intent
System safety engineer—a system safety engineer has explicit responsibility for the
system’s safety. He or she uses a logging and monitoring system to track hazards from a
project’s start to its finish