Waterfall Model
...

The Waterfall approach to software development was the first established modern approach to building a system.

This method was originally defined by Winston W. Royce in 1970.

Sequential process control where each step in the process is well defined and all stages have a well-understood order of completion.

Each step needs to be completed before moving on to the next one - some overlaps are acceptable.

Emphasis is on planning, time schedules, target dates, budgets and implementation of the entire system at one time.

Tight control is conducted through the use of extensive written documentation, formal reviews and approval/sign-off by the user & IT management occurring at the end of most stages before beginning the next stage.

StrengthsWeaknesses
Process and results are well documented.Problems are often not discovered until system testing.
Detailed documentation allows easy engagement in further project improvements.System performance cannot be tested until the system is almost fully coded, and under-capacity may be difficult to correct.
Ideal for supporting less experienced project teams and project managers.Difficult to respond to changes. Changes that occur later in the life cycle are more costly and are thus discouraged.
Or project teams whose number of members fluctuates.Produces excessive documentation and keeping it updated as the project progresses is time-consuming.
The client knows what to expect of the size, cost and timeline of the project.Written specifications are often difficult for users to read.
Promotes the gap between users and developers with clear division of responsibility.

When to use Waterfall Model?
...

  • Requirements are very well known, stable or unchanging during the system development life cycle
  • User community is fully knowledgeable in the business and application
  • Team members may be inexperienced
  • Team composition is unstable and expected to fluctuate
  • Strict requirement exists for formal approvals at designated milestones
  • Technology is understood
  • New version of an existing product needs to be released
  • Porting an existing product to a new platform