The world is speeding up and being in touch with the market requires from entrepreneurs to act fast and respond to new challenges swiftly. Meanwhile, the waterfall software development model frequently depicted as a brake that slows the progress.
While more and more companies praise a customer-centric approach they are trying to make software products in a quick, Agile way. But do we necessarily need to sacrifice the quality in order to speed up the process?
What is waterfall methodology in software development, and do we need to opt for an Agile approach in order to keep the pace?
The waterfall model was originally recorded by Winston Royce in the 70’s. The model was described as a sequence of phases that go one after another with stops between them, where the previous results were reviewed and verified.
The original waterfall model consists of six consecutive phases:
- Requirements – where all project goals and needs are gathered.
- Analysis – often combined with Requirement phase. Those are two stages where the greatest involvement of the client is needed.
- Design – software architecture and wireframing.
- Coding – development, and integration of software.
- Testing – debugging, quality assurance and acceptance testing.
- Operations – migration of the product to live server and its maintenance.
The model originates from physical, hardware-oriented world, where no changes can be applied to the product afterward or this changes will significantly raise the price of the project. Therefore, waterfall model empathizes rigorous documentation and verification of results as well as strict following the sequence of phases.
Ironically, Royce cited this model as an example of flawed one. He used waterfall to give a critical view on the situation in software development of that time. Primarily because software is not a part of the material world, it can be edited on the go and on any stage.
Nevertheless, the waterfall model is still highly popular among software developers. Such popularity is explained by the internal simplicity of its principles that can be easily applied in project management.
Advantages of Waterfall Model
Cost reduction. Because of highly structured development circle and rigorous testing on each phase, the waterfall method allows identifying bugs early and thus cheaper to fix. Moreover, time and costs needed for a fix fall down dramatically if the problem is discovered during the Design phase.
Transparency. This advantage is even more crucial if software development is performed by outsourcing team. Detailed documentation, which is a must in waterfall development, gives a customer transparent picture of the work ahead, more accurate budget and detailed scope of work for the team.
It must be acknowledged, that waterfall model projects take 20-30% of the time for Requirements and Analysis phases. That much time spent for planning may seem too scrupulous but frankly speaking these phases are called to protect client’s interests.
On the other hand Requirements and Analysis phases are far cheaper than one extra milestone spend for development, hotfixes and upgrades. Plus, you’ll get detailed specifications, which can be used as a backup – in case you’re willing to change a team – and a general guideline for the project.
Documentation allows new team members to catch up quickly or pass the work to another development team for maintenance with minimum loss of knowledge.
Control. Waterfall development model is easy, understandable and provides identifiable milestones for the client and manager that oversees the project. Thus, the output of the development team is always under control and all the issues are resolved according to plan.
While waterfall methodology in software development prohibits adjustments during each phase, it certainly allows small changes to the project between milestones and even larger input during the first three phases (Requirement, Analysis, Design).
Waterfall Model VS Agile
The waterfall model is the oldest software development methodology. In fact, it was used because no better alternatives existed at that time. Luck of flexibility if the first and foremost drawback that cited.
Flexibility. The original waterfall model prohibits to changes of project details and requirements along the development process. Plus, because of long phase, the project may seem to evolve slowly. Luckily, these issues was sited in 70’s by Winston Royce and since then the method has evolved.
Nevertheless, even after solving these problems the criticism still stays on the desk and it is no wonder why. The economy is speeding up and the market is obviously praising Agile companies that make all the development stuff on the run.
Note: Agile is a mindset, it is not a software development methodology.
However, without some waterfall style of planning up front, it’s hard to see the big picture and know what you’re getting into from a time and money perspective. It’s easy to see the world in black/white, but the truth is that Agile and Waterfall can coexist.
Taking the Best of Two Models
Think First. We always advise our clients to take the time to think through and explain their ideas before building their product using whichever methodology. Combining best of two models allows us to eliminate many challenges, that often cripples projects.
- Inflated expectations.
- Poor planning.
- Shortage of resources.
- Budget gap.
Preserving the Flexibility. The most challenging part of the waterfall is being flexible and respond to market challenges while sticking to specifications. The example of such ‘agile’ waterfall model that can be both strict and lean is Water-Scrum-Fall.
Water-Scrum-Fall model utilizes two different methods at once: strict waterfall planning and adaptive project management framework called Scrum. By using this methodology first two phases (Requirements and Analysis) are performed with close precision. Thus mapping the base structure and vector in which project will grow.
On the other hand, Design and Coding phases adopt a more flexible approach, where the development is divided into short 2-week sprints rather than long-lasting milestones. Sprints in its core are just short iterations of development and testing phases.
Scrum method requires frequent acceptance tastings and meetings with the client (or scrum master). Therefore, the development team gets prompt feedback and the client can closely oversee the progress of the project.
Aspiring the speed is natural for business and we know exactly how it is important for our clients to deliver their products in time. But we also strive to deliver products of the highest quality possible.
Leonardo da Vinci once said, “Details make perfection, and perfection is not a detail”.
Here in GBKSOFT, we take best out of Waterfall and Agile models in order to stay attentive to even the smallest details while moving at high speed.