In an agile environment, programmers must deliver working software in the first iteration. Requirements may change at any time, so there’s no way to design the software in advance. Instead, you must design your software based on its current needs, and evolve the software design as the requirements change. This process is called evolutionary design or continuous design, or iterative and incremental design.
But how does it work? How can evolutionary design result in high–quality code? This presentations demonstrates how evolutionary design works in practice, using real–world examples culled from his decade of Agile development experience. You’ll see how designs evolved in response to external forces, and how responding to those forces yielded in designs that were clean, flexible, and maintainable.
Download this video from http://ndc2011.macsimum.no/mp4/Day1%20Wednesday/Track4%201740-1840.mp4