Saturday, June 29, 2013

Waterfall model



1. Waterfall model: 

The waterfall model is a popular version of the systems development life cycle model for software engineering. Often considered the classic approach to the systems 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.


User Requirement:  This is the first and most important phase. During this phase, requirement are gathered from the end-user by consultation, these requirement are analyzed and documented in an understandable form. Finally, a requirement Specification document is created which serves the purpose of guideline for the next phase of the model.

System requirement; In this phase, business requirement are analyzed for their validity and the possibility of incorporating the requirement in the system to be developed  is also studied, The requirement are documented which is called as System Requirement Specification ( SRS) document and this become input to the design phase.

Design; During  the design phase, High level and low level designs are created based on SRS document. This helps in defining overall system architecture and detailed implementation of each component. These design specification serve as input for the next phase of the model.

Coding: During this phase, based on the design document, the work is divided into modules/units and actual coding is started. Developers create programs for each module which are integrated into a complete system to check if all modules/units coordinate between each other and the system as a whole behaves as per the specification. The output of this phase is software built according to a pre-defined coding standard and unit tested to satisfy the system architecture requirements.

Testing:  IN this phase, Testers test the developed software to ensure that the system meets/satisfies the requirements. If there is any mismatch or deviation, testers report defects. These defects are analyzed and fixed by the developers. Tester validate the defects fixes and close the by performing confirmation testing (Regression Testing). After completion of the testing, the software is released to production/customer.

Maintenance:  Release team installs software in customer environment and ensures correct and complete installation of the system. Maintenance team processes customer issue based on service agreements. Also, the maintenance phase is never ending phase or very long phase. Generally, problems (Which are not found during the development life cycle) with the system come up once the user star using it. Not all the problems come in picture directly but they arise time to time and needs to be solved. These are addressed by the Maintenance team.

Advantages of waterfall model:
  • Simple and easy to understand and use.
  • Easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Works well for smaller projects where requirements are very well understood.
 Disadvantages of waterfall model:
  • 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.
  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Not a good model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Not suitable for the projects where requirements are at a moderate to high risk of changing.

No comments: