The Waterfall
Model
This Waterfall
model of the software development process was derived from other engineering
disciplines. It was initially adopted by software engineers as a method of making
the development process more visible. It is termed the waterfall model because
one stage cascades to the next. Each of the process activities involved are
seen as separate. As each stage is completed it is signed-off and development
progresses to the next stage.

- Requirements
analysis
Here the system's services, constraints and goals are established by consultation.
These are then defined in a manner understandable to both yourself and our
development personnel.
- System/software
design
Systems design establishes an overall architecture by partitioning the requirements
into either software or hardware. Software design represents the system software
functions in a form capable of being translated into programs.
- Implementation
and unit testing
The software design is realised as a set of self-contained program units or
individual programs. Unit testing verifies that each unit meets its specification.
- Integration
and system testing
The individual units and programs are integrated and tested as a complete
system to ensure the overall requirements are met. Once this stage is completed,
the software is delivered.
- Operation and
maintenance
Errors not discovered during the previous stages are corrected. The system
may require improving or enhancement as new requirements are discovered.
Disadvantages
The inflexible partitioning into stages sometimes demands a stage is frozen
to allow progress to the next. Design problems unresolved in earlier stages
are passed on to subsequent levels possibly leading to badly structured systems.
Advantages
Good process visibility. Each stage is defined clearly and produces a tangible
result. Exact time scales can be set for each stage.