Task: Refine the Architecture
Make concrete decisions about the architecture to provide guidance and direction to the development work for the iteration.
Disciplines:  Analysis & Design
Purpose

Provide a skeletal design to enable more comprehensive design activities to be performed coherently by the team.

Relationships
RolesPrimary Performer: Additional Performers:
InputsMandatory: Optional:
  • None
Outputs
Main Description

This task builds on the work performed during Define the Architecture to produce a concrete approach for the main development work to follow.

The objective is to resolve the overarching issues which affect the design and development activity for the current iteration. These are:

  • To specify common mechanisms or patterns to be used.
  • To specify what, if any, use will be made of existing software assets and how they will integrate with the overall solution.
  • To specify what, if any, new software needs to be developed.
  • To ensure that the appropriate hardware and software resources are specified to support the development and testing of the solution.
  • To ensure that the architecture is useful to the project team
  • To ensure that the architecture is used by the project team

The products of this task are generally termed "high level" (in that they are applied in broad terms across solution). They are also specific (in that the technical decisions are concrete and unambiguous).

Steps
Identify architectural drivers and scenarios

Architecture drivers can take the form of one or more Architecture Mechanisms brought into scope by association to the use case scenarios prioritized for the current iteration. Other drivers may also be apparent. For example, it may be necessary to move certain aspects of the architecture from prototype to production quality implementation; or explore certain aspects of the architecture to inform future iterations.

Identifying these drivers will enable the Project Manager to allocate the resources needed.

Identify design mechanisms

Refine Architecture Mechanisms into Design Mechanisms by looking at the requirements in context. Look for commonality across scenarios as they are they are being analyzed and designed, then propose common components and patterns for their solution.

Identify business patterns

Identify areas of related or similar behaviour and propose any appropriate generic designs. See Business Pattern.

Identify reuse opportunities

Leverage reuse of existing components by looking to their interfaces and the behavior they provide.

Identify architecturally significant design elements

Decide on the important design elements (such as classes and subsystems) that make up the architecture, providing at least a name and brief description.

Define development and test architectures

Decide on additional architectural elements required to support the development and test activities.

Evaluate results

Verify that the architectural decisions taken are fit for purpose. This may take the form of such activities as verifying the success of exploratory prototypes; peer review of documentation; or formal assessment reviews.

Communicate and document decisions

Ensure that those who need to act upon the architecture work understand the architecture and are able to work with it. Make sure that the architecture description is able to articulate the motivation for the more important decisions that have been made in shaping the architecture.

More Information