Practice: Evolutionary Design
This practice describes an approach to design that assumes that the design will evolve over time, minimizing documentation while still providing guidance for making design decisions and communicating those decisions.
Why adopt this practice

The Evolutionary Design practice reduces time-to-market for agile teams by incrementally formulating the design while implementing the software. It improves productivity, innovation, and time-to-market by leveraging refactoring and patterns to improve quality and maximizing reuse opportunities.

Application

Become familiar with its overall structure. Be sure that you understand what it is in it and how it is organized.

Review all of the key concepts to understand the terminology used in this practice, including:

Read the Task: Design the Solution to understand what needs to be done. Finally, review the associated guidelines for more information on the overall workflow.

See Using Evolutionary Design in Context for more information.

Additional Information

Meyer, B., Object-Oriented Software Construction, Prentice Hall, 1997

A primer on OO basics.

Gamma, E., Helm, R., Johnson, R., Vlissides, J., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional; 1995

The "bible" on learning what patterns are and how to describe them.

Shalloway, J., Trott, J. Design Patterns Explained A New Perspective on Object-Oriented Design, Second Edition, Addison Wesley, 2005

This book describes how to evolve a design via design patterns.

Richard E. Fairley, Mary Jane Willshire, "Iterative Rework: The Good, the Bad, and the Ugly," Computer, vol. 38, no. 9, pp. 34-41, Sept., 2005.

Martin Fowler, "Is Design Dead?" Retrieved 8 August 2008

Craig Larman, Victor R. Basili, "Iterative and Incremental Development: A Brief History" Computer, vol. 36, no. 6, pp. 47-56, Jun., 2003.


 

For more information on this practice,  see the practice resource page on IBM® DeveloperWorks®.