Modern Evolutionary Software Architectures
For many years, software architecture was described as the “parts that are hard to change later.” Modern advances in architecture have shown that if architects build evolvability into the architecture, change becomes easier. Neal Ford describes a family of software architectures that support evolutionary change, how we can build evolvable systems, and how to retrofit existing ones. He discusses three key concepts that support evolutionary architectures. Incremental change covers engineering practices to support continuous delivery and DevOps. Neal explains how fitness functions build protective, testable scaffolding around critical parts to guide the architecture as it evolves and to help developers assess how well the architecture adheres to a particular goal. Third, he describes how to determine the level of architectural coupling, which affects the ability to evolve the architecture. Neal illustrates ways to retrofit existing systems to support architectural evolution and shares tips on migrating between architectural styles. Leave with a new appreciation of software architecture and practical ways to make your systems not nearly so hard to change.