Task: Outline the Architecture |  |

Outline the Architecture

Purpose

Outline the Architecture

Relationships

Roles

Primary Performer:

- Architecture Owner

Additional Performers:

Inputs

Mandatory:

- Requirements
- Risk list

Optional:

- None

Outputs

- Architecture

Process Usage

- Architecture > Outline the Architecture
- Epilogue > Architecture > Outline the Architecture

Main Description

This task focuses on envisioning the initial architecture and outlining the architectural decisions that will guide development and testing. It relies on gathering experience gained in similar systems or problem domains to constrain and focus the architecture so that effort is not wasted in re-inventing architecture.

The results are captured for future reference and are communicated across the team. It is important that the team has enough information to understand the technical approach being taken.

The architecture evolves organically over time by outlining and refining portions of it. A few people get together in a room and sketch out what they think the architecture will be. This envisioning effort sets the foundation for prototyping. If the solution is similar to a previously produced solution (or is a well-known solution domain), then it will probably be good enough to reference that example as evidence of the feasibility of the approach. In some cases, it may be necessary to develop one or more prototypes to validate some of the decisions or clarify some of the requirements.

The work done here does not seek to produce a detailed and comprehensive technical specification for the system. Rather, the approach should be to decide the overall technical approach at a high level. The conclusion of this work should produce just enough information to communicate the architecture to the team, and to demonstrate its viability to the customer. This allows the project to move forward, enabling you to refine and baseline the architecture

Steps

Identify architectural goals

Identify architecturally significant requirements

Identify constraints on the architecture

Identify key abstractions

Identify reuse opportunities

Define approach for partitioning the system

Define approach for deploying the system

Identify architectural mechanisms

Identify interfaces to external systems

Verify architectural consistency

Capture and communicate architectural decisions

Key Considerations

It is important to reduce the complexity of the solution by raising the levels of abstraction. It is critical that this task be performed collaboratively with active involvement of other team members and project stakeholders so that consensus and common understanding is reached. It is particularly vital to involve the developer(s) throughout this task. The architecture effort is about providing leadership and coordination of the technical work rather than putting in a solo performance.