We know that changes to the software systems that we work on are inevitable and that these software systems must adapt so that they can continue to be useful. As software architects, how do we create an architecture that can evolve to support change?
In Chapter 1, The Meaning of Software Architecture, we discussed what software architecture consists of. In part, it consists of design decisions for important aspects of the software system. They are among the earliest decisions that are made for a software system and are potentially the most difficult to change. Just as we strive to design other aspects of a software system to be highly maintainable and easy to change, at the heart of evolutionary architecture is the idea that we should be able to change software architecture easily as well. An evolutionary architecture should also be one that...