Waterfall Process vs. Incremental Process

Incremental process


An incremental process is one where we will deliver portions of the software in the smallest reasonable subsets of the ultimate functionality. We will have multiple deliveries to our customer. We will revisit the assumptions and prioritizations for each "next" delivery when we complete each "previous" delivery.

A sailing analogy works well for this approach. To sail in a straight line from start to finish, we set a heading, H1, and begin sailing. After a period of time, we check to see where we are (invariably, we've drifted off course a little), correct our course and set a new heading, H2, and continue sailing. We keep doing this (checking position, adjusting heading, sailing some more) incrementally until we reach our destination.

With incremental software development, we do the same thing as when sailing. First we decide on what to do and what to do first. Then we develop and deliver the first set of functionality. We then revisit our decisions (including getting feedback on what we've just delivered) and decide what to do next. We then develop and deliver the next set of functionality. We repeat until all of the desired functionality has been delivered.