Task Descriptor: Develop the Architecture
Make concrete decisions about the architecture to provide guidance and direction to the development work for the iteration.
Based on Method Task: Develop the Architecture
Purpose

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

Relationships
RolesMain: Additional: Assisting:
InputsMandatory: Optional:
  • None
External:
  • None
Outputs
Main Description

This task builds on the work performed during Analyze Architectural Requirements 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 reuse opportunities

Leverage reuse of existing components by evaluating their interfaces and the behavior that they provide. Work with developers to gain consensus on the suitability of using existing components.

Identify architecturally significant design elements

Refine the key abstractions to decide on the important design elements (such as classes and subsystems) that make up the architecture, and provide at least a name and brief description for each. Add them to the Design. Gain consensus with the developers on architecturally significant design choices.

Define development architecture and test architecture

Decide on additional architecture elements that will be required for the development and test activities. Work with the developer(s) and Tester(s) to ensure that their requirements are addressed.

Evaluate results

Work with the whole team, particularly developers, stakeholders, testers, project managers, and testers, to verify that the architecture decisions are appropriate for their purpose.

Communicate and document decisions

Ensure that those who need to act upon the architectural work understand it and are able to work with it. Make sure that the description of the architecture clearly conveys not only the solution but also the motivation and objectives related to the decisions that have been made in shaping the architecture. This will make it easier for others to understand the architecture and to adapt it over time.

Properties
Multiple Occurrences
Event-Driven
Ongoing
Optional
Planned
Repeatable
Key Considerations

The architect should perform this task through collaboration with the whole team to promote consensus and a common understanding of the overall solution. The architect should be working to coordinate and guide the technical activities of the team, rather than seeking to do all the work alone. The architect should place emphasis on involving the developer(s) throughout this task.

More Information