By: B. Foote, J. Yoder
Published in: PLoPD2
Category: Design Process
Summary: Shows how the forces that drive software development lead to more reflective systems.
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.
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.
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.