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]
- 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
Principles
[edit]At the enterprise architecture level, Scott Ambler (2016)[4] proposes the following principles:
- Evolutionary collaboration over blueprinting
- Communication over perfection
- Active stakeholder participation
- Enterprise architects are active participants on development teams
- Enablement over inspection (exemplars)
- 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
Dimensions
[edit]Svyatoslav Kotusev identifies the following dimensions of "agile" Enterprise Architecture:[5][6]
- Agility of strategic planning,[7][8] including such aspects as (a) the overall amount of time and effort devoted to strategic planning, (b) the organizational scope covered by strategic planning, (c) the time horizon of strategic planning and (d) how exactly the desired future is defined
- Agility of initiative delivery,[7][8] including such aspects as (a) the logical flow of initiative delivery and (b) the volume of EA artifacts developed for initiatives, i.e. solution overviews and solution designs[9][10]
- Agility of finance allocation, including such aspects as (a) the composition of corporate IT investment portfolios and (b) the structure of budgeting processes
- Agility of architecture governance, including such aspects as (a) the formality of decision-making processes and (b) the adherence to the approved plans
- Agility of architecture function, including such aspects as (a) the ratio of architects in the total IT workforce and (b) the degree of participation of architects in IT projects
- Agility of other elements, including such aspects as (a) the level of technical standardization and (b) the sophistication of utilized software tools
Practices
[edit]The open source Design Practice Repository (DPR) collects agile architecting practices such as:
- SMART NFR Elicitation
- Architectural decision Capturing
- Stepwise Service Design.[11]
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
- ^ "What Is Agile Enterprise Architecture?", Kotusev, S., June 2020
- ^ "Configuring Your EA Practice for Agility", Kotusev, S., December 2020
- ^ a b "Enterprise Architecture Practice on a Page", Kotusev, S., November 2019
- ^ a b "The Process View of Enterprise Architecture Practice", Kotusev, S., September 2019
- ^ "Enterprise Architecture on a Page", Kotusev, S., December 2018
- ^ "Eight Essential Enterprise Architecture Artifacts", Kotusev, S., February 2017
- ^ "Design Practice Reference", Zimmermann, O., Stocker. M., April 2021
Links
[edit]Design Practice Repository (DPR), Git Pages and open source project