Lab Session-II CS121 Summer-I 1999

Software Engineering
• Software has some special characteristics
– Software is “developed” and not
“manufactured”
1
Software Characteristics
– Software has ZERO TOLERANCE
– Software does NOT wear out
– Software deteriorates due to discovery of bugs
and applying patches
2
Software is Crucial
• Software error in NASA’s Mariner-I caused
booster failure and $18 Million losses
•
The guidance antenna on the Atlas performed poorly, below specifications.
When the signal received by the rocket became weak and noisy, the rocket lost
its lock on the ground guidance signal that supplied steering commands. The
possibility had been foreseen; in the event that radio guidance was lost the
internal guidance computer was supposed to reject the spurious signals from the
faulty antenna and proceed on its stored program, which would probably have
resulted in a successful launch. However, at this point a second fault took effect.
Somehow a hyphen had been dropped from the guidance program loaded
aboard the computer, allowing the flawed signals to command the rocket to veer
left and nose down. The hyphen had been missing on previous successful flights
of the Atlas, but that portion of the equation had not been needed since there
was no radio guidance failure. Suffice it to say, the first U.S. attempt at
interplanetary flight failed for want of a hyphen."
3
Software Errors
• Hubble Telescope became almost useless
for some time due to mirror-polishmonitoring software error
• Software error in a Texas clinic caused
lethal X-ray doses to patients, killing 3 and
burning scores of others
4
Ariane-5 Blows up
• In 1996, Ariane-5 rocket was launched by European Space
Agency after $7 billion in development expenses for 10
years
• The rocket exploded just 40 seconds after launching
• The investigators determined that the cause of the mishap
was a software error
• A 64 bit FP number representing horizontal velocity of the
rocket was converted into 16 bit integer thus truncating it
and having a wrong value used in inertial reference system
5
Engineering Approach Required
• Therefore let us stop programming and start
software engineering
• When a product is designed by Engineers, it
passes through several stages from concept
to actual fabrication
• We should develop the software using the
Engineering approach
6
An Example
• Consider the
designing of a
new mobile
phone
7
Mobile Phone Design
• Many aspects are considered before this phone can
be manufactured
• Design Engineer has to consider the physical
dimensions, the desired battery life, the number
and location of buttons, the controls required, the
functionality and the cost
• Later a prototype will be built to evaluate the
design
8
The Waterfall Model
• When we want to develop software, we
should take similar approach
• Classical Software Engineering life cycle
consists of four stages
– Analysis
– Design
– Coding
– Testing
9
Waterfall Model Diagram
Adapted from "Software Engineering
A Practitioner's Approach" by Roger
10
The Waterfall Model
• This model is a sequence of stages
• During analysis, the user requirements are
identified and systems specs. are prepared
• During design, the number of modules and
their interconnection is finalized. The data
types and structure is specified
• During coding, actual programming is done
• Testing is done to make sure there are no
11
errors (alpha-release and beta-release)
Spiral Model
• It was realized that the waterfall model is
not optimal as it is a one-way model
• If a problem is discovered in a later stage,
there is no way to go back and correct the
problem
• Therefore, spiral model was proposed in
which the SE activity occurs in a spiral thus
giving a chance to correct the mistakes
12
Spiral Model Diagram
Adapted from "Software Engineering
A Practitioner's Approach" by Roger
13
An Example of Applying
WaterFall Model
• A software is being developed for a post
office teller in order to integrate various
functions together. These functions may
include selling postage stamps, issuing
exact postage printouts and accepting utility
bill payments for electricity and phone.
• Determine the user interface requirements
and functionality requirements of software
14
Software Engineering (cont’d)
• Why should we take Engineering approach
for software development?
• What are the stages in Waterfall model?
• What is the main problem in Waterfall
model?
• How does spiral model solve this problem?
• How would you apply software engineering
to a software development project?
15
Post Office Clerk’s Software
WELCOME TO MY WORKSTATION
Please select from the following:
(1) Sell stamps
(2) Print exact postage for metered mail
(3) Accept utilities bills
==>
16
Post Office Clerk’s Software
YOU HAVE SELECTED BILL PAYMENT
Please choose the bill type:
(1) Phone Bill
(2) Gas Bill
(3) Water/Sewerage Bill
(4) Electricity Bill
==>
17
Considering Modular Design
• During the design phase, the modular
architecture of the system is developed
• Consider the previous example and
determine major functions of software
• Determine the interconnections between
major modules. (Think about the type of
information that will be exchanged)
• Make a schedule of activities
18
Interaction Example
Main
Opening Menu
Display Module
Utility Bills
Module
19
Before Coding
• Plan well before coding begins
• Think about the platform, the specific
hardware and software and the working
environment
• Since it is a highly interactive software, we
should go for prototyping
• Prototyping allows the end user to have a
feel of the product before it is ready
20
Incremental Design
• In this approach, a minimal working
software is developed and goes through
evaluation
• Later, as per customer requirements,
features and functions are added
• This is best for small development team
21
RAD
• RAD (Rapid Application Development) is
recommended for software projects that
have following characteristics
– The software does not have an innovative
design
– Similar software projects have been completed
successfully
– Software design is modularized
22
Testing Considerations
• Target of testing should be to find a fault
and not to prove that it works fine
• Bottom-up testing and integration is
recommended. Here is how it works
– Test the independent modules (slaves)
– Integrate the tested modules into system and
now test the integrated system
23
Testing Hints
• Try to test boundary values for loops
– For example while (x<34) {….}
(Test at x=33, x=34 and x=35)
• Within each module (program unit), test
both branches of a decision statement
– Example if v is 0 do s1 else do s2
(Test will force v as 0 and also v as not zero)
24
Documentation and Maintenance
• It is necessary to provide a detailed user
guide that tells the user about the normal
use and also about handling errors
• A large software project would require a
system admin guide that provides technical
details of installation, running and
troubleshooting
• Software delivery is not the end of the story,
it has to be maintained as well
25
Tools and Help
• Tools to help in development of software
arrived much later; just like the shoemaker
who makes shoes for everyone but does not
have time to make shoes for himself
• CASE Tools are now available for analysis,
design, prototyping, coding, testing, and
documenting
• Check out http://www.rspa.com and identify
at least one CASE Tool
26