(When used on a software development project) is a sequential design process. This means that as each of the eight stages (conception, initiation, analysis, design, construction, testing, implementation, and maintenance) are completed, the developers move on to the next step.
The Waterfall method is the traditional approach to software development where a project is broken up into distinct stages that must be completed in sequence.
Also, there’s typically a review of requirements at the end of each stage.
Agile came about as a “solution” to the disadvantages of the waterfall methodology. Instead of a sequential design process, the Agile methodology follows an incremental approach.
Agile takes an iterative approach to software development. Instead of handling all the planning upfront, Agile focuses on being lean, and producing minimum viable products (MVPs) over set periods of time while improving with each iteration.
Developers start off with a simplistic project design, and then begin to work on small modules. The work on these modules is done in weekly or monthly sprints, and at the end of each sprint, project priorities are evaluated and tests are run. These sprints allow for bugs to be discovered, and customer feedback to be incorporated into the design before the next sprint is run.
The process, with its lack of initial design and steps, is often criticized for its collaborative nature that focuses on principles rather than process.
The different phases of the development cycle can happen in parallel, and a backlog is kept to keep track of desired features and requirements. Agile methodologies place an emphasis on teamwork, constant user feedback, continuous improvement, and the ability to adapt to changing requirements. Listed below are a few of the more popular implementations: