Software Engineering, Project Management, and Effectiveness
I presented our new patterns & practices Agile Architecture Method for the first time at the patterns & practices Summit. Our Agile Architecture Method is an iterative and incremental approach for designing architectures.
To summarize, it’s a technique that:
I’ve summarized the approach below, and we’ve posted a step-step how to on CodePlex:
Input Here’s the key input into the process:
Output Here’s the key output of the process:
Summary of Steps
Step 1. Identify Architecture Objectives This is a scoping exercise. The purpose of this step is to figure out how much time and energy to spend on subsequent steps as well as guide your overall effort. You should know what you want in terms of outcomes. Here’s an example of potential goals:
Step 2. Identify Key Scenarios Identify relevant scenarios to focus your design on what matters most, and to evaluate your candidate solutions. In this case, you want to identify architecturally significant use cases. Architecturally significant use cases are those that meet the following criteria:
You can draw key scenarios from your user stories, business stories and system stories.
Step 3. Create an Application Overview Create an application overview. The application overview serves to make your architecture more real, connecting it to real-world constraints and decisions.
An application overview consists of the following steps:
A good test of an application overview is whether you can whiteboard it.
Step 4. Analyze Key Hot Spots Identify key hotspots based on quality attributes and the architecture frame. These are the areas where mistakes are most often made when designing an application.
Quality Attributes Frame Understand the quality attributes that are important for your application and scenarios. For instance, most applications need to address security and performance and will be traded against usability, flexibility and other attributes that may be more or less important to you depending on your scenarios and requirements. You can use the following frame to identify key quality attributes to consider:
Architecture Frame The architecture frame represents cross cutting concerns that will impact your design across layers and tiers. These are also the areas in which high impact design mistakes are most often made. Use the architecture frame to identify hot spots in your design that require additional attention to get right. You can use the following architecture frame to identify cross cutting concerns in your design:
Step 5. Create Candidate Solutions Create a candidate architecture and along with architectural spikes and evaluate it against your key scenarios, hot spots, and deployment constraints. The outcomes of this step are:
Iterative and Incremental Design You can iteratively flesh out your architecture as you work through your design and discover more details that impact your architecture. You don’t have to design your architecture in a single iteration. Do not get lost in the details; focus on the big steps and build a framework on which you can base your architecture and design.
My Related Posts
PingBack from http://www.tmao.info/agile-architecture-method/
Its interesting that I at first I would have put Application Overview at first in fact that is probably what I always do. However it may make more sense to do the way you do.
And by the way the Quality Attributes and Architecture Frame are great references!
@Georgely -
Thanks! I know what you mean. Originally we had the app overview first -- it's nearly interchangeable, but the idea is to really focus on the architecturally significant use cases. They're a great scoping mechanism.
Definitely agreed that this way scoping among the use cases seems much more efficient.
Not to mention that whenever starting to design a system architecture even before the use cases one usually has at least a minimal understanding of the application and already constructs a rough model of how it should be working - even if not put down on paper in this initial phase yet.
Application Architecture Guidance Communiqué: Issue 1 About the Application Architecture Guidance 2.0
As part of our patterns & practices Application Architecture 2.0 project , we created a set of application
In my previous post, Choosing the Right Presentation Technology , I mentioned that we posted our cheat
We posted our patterns & practices Performance Engineering Cheat Sheet to our Application Architecture
We posted our patterns & practices Security Engineering Cheat Sheet to our Application Architecture
We’ve had multiple customers ask our app arch guide 2.0 team for smaller, more focused guides. 
Many customers requested app arch guide 2.0 team of Microsoft for smaller, more focused guides. As a