Notes
Chapter 1: Software Architecture
Despite our best efforts, software becomes harder to change over time. For a variety of reasons, the parts that comprise software systems defy easy modifications, becoming more brittle and intractable over time. Changes in software projects are usually driven by a reevaluation of functionality and/or scope. But another type of change occurs outside the control of architects and long-term planners. Though architects like to be able to strategically plan for the future, the constantly changing software development ecosystem makes that difficult. Since we can't avoid change, we need to exploit it.
— On Evolutionary Architecture
An evolutionary architecture supports guided, incremental changes across multiple dimensions.
— Definition of Evolutionary Architecture
Related: Ralph Johnson on Architecture (via Fowler, 2003)
These quotes from Ralph Johnson (from [[2026-04-24 - Martin Fowler - Who Needs an Architect|Who Needs an Architect?]]) are foundational to the ideas in this book:
"In most successful software projects, the expert developers working on that project have a shared understanding of the system design. This shared understanding is called 'architecture.' [...] the architecture only includes the components and interfaces that are understood by all the developers."
— Architecture as a social construct, not a diagram.
"There is no theoretical reason that anything is hard to change about software. If you pick any one aspect of software then you can make it easy to change, but we don't know how to make everything easy to change. Making something easy to change makes the overall system a little more complex, and making everything easy to change makes the entire system very complex. Complexity is what makes software hard to change. That, and duplication."
— The fundamental tension that evolutionary architectures try to navigate: change vs complexity.
"Software is not limited by physics, like buildings are. It is limited by imagination, by design, by organization. In short, it is limited by properties of people, not by properties of the world. 'We have met the enemy, and he is us.'"
— The constraint is us, not the technology.
Chapter 2: Fitness Functions
An evolutionary architecture supports guided, incremental change across multiple dimensions.
-- on FItness Functions, chapter 2
The fitness function protects the various archutectural characteristics required for the system. The specific architectural requirements differ greatly across systems and organizations, based on business drivers, technical capabilities, and a host of other factors. Some systems require intense security; others require significant throughput factors.
-- on Fitness Functions, chapter 2
A system is never the sum of its parts. It is the product of the interaction of its parts.
-- Dr. Russel Ackoff
Descubra mais sobre Rafael Bernard Araujo
Assine para receber nossas notícias mais recentes por e-mail.