Software Architecting
Definition
Software architecting is the subclass of
architecting during which an
application’s
software architecture is produced.
Goals
The goals of software architecting are to:
- 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
initiation phase has started.
- The
architecture team is initially staffed and adequately
trained in software architecting.
- Some architecturally significant requirements have been
specified.
Completion Criteria
Software architecting is typically complete when the
following postconditions hold:
- The software architecture have been documented.
- The deliverable work products in the architecture work
product set have:
- Passed evaluation.
- Been accepted by the customer.
- Been delivered to the customer.
Tasks
Software architecting typically involves the following
producers performing the following architecting tasks:
Environments
Software architecting is typically performed using the
following environment(s) and associated tools:
Work Products
Software architecting typically results in the production of
the
architecture work product set:
Phases
Software architecting tasks are typically performed during
the following phases:
Guidelines
- 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.