Iterations and increments explained
These days many people talk and write about iterative and incremental development and most often those terms are used inter-changeably. Some people, specifically Scrum folks, even use the term sprint. Agile software development methods are said to be BOTH iterative and incremental. So what does it mean?
Iterative development
Wikipedia has the definitive explanation on what it means to iterate:
Iteration means the act of repeating a process usually with the aim of approaching a desired goal or target or result. Each repetition of the process is also called an “iteration”, and the results of one iteration are used as the starting point for the next iteration.
In software development the desired goal is of course a shippable software product. So instead of having a big bang one-shot release (as known from waterfall process) the development team comes up with one version, which is immediately iterated into next version. The product is ready as soon as the product reaches good-enough quality level.
Iterative development is good for providing rapid feedback from users, but it’s weakness is that the whole product must be taken into production in one shot. The whole product is iterated all the time. (This of course is in the purest iterative, non-incremental case)
Incremental development
Let’s again borrow the definition from Wikipedia:
Incrementalism is a method of working by adding to a project using many small, incremental changes instead of a few (extensively planned) large jumps.
So what this means is that incremental is what has been called staged delivery for decades. It means you develop one part of the system and when it’s ready you develop the next part. In the purest version, you can first make the analysis and design, then develop first increment then develop the next increment and so on as long as all the features are developed.
The difference and the synergy
The elevator pitch for iterative and incremental development goes like this: iterative means making better something that has been done earlier and incremental means adding new features on top of what has been done before. These two ideas can be used without each other (as shown earlier) but they can be used together as well – which is actually a Very Good Idea as it turns out.
Alternative view on iterativeness and incrementalism
As incremental development goes through all the phases of development (analysis, testing, development, design, integration, production) it is a perfect tool to expose all problems in the process. Should the integration be difficult, using incremental process you’ll face it early and repeat it many times so you’ll have to fix the problem, not postpone it into the end of the project (when you’ll be already late).
Iterative process means rework on the existing product, so it doesn’t help that much on the process-side, but it makes the product better. Usually agile teams first come up with a walking skeleton which is an end-to-end solution to the problem but may miss some features. So after getting feedback from customer the skeleton is iterated into next version by adding some muscles onto it.
So we could state that:
- incrementalism improves the process
- iterativity improves the product
Enter agile
So agile methods are said to be both iterative AND incremental. As we learned from previous chapters they are different things and actually we can think of them orthogonal axes in the method space (see picture). Plain waterfall is non-iterative, non-incremental process (have you seen such in reality?) so it is in the lowest left corner. The good-old staged delivery is incremental but not iterative so it is in the lowest right corner.
However, spiral model is highly iterative but not at all incremental so it is in upper left corner. Thus the last corner, upper right, is reserved for agile methods. I’ve drawn it as an area, not a point because there is not just one agile process but many different flavors. The process must be in that area to be agile by definition but the amount of iterativity and incrementalness can vary. This is actually one of the key questions when architecting the process for any given project.
What is a sprint anyway?
In Scrum we use the term sprint. What does it mean, is it an iteration or an increment? The term sprint is merely a fixed timebox, and Scrum doesn’t care whether you are iterating or incrementing your project. Most scrum teams keeps doing both types of work in any given sprint.
A good pattern is to think of it this way: the sprint is one increment in which you do all the activities you need to, from analysis to deployment. Think of it as a release. Inside a release it is good idea to have a few iterations – or internal releases – to make sure your increment will meet the requirements of your customer who will be analyzing your work in the sprint review.


[...] http://samipoimala.com/it/2010/04/16/iterations-and-increments-explained/ http://alistair.cockburn.us/Incremental+versus+iterative+development Agile [...]
Super-Duper website! I’m loving it!! Will arrive again again – taking you feeds also, Thanks.
Hello. Excellent work. I didn’t expect this on the Wednesday. This is really a good story. Thanks!
We’re a group of volunteers and opening a new scheme in our community. Your website offered us with valuable information to paintings on. You have done a formidable process and our entire group will probably be thankful to you.
excellenta tracalbes de aguirespe y mospeco con ariones picecas. sedinstam a fradidos y erensio ristag con codondo caspetr!
Focus on needed very effective affiliate business how you’ll be able to keep within managing strategies great for your good web-based provider. alertpay
I’m really loving the theme/design of your web site. Do you ever run into any internet browser compatibility problems? A number of my blog audience have complained about my site not working correctly in Explorer but looks great in Opera. Do you have any ideas to help fix this issue?
Normally I don’t learn post on blogs, but I would like to say that this write-up very pressured me to check out and do so! Your writing taste has been surprised me. Thanks, very great post.
I’ve been surfing on-line more than 3 hours nowadays, but I never found any attention-grabbing article like yours. It is pretty value enough for me. In my opinion, if all site owners and bloggers made excellent content as you did, the net can be a lot more helpful than ever before.
Beach Place have improved in the past few years, it’s been a really amazing place to relax.
I have been surfing online more than three hours today, yet I by no means found any fascinating article like yours. It is lovely price sufficient for me. Personally, if all site owners and bloggers made excellent content as you did, the internet will probably be a lot more useful than ever before.
The last beautiful element of games consoles as a type of fitness is the ability to contend with friends and household across a assortment of routines. In contrast to the stereotypical moody teenager sitting in their bedroom taking part in Championship Supervisor for hrs on end the Nintendo Wii is a socially acceptable sort of gaming!
I can not participate now in discussion it is rather occupied. I’ll return I’ll necessarily categorical the opinion.