Simplicity has its benefits; use the waterfall model to achieve these benefits.
The waterfall model is also known as the linear sequential model. The waterfall model is a systematic and sequential software development approach. Software development involves analysis, design, coding, testing, and support.
The waterfall model includes the following activities:
System engineering and modeling: Software is developed for large systems; to develop software, a requirement analysis of the whole system is conducted. This requirement analysis is done to find the interaction that software is going to do with other systems.
Requirement Analysis: Requirement analysis is done to find the appropriate methodology to be used to develop desired software. To use appropriate methodology, it is required to have familiarity with the domain of the software.
The software domain decides the functionalities of the software and the user interface of the software. In addition to this hardware requirement to run the desired software is also documented and reviewed in this phase.
Software Design: The design of the software is decided by the data structure to be used in the programming, Architecture on which software will be developed software architecture decides the programming techniques, look and feel of the interface is based on software design and algorithm to be used to develop a software also decides the software design.
Software Code: The customer requirement is converted into software code; a programmer converts gathered information into programming constructs using an appropriate programming language.
Testing: When the required functionalities are developed, then it is tested for errors. Software testing is done to find the logical errors. Then, all hard code is removed, and generalized software is developed. Software is tested to ensure that desired functionalities are developed and produce the desired output.
Technical/Non-Technical Support: As the client requirements change, so do the functionalities of the software changes. Change in the software also occurs when errors are encountered. To accommodate these changes, technical/non-technical support is provided by a software developing firm.
The waterfall model is mostly used to develop software engineering. The waterfall model breaks project development activities into a sequential process consisting of modules—the output of a module work as input to its subsequent module.
The waterfall model is less used in software development as it is not an iterative approach, and the development process flows in one direction from the initialization phase to the maintenance phase.
The waterfall model stresses documentation, which is useful when a programmer from the software development team leaves. Other software development models, which are less efficiently designed and documented, resulting in a knowledge loss when the team member leaves. Suppose the software development documentation is well prepared. In that case, when the new team member joins the software development team, it becomes easier to become familiar with the software architecture and software design.
The waterfall model sets milestones to track the development process. Therefore, the waterfall model is most suitable in development conditions where software requirements and scope is fixed and developed software is not going to change for a long period of time.
There exist many modified waterfall models. These modified models are introduced to overcome the criticisms of the pure waterfall model. The modified version of the waterfall model is the Rapid Development model.
The waterfall model is used because the initialization and development stages of each phase in the waterfall model are pre-determined. Using the waterfall model progress of software development can be shared easily. The waterfall model is also used to eliminate the risk involved in the software development process.
Each phase of the software development process is reviewed before moving on to the next stage. The main drawback of the waterfall model is that it is a rigid software development process. Thus having an expectation of adapting to changes is a waste of time in the case of the waterfall model.
The waterfall model does not support iterations, making it a time-consuming and costly affair. Therefore, the waterfall model is not a good choice when regular software development crises arise, leading to mismanagement of time and extending software delivery time.
The waterfall model is best suited in construction industries where the project needs to be completed within a stipulated time period, and change in a construction project is costly and sometimes impossible.
All software development models contain a waterfall model in them. The waterfall model gives priority to project development and not to customer business values.
The waterfall model is also applied in large-scale software development. The waterfall model in large-scale software development has associated issues related to requirements and verification. It was found that the waterfall model is not appropriate in the case of large-scale development. Requirements in the waterfall model are often discarded and reworked. As software development time increases, it leads to limited tests in the waterfall model. In Waterfall, model documentation is too much, which also consumes time, and in ending stages, a significant amount of documents is discarded.
Agile software development removes drawbacks of the waterfall model. The agile model uses the incremental approach as compared to the waterfall model that uses a sequential approach. The collaborative model combines the advantage of both the Waterfall Model and the Agile Model removes the disadvantage of both models. The collaborative model conducts requirement analysis and design according to the Waterfall model and Code testing and deployment as per the Agile Model. The collaborative model develops high-level design according to the waterfall model.
In the waterfall model, customer interaction is less, and when the software is developed, it is presented to the customer.
The waterfall model is used in the banking sector, Control Systems, Space Shuttles, etc. The waterfall model is the first choice in the case of military and defense. Military and defense use the waterfall model since the requirements are well known in advance.
Many software applications have been developed using the waterfall model. For example, software applications such as CRM systems and Supply Chain Management Systems use the waterfall model. These applications use the waterfall model as they are used for a long period of time and take a long development time.
Human Resource Management Systems is also developed using the Waterfall model. The next application that is developed on Waterfall Model is Inventory Management System.
Many of the applications of retail chains that are used at Point of Sales are developed on Waterfall Model. The waterfall model has been used extensively in and around 2000.