an architecture
that captures the most important, pervasive, top-level, strategic inventions,
decisions, and their associated rationales about the overall
structure (i.e., essential elements and their relationships)
and associated behavior of one or more (potentially reusable)
software components
The typical responsibilities of a Software Architecture are to:
Fulfill Requirements. Provide an overall structure and set of mechanisms that
help fulfill all architecturally significant
requirements (especially the
quality requirements) and
constraints.
Drive Design, Implementation, Integration, and
Testing. Help influence and constrain all subsequent activities
including the software design, implementation, integration,
and testing.
Improve Communication. Communicate the architectural decisions concerning the
application’s software components to their
stakeholders (e.g., members of the customer, development,
and subcontractor organizations) in a form that is:
Descriptive.
Prescriptive.
Proscriptive.
Build Consensus. Produce a formally documented consensus amoung the
endeavor’s stakeholdlers concerning the:
Architectural patterns and styles to be reused,
Top-level strategic structures (i.e., major functions,
classes, processes, components, their responsibilities, and
their relationships),
Most important, pervasive architectural
mechanisms, and
Associated rationales.
Drive Organizational Structure. Help drive the organizational structure of the
development team(s) by assigning different components to be
developed by different
teams and
organizations (e.g., subcontractors).
Support Endeavor Management. Help drive the production of the
endeavor’s:
Budget by providing input (e.g., number, size, and
complexity of system components and mechanisms) for
estimating the cost of the endeavor.
Master Schedule by providing a basis (e.g., components,
mechanisms) for estimating the schedule of the
endeavor’s development or life-cycle cycle’s
phases, builds, and milestones.
Achieve Strategic Reuse. Help an organization achieve strategic reuse by
reusing:
Reference architectures.
Parts of existing software architectures.
Architectural patterns.
Architectural mechanisms.
Influence Training. Influence the endeavor’s training plan including
training in the architecture and its associated architectural
patterns, mechanisms, and technologies.
Document the software architects to the extent that they
are unambiguous and can be analyzed and evaluated.
All of the requirements need not exist, but at least some
of the architecturally significant requirements and
constraints need to need to exist prior to the development of
the software architecture.