Evolution, Architecture, and Metamorphosis

By: B. Foote, J. Yoder
Published in: PLoPD2
Pages: 295-314
Category: Design Process

Summary: Shows how the forces that drive software development lead to more reflective systems.

Url: http://www.laputan.org/metamorphosis/metamorphosis.html

Pattern: Software Tectonics

Pages: 298-302

Build systems to adapt to changing user requirements. Allow people to tailor systems to meet their needs. Allow systems to change in a series of small, controlled steps to stay the potential upheaval resulting from massive changes too long deferred. Use Flexible Foundations.

Pattern: Flexible Foundations

Pages: 302-306

Building software with a flexible foundation helps resolve the need for the continual, incremental evolution described in Software Tectonics. Allow tools, languages, or frameworks to manipulate themselves; that is, build them out of first-class objects. This allows them to co-evolve with the system.

Pattern: Metamorphosis

Pages: 307-312

Provide mechanisms for augmenting the behavior of an object or system without changing its fundamental interface or behavior. When applications and substrates are built from objects, they can evolve together as requirements change.