Cookies are used for the best experience on my website.

Accept Cookie Policy

No internet detected

Check your connection and try again.

Logo Image

No match found

Buy a coffee

I launched this blog in 1995. Since then, we have published 1603 articles. It's all free and means a lot of work in my spare time. I enjoy sharing knowledge and experiences with you.

Your support

Have you learned something new by reading, listening, or watching my content? With your help, I can spend enough time to keep publishing great content in the future.

Or, select an option below:

A small slice of my data processing time each month

It's ongoing work running this site and what's really great is ongoing support. Here's a sense of what goes into this site: research topics for discussion. Manage the Tech stuff: website, SEO, graphics, email, back-end servers, DNS routing, edge servers. Create advertisements and load the campaigns in Google Ads. Manage the social media forums (Facebook, Reddit, Twitter). Write updates to the blog. Keep GitHub up-to-date.

$4.50 — A large cappuccino at my local

Things just work better with coffee! I like to take the kids to school then grab a cappuccino from my local on the way home before beginning the things that take mental energy.

$8.99 — A month of Netflix for some quiet nights in

A lot of the work on this happens after hours when I should be relaxing on the couch. Help me make it so and I promise to keep off the devices for a bit!

$11.50 — Fund a month of email delivery

This site sends out thousands of emails every month. For that volume and to ensure deliverability, I need to pay MailChimp.

$20 — Pay for one month of AWS storage fees

Websites are not free. The storage alone takes some cash. If you are willing to lighten the burden, we can keep this site up online.

$30 — One hour's pay for a graphics artist

Art doesn't create itself without a hand to guide it. I can't draw, so I need to pay others to help.

$45 — Pay a full-stack web developer for one hour

Much of the work on this site happens on weekends which means giving up time with the kids. Help me pay the developers so I can give my kids more time.

Software Architecture Metamodel Inspired by C4, Agile, and TOGAF

Useful software architecture metamodel for agile digital ⋯

Author

Nikola SCHOU


  • 1638

  • 8814

  • 7

  • 0

  • 0

Introduction and objectives 🔗

In this article, I will introduce a software architecture metamodel that I find useful for agile digital transformation of complex enterprises. The metamodel is based on ideas from TOGAF and C4 and it provides a simple yet powerful approach to the creation of software architecture models across the four architectural areas of Business, Data, System and Deployment.

If the metamodel proposed here can be used as an inspiration for other people in other companies, this article has fulfilled its purpose.

What is a metamodel? 🔗

At first, we need to agree what we mean by a metamodel and why it matters for software architects. We will start from Wikipedia on Metamodel:

Wikipedia

Here is how I like to explain it:

A (software architecture) model tells us how a given software system is intended to be created whereas a metamodel tells us how the model itself is intended to be created.

The metamodel is normally created by enterprise architects, whereas the model is created by software architects — often called solution architects. The model is often called a software architecture or solution architecture.

The following diagram depicts it.

MetaModel example

In some organizations the terminology could be slightly different, but the idea is the same.

In most places I have worked, there is no established metamodel. In fact, many people are not really aware of the need of a metamodel for software architecture, and we end up with a Babylonian mess where it is very hard to have a meaningful conversation about software architecture, because the very terminology is unclear and not agreed upon.

True, often enterprise architects are hired, but rarely have I seen them succeeding in the most fundamental part: to define the metamodel and hammer out the very language by which we even discuss software architecture.

TOGAF metamodel 🔗

To appreciate the model to be proposed later in this article, let us look at the metamodel coming from TOGAF v9.2 section 30.3:

The metamodel presented in TOGAF v9.2

Reading the diagram is challenging due to the amount of information packed into the diagram. We can make an extract of information by focusing on some of the details and leaving out others. I prefer to look at it in this way:

A simplification of the TOGAF metamodel

Even with this simplification, I find the metamodel too ambitious.

For instance, it assumes that we can really drill out concepts such as Business Service, Functions, Processes and Business Capabilities, give them all proper names, describe them and distinguish them. Next we need to relate them to each other and keep track of which processes are realized by which functions etc. I would claim that if any organization ever managed to create such an elaborate analysis of how their business operates, then the business would be either extremely simple, or the model would be understandable to only a few highly specialized architects.

I may be wrong and would be happy to be pointed to a real-world case where the TOGAF enterprise model turned out to be effective for an agile digital transformation.

Proposed metamodel 🔗

Now that we have seen the complexity of the TOGAF metamodel, let us consider the metamodel I am proposing instead:

A new proposed metamodel for agile digital transformations of large complex enterprises

