Agile Architecture emphasizes the minimum amount of design upfront, and focusing on building something and evolving the architecture as our understanding changes.
Architecture in software development is often defined as relationships between the parts in a system. Traditional approaches to software architecture emphasize Big Upfront Design – get it right at the start. The problem, of course, is that requires us to foresee all architectural considerations (scale, security, fault tolerance, fault recovery) at the moment when our understanding of our problems is at its weakest. Agile Architecture allows for the design to evolve and adapt as more is learned about what is needed.
(Hint: when searching for more ideas, consider using the term: “Evolutionary Architecture”)
- An Agile Approach to Software Architecture
- Characteristics of Evolutionary Architectures
- Evolutionary Architecture with Patrick Kua (YouTube)
- Summary of Building Evolutionary Architectures