Concept: Architectural Mechanism
Architectural Mechanisms are common solutions to frequently encountered problems that you can use during development to minimize complexity.
Relationships
Main Description

The value in defining architecture mechanisms is that they:

  1. Explicitly calls out aspects of the solution mechanics that are common across the system. This helps you plan.
  2. Puts down markers for the developers to build those aspects of the system once, and then re-use them. This reduces the workload.
  3. Promotes the development of a consistent set of services. This makes the system easier to maintain.

An architectural mechanism can have three states: analysis, design, and nmplementation. These categories reflect the maturity of the mechanism's description. The state changes as successive levels of detail are uncovered when you refine architecturally significant requirements into working software. The categories are summarized in the table that follows.

States of an Architectural Mechanism
State Description
Analysis A conceptual solution to a common technical problem. For example, persistence is an abstract solution to the common requirement to store data. The purpose of this category is simply to identify the need to design and implement an architectural mechanism, and to capture basic attributes for that mechanism.
Design Refining an analysis mechanism into a concrete technology (for example, an RDBMS). The purpose of this category is to guide precise product or technology selection.
Implementation

A further refinement from a design mechanism into a specification for the software. This can be presented as a design pattern or example code.


Be aware that these states are frequently referred to themselves as analysis, design, and implementation mechanisms. These are synonyms, and merely represent the architectural mechanisms in different states of development. The transition from one state to another can often be obvious or intuitive. Therefore, it can be achieved in a matter of seconds. On the other hand, it can also require more considered analysis and design, thus take longer. The following diagram illustrates the transition of architectural mechanisms from one state to another.

The important point here is that these categories of mechanisms apply to the same concept in different states. The only difference between them is one of refinement or detail. Refer to Architectural Mechanism for more background information. See Example: Architectural Mechanisms for a list of typical mechanisms.

The main reason for using architecture mechanisms as an approach to analysis and design is that they facilitate the evolution of architecturally significant aspects of the system. They allow the team to maintain a cohesive architecture whilst enabling implementation details to be deferred until they really need to be made.

State Machine for Architectural Mechanisms

Architectural Mechanism States


Architectural mechanisms represent key aspects of the technical solution that need to be standardized across the project. Everyone on the project should handle these concepts in the same way, and re-use the same mechanisms in their code.

Architectural Mechanisms are used to satisfy architecturally significant requirements. They often equate to technical services or framework components in the software, and form the basis for standardizing the way that the software works. Therefore, they are an important element of the overall software architecture. Defining architectural mechanisms also enables you to make decisions about whether existing software components can be reused to provide the required behavior, or whether new software should be bought or built.

The key point to understand when discussing architectural mechanisms is that defining them is all about making choices about what technology will be used to satisfy architecturally significant requirements. It is not about producing detailed design up front. This is a common misunderstanding. Creating detailed design and software that shows how specific mechanisms are satisfied is a development task.

More Information