Waterfall and Other Methodologies
Modern software development has lots of methodologies. Every company has its own preferences regarding methodology. However, all of them are aimed at achieving the same goal – creating high quality software. Waterfall is often compared to other methodologies. Partially that is because of the fact that it is a traditional method of software development. As a new software development methodology originates, it is compared with Waterfall to define its advantages and disadvantages. Since the 1950s when it was implemented, Waterfall became the golden standard of software development. In this article we will compare this traditional methodology with other methods and define their advantages and disadvantages.
To perform this task correctly, we have to find the proper definition for Waterfall and describe its main features.
As we have already mentioned, Waterfall is the traditional methodology of software development. It is based on three main principles: sequential process of software creation, strong documentation, and low customer involvement.
Two last principles are interconnected. Waterfall teams have strong documentation, because the range of customer involvement into their projects is very low. Before the work on the project begins, the team interviews the client to learn his requirements. His vision of the final product is documented. After that he does not know anything about the product and the process of its creation until it is ready.
Such approach often leads to misunderstandings, because the customers are often disappointed with the results of Waterfall projects. Partially that is because of their sequential structure.
Waterfall projects are usually subdivided into five sequential stages. Each task should pass all of them until it is done. The developers cannot fix something in the previous stages of work if they have already been finished. To change something in them, Waterfall programmers have to run the project from the very beginning.
If we compare Waterfall and other methodology, in most cases we talk about Agile.
Agile is a method of software development that was invented in the early 2000s to solve the problems and remove the disadvantages of Waterfall. It is based on three main principles: strong communication inside of the team, strong customer involvement, and iterative cycles.
Agile teams do not have strict project documentation. They usually solve all problems through communication inside of the teams or with their customers. Agile teams are small and they work together, so it is simple for the developers to communicate with each other.
The customer is the main person in every Agile project. He participates at all activities of the team. In some Agile methodologies one of the developers becomes the representative of the customer called the Product Owner. He is responsible for gathering user stories and prioritizing them in the product backlog.
Agile teams work in iterative cycles. At the end of each cycle the team introduces the intermediate product to the customer. That guarantees high customer and user acceptance of software created by Agile developers.
Lean vs Waterfall
Lean development is a methodology that came into software development from the manufacturing industry. It was invented in Japan in the middle of 20th century. The main principle of this methodology is improving quality by visualizing the workflow. As other Agile methodologies it has iterative cycles and involves the customers and final users into the process of software development.