Let us first look what a methodology is. Methodology is a set of process and procedures followed in a certain way to deliver a project. There are various methodologies in place, for context, let us look into Waterfall, Iterative, Incremental and Agile.
To get to an understanding of this methodologies, let us say you have process steps or phases associated with each of these methodologies like Requirements, Design, Development, Testing, Production Move, Transition to operations, Close out , which would be carried out to get the desired outcome of the project that are functions/features.
In Waterfall methodology, and phases move from one to the next only one the previous phase being completed and signed-off. I have worked in projects where there are compliance requirements that mandate a signature from the stakeholders to mention that this phase is signed-off. Most of the companies use the term called “Gate”. Waterfall is good for projects with high compliance, record keeping nature, it also ensures what is expected out of the project at the start and targets towards that. The downside of waterfall is that the emphasis to follow the plan instead of meeting the changing needs of the customer, the verification or testing phase will be done once all the features are developed so any issues in understanding of the requirements becomes expensive.
In Iterative methodology, we complete requirements and design for a or more features/functionality/component in one iteration, then development and testing in another iteration, so we group phases into iterations and deliver the outcome of the project. Iterative approach provides an opportunity to pass the feedback from one iteration to the next iteration, but still have the downside of delivering the feature/function at end of the project or after few iterations.
As we have to wait longer to get a version/feature/releasable component to the user mostly waterfall and Iterative methodologies are better fit for Big-Bang release projects.
In Incremental methodology, the team work on delivering a feature’s requirements, design, development and verification in a fixed duration/iteration, work on the next feature to deliver it in the fixed duration/iteration. If you could imagine this like having multiple small waterfall projects within a project. The advantage of this model is to have the product feature delivered to the user and to the market quickly by prioritizing the key features needed so it can be included in the first iteration. It also provides an opportunity to address the feedback provided by the users in the next iteration. The downside is that we need to have a clear understanding of the feature to be delivered in that iteration.
In Agile methodology, the team discuss the features with the product owner/Business that are of value. Then work on those features during an iteration to deliver a verifiable/release outcome. The feature worked in earlier iteration can also be enhanced during the next iteration based on the product owner/business user feedback in addition to the new features the team pulls into the iteration. The advantage of the agile methodology is that team is working on the goal set by the product owner/business user and frequent feedback on the delivery is taken at end of each iteration and addressed. The downside is that we need to ensure the product owner/business user are involved with the team as agile is predominantly based on the constant feedback and continuous improvement.