Training: Tweet"Evolutionary Architecture - How to Make it Work"
Agile software development encourages, or even requires, a more evolutionary approach to architecture than is normally practiced by traditional Software Architects. The evolutionary approach to architecture, based on the principle of delaying architectural choices until the latest responsible moment, balances the desirability for sufficient information to make architectural choices with the reality that many architectural choices are difficult to change and should thus be made early.
This tutorial describes the principles that support an evolutionary architecture. We illustrate these principles with example techniques such as database migrations, HATEOS based architectures, and strategies such as end point testing for integration points. We also describe approaches to technical testing, particularly automated technical testing, that provide the safety net for evolving the architecture in the same way that automated unit and regression testing support evolving the code in an agile project.