Many authors have elaborated on the importance of iterations and increments, particularly in the last ten years. Unfortunately, only few of them have made serious attempts to explain what the differences between iterations and increments really are. Even worse, methodologies like RUP and SCRUM have muddled the waters by making iterations and increments equivalent to each other, which makes it difficult for project managers and development managers to decide how to handle temporal cycles in their software projects. And communication among agile practitioners doesn’t get any easier when authors of agile methods like XP and DSDM don’t agree on definitions and terminology. The 16-year old definitions of increments and iterations, provided by Alistair Cockburn, are as follows:
- Incremental development is a staging and scheduling strategy in which various parts of the system are developed at different rates, and integrated as they are completed.
- Iterative development is a rework scheduling strategy in which time is set aside to revise and improve parts of the system.
Bookmark/Search this post with:
Incremental Design is one of the core values of the XP. Many favor to have a "rough up-front design" rather than the "big up-front design". The days when the Design is a single long term process is gone (as in waterfall or v-model) and developers are embracing the design as an integrated daily process.
Software development has taught us to know that the "requirements change" and we need to live with it. When requirements change, the design too changes. We often hear that "the design need to be flexible enough", but not practical in all cases. The software design is often a function of the designer's technical and system/business knowledge. Its very difficult to predict and assume some of the changing requirements in advance.
Bookmark/Search this post with: