As the title implies , what is the difference between these both concepts? According to my understanding , Agile software process uses increments , where some requirements are first implemented and checked. The same for incremental development.
3 Answers
“Agile” is a set of values. One of these: “we have come to value: […] responding to change over following a plan”. This suggests that waterfall-style development models can be inappropriate. In practice, many agile workflows are incremental, for example Scrum.
While there is significant overlap between “agile” and “iterative” models, there can be also agile non-incremental models or incremental non-agile models.
In particular, agile values are not very prescriptive. An agile team may decide on an incremental or non-incremental workflow depending on what works for them. E.g. for a short project, it can be perfectly agile to not divide the work into increments. There are also many practices in the agile-ish space without clear time increments, for example Kanban (which is more about a flow of tasks than delivery in increments), or continuous delivery.
In contrast, a specific incremental workflow may be imposed on a team even outside an agile setting, e.g. because incremental development allows for better risk management or because the increments have to be integrated into a release train.
-
By "incremental" do you mean increments of development and feedback, or regular increments? I don't see how to respond to change without doing the changes incrementally.– Jerry101Commented Oct 14, 2018 at 21:49
Many of the Agile approaches including Scrum and XP promote an approach that is Iterative, Incremental, and Adaptive. I've included a brief description of each below. To answer your question, it is possible to approach incremental development with all three of these or with just the one and that is what I would say the difference in approach is.
Iterative: Work is done in fixed periods of time creating a cycle that can be used to make predictions and more effectively improve the process.
Incremental: Each iteration, the team completes an increment of the product. Each increment is a self-contained, functional product. Of course, this version of the product may or may not be viable in the market, but it is self-contained.
Adaptive: Each iteration, the team re-evaluates what is the right direction for the next iteration. Having a complete increment at the end of each iteration enables this. When working from the backlog, there is usually a flow from one increment to another and the work each iteration generally works down the backlog. However, being adaptive, it doesn't have to. If some new understanding of the product were to arise, it is hypothetically possible that the whole backlog could be replaced.
In my experience, most incremental development approaches Include only incremental or incremental and iterative, but I'm not aware of anything that prevents traditional incremental approaches from also being adaptive - it just isn't common.
A diagram I saw explaining the Incremental model showed that the Needs analysis / Design / Implement parts were iterated, but there was only one Deployment, after the final iteration. So the product got bigger and better after each iteration, and went through its testing cycle including UAT each time, but was not released incrementally. At least, that's how I understood that diagram.
In contrast, in an Agile Scrum approach, there's a a deployment at the end of each cycle, not just one at the end.