Задача: Develop the Architecture
Make concrete decisions about the architecture to provide guidance and direction to the development work for the iteration.
Дисциплины: Analysis & Design

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

РолиОсновной исполнитель: Дополнительные исполнители:
ВходыОбязательный: Необязательный:
  • Нет
Основное описание

This task builds on the work performed during Analyze the 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 use will be made of existing software assets and how they will integrate with the overall solution.
  • To specify what 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 and used by the project team.

The technical decisions taken as part of this task are concrete and unambiguous. Capture architectural decisions in the Architecture Notebook. Make sure that this is communicated across the team.

This task is applied iteratively; iterations after the first will need to take account of the Design and Build products that have been developed so far.

Identify architectural priorities

Determine the priorities for this iteration of architecture work. Balance the objectives for the current iteration against the overall project objectives, ensuring that the architecture can support current and future needs.

Refine architectural mechanisms

Refine each architectural mechanism into a Design Mechanism by looking at the requirements in the context of the current iteration. Include each architecturally significant scenario in scope. Look for commonality across scenarios and propose common components and patterns for their solution. Work with the developers and analysts to gain consensus on the architecture mechanisms.

Identify business patterns

The architecture of the system can often be best communicated by showing how it handles important areas business behaviour.

See Business Pattern. Work with the stakeholders to assure the business patterns are based on sound knowledge.

Identify reuse opportunities

Leverage reuse of existing components by evaluating their interfaces and the behavior that they provide. Reuse components when their interfaces are similar or match the interfaces of components you would need to develop from scratch. If not similar, modify the newly identified interfaces so you improve the fit with existing components interfaces.

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.

Map the software to the hardware
Map the architecturally significant design elements to the target deployment environment. Work with hardware and network specialists to ensure that the hardware is sufficient to meet the needs of the system; and that any new hardware is available in time.
Define development architecture and test architecture

Ensure that the development and test architectures are defined. Note any architecturally significant differences between these environments and work with the team to devise strategies to mitigate any risks these may introduce.

Validate the architecture

Verify that the architecture decisions are appropriate for their purpose. 

Development work should be performed to produce a Build that shows that the software architecture is viable. This should provide the definitive basis for validating the suitability of the architecture. As the software should be developed iteratively, more than one increment of the build may be required to prove the architecture. During the early stages of the project (up to the end of Elaboration), it may be acceptable for the software to have a incomplete or prototypical feel, as it will be primarily concerned with baselining the architecture to provide a stable foundation for the Construction phase.

Communicate 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.

Ключевые условия

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.

Дополнительные сведения