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
  1. Requirements Analysis: Understand the problem and determine if there is a feasible software solution
  2. Specification: Specify exactly what the software will do to satisfy the Requirements from step 1
  3. Design: Formulate exactly how the software will perform the task defined in the Specification stage; similar to drawing up blueprints for a house
  4. Implementation/Coding: Write the code that implements the Design; similar to building the house from the blueprints
  5. Testing: Insure that the software does what is called for by the Specificiation (validation) and that it works correctly (verification)
  6. 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