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.
Relationships
Content References | How to Adopt the Evolutionary Design Practice Key Concepts Design Design Mechanism Implementation Mechanism Requirements Realization Design Design the Solution Guidance Using Evolutionary Design in Context Guidelines Analyze the Design Evolve the Design Refactoring
Inputs | [Technical Architecture] [Technical Specification]
Purpose
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.
Background
The application of evolutionary, iterative, and incremental development methods for software dates back to the 1950s. Evolutionary development is an alternative to a waterfall process. In the waterfall process, each past step or phase in the process was considered complete before moving on to the next. The waterfall implies it is not possible to re-enter previous phases to perform rework on any part of the project. The evolutionary design process realizes a solution by enhancing and changing its structure and capabilities incrementally. This practice fits well within the framework of an incremental, iterative or spiral development process, but can be used in any methodology.
Main Description
#### The Essence of Evolutionary Design During each pass of the design, you will add, refine, and refactor your solution. The following steps summarize the evolutionary design practice: Understand new requirement details Identify design elements Determine how elements collaborate to realize the scenario Refine design decisions Design internals Communicate the design Understand the architecture Evaluate the design
How to read this practice
#### 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: Design Design Mechanism Implementation Mechanism Requirements Realization 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.
This program and the accompanying materials are made available under the Eclipse Public License V1.0, which accompanies this distribution. EPF Copyright.