Evolutionary Architectures
Syed Khader
February 4, 2020
Modern Software Development practices encourage incremental changes, small features and frequent releases and deployments. To support such modern techniques, long-term Architecture planning and designing of such systems is not possible. In order to keep up with the changes of software system(s), the underlying Architecture should be designed to allow Architecture evolution. In simple, building architectures that expect change and adapt change with minimal or no side-effects.
Evolvability mean supporting various -ilities of an architecture such as reliability, adaptability, flexibility, maintainability… etc. It is iterative and designed to change with the ecosystem. An architecture that support incremental and guided changes, during both development and deployment, is easier to evolve.
Definition: An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.
Incremental change is “about how to build” and “how to deploy it.” Building software by adapting to developing smaller features and frequent deployments adds incremental units of value. This approach helps to move away from waterfall approach to Architecture and big bang software development.
Guided change is about identifying “Fitness Functions”. It is an objective function that is used to summarize how close a given design solution is to achieving the set aims. Fitness functions are group of metrics and tests to assess and measure the vital ilities of the architecture.
Summary: Evolutionary architectures allows architectures to expect changes and evolve to deliver business value by supporting various development and deployment – ilities.
Next post will be on Fitness Function in detail.