The well-known "waterfall" method is rarely used, even by those who claim (or are forced) to use it. Most development methods are incremental and iterative. What do those words mean?
Now let's see how different types of methods use iterations and increments. WaterfallAnalyze, design, code, integrate, test done! No iterations, no increments, no feedback; everything works the first time. Classic RUP-Like ProcessAnalyze until 70 80% done. Start the design phase, but keep updating the analysis with any feedback you receive. Design until 70 80% done. Start the coding phase, but keep improving with feedback. And so on for the other phases. This is an iterative process feedback is used to improve the work done. The process is not incremental, except in the coding and integration phases, where some parts of the application may be delivered incrementally. Incremental Architecture-Driven ProcessAnalyze the application until 70 80% done. Design the application so that the architecture and high-risk elements are relatively complete. Define functional groups. Refine the analysis and design as the project progresses. For each functional group, a detailed analysis, a detailed design, coding, integration, and testing are done. Each increment is handled like a small RUP-like project, with iterations to improve the output. When the functional group is finished, it is delivered as an increment to the customer. We have an iterative first step, which looks at the whole application. The application is then delivered incrementally, with each increment developed using an iterative process. Extreme ProgrammingGather an initial set of stories from the customers (high-level analysis). Define a metaphor (high-level analysis and design). For each release, perform the planning game to allocate stories. For each story, define acceptance tests (analyze), write unit tests (design), code, refactor, integrate, test, and repeat frequently (iterate) until done. The basic process is incremental on the level of releases and stories. Within those increments, the process iterates rapidly, based on feedback from acceptance and unit tests. |