Concept: Software Architecture |
Architecture is the fundamental organization of a system embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution.
Relationships
Related Elements | Architectural Pattern Design Executable Architecture Reference Architecture
Main Description
### Purpose The purpose of architecture is to: Describe the structure. It describes the essential structure of the system. Capture decisions. It captures the decisions guiding the structure of the system to ensure its integrity and understandability. Team members who were not involved in architectural decisions need to understand the reasoning behind the architecture so that they can best address the needs of the system. Identify risks. It identifies and attacks risks to the system. As the project progresses, developers can more rapidly reduce the variance in their estimates on what they can deliver and when. Provide guidance. It provides context and guidance for developers to construct the system. It describes the motivations behind the architectural decisions so that developers can robustly implement those decisions. Overview the system. It provides an overview of the system to whomever must maintain it. Organize the project and team. It defines the project structure and team organization. Architectural elements make excellent units of implementation, unit testing, integration, configuration management, and documentation. ### Description Architecture is the fundamental organization of a system embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution. Architecture is one aspect of design that concentrates on some specific features. It specifies a system's overall system structure, gross organization, protocols for communication, synchronization, data access, assignment of functionality among elements, physical distribution, composition of elements, scaling and performance, and selection among design alternatives. [GAR93] Beyond structure, it addresses system integrity, economic constraints, aesthetic concerns, and style. It takes into consideration the system as a whole, in its user environment and its development environment. [IEP1471]. The architecture focuses on specific aspects of the overall system design, concentrating on structure, essential elements, key scenarios, and those aspects that have a lasting impact on system qualities such as performance, reliability, adaptability, and cost. It also defines the set of architectural mechanisms, patterns, and styles that will guide the rest of the design, ensuring its integrity. The architecture can contain any information and references that are appropriate in communicating how developers should build the system. Some information worth capturing as part of the software architecture includes: · Architectural goals · Architecturally significant requirements · Constraints on the architecture · Key abstractions · Architectural Mechanisms · Architectural patterns · Deployment approach · Architecturally significant design elements · Critical system interfaces · Assets to be reused · Architectural decisions · Guidance for developers A software architecture may have an architectural style. The style reduces the set of possible forms from which to choose, and imposes a certain degree of uniformity to the architecture. The style may be defined by a set of patterns, or by the choice of specific components or connectors as the basic building blocks. The best way to validate the architecture is to actually implement it. See Concept: Executable Architecture. #### Representation You can represent the architecture in many forms and from many viewpoints, depending on the project's needs and the project team's preferences. It need not be a formal document. You can often communicate the essence of the architecture through a series of simple diagrams on a whiteboard, or as a list of decisions. The illustration just needs to show the nature of the proposed solution, convey the governing ideas, and represent the major building blocks. You can use a precise set of models or documents that describe the various aspects of the system's key elements. Expressing it as a skeletal implementation is another option, although this may need to be preserved to ensure that the essence of the system can be understood as the system grows. For more complex systems, you can represent the architecture as a more comprehensive set of views that describe the architecture from a number of viewpoints. See Concept: Architectural Views and Viewpoints.
More Information
Concepts | Architectural Constraints Architectural Goals Architecturally Significant Requirements Architectural Mechanism Architectural Views and Viewpoints Component Executable Architecture Key Abstractions Pattern Reference Architecture
© Copyright IBM Corp. 1987, 2009. All Rights Reserved.