0% found this document useful (0 votes)
30 views

07-Software Development

This document discusses strategies for engineering quality software, including following rigorous development principles, learning from mistakes, and designing systems to be robust against human error. It also covers software quality management, the importance of quality for business systems and industrial processes. Software product liability is explained in terms of strict liability, negligence, warranty and misrepresentation claims. The document outlines roles in software development processes and emphasizes identifying defects early to reduce costs. Methodologies help ensure quality and protect against legal liability.

Uploaded by

Clairin Liadi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

07-Software Development

This document discusses strategies for engineering quality software, including following rigorous development principles, learning from mistakes, and designing systems to be robust against human error. It also covers software quality management, the importance of quality for business systems and industrial processes. Software product liability is explained in terms of strict liability, negligence, warranty and misrepresentation claims. The document outlines roles in software development processes and emphasizes identifying defects early to reduce costs. Methodologies help ensure quality and protect against legal liability.

Uploaded by

Clairin Liadi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 40

Chapter 7

Software Development
Overview
• Dapat memahami proses pengembangan software yang
berkualitas tinggi dan kewajiban produsen software dalam
memenuhi standar manajemen kualitas produk
Objectives
• Setelah menyelesaikan unit ini, mahasiswa diharapkan:
• Mampu memahami kewajiban produsen software dalam
memenuhi standar manajemen kualitas produk dengan benar
• Mampu menguraikan metodologi pengembangan software dan
konsep maturity model integration serta safety critical system
dengan tepat
Contents
• Strategies for Engineering Quality Software
• The Importance of Software Quality
• Software Product Liability
• Software Development Process
• Capability Maturity Model Integration
• Key Issues in Software Development
• Development of Safety-Critical Systems
• Quality Management Standards
Strategies for Engineering Quality
Software
• High-quality software systems are systems that are easy to learn
and use because:
• Perform quickly and efficiently
• Meet their users’ needs
• Operate safely and reliably
• System downtime is kept to minimum
• Are required to support the fields of:
• Air traffic control
• Nuclear power
• Automobile safety
• Health care
• Military and defense
• Space exploration
Strategies for Engineering Quality
Software (cont’d.)
• Increased demand for high-quality software
• Computers and software have become integral parts of almost
every business
• Software defect
• Could cause a system to fail to meet users’ needs
• Impact may be trivial or very serious
• Subtle and undetectable or glaringly obvious
• Software quality
• Degree to which software meets the needs of users
Strategies for Engineering Quality
Software (cont’d.)
• Quality management
• Defines, measures, and refines the quality of the development
process and products developed
• Deliverables are products such as:
• Statements of requirements
• Flowcharts
• User documentation
• Objective: help developers deliver high-quality systems that
meet the needs of users
• The first release of any software rarely meets users’
expectation, so it need to be corrected or upgraded
• Primary cause for poor software quality: many developers do not
know how to design quality into software from the start or do not
take the time to do so
Strategies for Engineering Quality
Software (cont’d.)
• To develop high-quality software, developers must:
• Define and follow rigorous engineering principles
• Learn from past mistakes
• Understand systems’ operating environment
• Design systems relatively immune to human error
• Programmers make mistakes in defining user requirements and
turning them into code
• About one defect for every 7-10 lines of code
• Extreme pressure to reduce time to market
• Driven by need to:
• Deliver new functionality → to beat competitors
• Begin generating revenue → to recover development cost
• Meet quarterly earnings forecasts → to show profit for
shareholders
Strategies for Engineering Quality
Software (cont’d.)
• Extreme pressure to reduce time to market (cont’d)
• Resources and time to ensure quality are often cut
• When forced to choose between adding more user features
or doing more testing, most software companies decide in
favor of more features
• Ethical dilemma: how much additional cost and effort should be
expended to ensure products and services meet customers’
expectations?
• First release of software
• Organizations avoid buying the first release
• Or prohibit its use in critical systems
• Usually has many defects
• Established software products can also falter when operating
conditions change
The Importance of Software
Quality
• Business information systems
• Set of interrelated components including: hardware, software,
databases, networks, people, and procedures
• Collect and process data and disseminate the output
• Software defect can result in loss customers and reduced
revenue
• Business information system examples
• Manufacturer’s order-processing system
• Bank’s electronic-funds transfer system
• Airline’s online ticket reservation system
• Decision support system (DSS): to improve decision making
• Software defect can result in significant negative consequences
for organization and its customers
The Importance of Software
Quality (cont’d.)
• Software is used to control industrial processes to reduce costs,
eliminate human error, improve quality, and shorten the time to
manufacture product
• Software defect can lead to decreased product quality,
increased waste and cost, or unsafe operating condition for
employee
• Software controls the operation of many industrial and consumer
products
• Software defect could have relatively minor consequences or
serious damage
The Importance of Software
Quality (cont’d.)
• Many companies are now in the software business
• The quality of software, its usability, and its timely
development are critical
• Mismanaged software can be fatal to a business
• Miss product delivery dates, incur increased product
development costs, and deliver poor quality products
• Ethical questions
• How much effort and money to invest to ensure high-quality
software
• Whether products could cause damage and what the legal
exposure would be if they did
Software Product Liability
• Product liability
• Liability of manufacturers, sellers, lessors, and others for
injuries caused by defective products
• There is no federal product liability law
• Mainly covered by common law (made by state judges)
• Article 2 of the Uniform Commercial Code, which deals with
the sale of goods
• Software product liability claims are typically based on strict
liability, negligence, breach of warranty, or misrepresentation,
and sometimes in combination with one another
Software Product Liability (cont’d.)
• Strict liability
• Defendant held responsible for the injury regardless of
negligence or intent
• 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: manufacturer,
subcontractors, distributors
• Legal defenses used against strict liability
• Doctrine of supervening event
• Government contractor defense
• Expired statute of limitations
Software Product Liability (cont’d.)
• Negligence
• Failure to do what a reasonable person would do, or doing
something that a reasonable person would not do
• 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
• Demonstration that the plaintiffs’ own actions contributed to
injuries (contributory negligence)
Software Product Liability (cont’d.)
• Warranty
• Assures buyers or lessees that a product meets certain
standards of quality
• May be expressly stated or implied by law
• Breach of warranty claim
• When the product fails to meet the terms of its warranty
• Most dissatisfied customers will first seek a replacement, a
substitute product, or a refund before filing a lawsuit
• 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 to limit liability
Software Product Liability (cont’d.)
• Intentional misrepresentation
• Seller or lessor either misrepresents the quality of a product or
conceals a defect in it
• Forms of representation
• Advertising
• Salespersons’ comments
• Invoices
• Shipping labels
• Most software manufacturers use limited warranties and
disclaimers to avoid any claim of misrepresentation
Software Development Process
• Large software project roles
• System analysts
• Programmers
• Architects
• Database specialists
• Project managers
• Documentation specialists
• Trainers
• Testers
Software Development Process
(cont’d.)
• Software development methodology: standard, proven work
process that enables us to make controlled and orderly progress
• Defines activities in software development process
• Defines individual and group responsibilities
• Recommends specific techniques for activities
• Offers guidelines for managing the quality of software during
various stages of development
Software Development Process
(cont’d.)
• Easier and cheaper to avoid software problems at the beginning
than to attempt to fix damages after the fact
• Cost to identify and remove a defect in an early stage can be up
to 100 times less than removing a defect in distributed
software
• Identify and remove errors early in the development process
• Cost-saving measure
• Most efficient way to improve software quality
• Effective methodology protects from legal liability
• Reduces the number of software errors
• If an organization follows widely accepted development
methods, negligence on its part is harder to prove
Software Development Process
(cont’d.)
• Quality assurance (QA) refers to methods within the development
cycle
• Guarantee reliable operation of product
• Are applied at each stage in the development cycle
• Include testing before the product ships
• Dynamic testing: test the code for a completed unit of software by
actually entering test data and comparing the results with the
expected results
• Black-box testing
• Tester has no knowledge of code
• White-box testing
• Testing all possible logic paths in the software unit, with
thorough knowledge of the logic
• Makes each program statement execute at least once
Software Development Process
(cont’d.)
• Static testing
• Static analyzers are run against the new code
• Looks for suspicious patterns in programs that might indicate a
defect
• Integration testing: occurs after successful unit testing
• Software units are combined into an integrated subsystem
• Ensures that all linkages among various subsystems work
successfully
• System testing: occurs 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
• Developed by the Software Engineering Institute at Carnegie
Mellon University in Pittsburgh
• Process improvement approach that defines essential elements of
effective processes
• General enough to evaluate and improve almost any process
• Frequently used to assess software development practices
• Defines five levels of software development maturity
• Identifies issues most critical to software quality and process
improvement
• Maturity level increases
• Organization improves its ability to deliver good software on
time and on budget
Capability Maturity Model
Integration (cont’d.)
Capability Maturity Model
Integration (cont’d.)
• CMMI-Development
• Set of guidelines for 22 process areas related to systems
development
• Organizations that do these 22 things well will have an
outstanding software development and maintenance process
• Organization conducts an assessment of its software
development practices
• Determines where they fit in the capability model
• Identifies areas for improvement
• Establish action plans to upgrade the development process
• Can be used as a benchmark for comparing organizations
Key Issues in Software Development
• Consequences of software defects in certain systems can be
deadly
• Companies must take special precautions
• Ethical decisions involve a trade-off between quality and such
factors as cost, ease of use, and time to market
Development of Safety-Critical
Systems
• Safety-critical system: system whose failure may cause injury or
death
• Automobile’s antilock brakes
• Nuclear power plant reactors
• Airplane navigation
• Roller coasters
• Elevators
• Medical devices
• Key assumption: safety will not automatically result from
following the organization’s standard development methodology
• Requires a more rigorous and time-consuming development
process than other kinds of software
Development of Safety-Critical
Systems (cont’d.)
• All tasks require:
• Additional steps
• More thorough documentation
• Vigilant checking and rechecking
• Takes much longer to complete and is much more expensive to
develop
• Software developers must work closely with safety and systems
engineers to ensure that the entire system operates in a safe
manner
• Software is only one component of the system; other
components: system users/operators, hardware, equipment
• The key to ensure that these additional tasks are completed is to
appoint a system safety engineer
Development of Safety-Critical
Systems (cont’d.)
• Safety engineer: has explicit responsibility for the system’s safety
• Uses a logging and monitoring system to track hazards from
the project’s start to finish
• Hazard log: used at each stage of the software development
process to assess how project team has accounted for
detected hazards
• Safety reviews are held throughout the development
process
• Robust configuration management system tracks all safety-
related matters
• Influence the design of the system to ensure that it operates
safely when put into use
Development of Safety-Critical
Systems (cont’d.)
• Key issues
• Ethical dilemmas: increased time and expense
• Deciding when QA staff has performed sufficient testing
• Formal documentation required
• Including verification reviews and signatures
• Conduct a formal risk analysis
• Risk: probability of an undesirable event occurring times the
magnitude of the event’s consequences
• Consequences include:
• Damage to property
• Loss of money
• Injury to people
• Death
Development of Safety-Critical
Systems (cont’d.)
• Redundancy
• Provision of multiple interchangeable components to perform
a single function in order to cope with failures and errors
• During times of widespread disaster, lack of sufficient
redundant systems can lead to major problems
• N-version programming
• Independently implementing the same set of user
requirements N times
• The different versions are run in parallel, and if the outputs
vary, a “voting algorithm” is executed
• Instructions can be written by programmers from different
companies and run on different hardware devices
• Rationale: multiple software versions are highly unlikely to fail
at the same time under the same conditions
Development of Safety-Critical
Systems (cont’d.)
• Decide what level of risk is acceptable
• Difficult and controversial decision
• Forming personal judgements about the value of human life,
assessing potential liability in case of accident, evaluating
the surrounding natural environment, and estimating the
system’s costs and benefits
• Make system modifications if level of risk is judged to be too
great
• Adding redundant components or using safety shutdown
systems, containment vessels, protective walls, or escape
systems
• Mitigate the consequences of failure
• Devise emergency procedures and evacuation plans
Development of Safety-Critical
Systems (cont’d.)
• Decide whether to recall a product when data indicates a problem
• Can shake consumers’ confidence in manufacturers and their
products
• Reliability
• Probability of a component or system performing without
failure over its product life
• Reliability has to do with the capability of system to continue
to perform, whereas safety has to do with the ability of the
system to perform in safe manner
• System-human interface
• Important and difficult area of safety-critical system design
• Challenge: design a system that works as it should and leaves
little room for erroneous judgment on the part of operator
• Poor design of a system interface can greatly increase risk
Quality Management Standards
• The International Organization for Standardization (ISO)
• Issued its series of business management standards
• Require organizations to develop formal quality management
system that focus on identifying and meeting the needs,
desires, and expectation of their customers
• ISO 9001 family of standards
• Guide to quality products, services, and management
• Organization must submit to an examination by an external
assessor
• Requirements
• Written procedures for all processes
• Follow those procedures
• Prove to the auditor the organization fulfilled the first two
requirements (require observation and interviews)
Quality Management Standards
(cont’d.)
• Many software development organizations are applying ISO 9001
• To meet the special needs and requirements associated with
the purchase, development, operation, maintenance, and
supply of computer software
• Failure mode and effects analysis (FMEA)
• Technique used to evaluate reliability and determine the effect
of system and equipment failures
• Failures are classified according to:
• Impact on a project’s success
• Personnel safety
• Equipment safety
• Customer satisfaction and safety
• Goal: identify potential design and process failures early in a
project
Quality Management Standards
(cont’d.)
• Failure mode and effects analysis (FMEA)(cont’d)
• Failure mode: how a product or process could fail to perform
the desired functions
• Effect: adverse consequence that customer might experience
• A single cause may have multiple effects, and a combination of
causes may lead to one effect or multiple effects
• FMEA helps to prioritize actions necessary to reduce potential
failures with the highest relative risks.
• Determine the severity rating
• Determine the occurrence rating
• Determine the criticality (severity x occurrence)
• Determine the detection rating
• Calculate the risk priority rating (severity x occurrence x
detection)
Quality Management Standards
(cont’d.)
Unit Summary
• Sekarang, mahasiswa:
• Mampu memahami kewajiban produsen software dalam
memenuhi standar manajemen kualitas produk dengan benar
• Mampu menguraikan metodologi pengembangan software dan
konsep maturity model integration serta safety critical system
dengan tepat
Question & Answers

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy