Software Architecture Engineering
Software architecture engineering is the subclass of
architecture engineering during which a software
application’s
software architecture is produced.
The goals of software architecture engineering are to:
- Engineer the software’s architecture.
- Engineer the representations of the software’s architecture.
The objectives of software architecture engineering 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 of software architecture engineering include:
- Architecting a software application
- Architecting the software components of a system
application
Software architecture engineering 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.
Software architecture engineering 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.
Software architecture engineering typically involves the following
producers performing the following architecting tasks:
Software architecture engineering is typically performed using the following environment(s) and associated tools:
Software architecture engineering typically results in the production of
the
architecture work product set:
Software architecture engineering 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.