search menu icon-carat-right cmu-wordmark

Agile Architecting Collection

Over the past decade, Agile software development and software architecture practices have received significant attention from industry and government.

Publisher:

Software Engineering Institute

Today’s software users have come to expect new features as soon as the need for them arises. In response to this challenge, we are working to reduce the footprint of traditional software offerings and move to providing continuous delivery of new or improved capabilities. Agile practices are strengthened through application of architecture principles. Informed anticipation with just enough architecting in the context of agile release planning can provide the tools to balance of agility, innovation, and speed on the one hand, and system governance, flexibility, and planning for future needs on the other.

Agile software development methods focus on delivering observable benefits to the end user, early and often, through working software. In the Agile approach, functional user stories illustrate that particular capabilities are required.  Typically these collected stories are prioritized by end-user need, but almost every story has dependencies on other stories. To optimize value to the user, teams must look ahead and anticipate future needs. 

Stories also have dependencies upon the architectural elements of the system. We have defined architectural agility as the ability to identify and analyze these dependencies, and incorporate dependency awareness into a responsive development model. These additional considerations add a new dimension to the typical Agile release planning; benefits derived from the execution of architectural activities may now be allocated to either the current release or to future releases. Architectural agility offers tools that enable the software community to

  1. adapt the agile focus on end-user stories to address the broader topic of capabilities, including quality attribute requirements

  2. facilitate a “just-in-time” approach to building out the architectural infrastructure

  3. optimize architectural investment decisions by analyzing uncertainty and tradeoffs between incurred cost and anticipated value 

Architectural agility allows architectural development to follow a “just-in-time” model. There is no completion of exhaustive requirements and design activities and reviews to delay delivery of features. At the same time, architectural agility maintains a steady and consistent focus on continuing architectural evolution in support of emerging features.

Architectural agility requires just enough anticipation. To achieve this quality, architectural anticipation must be informed, and certain tools can help achieve this: dependency analysis, real options analysis, and technical debt management.

Developers first select capabilities to create within each iteration, then identify the architectural elements that must be implemented to support them. The term capabilities replaces user stories, reflecting a need to consider non-functional requirements such as modifiability and security, and to incorporate requirements across a broad range of stakeholders. Such dependency analysis enables the development team to prioritize and schedule work within a release.

A natural extension  of a “just-in-time” model of architectural agility and agile architecting is the ability of the architecture and agile processes to enable effective release management and deployment. This requires design and analysis techniques and tools to support not only development practices but also reliable, robust, and secure deployment. For example, a subset of design patterns and tactics improves effectiveness of deployment-related practices such as continuous integration, automated testing, and continuous delivery.

 

SEI Blog

"Using Agile Effectively in DoD Environments" describes how our research has approached the topic of Agile methods both from an acquisition and a technical perspective.

"SATURN 2013 Awards Conferred: The Conflict Between Agile and Architecture: Myth or Reality?" examines the conflict between agile and architecture in the context of the software development process and how the software architecture role fits into agile teams.

More blog posts on the topic of Agile

Architecting in a Complex World: Achieving Agility and Stability in Large-Scale Software Development

May 2013
Author(s): Ipek Ozkaya

Ipek Ozkaya explores tactics about how organizations can better take advantage of software architecting for large-scale agile software-development efforts.

Architecting in a Complex World: Eliciting and Specifying Quality Attribute Requirements

May 2013
Author(s): Rob Wojcik

Rob Wojcik describes the Quality Attribute Workshop, a scenario-based approach for eliciting requirements for quality attributes (non-functional system qualities such as performance, availability, and security).

Architecting in a Complex World: Uncovering Architectural Challenges in a System of Systems

May 2013
Author(s): Michael J. Gagliardi

Mike Gagliardi describes development challenges in usability/automation, capability gaps, resource management, training, migration of legacy systems, and collaboration that they have identified from 46 Mission Thread Workshops.

Integrate End to End Early and Often

July 2013
Author(s): Felix Bachmann, Luis Carballo, Jim McHale, Robert Nord

This article discusses using architecture-centric engineering and the Team Software Process to develop software for a new trading engine at the Mexican Stock Exchange.

Enabling Agility Through Architecture

December 2010
Author(s): Nanette Brown, Robert Nord, Ipek Ozkaya

Enabling Agility Through Architecture: A Crosstalk article by Nanette Brown, Rod Nord, and Ipek Ozkaya.

Enabling Agility Through Architecture

December 2010
Author(s): Nanette Brown, Robert Nord, Ipek Ozkaya

This article discusses the important role that architecture plays in effectively applying Agile practices to software development.

Architecting for Sustainable Software Delivery

May 2012
Author(s): Ronald Koontz (Boeing Company), Robert Nord

With increasing emphasis on avionics system rapid development and reduced cycle times, software architecting practices can be applied with agility to enhance evolving stakeholder concerns while sustaining long-term business goals.

Architecting for Sustainable Software Delivery

May 2012
Author(s): Robert Nord, Ronald Koontz (Boeing Company)

This article explains five architecture practices that support the evolving software system and delivery of new capabilities.

Combining Architecture-Centric Engineering with the Team Software Process

December 2010
Author(s): Robert Nord, Jim McHale, Felix Bachmann

ACE methods and the TSP provides an iterative approach for delivering high quality systems on time and within budget. The combined approach helps organizations that must set an architecture/developer team in motion using mature, disciplined engineering practices that produce quality software quickly.

Architecting for Large-Scale Agile Development: A Risk-Driven Approach

May 2013
Author(s): Ipek Ozkaya, Michael J. Gagliardi, Robert Nord

This article focuses on two agile architecting methods that provide rapid feedback on the state of agile team support: architecture-centric risk factors for adoption of agile development at scale and incremental architecture evaluations.

Beyond Scrum + XP: Agile Architecture Practice

June 2013
Author(s): Ipek Ozkaya, Robert Nord, Stephany Bellomo, Heidi Brayer

This article highlights several approaches to agile architecture that organizations have applied and provides an in-depth release planning and roadmap planning.

Working Together: The Team Software Process and Architecture-Centric Engineering

July 2013
Author(s):

The SEI combined elements of its architecture-centric engineering (ACE) method with its Team Software Process (TSP) to help Bursatec develop a new trading engine.

Evolutionary Improvements of Cross-Cutting Concerns: Performance in Practice

October 2014
Author(s): Stephany Bellomo, Neil Ernst, Robert Nord, Ipek Ozkaya

This paper describes two key challenges of incrementally evolving cross-cutting concerns such as performance during incremental software development.

Toward Design Decisions to Enable Deployability: Empirical Study of Three Projects Reaching for the Continuous Delivery Holy Grail

June 2014
Author(s): Stephany Bellomo, Neil Ernst, Robert Nord, Rick Kazman

This paper summarizes three project teams' deployability goals and the architectural decisions they made to enable deployability while practicing continuous delivery.

Elaboration on an Integrated Architecture and Requirement Practice

May 2013
Author(s): Stephany Bellomo, Robert Nord, Ipek Ozkaya

This paper elaborates the practice of prototyping with quality attribute focus to gain a better understanding of how this practice works and what the benefits of the approach are.

A Study of Enabling Factors for Rapid Fielding

May 2013
Author(s): Stephany Bellomo, Robert Nord, Ipek Ozkaya

This paper summarizes the practices that practitioners interviewed from Agile projects found most valuable and provides an overarching scenario for insight into how and why these practices emerge.

Variations on Using Propagation Costs to Measure Architecture Modifiabilty Properties

September 2013
Author(s): Robert Nord, Ipek Ozkaya, Raghvinder Sangwan, Julien Delange, Marco Gonzalez-Rojas (University of British Columbia), Philippe Kruchten

Demonstrates how enhancing the propogation metric based on architectural metrics results in enhancements detection of modifiability properties not detectable by the propagation cost metric.

Making Architecture Visible to Improve Flow Management in Lean Software Development

October 2012
Author(s): Robert Nord, Ipek Ozkaya, Raghvinder Sangwan

This article explains how the flow management concept from lean software development can provide a framework for balancing the allocation of critical architectural tasks to development effort.

Agile in Distress: Architecture to the Rescue

May 2014
Author(s): Robert Nord, Ipek Ozkaya, Philippe Kruchten

For large-scale software-development endeavors, agility is enabled by architecture, and vice versa, and architecture supports high-priority business features.

Understanding the Role of Constraints on Architecturally Significant Requirements

July 2013
Author(s): Neil Ernst, Ipek Ozkaya, Robert Nord, Julien Delange, Stephany Bellomo, Ian Gorton

This paper describes a case study conducted to identify architecturally significant requirements that were impacted by tool selection.

Enabling Incremental Iterative Development at Scale: Quality Attribute Refinement and Allocation in Practice

June 2015
Author(s): Neil Ernst, Stephany Bellomo, Robert Nord, Ipek Ozkaya

This report describes industry practices used to develop business capabilities and suggests approaches to enable large-scale iterative development, or agile at scale.

Analysis and Management of Architectural Dependencies in Iterative Release Planning

April 2011
Author(s): Nanette Brown, Robert Nord, Ipek Ozkaya

Authors assert that the ability to quantify architecture quality with measurable criteria provides engineering guidance for iterative release planning.