Skip to content

XP Practice: Incremental Design

March 28, 2008 by Artem

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

  • Is Design Dead? by Martin Fowler - a known article on how the software design can/should emerge in Extreme Programming
  • Emergent Design by Ron Jeffries - an XP guru on how XP'ers come to a good and simple design

This page is a part of the Extreme Programming overview

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.