The following should be noted:

  • The metamodel is spanning BUSINESS, DATA, SYSTEM and DEPLOYMENT.
  • I assume we work with a business for which the concept of Value Stream from LEAN thinking is well understood. I also assume that it makes sense to break down the value stream in business Capabilities. If this lingo does not fit with the business, some other concepts should be used here instead.
  • I assume we work under some kind of agile methodology, in which case the concepts of Epics, Stories and Actors should be clear. If this is not the case, some other concepts such as Function, Requirement and Role could fit better.
  • Stories can relate to each other in various ways. For instance, one story can be “following” another story or it could be a “specialization of” another story. These relationships can be more or less formally modelled. If this relationship is too “theoretical” it can be dropped from the metamodel.
  • I assume the entire business can be broken down into some Data Areas each holding a number of Entities. Entities can be thought of as tables of data or some other kind of clustering of data. In DDD terms it would be called aggregates.
  • The relationship between Entities can be thought of as traditional entity-relationship such as many-to-many relationships etc.
  • The relationship between System and Data Area is the idea that a system owns or uses data. This relationship is often overlooked when we are building software architecture models and this is a shame. Creating a mapping between systems (or applications) and the data they own or use is quite useful.
  • The concept of System is sometimes called Solution or Application. In the C4-model is it mostly called Software System.
  • The concept of Component is called Container in the C4 model. It represents the constituent parts of a software system such as a frontend, a backend, a database etc.
  • The self-referencing relationship for Component integration represents such things as a backend connecting to a database or a frontend calling a REST-interface on a backend.
  • Deployment Nodes can represent any concept from the infrastructure such as servers, clusters, hosts, containers, IaaS, PaaS, resource groups, subscriptions, VLANs etc.
  • The relationship between Deployment Nodes can represent any topology in the infrastructure such as a server connected to a VLAN or a host machine being part of a Kubernetes cluster.
  • The relationship between Deployment Nodes and a Component represents the deployment of a component in a running environment.

In order to understand how each part of the model is authored and how it allows the entire organization to collaborate on the model, the following diagram shows which roles would typically fill out each section of the model.

Different parts of the model are typically filled out by different roles in the organization — as shown here

How it relates to the C4-model 🔗

Finally, let us compare with the metamodel from C4. The C4 model is not normally presented as a metamodel, but if you study the c4 website you can extract a metamodel along these lines.

A metamodel inspired by the C4-model — cf. https://c4model.com

This C4-inspired metamodel has a clear overlap with the model I am proposing, with the following differences:

  • As already mentioned, what C4 calls Container, is called Component in the proposed model.
  • The proposed model does not include level 3 and level 4 in the System area (marked by red). Not because they are not useful in some cases (they are), but rather because they are mostly relevant when we are dealing with the inner software architecture of a single system. Remember that the purpose of a metamodel is to facilitate communication and collaboration across large complex enterprises and hence it is the relationship between the 4 areas (business, data, system and deployment) that really matters. If you need level 3 and level 4 from the system area (marked by red), simply add them to your model.
  • In the proposed metamodel we are adding DATA and BUSINESS as core parts of the model. C4 never intended to say anything in particular on that — which makes perfect sense given the objectives of C4. But for the purpose of creating a useful metamodel covering all needs for digital transformations, I have extended the metamodel to cover BUSINESS and DATA as well.

Architectural domains or areas 🔗

In the previous sections you probably noticed that both TOGAF and the proposed metamodel are divided into areas named something like BUSINESS, DATA etc. This division is used to create a high-level structure in the metamodel.

The following diagram shows the difference between the architecture areas covered by the proposed model, TOGAF and C4:

The architectural areas (or domains) covered by the proposed model vs TOGAF vs C4

The following should be noted:

C4 is open-ended and does not say anything particular about how to model the DATA and BUSINESS areas. I have indicated this by leaving them out of C4 in the above picture.
What is called APPLICATION in TOGAF is called SYSTEM in C4 and the proposed model.
What is called TECHNOLOGY in TOGAF is called DEPLOYMENT in C4 and the proposed model.
The lines between the boxes indicates where the model has cross-links between the areas.
In the proposed model the DATA and SYSTEM areas are like siblings instead of in TOGAF where APPLICATION is subordinated to DATA. This is important as we need to create links between stories and data and stories and systems in order to properly model and understand the interplay of business features, systems and data.
NB: The idea of architecture areas is described here on Wikipedia where it is called Architecture Domains.

Conclusions 🔗

A new metamodel has been presented with the purpose of providing a common metamodel for digital transformations of complex enterprises. In my opinion and experience, this metamodel provides a simple yet powerful way of thinking and communicating about the architecture of a large complex enterprise. It is based on commonly accepted ideas from both TOGAF and C4, but still it is quite different.

I am not claiming that the metamodel in exactly this form should be applied. Rather, that each company should understand the importance of establishing a metamodel as the foundation for digital transformations and that the metamodel should be simple enough to work in reality. At the same time, the metamodel should cover the four architectural areas of BUSINESS, DATA, SYSTEM and DEPLOYMENT.

If the metamodel proposed here can be used as a starting point for such initiatives, the objective of this article has been met.

This license allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, so long as attribution is given to the creator. The license allows for commercial use. If you remix, adapt, or build upon the material, you must license the modified material under identical terms.