In last blog I have explained Software development life cycle (SDLC) , There are various software development approaches defined and designed which are used in development process, these approaches are also referred as “Software Development Process Models” We have various type of models for SDLC. Here I am going to explain different kind of models used in SDLC.
Different kinds of models present in SDLC are:
- Waterfall model
- V model
- Iterative model
- Agile model
- Spiral model
- Big-bang Model
- Prototype Model
The most commonly used Model in the industry initially was “Waterfall Model” and now most of the Enterprises are moving towards “Agile” . In this blog we will try to understand what is “Waterfall Model” , the advantage – disadvantage. This will help us in understanding why we needed an Agile Model and Eventually move towards “DevOps”
Waterfall Model: The waterfall model is the oldest and straightforward process model which was introduced and widely followed in software engineering. In “The Waterfall” approach, the whole process of software development is divided into separate phases, no going back to previous step. In this Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed fully before the next phase can begin. This type of software development model is basically used for the project which is small and there are no uncertain requirements and requirements are stable not changing dynamically. 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 software testing starts only after the development is complete.
The sequential phases in Waterfall model are:
∙ Requirement Gathering and analysis: All possible requirements are gathered in this phase and a document will be prepared for requirement for next step.
∙ System Design: Input for this step is the outcomes of previous step and that requirement specification will be converted in to proper system design. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture.
∙ Implementation/Coding: Inputs for this step is from the system design, the system is first developed as per the design in small programs called units. Each unit is developed and tested for its functionality, which is referred to as Unit Testing. And then integrate the code for next phase.
∙ Testing: After integration the entire system is tested for any faults and failures. And prepare Report for testing activities.
∙ Deployment of system: Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market.
∙ Maintenance: 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.
Advantage of Waterfall model:
- This is simple and easy to understand and use.
- For smaller projects, waterfall model works well and yield the appropriate results.
- It is easy to maintain as each phase has specific deliverables and a review process.
- The entry and exit criteria are well defined, so it easy and systematic to proceed with quality.
- Results are well documented.
Disadvantages of using Waterfall model:
- It is hard to use where requirements are changing frequently.
- It becomes very difficult to move back to the phase. For example, if the application has now moved to testing stage and there is a change in requirement, It becomes difficult to go back and change it.
- Delivery of the final product is late as there is no prototype which is demonstrated intermediately.
- For bigger and complex projects, this model is not good as risk factor is higher.
- Does not work for long and ongoing projects.
- Since the testing is done at later stage, it does not allow identifying the challenges and risks in the earlier phase so the risk mitigation strategy is difficult to prepare