The Rational Unified Process: An Introduction (3rd Edition)
THE PURPOSE OF ARCHITECTURE
Now that we have embraced architecture, we can revisit its purpose. Why should an organization focus on architecture? Architecture is important for several reasons that are discussed in the following sections.
Intellectual Control
Architecture lets you gain and retain intellectual control over the project, to manage its complexity and to maintain system integrity.
A complex system is more than the sum of its parts and more than a succession of independent tactical decisions. It must have a unifying, coherent structure so as to organize the parts systematically. It must also provide precise rules about how to grow the system without having its complexity multiply beyond human understanding.
Maintaining the system's integrity has long been the objective of system architects . Integrity, in its original meaning, is "being one." We want control of the architecture to design and build systems that are almost continuously integrated as "one" without resorting to difficult and painful "integration phases" in which all kinds of mis-matched parts must be fitted together by force.
The architecture establishes a means of effective communication and understanding throughout the project by establishing a common set of references and a common vocabulary for discussing design issues. Each designer and developer will understand the context and boundary of the part he or she is working on.
Reuse
Architecture provides an effective basis for large-scale reuse.
By clearly articulating the major components and the critical interfaces between them, an architecture lets you reason about reuse. It assists both internal reuse ”the identification of common parts ”and external reuse ”the incorporation of ready-made, off-the-shelf components .
Architecture also facilitates reuse on a larger scale: the reuse of the architecture itself in the context of a line of products that addresses varying functionality in a common domain. Architects will understand the limits of scalability, identify the generic parts, and define the variation points.
Basis for Development
Architecture provides a basis for project management.
Planning and staffing are organized along the lines of major components: layers and subsystems. Fundamental structural decisions are made by a small, cohesive architecture team; the decisions are not distributed. Development is partitioned across a set of small teams , each of which is responsible for one or several parts of the system. Different development organizations will understand which interfaces are at their disposal and will understand the limits of their variation.
Architecture and the work done during the elaboration phase provide the basis for further development, including the design guidelines, principles, styles, patterns, and mechanisms to reuse.