- Software architecture is the highest expression of technical achievement.
- It is the shape applied to a system by the person who built it.
- The purpose of this shape is to make development, deployment, operation, and maintenance of that software system easy.
The strategy to achieve this is to preserve as many options as possible for as long as possible.
- Architecture does not directly affect runtime behavior.
- The main purpose of architecture is to support the system life cycle.
- The ultimate goal is to minimize lifetime cost and maximize developer productivity.
In the early phase, architecture is often seen as an obstacle to implementation. That is why many systems seem to have no architecture. When teams are small and do not yet need a rigid structure, architecture tends to be absent from the start.
-
Team-scale architecture is not always the best for deployment, operation, and maintenance.
-
Under schedule pressure, teams are likely to end up with such architecture anyway.
-
The purpose of software architecture is to make the system deployable in a single action.
-
Architecture clarifies how operation should be done.
-
The architect’s role is to define the shape of the system while deciding details as policy-independent, and recognizing policy as the most important system element.
