Workflow Detail:
Define the Architecture
Purpose
The purpose of this workflow detail is to:
-
Create an initial sketch of the architecture
of the
system
-
Define an initial set of architecturally significant elements
to
be used as the basis for analysis
-
Define an initial set of analysis mechanisms
-
Define the initial layering and organization
of the
system
-
Define the use-case realizations to be addressed in the current
iteration
-
Identify analysis classes
from the architecturally
significant use cases
-
Update the use-case realizations with analysis class interactions
How to Staff
These activities are best carried out by a small team staffed by
cross-functional team members. Issues that are typically architecturally
significant include performance, scaling, process and thread synchronization,
and distribution. The team should also include members with domain experience
who can identify key abstractions. The team should also have experience with
model organization and layering. The team will need to be able to pull all these
disparate threads into a cohesive, coherent (albeit preliminary) architecture.
Work Guidelines
The work is best done in several sessions, perhaps performed over a few days
(or weeks and months for very large systems), with iteration between
Architectural
Analysis
and
Use-Case Analysis
.
Perform an initial pass at the architecture in
Architectural
Analysis
, then choose architecturally significant use cases, performing
Use-Case
Analysis
on each one. After (or as) each use case is analyzed, update the
architecture as needed to reflect adaptations required to accommodate new
behavior of the system and to address potential architectural problems which are
identified.
Where the architecture already exists (either from a prior project or
iteration), change requests may need to be created to change the architecture to
account for the new behavior the system must support. These changes may be to
any artifact in the process, depending on the scope of the change.
|