Produce and maintain the top-level strategic structure of
the software components of an application that captures the
most important, pervasive mechanisms and design decisions
including their rationales:
Determine the software components.
Determine the software mechanisms.
Objectives
The objectives of software architecting are to:
Produce a formally documented consensus amoung the
project stakeholdlers (e.g., client, management, developers)
concerning the overall software structure and software
mechanisms of the next version [incremental iteration] of the
application.
Provide input (e.g., number, size, and complexity of
software components) to the project cost and schedule
estimation task.
Provide a basis (e.g., software components) for the
scheduling of the project phases and builds.
Maximize the quality of the software architecture:
Correctness, completeness, consistency, and
understandability.
To meet architecturally significant:
Operational requirements,
Quality requirements (e.g., extensibility,
scalability, performance, operational availability, and
security),
Design constraints (e.g., use of existing databases),
and
Business rules.
Maximize the productivity of the architecture team (e.g.,
reuse of reusable architectural frameworks, reuse of
architecture conventions, and existence of example
documents).
Examples
Examples of software architecting include:
Architecting a software application
Architecting the software components of a system
application
Preconditions
Software architecting typically may begin when the following
preconditions hold:
The software architecture must fulfill (and is therefore
validated against) the architecturally significant
operational and quality requirements.
The software architecture drives and constrains the
tactical (i.e., detailed) design.
This activity is documented using the typical
configuration for large projects. It is intended to be
configured (i.e., instantiated, extended, and tailored) to
meet the needs of specific projects.
The preconditions of this activity should be the union of
the preconditions of its constituent tasks.
The completion criteria for this activity should be the
union of the postconditions of its constituent tasks.