In traditional software development the design phase happens in the beginning of the project, takes quite a long no-coding or little-coding time. At the end of the phase, the design is considered being more-or less frozen. It might sound logical to plan ahead in a detail, however, in the case of software only the final source code is the real design - any diagrams or descriptions can at best be the higher level design abstractions. Therefore attempts to fix the design well in advance often lead to the wrong assumption and sub-optimal solutions.
The XP practice of Incremental Design is a reflection on the fact that the best design emerges from the trial and error. Incremental Design does not prohibit thinking about the highest levels of the system. However, it encourages the team to plan in detail only what is going to be constructed soon and to make the design evolve iteration by iteration based on the current customer priorities and discovered technical limitations.
Naturally evolving the design calls for adopting practices such as Test-First Programming and Continuous Integration that make it easier to change the code without breaking the existing functionality.
Links
This page is a part of the Extreme Programming overview
Comments
Post new comment