Agile Architecture Interactions (was: Agile Architecture Insertion Points)IEEE Softw.

About

Authors
James Madison
Year
2015
DOI
10.1109/MS.2010.27
Subject
Software

Similar

Agile Software Architecture in Advanced Data Analytics

Authors:
K. Eric Harper, Aldo Dagnino
2014

Towards an Agile Design of the Enterprise Architecture Management Function

Authors:
Sabine Buckl, Florian Matthes, Ivan Monahov, Sascha Roth, Christopher Schulz, Christian M. Schweda
2011

Chemical reactions in a time modulated environment: Theory, analog simulation and computer calculation

Authors:
Crescenzo Festa, Teresa Fonseca, Leone Fronzoni, Paolo Grigolini, Agile Papini
1986

AGILE ANIMALS

Authors:
L. Blackburn
2005

Text

1 of 16

Abstract

Agile delivers value quickly, using a series of short-term goals based on immediate priorities.

Architecture grows value carefully, using a set of long-term objectives based on fundamental principles. The two seem at odds, but the architect can bring them together at four well-defined points in agile projects: during project initiation by setting architectural direction, through storyboarding by introducing specific architectural tasks, within sprints by close collaboration on challenging issues, and as working software gets delivered by performing direct inspection.

These must be done with four critical skills: decomposing architectural work into iterative form, advocating the merits of architecture throughout development, tracking the architectural state of the project as it executes, and driving toward a broader enterprise architecture to which all agile projects are contributing. When done effectively, this approach achieves a pragmatic balance between business and architectural priorities while delivering both with agility.

Digital Object Indentifier 10.1109/MS.2010.27 0740-7459/$26.00 © 2010 IEEE

This article has been accepted for publication in IEEE Software but has not yet been fully edited.

Some content may change prior to final publication. 2 of 16

Agile Architecture Interactions

Guiding system architecture throughout development by leveraging agile methods and the people executing them 1. INTRODUCTION starts to build before the outcome is fully understood, adjusts designs and plans as empirical knowledge is gained through building, trusts the judgment of those closest to the problem, and encourages continual collaboration with the ultimate consumers. Architecture establishes a technology stack, creates design patterns, enhances quality attributes, and communicates to all interested parties. The combination of these two spaces is agile architecture—an approach that uses agile to drive toward good architecture. Successful agile architecture requires an architect who understands agile development, interacts with the team at four well-defined points, influences them using four critical skills easily adapted from architecture experience under other approaches, and applies architectural functions that are independent of project methodology.

Figure 1 shows a simplified hybrid of Scrum [Schwaber 2004], Extreme Programming [Beck &

Andres], and sequential project management that I have found effective for guiding architectural work on 14 agile projects in the last eight years. Table 1 briefly describes the elements of Figure 1.

The architectural functions are ones an architect typically performs on projects, though not an exhaustive list. Table 2 shows how architectural functions intersect with interaction points and the top concerns for an architect at that intersection. Taken together, the three categories and their four items create a framework useful for understanding and guiding agile architecture and extensible by adding other values to the dimensions based on other priorities or preferences.

Digital Object Indentifier 10.1109/MS.2010.27 0740-7459/$26.00 © 2010 IEEE

This article has been accepted for publication in IEEE Software but has not yet been fully edited.

Some content may change prior to final publication. 3 of 16

Figure 1 – A framework for agile architecture using three categories of four items based on a hybrid of agile and sequential project management.

Digital Object Indentifier 10.1109/MS.2010.27 0740-7459/$26.00 © 2010 IEEE

This article has been accepted for publication in IEEE Software but has not yet been fully edited.

Some content may change prior to final publication. 4 of 16

Category Item Description

Up-Front Planning Setting the architectural direction in much the same way as sequential projects

Storyboarding Structuring the business need and architectural work, and getting everyone on-board

Sprint Building the functionality as part of the team when direct participation is valuable

Interaction

Point

Working Software Reviewing what is actually delivered to measure the architectural state

Sprintable Form Breaking architectural work into small, measurable units

Product Owner Quantifying the architecture in terms of clear business value

Architecture Backlog Tracking architectural concerns and balancing them with business priorities

Critical

Skill

Enterprise Architecture Knowing the larger architectural picture and using each project to advance it

Communication Keeping all stakeholders informed about the value and state of the architecture

Quality Attributes Measuring maintainability, scalability, extensibility, and similar “-ilities”

Design Patterns Outlining the structures that give form to implementation work

Architectural

Function

Hardware/Software Stack Choosing the hardware and software appropriate for the project

Table 1 – Descriptions of interaction points and critical skills

Interaction

Point

Architectural

Function

Up-Front

Planning Storyboarding Sprint

Working

Software

Communication x Understand business objectives x Get input from technical team x Communicate general direction to everyone x Actively facilitate storyboarding sessions x Work architectural user stories into the backlog, particularly the three types below: x Attend daily stand-ups x Build functionality as a means of gaining understanding x Mentor and assist as expertise allows x Attend sprint review x Review documentation x Advocate refactoring for architectural value with team and product owner

Quality attributes x Set approximate target ranges for attributes x Establish which attributes dominate in trade-offs x Add stories to improve specific attributes, including refactoring x Build attributes into code, explicitly and as a norm for build work x Assist in designing or building to improve attributes x Verify delivered solution meets target ranges x Adjust target ranges as build work indicates a need for adjustment

Design patterns x Choose important design patterns x Outline general interactions among significant patterns x Add stories to build design patterns, including refactoring x Solve for detailed design patterns x Assist in building the most critical design patterns x Verify delivered design patterns are valid x Adjust design patterns as build work indicates