Chapter 1-What Is Software Architecture
Chapter 1-What Is Software Architecture
3. Architectural Patterns
5. Summary
What is Software Architecture
The software architecture of a computing system is the set of structures needed to reason
about the system, which comprise software elements, relations among them, and properties of
both.
The data model describes the static information structure in terms of data
entities and their relationships.
For example, in a banking system, entities will typically include Account,
Customer, and Loan.
Account has several attributes, such as account number, type (savings
or checking), status, and current balance.
C. Component-and-connector Structures
1. Other structures focus on the way the elements interact with each other at runtime to carry
out the system’s functions.
2. We call runtime structures component-and-connector (C&C) structures.
3. In our use, a component is always a runtime entity.
- Suppose the system is to be built as a set of services.
- These services are made up of (compiled from) the programs in the various
implementation units – modules.
4. Component-and-connector structures help answer questions such as:
- What are the major executing components and how do they interact?
- What are the major shared data stores?
- How does data progress through the system?
- What parts of the system can run in parallel?
- How can the system's structure change as it executes?
Component-and-connector View Example
Allocation Structures
1. Allocation structures describe the mapping from software structures to
the system’s environments
Developmental
Installation
Execution
2. For example:
Modules are assigned to teams to develop, and assigned to places in a file structure for
implementation, integration, and testing.
Components are deployed onto hardware in order to execute.
2. Product Recommendations:
well-defined modules using principles of information hiding & separation of
concerns
separate modules that produce data from those that consume data to increase
modifiability & staged upgrades
write tasks or processes to allow easy reallocation, perhaps at runtime
Stakeholders in a System’s Architecture
1. Architects
2. Developers
3. Testers
4. Managers
5. Customers
6. Users
7. Vendors
Figure 1.2 Influence of stakeholders on the architect
Architectural Influences
Stakeholders
each stakeholder has different concerns & goals, some contradictory
Development Organization
immediate business, long-term business, and organizational (staff skills,
schedule, & budget)
Background & Experience of the Architects
repeat good results, avoid duplicating disasters
The Technical Environment
standard industry practices or common SE techniques
Summary
1. The software architecture of a system is the set of structures
needed to reason about the system, which comprise software
elements, relations among them, and properties of both.
2. A structure is a set of elements and the relations among them.
3. A view is a representation of a coherent set of architectural
elements.
4. A view is a representation of one or more structures.
5. There are three categories of structures:
Module structures show how a system is to be structured as a set of code or data
units that have to be constructed or procured.
Component-and-connector structures show how the system is to be structured as a
set of elements that have runtime behavior (components) and interactions
(connectors).
Allocation structures show how the system will relate to nonsoftware structures in its
environment (such as CPUs, file systems, networks, development teams, etc.).
6. Structures represent the primary engineering leverage points of an
architecture.
Every system has a software architecture, but this architecture may be documented
and disseminated, or it may not be.
There is no such thing as an inherently good or bad architecture. Architectures are
either more or less fit for some purpose.
THE END