Although the importance of architecture and the role of the architect in the digital-first initiatives we are living in today in the different business domains and industries, the architecture’s main vocabularies and terminologies are still not well understood due to non-acceptable widely used definitions and the different perspectives of each terminology.
In this article, I would like to deep dive into one of the fundamental vocabularies in the architecture which are around the models and modeling process, then explore the different perspectives and definitions of them. Moreover, highlight my perspectives and my agreement to the other experienced authors and architects. First, let us start with the model.
What is the Model?
The model as a noun in the dictionary means “a thing used as an example to follow or imitate”
It is a simple presentation of a complex or bigger thing, we usually see, car drawing models, city models, building models, airplane models, …etc. Notice the below images that present several models in the real world.
Why do we model?
Modeling a complex structure or thing in a simpler copy of it, has great benefits, for example, the below benefits:
- Communicate: it is used to describe that complex thing to a different audience in a simple way, so instead of each participated person have different imaginations or perspectives about that thing, they can see it
- Feedback: After seeing the model of complex things, that will derive the discussion around it, why it looks that way, why this component is placed here, we missed this concern, …etc. Also, this can open the alternative architecture, design, model discussions.
- Fail fast: if the model does not represent the complex thing, you will know that immediately and this will decrease the cost of failure
- Consensus: all the concerned stakeholders will have a single or maybe multiple visualizations of the complex thing, this will lead to agreement and building the complex thing easier
Similarly, the model of an enterprise, a system, a solution, a software, a component, or a class in a digital world is a simple presentation of how the complex things can be visualized easily to different stakeholders to understand it and agree on how it will be structured. Moreover, the good model should fulfill its purpose, understandable, unambiguous, simple, and consistent. So, let us explore some definitions of information technology architecture.
“A model is an abstract or simplified representation of some aspects of an architecture, the purpose of which is to communicate those aspects of the system to one or more stakeholders.”Software System Architecture
“Architecture representation implies the use of models, architectural models. But what is a model? M is a model of S if M can be used to answer questions about S, where S is the system under consideration.”Software Architecture Knowledge Management: Theory and Practice
“An architectural model is an artifact that captures some or all of the design decisions that comprise a system’s architecture”Software Architecture: Foundations, Theory, and Practice
“A representation of a subject of interest. A model provides a smaller scale, simplified, and/or abstract representation of the subject matter. A model is constructed as a “means to an end”. In the context of enterprise architecture, the subject matter is a whole or part of the enterprise and the end is the ability to construct “views” that address the concerns of particular stakeholders; i.e., their “viewpoints” in relation to the subject matter.”TOGAF
So, starting from business to information technology, all domains can be modeled. The business domain can be modeled by different elements, for example, organization structure, organization capabilities, services and products, processes, …etc. The process itself is modeled to be understood, for example, the software development process models, each model has different characteristics that describe the process model in theory that affect and govern the process in implementation mode.
There are a lot of keywords that associated with the model that make its understanding more complex, for example, domain model, design model, canonical model, views, viewpoints, perspectives, visualizations, static vs dynamic, descriptive vs prescriptive, meta-model, meta-meta-model, and others that present various perspectives.
We will not go through all of these associated keywords in this article, while to make it easier to understand, I will illustrate an analogy with the building architecture.
As we highlighted previously that the model is a set of design decisions that the stakeholders agree about to govern how the end product should be and how it should perform. This still applies for the building architecture, do I need the building to a Villa or a skyscraper, the building facilities, footprint, landscape area, ventilation, …etc.
Each decision will affect the building architecture, as a consequence, it will affect how this building will be modeled. Each decision is a concern or group of concerns that we cannot present all of them in one single presentation, unless you will not be able to see anything and it will be a blurred image with many overlapped layers.
Imagine you see all the building isometric views (Top – Side – Front) in a single view, is it applicable? What if, we would like to present the ventilation, electricity, plumbing, wall structure, and floor plan in one single presentation? Is it still applicable?
It is important to have the full picture but it is more important to visualize each stakeholder his/her concerns according to his/her role, some stakeholders may need to see other overlapped and connected views, they can still see that, but when they need while mainly each one should focus on his/her concerns first, then see the implications of these concerns to other stakeholders concerns. So, the view is a projection and visualization of the subset(s) of the model to focus on a specific or group of concerns.
Moreover, the model and its presentations need to be validated to ensure that concerns from its static shape or dynamics. The static mainly refers to its steady-state presentation, the dynamic refers to its behavior to ensure the qualities of how this static presentation will perform and ensure we built the right thing.
Now, after going through the model, It is easier to illustrate the meta-model
So, What is the meta-model & meta-meta-model?
In the English language, the meta refers to a concept as an abstraction to define another concept to describe it, for example, metadata is known as the data that describes or about the data.
Similarly, the meta-model is a model that describes the model “I know that this does not explain anything :)”
A meta-model is an explicit model of the constructs and rules needed to build specific models within a domain of interest, it is a model at the end but governs how the system or domain of interest will be modeled. Let us explore some definitions and examples in the next sections.
“A model that describes how and with what the architecture will be described in a structured way.”TOGAF
“Metamodeling, or meta-modeling, is the analysis, construction and development of the frames, rules, constraints, models, and theories applicable and useful for modeling a predefined class of problems.”OMG
“A metamodel or surrogate model is a model of a model, and metamodeling is the process of generating such metamodels. Thus metamodeling or meta-modeling is the analysis, construction, and development of the frames, rules, constraints, models, and theories applicable and useful for modeling a predefined class of problems.”Wikipedia
“A meta-model typically defines the languages and processes from which to form a model.”
I think the below image should illustrate the concept here, the system we are concerned to build as we agreed before it should be presented by a model that can be viewed in different ways according to the priorities of stakeholders concerns, for example, development view, deployment view, …etc. This model is governed by a meta-model that describes how to build this model
So, meta-meta-modeling is an activity, and this activity produces meta-models, and the meta-meta-model is the language that express the meta-model.
Below are two examples of the meta model, the first one adopted from Software Architecture: Foundations, Theory, and Practice book from IEEE/IEC WD4 42010 that presents the relationship of architecture and how its created and related to other aspects of the architecture, as we can see below it is a model visualized in boxes and lines
Similarly, the below image has been adopted from TOGAF standards for Enterprise Architecture which presents the core content meta-model.
So, imagine that you would like to create a modeling software that need to create models of software architecture or enterprise architecture, if you would like to align with the meta-model standards, you should follow the rules that governs the relationships between the different classes of the model that described in the meta-model definition.
Finally, the below image shows an example of the 3 concepts together, where the meta-meta-model is describing the meta-meta-model of the object. To define an object, it needs to belong to a class that models the object and its methods and attributes, each one attribute, method, or class types are actually an object at the end of its meta-model that describes the relationship of the class with the attributes and methods. Then to define each attribute, it is also an object that conforms to the meta-meta-model.
I hope if this image clarifies the three concepts 🙂
Practically, you may need to know the concepts but usually, you do not need to bother yourself with the underlying meta-models when you are modeling an architecture of a system. The concepts that you will need while delivering the architecture are mainly the ones that will be presented to the stakeholders which are the model views and perspectives to validate their concerns and make sure they have been met in the architecture model.
If you enjoyed reading the article, please share with and leave a comment if you need any further information.
Also published on Medium.