1) This model is used only when the requirements are very well known, clear and fixed.
2) Product definition is stable.
3) Technology is understood.
4) There are no ambiguous requirements
5) Ample resources with required expertise are available freely
6) The project is short.
1) In development of database-related software, eg commercial projects.
2) In development of E-commerce website or portal.
3) In Development of network protocol software.
The waterfall approach is the earliest approach that was used for software development. Initially, most projects followed the waterfall approach because they did not focus on changing requirements.
Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Some situations where the use of Waterfall model is most appropriate are:
1) Requirements are very well documented, clear and fixed.
2) Product definition is stable.
3) Technology is understood and is not dynamic.
4) There are no ambiguous requirements.
5) Ample resources with required expertise are available to support the product.
6) The project is short.
There are some issues which come up in the client environment. To fix those issues patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.
Once the functional and non functional testing is done, the product is deployed in the customer environment or released into the market.
All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.
With inputs from system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing.
The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.
1) Ironically, the biggest disadvantage is one of its greatest advantages. You cannot go back a step; if the design phase has gone wrong, things can get very complicated in the implementation phase.
2) Often, the client is not very clear of what he exactly wants from the software. Any changes that he mentions in between, may cause a lot of confusion.
3) Small changes or errors that arise in the completed software may cause a lot of problems.
4) Until the final stage of the development cycle is complete, a working model of the software does not lie in the hands of the client. Thus, he is hardly in a position to inform the developers, if what has been designed is exactly what he had asked for.
1) Being a linear model, it is very simple to implement.The amount of resources required to implement this model are minimal.
2) Documentation is produced at every stage of the software's development. This makes understanding the product designing procedure, simpler.
3) After every major stage of software coding, testing is done to check the correct running of the code.
The waterfall model is the oldest and most widely used model in the field of software development. There are certain advantages of this model, which makes it, one of the most widely used models as yet.
Deployment and construction phases of Waterfall model has come under lot of criticism due to its efficiency issues.
In this last phase the product is actually rolled out or delivered and installed at customer's end and support is given if required. A feedback is taken from the customer to ensure the quality of the product.
The actual coding of the software is done in this phase. This coding is done on the basis of the model designed in the modeling phase. So in this phase software is actually developed and tested.
This is one the important phases as the architecture of the system is designed in this phase. Analysis is carried out and depending on the analysis a software model is designed.Different models for developing software are created depending on the requirements gathered in the first phase and the planning done in the second phase.
In planning major activities like planning for schedule, keeping tracks on the processes and the estimation related to the project are done. Planning is even used to find the types of risks involved throughout the projects. Planning describes how technical tasks are going to take place and what resources are needed and how to use them.
In communication phase the major task performed is requirement gathering which helps in finding out exact need of customer. Once all the needs of the customer are gathered the next step is planning.
The process begins with the communication phase where the customer specifies the requirements and then progress through other phases like planning, modeling, construction and deployment of the software.
Waterfall model is also called as the classic life cycle model as it suggests a systematic sequential approach to software development. This one of the oldest model followed in software engineering.
The waterfall model is a sequential design process, often used in software development processes, where progress is seen as flowing steadily downwards (like a waterfall) through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation, and Maintenance.
The waterfall model is the oldest and the most widely used paradigm.
However, many projects rarely follow its sequential flow. This is due to the inherent problems associated with its rigid format. Namely:
1) It only incorporates iteration indirectly, thus changes may cause considerable confusion as the project progresses.
2) As The client usually only has a vague idea of exactly what is required from the software product, this WM has difficulty accommodating the natural uncertainty that exists at the beginning of the project.
3) The customer only sees a working version of the product after it has been coded. This may result in disaster if any undetected problems are precipitated to this stage.
► Testing is inherent to every phase of the waterfall model
► It is an enforced disciplined approach
► It is documentation driven, that is, documentation is produced at every stage
In response to the perceived problems with the pure waterfall model, many modified waterfall models have been introduced. These models may address some or all of the criticisms of the pure waterfall model.
The waterfall model is argued by many to be a bad idea in practice. This is mainly because of their belief that it is impossible for any non-trivial project to get one phase of a software product's lifecycle perfected, before moving on to the next phases and learning from them.
For example, clients may not be aware of exactly what requirements they need before reviewing a working prototype and commenting on it; they may change their requirements constantly. Designers and programmers may have little control over this. If clients change their requirements after the design is finalized, the design must be modified to accommodate the new requirements. This effectively means invalidating a good deal of working hours, which means increased cost, especially if a large amount of the project's resources has already been invested in Big Design Up Front.
Time spent early in the software production cycle can lead to greater economy at later stages. It has been shown that a bug found in the early stages (such as requirements specification or design) is cheaper in terms of money, effort and time, to fix than the same bug found later on in the process.Estimates requirements defect that is left undetected until construction or maintenance will cost 50 to 200 times as much to fix as it would have cost to fix at requirements time to take an extreme example, if a program design turns out to be impossible to implement, it is easier to fix the design at the design stage than to realize months later, when program components are being integrated, that all the work done so far has to be scrapped because of a broken design.
The waterfall model phases are followed in order:
1. Requirements specification
3. Construction (AKA implementation or coding)
5. Testing and debugging (AKA Validation)
The waterfall model derives its name due to the cascading effect from one phase to the other. In this model each phase well defined starting and ending point, with identifiable deliveries to the next phase.