Monday, February 23, 2009

The Waterfall Model is a popular version of the software development life cycle model for software engineering. Often considered the classic approach to the software development life cycle, the waterfall model describes a development method that is linear and sequential. Waterfall development has distinct goals for each phase of development. Imagine a waterfall on the cliff of a steep mountain. Once the water has flowed over the edge of the cliff and has begun its journey down the side of the mountain, it cannot turn back. It is the same with waterfall development. Once a phase of development is completed, the development proceeds to the next phase and there is no turning back.

Project planning, feasibility study: In this phase we establishes a high-level view of the intended project and determines its goals.

Systems analysis, requirements definition: In this phase we refines project goals into defined functions and operation of the intended application. Also, analyzes the end-user information needs.

Systems design: This phase of Waterfall model is all about describing desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudocode and other documentation.

Implementation: The real code is written in this phase of Waterfall Model.

Integration and testing: In this phase we bring all the pieces together into a special testing environment, then checks for errors, bugs and interoperability.

Acceptance, installation, deployment: This is the final stage of initial development, where the software is put into production and runs actual business.

Maintenance: This phase is all about what happens during the rest of the software's life: changes, correction, additions, moves to a different computing platform and more. This, the least glamorous and perhaps most important step of all, goes on seemingly forever.

The advantage of Waterfall development is that it allows for departmentalization and managerial control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process like a car in a carwash, and theoretically, be delivered on time. Development moves from concept, through design, implementation, testing, installation, troubleshooting, and ends up at operation and maintenance. Each phase of development proceeds in strict order, without any overlapping or iterative steps.

The disadvantage of Waterfall development is that it does not allow for much reflection or revision. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage. Alternatives to the waterfall model include JAD, RAD , Agile and RUP.