Agile Models Answer- Extreme Programming
Scrum
DSDM
KanBan
Perspective Models Answer- Spiral
Waterfall
Spiral Into Waterfall
Staged Delivery
Sashimi
Mixed Models Answer- Unified Process
Evolutionary Programming
Code and Fix
Software Engineering Answer- goal is to address the problems of building large
software systems
Software Engineering Definition Answer- "A discipline that deals with the building of
software systems that are so large or so complex that they are built by a team or teams
of engineers" [Ghezzi, Jazayeri, Mandrioli]
Programming Answer- - small project
- just me
- build what I want
- one product
- few sequential changes
- short-lived
- cheap
- small consequences
engineering Answer- - huge project
-teams
-build what they want
- family of products
- parallel changes
-long live
-costly
-large consequences
Software Engineering Answer- -Organizing teams to cooperatively build systems
, -Determining what to build
-Software architecture
-Analysis and testing
-Lifecycle system engineering
Ariane 5, Flight 501 Answer- -Re-used code from Ariane 4, overflowed a 16 bit integer
storing horizontal velocity.
-backup fail
Flaw of Ariane 5 Answer- -Conversion from 64-bit floating point to 16-bit signed integer
-Flaw could have been detected by more testing - although they did use rigorous testing
-Flaw was in a component that was reused from Ariane 4
-Flaw in the design - an identical backup system works for hardware malfunction, but
not software. The backup component could have calculated the best estimate
Therac-25 Answer- deadly doses of radiation - shows need for software control, due
diligence, testing, and resolution of bugs
Therac-25 Cause and Cost Answer- 3 dead & 3 injured
-Operator typed 'x' (X-ray mode) instead of 'e' (electron mode)
-Tried to correct error, the software malfunctioned, and the operator was unaware that
the mode was not corrected
-Earlier versions of the machine used mechanical safety devices, instead of software
Why difficult to get error free software? Answer- -Complexity
-Conformity
-Changeability
-Invisibility
- human error
- poor interface
- inadequate abstraction
- lack of solid mathematical/ engineering foundation
Complexity Answer- No two software parts are alike (other unifed into one) and
complexity grows non-linearly with size (Scaling-up is necessarily an increase in the
number of different elements)
Unlike car where wheels same and doors the same.
Conformity Answer- software is required to conform to its operating environment and
hardware, which are often out of its control; this burden is especially difficult since
software is often used to mask or fix problems in these underlying strata
Human institutions (govt, laws)
Existing systems (CS languages)
Different for each context (software vs phone)