Task: Envision the Architecture |
Define architectural goals, identify inputs to the architecture, and make key decisions about the structure of the architecture.
Disciplines: Architecture
Purpose
The purpose of this task is to understand project goals, define and validate architectural goals, and gather together all sources of input to the architecture. This task helps you ensure that your architecture meets the needs of your stakeholders, leverages existing resources, and is understood by developers.
Relationships
Roles | Primary Performer: Architect | Additional Performers:
Inputs | Mandatory: [Technical Specification] Actor Glossary Storyboard System-Wide Requirements Use Case Use-Case Model Vision | Optional: Architectural Decisions Architecture Overview
Outputs | Architectural Decisions Architecture Overview
Main Description
In this task, you define architectural goals and identify inputs to the architecture, including requirements, constraints, and reusable assets. You make and document key decisions about the structure of the architecture. You sketch a high level overview of the architecture.
Steps
Define architectural goals
Understand the project's goals and requirements. Elicit and build consensus on architectural goals. These goals help prioritize and guide important technical decisions. Describe the architectural goals in the Architecture Overview. See Concept: Architectural Goals for more information.
Identify architecturally significant requirements
Identify which of the requirements play an important role in determining the architecture of the system. Explore those that you much implement in order to realize the Architectural Goals. See Concept: Architecturally Significant Requirements. Prioritize clarifying and stabilizing architecturally significant requirements that are unclear or likely to change. Communicate these needs and priorities back to those responsible for defining them. In some cases, this means that they must do further requirements analysis before you can complete the architecture. Mark the requirements that are architecturally significant using an attribute of the requirements. You may reference this list in the Architectural Decisions. Document the rationale for any key decisions that you make based about the requirements.
Identify constraints on the architecture
Gather information about the existing environment and identify any constraints on the solution. List the constraints and any ideas that you have on how the architecture will meet them in the Architectural Decisions. Document the rationale for any key decisions that you make based on the constraints.
Survey available assets
Search within your organization for similar projects and note any reusable assets from those projects that have potential to be applied to your architecture. Review industry literature to identify any commercial or open source reference architectures, architectural patterns, or other reusable assets applicable to your project. Assess whether each asset contributes to meeting the project's requirements and architectural goals, and whether it is compatible with the project's constraints. Examine the tradeoffs in cost, risk, and functionality from adopting the asset. For each asset, note whether you plan to use it as-is, extend or enhance it, or whether you choose not to use it at all, and why. Capture these decisions, and any supporting rationale, in the Architectural Decisions. Consider whether negotiate modifications for any of the requirements to enable use of an available asset. If so, propose requirements changes to those responsible for them. See Guideline: Software Reuse for more information.
Identify architectural mechanisms
Use your experience to recognize architectural problems that exist in your system that have been solved before. Propose a consistent means, or "mechanism", of solving those problems throughout your system. Document your ideas by listing required Analysis Mechanisms in the Architectural Decisions. For each mechanism, specify its name and basic attributes. The set of attributes varies among mechanisms. Prioritize the design and development of any mechanisms that are key to achieving the Architectural Goals. Communicate these priorities to developers. See Concept: Architectural Mechanism for more information and examples.
Sketch architecture overview
Sketch the major building blocks of the architecture in the Architecture Overview. Keep any diagrams simple, brief, and informal. If you are still exploring alternative architectural solutions, produce diagrams for each option to enable stakeholders to evaluate the tradeoffs between options.
Validate the architecture
Review the Architectural Decisions to ensure that you have captured the rationale for any significant decisions that you have made, especially those that are controversial or are based on reasoning that is not obvious. Communicate and validate your architecture overview and decisions with project sponsors, stakeholders, and developers. Make sure that your developers understand the plan and can deliver it. Repeat the steps of this task as needed to incorporate their feedback. For checklists to assess the results of this task, refer to the output work products.
More Information
Checklists | Architectural Decisions Architecture Overview
Concepts | Analysis Mechanism Architectural Constraints Architectural Goals Architecturally Significant Requirements Architectural Mechanism Architectural Pattern Reference Architecture Requirements Reusable Asset Visual Modeling
Guidelines | Software Reuse Using Visual Modeling
© Copyright IBM Corp. 1987, 2009. All Rights Reserved.