For computer and the applications, software engineering, enterprise engineering (e.g., Enterprise Architecture), and so on, “architecture” is a very popular but often ambiguous buzzword nowadays. It seems often to be confused with the concepts such as structure or framework, planning or blueprint, approach or methodology, the processes of implementation, construction, and reengineering, and so on. It can be seen that, however, there are certain reasons to having this term.
First, it is some thing about some artificial systems—relevant to their main or key feature or style, design or structure/organization, also the design process and construction (including implementation and changing/reengineering)—it is meaningless to an un-artificial system.
Second, the systems we talking about architecture for are usually complex although a simple system is also able to (maybe not necessary) have some architecture, in principle.
Third, the complexity causes a huge (possibly open) optional space to the design and construction, this requests certain principles and ways to restrict and reduce the possibility of choice and to control the complexity in the processes to the design and construction of a system. The complexity is also causes the necessity of the reuse of our work in design and implementation for such as structures/constructs, components, resources, tools, etc., also procedures and methods.
It appears that many of the explanations to concept of architecture are indeed in above scope but it not enough yet to convince me that the concept/term architecture is necessary until understanding the next reason–
Fourth, there are close relationships between the What (the feature or style in the functionality, structure/organization, and/or appearance of characteristics) and the How (the methods, resources, and tools to the processes of the design, implementation, and reengineering, which are related with certain elements of the What) of a complex system; it is meaningless to talk (create, choice) about them without each other. This is the point to that why we must have the concept/term “architecture”. On the other hand, as mentioned in the third, there may be many of the possible relationships; it is necessary to have some principles and restrictions for/to the choice.
Further, two general architectural principles are raised here:
- Principle to the relevance of a design and the implementation—the choices of a design (about such as the components and the structure) must be subject to the requests and restrictions of possible (economic) methods and means, including resources, tools.
- Principle to the reuse and sharing (maybe refer to as commonality)—the design and implementation should be, as far as possibly, based on the common components or constructs, also methods, procedures, resources and tools, which are able to be shared and reused, and have clear applicable conditions and proven reliability.
The two (What and How) and the two principles should be reflected in any architecture though they are not the all elements for an architecture. Based on the understanding above, we can analysis the various definitions of architecture more clearly. For example, ISO/IEC 42010:2007 defined “architecture” as:
The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
It clearly appears above aspects: the what (The fundamental organization of a system, embodied in its components, their relationships to each other and the environment); the how (the principles governing its design and evolution). Based on the discussions above, we should be know that, the “principles” must be related to the former elements (the fundamental organization…), at least, for a well-designed or strong architecture.
In addition, in the context to an architecture, the goal is building a system, so, the first aspect in concerns is the What; the How is depended on also restricting the What. Some times, an architecture may only be shown on the one aspect because the elements on the other aspect will be naturally specified without demonstration, i.e., it is self-evident. Obviously, that is not in violation of above principles.
The corresponding Chinese version at http://www.ee-forum.org/pub/ty/2011-01-p2398.html
Version on 24 Aug, 2013