Agile architecture
Agile architecture means how enterprise / system / software architects apply architectural practice in agile software development. According to the SAFe framework, the principles of agile architecture are:
- Design emerges. Architecture is a collaboration. (intentional architecture)
- The bigger the system, the longer the runway (architectural runway)
- Build the simplest architecture that can possibly work (established design principles)
- When in doubt, code or model it out (spikes, prototype, domain and use case models)
- They build it, they test it (design for testability)
- There is no monopoly on innovation (teams, hackathons) - Facebook's Like button was conceived as part of a hackathon
- Implement architectural flow (architectural epics and the portfolio kanban) - the portfolio Kanban goes through funnel, review, analysis, portfolio backlog and implementing
Waterman, Nobel and Allan (2015) [1]explored the tensions between spending too little time designing an up-front architecture, increasing risk, and spending too much time, negatively impacting of the delivery of value to the customer. They identify six forces that can affect agile architecture: Requirements instability, technical risk, early value, team culture, customer agility and experience. These forces may be addressed by six strategies; Respond to change, address risk, emergent architecture, big design up front and use frameworks and template architectures.
- ^ Waterman, Nobel and Allan. (2015). How Much Up-Front? A Grounded Theory of Agile Architecture. In Proceedings of the 37th International Conference on Software Engineering