The typical responsibilities of a system architecture are to:
Fulfill Requirements.
Provide an overall system structure and set of mechanisms that fulfill all architecturally significant requirements of the system.
Drive Designs & Implementations.
Influence and constrain the designs and associated implementations of the system’s components.
Improve Communication.
Improve communication among the system’s stakeholders concerning the the most important, pervasive,
top-level, strategic inventions, decisions, and their associated rationales.
Build Consensus. Produce a formally documented consensus amoung the
system’s stakeholdlers (e.g., members of the customer, development, and subcontractor organizations) concerning the:
Architectural patterns and styles to be reused on the system,
Top-level strategic logical and physical structures (i.e., major functions, classes, processes, components,
their responsibilities, and their relationships) of the system,
Most important, pervasive architectural mechanisms of the system, and
Associated rationales.
Estimate Costs.
Provide input (e.g., number, size, and complexity of system components and mechanisms) for estimating the cost of the producing or upgrading the system.
Enable Scheduling.
Provide a basis (e.g., components, mechanisms) for estimating the schedule of the system’s
development or life-cycle cycle’s phases, builds, and milestones.
Influence Staffing and Organization. Strongly influence the organization structure of the
endeavor in terms of its necessary component teams and associated roles. It also influences the endeavor training plan.
Physical architecture in terms of its major blackbox
components (i.e., data, hardware, software, user interface, and personnel), their responsibilities, and the relationships between them.
Database Team, which uses the database architecture
during the design and implementation of the databases and associated data components.
Deployment Team, which uses the various architectures
during the planning of the deployment tasks.
Hardware Development Team, which uses the hardware,
network, operational availability, and scalability architectures during the design and implementation of the hardware components.
Independent Test Team, which uses the various
architectures during the development of integration and functional tests.
Integration Team, which uses the various
architectures during the planning of the integration tasks.
Maintenance Team, which uses the various
architectures during the maintenance tasks (to ensure that maintenance tasks to not violate the architectures).
Metrics Team, which uses the components in the
architectures as an input when estimating the size and scope of the project.
Project Management Team, which uses the architectures
as an input when managing project scope and schedule project activities.
Security Team, which uses the security architecture
during the design and implementation of the security components and mechanisms.
Software Development Team, which uses the various
architectures during the design and implementation of the software components.
User Experience Team, which uses the user interface
architecture during the design and implementation of the user interfaces.
A system architecture typically includes a set of component subordinate architectures
(e.g., hardware architecture, network architecture, operational availability architecture, scalability architecture,
security architecture, software architecture, and user interface architecture).