Title: Software Engineering
1Software Engineering
- Software has some special characteristics
- Software is developed and not manufactured
2Software Characteristics
- Software has ZERO TOLERANCE
- Software does NOT wear out
- Software deteriorates due to discovery of bugs
and applying patches
3Software is Crucial
- Software error in NASAs 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."
4Software Errors
- Hubble Telescope became almost useless for some
time due to mirror-polish-monitoring software
error - Software error in a Texas clinic caused lethal
X-ray doses to patients, killing 3 and burning
scores of others
5Ariane-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
6Engineering 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
7An Example
- Consider the designing of a new mobile phone
8Mobile 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
9The 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
10Waterfall Model Diagram
11The 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 errors
(alpha-release and beta-release)
12Spiral 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
13Spiral Model Diagram
14An 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
15Software Engineering (contd)
- 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?
16Post Office Clerks Software
WELCOME TO MY WORKSTATION Please select from the
following (1) Sell stamps (2) Print exact
postage for metered mail (3) Accept utilities
bills gt
17Post Office Clerks Software
YOU HAVE SELECTED BILL PAYMENT Please choose the
bill type (1) Phone Bill (2) Gas Bill (3)
Water/Sewerage Bill (4) Electricity Bill gt
18Considering 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
19Interaction Example
Main
Opening Menu Display Module
Utility Bills Module
20Before 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
21Incremental 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
22RAD
- 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
23Testing 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
24Testing Hints
- Try to test boundary values for loops
- For example while (xlt34) .
- (Test at x33, x34 and x35)
- 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)
25Documentation 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
26Tools 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