A software architect proposes the technical contents and the order of successive iterations by selecting a
certain number of scenarios and use cases to be analyzed and designed. This technical proposal is completed and refined
by the various development teams, based on personnel availability, customer requirements in terms of deliverables,
availability of tools and COTS products, and the needs of other projects.
The selection of scenarios and use cases that are considered "architecturally significant" (e.g., constitute the
use-case view of the architecture) is driven by some key driving factors, summarized below.
-
The benefit of the scenario to stakeholders: critical, important, useful.
-
The architectural impact of the scenario: none, extends, modifies. There may be critical use cases that have little
or no impact on the architecture, and low benefit use cases that have a big impact. Low benefit use cases with big
architectural impacts should be reviewed by the project manager for possible de-scoping.
-
The risks to be mitigated (performance, availability of a product, and suitability of a component).
-
The completion of the coverage of the architecture (making sure that at the end of the Elaboration phase, every
piece of software to be developed has found a home in the Implementation View).
-
Other tactical objectives or constraints: demonstration to the user, and so on.
There may be two scenarios that hit the same components and address similar risks. If you implement A first, then B is
not architecturally significant. If you implement B first, then A is not architecturally significant. So these
attributes can depend on the iteration order, and should be re-evaluated when the ordering changes, as well as when the
requirements themselves change.
Architecturally significant use cases that are poorly understood or likely to change should be prioritized for
clarification and stabilization. In some cases, this means further requirements analysis should be done before
implementing the requirement. In other cases, some form of prototyping may be best.
|