Agile software development is a group of software development methods in which solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.
The waterfall model is a sequential design process, used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.
Agile software development
PROS
Agile might be described as freeform software design.
Software developers work on small modules at a time.
Agile offers an incredibly flexible design model, promoting adaptive planning and evolutionary development.
Customer feedback occurs simultaneously with development, as does software testing.
This has a number of advantages, especially in project environments where development needs to be able to respond to changes in requirements rapidly and effectively.
CONS
With a less successful project manager, the project can become a series of code sprints. If this happens, the project is likely to come in late and over budget.
As the initial project doesn’t have a definitive plan, the final product can be grossly different than what was initially intended.
Waterfall software development
PROS
The emphasis of Waterfall is the project plan and therefore before beginning any kind of development there needs to be a clear plan and a clear vision in order.
You can also estimate timetables and budgets more accurately, which definitely tends to please clients.
Because the Waterfall method requires upfront, extensive planning, you can launch software fairly quickly.
CONS
Waterfall methodology relies heavily on initial requirements. However, if these requirements are faulty in any manner, the project is doomed.
If a requirement error is found, or a change needs to be made, the project has to start from the beginning with all new code.
The whole product is only tested at the end. If bugs are written early, but discovered late, their existence may have affected how other code was written.
Additionally, the temptation to delay thorough testing is often very high, as these delays allow short-term wins of staying on-schedule.
The plan doesn’t take into account a client’s evolving needs. If the client realizes that they need more than they initially thought, and demand change, the project will come in late and impact budget.