System Architecture Engineering
System architecture engineering is the subclass of
architecture engineering during which a
system’s
architecture
and associated architecture representations are engineered.
The goals of system architecture engineering are to:
- Engineer the system’s architecture.
- Engineer the representations of the system’s architecture.
The objectives of system architecture engineering are to:
- Produce a formally documented consensus amoung the project stakeholdlers (e.g., client, management, developers)
concerning the overall structure and major mechanisms of the next version [incremental iteration] of a system.
- Provide input (e.g., number, size, and complexity of system components) to the project cost and schedule estimation task.
- Provide a basis (e.g., components) for the scheduling of the project phases and builds.
- Maximize the quality of the system architecture:
- Correctness, completeness, consistency, and understandability.
- To meet architecturally significant:
- Functional requirements,
- Quality requirements (e.g., extensibility, scalability, performance, operational availability, and security),
- Architectural 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 system architecture engineering include engineering the architecture of:
- Small simple systems
- Ultra-large scale systems of systems
System 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 system architecting.
- Some architecturally significant requirements have been specified.
System architecture engineering is typically complete when the following postconditions hold:
- The system architecture has 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.
System architecture engineering typically consists of the following architecting tasks:
- Plan and Resource Architecture Engineering Effort
- Identify the Architectural Drivers
- Create Initial Architectural Models
- Identify Opportunities for Reuse of Architectural Elements
- Create Candidate Architectural Visions
- Analyze Reusable Components and their Sources
- Select or Create Most Suitable Architectural Vision
- Complete and Maintain the Architecture
- Evaluate and Accept the Architecture
- Maintain the Architecture and Its Representations
System architecture engineering is typically performed using the following environment(s) and associated tools:
System architecture engineering typically results in the production of part or all of the following
architecture work products:
Architecting tasks are typically performed during the following phases:
Guidelines
- Read the book
Read The Method Framework for Engineering System Architectures (MFESA)
by Donald Firesmith et al, from which this method component is taken.
- The system architecture must fulfill (and is therefore validated against) the architecturally significant
functional and quality requirements.
- The system 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.