The Waterfall Model was a very early process introduced as a very easy to understand way to develop software. When using the waterfall model, each phase must be completed fully before the next phase can begin. This type of model is basically used for a project which is small and there are no uncertain requirements. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. In this model the testing starts only after the development is complete.
Most non-technical people tend to think that software is easily changeable, since there are no visible hardware to adjust and nothing to manufacture. While building software isn’t the same a manufacturing an automobile of building a house, the overall process is remarkably similar to other complex processes. Like any mechanical system, software has a design and structural building component.
In modern business, software requires constant changes. Most of the time, these older development process models fail to effectively address quickly changing business needs. Using the Waterfall Model, these changes were usually impossible to manage because the development cycle takes too long and business processes change too rapidly.
Many organizations, such as the United States Department of Defense, have stated their preference against waterfall type methodologies. Some advocates of agile software development methods argue the waterfall model is an ineffective process for developing software, and point to the rapid development that is possible with agile methods.