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