Software Engineering
(revised 02/15/2006)
The Software Crisis: error ridden and/or non-working software delivered
late and over budget. It's too little, too late, and too expensive!.
In the late '60's due to the explosive growth of large programming projects,
the computer science community began to deal formally with this problem. Horror
stories of budget-busting software projects that were delivered late and then
were found to be full of bugs abound. This point to the fundamental problem
in computer science: managing complexity.
The Software Life Cycle
- Requirements Analysis: Understand the
problem and determine if there is a feasible software solution
- Specification: Specify exactly what
the software will do to satisfy the Requirements from step 1
- Design: Formulate exactly how
the software will perform the task defined in the Specification stage; similar
to drawing up blueprints for a house
- Implementation/Coding: Write the code
that implements the Design; similar to building the house from the blueprints
- Testing: Insure that the software does
what is called for by the Specificiation (validation) and that it
works correctly (verification)
- Validation: insuring that the software does what it's suppose to
- Verification: insuring that the answers are correct
- Maintainence: Bugs will be discovered;
they must be fixed! Some features will be awkward; they must be re-designed.
Additional features will be requested; they must be added. There is constant
tinkering of the software.
Note: The software life cycle is reflected in the way we write programs:
See
How
to Write a Program
Development Models (tba)
Return to Comp
150 Home Page