Summary Chapter 7 ComEthics
Summary Chapter 7 ComEthics
– Plaintiff must prove only that the software product is defective or unreasonably
dangerous and that the defect caused the injury
– No requirement to prove that the manufacturer was careless or negligent
• Or to prove who caused the defect
– All parties in the chain of distribution are liable
• Legal defenses used against strict liability
– Doctrine of supervening event
– Government contractor defense
– Expired statute of limitations
• Negligence
– A supplier is not held responsible for every product defect that causes a customer or
third-party loss
– Responsibility is limited to defects that could have been detected and corrected through
“reasonable” software development practices
– Area of great risk for software manufacturers
– Defense of negligence may include
• Legal justification for the alleged misconduct
• Demonstrate that the plaintiffs’ own actions contributed to injuries
• Warranty
– Assures buyers or lessees that a product meets certain standards of quality
A warranty of quality may be either
– Expressly stated
– Implied by law
• Breach of warranty claim
– Plaintiff must have a valid contract that the supplier did not fulfill
– Can be extremely difficult to prove
• Because the software supplier writes the warranty
Summary Chapter 7 Software Development
• Dynamic testing
– Black-box testing
• Tester has no knowledge of code
– White-box testing
• Testing all possible logic paths through the software unit
• With thorough knowledge of the logic
• Make each program statement execute at least once
• Static testing
– Static analyzers are run against the new code
– Looks for suspicious patterns in programs that might indicate a defect
• Integration testing
– After successful unit testing
– Software units are combined into an integrated subsystem
– Ensures that all linkages among various subsystems work successfully
• System testing
– After successful integration testing
– Various subsystems are combined
– Tests the entire system as a complete entity
• User acceptance testing
– Independent testing
– Performed by trained end users
– Ensures that the system operates as they expect
Capability Maturity Model Integration for Software
Capability Maturity Model Integration (CMMI)—developed by the Software Engineering
Institute at Carnegie Mellon—is a process-improvement approach that defines the essential
elements of effective processes.
• General enough to evaluate and improve almost any process
• Frequently used to assess software development practices
Summary Chapter 7 Software Development
N-version programming
Summary Chapter 7 Software Development
– Form of redundancy
– Involves the execution of a series of program instructions simultaneously by two
different systems
– Uses different algorithms to execute instructions that accomplish the same result
– Results from the two systems are compared
– If a difference is found, another algorithm is executed to determine which system
yielded the correct result
– Instructions for the two systems are:
• Written by programmers from two different companies
• Run on different hardware devices
– Both systems are highly unlikely to fail at the same time under the same conditions
Decide what level of risk is acceptable
– Controversial
– If the level of risk in a design is judged to be too great, make system modifications
Mitigate the consequences of failure
– By devising emergency procedures and evacuation plans
Recall product
– When data indicates a problem
Reliability
– Probability of a component or system performing without failure over its product life
Human interface
– Important and difficult area of safety-critical system design
– Leave the operator little room for erroneous judgment
Quality Management Standards
• ISO 9000 standard
– Guide to quality products, services, and management
– Organization must submit to an examination by an external assessor
– Requirements:
Summary Chapter 7 Software Development