Almost all Agile teams use an incremental development strategy.

This means the follow: each successive version of the product is accessible, and builds upon the previous version by adding user-visible functionality. These are called “vertical” increments.

Vertical increments are the exactly opposite strategy (of successive product versions) which successively delivers complete technical components.

For example, first you have to create a database schema, then building business rules on top of that, and only then implementing a UI.

It imitates the “layered cake” metaphor of software architecture: one can either cut along the horizontal layers, or vertically across them.

In an actual layered cake, there are different phases and ingredients to create the final form, and you have to keep testing and trying to create the perfect combination: It’s exactly like that.


Each module passes through the requirements, design, implementation and testing phases. A working version of software is produced during the first module, so you have working software early on during the software life cycle.


It is difficult to imagine an incremental approach in the Agile sense which is not also iterative, at least to some extent, but the two concepts are not equal.