Agile architecture
Agile architecture means how enterprise architects, system architects and software architects apply architectural practice in agile software development. A number of commentators have identified a tension between traditional software architecture and agile methods along the axis of adaptation (leaving architectural decisions until the last possible moment) versus anticipation (planning in advance) (Kruchten, 2010 ).[1]
Waterman, Nobel, and Allan (2015)[2] 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.
Definition
[edit]Several attempts have been made to specify what makes up an agile approach to architecture. According to the SAFe framework, the principles of agile architecture are:[3]
- The teams that code the system design the system
- Build the simplest architecture that can possibly work
- When in doubt, code it out
- They build it, they test it
- The bigger the system, the longer the runway
- System architecture is a role collaboration
- There is no monopoly on innovation
Principles
[edit]At the enterprise architecture level, Scott Ambler (2016)[4] proposes the following principles:
- Communication over perfection
- Active stakeholder participation
- Enablement over inspection (exemplars)
- Evolutionary collaboration over blueprinting
- Enterprise architects are active participants on development teams
- High level models (the more complex, the more abstract)
- Capture details with working code
- Lean guidance and rules, not bureaucratic procedures
- Have a dedicated team of experienced enterprise architects
Practices
[edit]The open source Design Practice Repository (DPR) collects agile architecting practices such as:[5]
- SMART NFR Elicitation
- Architectural decision Capturing
- Stepwise Service Design[6]
References
[edit]- ^ Kruchten, P. (2010). Software Architecture and Agile Software Development — A Clash of Two Cultures? Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering
- ^ 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
- ^ Leffingwell, Dean (2008-07-10). "Agile Architecture – The Whitepaper Now On Line". Scaling Software Agility. Retrieved 2017-02-06.
- ^ Ambler, S. (2016). Agile Enterprise Architecture – Disciplined and Pragmatic Strategies. [video] Retrieved from: https://www.youtube.com/watch?v=AaIiG73QE3c
- ^ "Design Practice Repository (DPR) Version 1.5 (Git Pages)". design-practice-repository. Retrieved 2024-11-22.
- ^ "Design Practice Reference", Zimmermann, O., Stocker. M., April 2021