Before I describe software architecture, let's see if we can come to an agreement of what architecture is. What are the components of architecture, and what value does architecture have.
Architecture in general is not visible, it is present in the system but under other visible design components. Before a discussion of software architecture, it would be best to describe architecture using physical objects.
Architectural ElementsArchitecture involves two elements:
- connective elements.
Connective elements can be structural, but they provide a way of linking different structural components for the purposes of transporting something. Connective elements in a building transport air, water, and electricity.
If a connective element is missing then adding it will be expensive. For example, old brick buildings often didn't plan for plumbing or electricity. If this element is added afterwards, then it will be much more expensive to put in.
For comparison purposes, let's look at architecture in a couple of contexts:
|Object||Structural component||Connective elements|
Architecture and VisibilityIn the two examples above, several things about architecture stand out:
- Structural components are generally hidden unless they are functional
- Connective elements are covered up in the final object
Cost of Fixing Hidden Connective ElementsRepairing a hidden connective element is expensive. For example, fixing plumbing and electrical wires in a house are expensive depending on how hard it is to access the connective element.
Adding a connective element after the fact is much more expensive and much less attractive. There are brick buildings that were built prior to indoor plumbing and electricity being available. A good example of these buildings are the residences at Harvard or old brick warehouses that are now office space. In the case of the Harvard residences the plumbing runs outside the residences and due to the winter weather in Boston, is subject to freezing. Adding electricity to a brick warehouse involves running metal conduits inside the walls; since they are exposed, they are subject to water accidents.
Visible Structural Elements
Purpose of ArchitectureOnce the architecture is set it determines two things:
- The size of an object
- The functional capabilities of the object
Electricity, plumbing, and HVAC are all examples of shared services that are available to an entire building. The usage of electricity in one room does not dictate the usage of electricity in another room, however, aggregate usage of electricity is sized by the architecture.
In general, if one of the sub-components is not functioning then the entire set of coordinating objects will fail to function. For a car, if any component in the diagram fails then the engine itself will fail.
- Structural components
- Connective elements