Iterative And Incremental Development
Agile 101
Agile Methodologies
Agile Practices
Agile Metrics
Agile Artifacts
Scaled Agile
Iterative and Incremental Development: Refuse to Choose
Since you joined an Agile team, your head’s been spinning with all the jargon everyone keeps throwing at you.
You’ve been Googling your fingers to the bone and you know a lot more than you did, but it’s hard to keep some things straight.
So, let’s straighten two of them out in this article: iterative and incremental development.
Read on, and you’ll learn what they are, their advantages and drawbacks, their differences, and how they fit in Agile methodology.
What Is Incremental Development?
In incremental development, you design the complete product first. You only leave out details that you can safely decide later. Then you slice it up into chunks and build each separately. When you finish a chunk, aka module, you integrate it with previously completed parts so they work as a whole.
Pure incremental development means replacing a single waterfall project with many, one for each module. To have working software earlier, you can further split the work for a module in iterations. That’ll also help keep the build-up of defects in check.
Note that the design you during implementation is limited to the details that the full overall design left out.
What Are the Benefits of Incremental Development (And Its Drawbacks)?
The benefits of incremental development include:
The drawbacks of incremental development include:
What Is Iterative Development?
Iterative development is a lot like inventing: discovering what and how you need as you go.
You start with a fair idea of what you want the product to accomplish and you use a process of successive approximation to design and build it.
You begin by designing, building, and testing the tiniest version of what you have in mind. When you’re happy, you show it and collect feedback from everybody with a stake in the product.
That’s one approximation. And one iteration.
If what you created was well received, you keep it and expand on it in the next iteration. If what you created got the thumbs down, you discard it and go back to the drawing board.
What Are the Benefits of Iterative Development (And Its Drawbacks)?
The benefits of iterative development include:
The drawbacks of iterative development include:
What Is the Difference Between Iterative and Incremental Development
One important difference is whether you specify the requirements upfront (incremental) or discover them as you build your product (iterative).
Another important difference is the focus on separating parts of the product. Modular design is a core characteristic of incremental development, but not of iterative development.
How Do Iterative and Incremental Development Fit in Agile Methodology
It’s pretty clear how iterative development fits with the values of the Agile Manifesto. And, you’d be ill-advised not to involve your customers in each iteration.
Incremental development doesn’t fit quite as neatly with the values. But it’s hard to imagine being responsive to change when your software is not modular. Modularity, separation of concerns, and limiting dependencies all are central to incremental development. They enable you to do the course corrections that come out of the iterative process.
In short, in an Agile setting, you’ll find a process that combines the best of both worlds.
Get the Best of Both Worlds
Now you know what iterative and incremental development are. And you know why Agile Methodology combines them. So, don’t worry too much about the terminology. Chances are you’re doing both.
The summary of the combined process is simple. Start small, divide into functional modules, discover requirements per module, build test and review, and iterate.
It works well in just about any creative process.
So don’t hesitate to get the best of both worlds for any of your projects, at work or at home.
Check out Nimble Now!
Humanize Work. And be Nimble!