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 ).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)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 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

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:{{Cite web|url=https://scalingsoftwareagility.wordpress.com/2008/07/10/agile-architecture-%e2%80%93-the-whitepaper-now-on-line/|title=Agile Architecture – The Whitepaper Now On Line|last=Leffingwell|first=Dean|date=2008-07-10|website=Scaling Software Agility|access-date=2017-02-06}}

  1. The teams that code the system design the system
  2. Build the simplest architecture that can possibly work
  3. When in doubt, code it out
  4. They build it, they test it
  5. The bigger the system, the longer the runway
  6. System architecture is a role collaboration
  7. There is no monopoly on innovation

Principles

At the enterprise architecture level, Scott Ambler (2016)Ambler, S. (2016). Agile Enterprise Architecture – Disciplined and Pragmatic Strategies. [video] Retrieved from: https://www.youtube.com/watch?v=AaIiG73QE3c 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

The open source Design Practice Repository (DPR) collects agile architecting practices such as:{{Cite web |title=Design Practice Repository (DPR) Version 1.5 (Git Pages) |url=https://socadk.github.io/design-practice-repository/ |access-date=2024-11-22 |website=design-practice-repository |language=en-US}}

  • SMART NFR Elicitation
  • Architectural decision Capturing
  • Stepwise Service Design[https://www.leanpub.com/dpr "Design Practice Reference"], Zimmermann, O., Stocker. M., April 2021

References