Waterfall Model
The Waterfall model is an approach for developing software that breaks a project into finite phases. One should move to the next phase only when its preceding phase is reviewed and verified.
In waterfall model, phases do not overlap.
Figure 1 demonstrates the Waterfall model:
Advantages of the Waterfall Model:
- Simple and easy to understand and use.
- Rigid model – Each phase has specific deliverables and review processes.
- Documentation and artefacts meticulously maintained.
- Suitable for projects where requirements are well understood.
Disadvantages of the Waterfall model:
- Not suitable for projects where requirements are at a risk of changing.
- Cost of fixing defects is very high when detected at a later stage.
- Not a good model for complex and long projects.
- No working software is produced until late during the lifecycle.
Agile Model
Wikipedia defines the Agile Model as “a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.”
The model has its own principles that tend to bring the processes to the backseat.
(Click on image to view enlarged)
Advantages of the Agile model:
- Customer involvement in the process.
- High ROI as working software is delivered frequently.
- Even late changes in requirements can be easily accommodated.
- Continuous improvement to both product and process.
Disadvantages of the Agile Model:
- Lack of emphasis on designing and documentation.
- Team should be stable and skilled.
Collaborative (Hybrid) Model
The Collaborative Model aims to combine both the models – Waterfall and Agile. Leveraging both the Waterfall and Agile approach ensures the success of the project. It removes the disadvantages of both the models; while bringing together the advantages of both.
The Collaborative Model can be implemented in a project by executing:
So the Collaborative model can be represented diagrammatically as below:
Advantages of the Hybrid model
- Combines the benefits of both Agile and Waterfall processes.
- High-level design is prepared applying waterfall principles.
- Coding and testing is done using agile methodology.
Agile Waterfall Hybrid Model – Learn by Example – A Case Study
Software firm ‘ABC Software Service’s provides services to a client, a University named ‘XYZ University’ to develop, test and maintain their software (live production support).
The main features of the account are:
- ABC Software Services have to upgrade the applications of XYZ University. The Database needs to be upgraded and all applications need to be re-developed to the latest technology available in the market.
- Until now, all the projects handled by ABC Software were executed in Waterfall model.
- Two of the heavy traffic and high priority applications were now scheduled to be re-developed. The first being ‘Online registrations’, the second being ‘Online examinations’.
- Client XYZ University now wanted these applications to be worked on using the Agile model of Software development.
The first project in Agile model for ABC Software was Online registrations. After the execution of this project, it was realized in a series of retrospectives that there were many flaws in the processes followed.
These flaws were taken care of while execution the second project ‘online examinations’ and it was hence executed in Hybrid model.
How to Eliminate Flaws of Waterfall and Agile Development Processes using a Hybrid model:
Let’s discuss these in detail one-by-one.
#1. No Documentation:
One of the agile principles in the agile manifesto states that: Agile gives more value to ‘Working Software over Comprehensive Documentation’. Agile methodology believes that documentation should be ‘just barely good enough’, and more emphasis is given to ship out a working software. Not much effort is done on documentation, but for accounts like XYZ University, with a dedicated support team to work on defects found on live projects, this habit can prove as a hindrance if we analyze it on long term basis.
Over the years, when projects were executed in the Waterfall model, documents were maintained and updated for the support team to understand and work accordingly. Solution design, technical design, walkthrough documents, etc. were some of the documents prepared. After the project was over, the same was transitioned to the support team.
But in the case of the ‘online registrations’ project, no such documents were prepared and that proved costly. When the project went live, many tickets were raised by end-users and the support team had no clue how to work on them. The team had no document to reference.
This was a major lesson learnt and for the next project ‘online examinations’ documents were written and transitioned effectively.
#2. No UAT/End-to-end testing:
In the Agile mode of software development, testers get the builds to test in increments. These builds keep on integrating until the final build is completely built. Testers test the requirements covered in each sprint and keep doing regression testing of the build that keeps on adding up.
But after all the sprints are complete and the final build is ready and all integrated, the tester should test the complete system and should perform end-to-end testing. This should be done in a completely new environment.