ArchOps: a new paradigm for EA Toolsets

Last week I had the great opportunity to co-present at The Open Group’s October Conference in Paris, France. After Phil Beauvoir presented a summary of Archi’s history and we described the challenges of ArchiMate 3.0, I spoke about a vision for the future of Archi, EA and the ArchiMate ecosystem, taking ideas from DevOps and applying them to Archi and ArchiMate tooling. For those that weren’t with us, here is a 2nd chance…

New tools for a new EA practice

For the past 10 years, a strange thing happened: while (Enterprise) Architects used to have some of the best tools for their work, tool vendors seem to have forgotten to innovate, while at the same time, tools for Software Developers started to take off and offer some really new and exciting features. Why? How?

While I can’t speak for EA tool vendors, I can at least look at what happened in the software development domain. It seems to me that it all started back in 2005 when Linus Torvalds (yes, the same guy who created the Linux kernel) decided to create his own version control system, Git. Did Linus decide to change the world at that moment? No. Did he decide to create a whole new ecosystem for development? Again, no. What Linus did was simply to create a small piece of software for his own needs, but a free/open piece of software with some great features. Basically, what Linus created was a software version control system which allows easy creation of branches, and the ability to merge those (sometimes conflicting) branches. These simple but powerful features then became the building blocks for a powerful new toolset, which in turn laid the foundations for a whole ecosystem now known as DevOps. If I had to summarize what DevOps is, I’d say that it is a software development Capability. In short, a great mix of knowledge, processes and tools. Furthermore, most of these are open – open-knowledge, open-tools.

The GRAFICO plugin

The GRAFICO plugin for Archi

Between 2012 and 2014, there were many discussions on Archi’s Forum about how to make Archi usable in a multi-user environment. While most people tried to solve the problem using the same approach that existing commercial tools took (save the model in a database, and require user to lock part of the model to avoid conflicts) some users suggested to workaround this issue using existing tools like Git. Some early attempts proved that it was feasible, but no plugins were maintained after the initial proof of concept. That’s why in 2015 I decided to work on it with the help of Quentin Varquet. What we created then was a really simple plugin for Archi whose only goal was to save and load an ArchiMate model in a way that makes it manageable by Git, thus the name GRAFICO (Git FRiendly Archi FIle COllection). With the help of this plugin and some GitHub-like solution (e.g. GitBlit or GitBucket) I was able to work with my colleagues on the same model at the same time without any issues.

This work could have stopped at that point, but I decided to make this plugin available under a Creative Commons licence (the choice of a non really open licence was driven by the fact that too few people have donated to Archi, and that this was one opportunity to get some funding for it).

Experiment turned into crazy idea

When the experiment turned into a crazy idea

The great thing about open source is that there are always some people that think out of the box and then take your ideas and use them in an unexpected way. That’s what happened with the GRAFICO plugin. Despite being a proof of concept in beta, some people started to use it, and then shared with me this crazy idea:

Do with Enterprise Architecture what developers did on DevOps

OK, but what does this mean?

ArchOps explained

ArchOps explained

Let’s think out of the box… Ready? Go!

Imagine that there exists a solution to share an ArchiMate model. And that this solution doesn’t require you to lock in advance part of the model before you change it. Imagine that you are free to clone this model, to create branches and then to merge your work with your colleagues. Imagine that you can keep a local copy of the model, work offline and send your changes to the central model when your want (or can). Imagine that there is in fact no “central model” because you can choose to create multiple copies of this model and sync them. Imagine a toolset that allows you to create conflicting changes because it can then raise a warning, allowing your team to discuss the issues, and understand why and how they arose. Wouldn’t it be great? If your answer is yes, then you’ll be happy to know that this is what you can already do with GRAFICO and Git (the only drawback is that it requires you to have Git skills).

Now, imagine that these exact same features could be used with models saved in the Archi native file format but also the ArchiMate Open Exchange File Format designed by The Open Group. Imagine that all these features are packed in a single open-source solution that never requires you to know Git but still provides the powerful interoperability features. What you now have is a solution that can trigger some events when (part of) the model changes. What you can do from here is up to you, but what about:

  • generating a static HTML rendering of the model in order to share it,
  • exporting the model to another repository, such as CMDB,
  • automatically checking that no changes appear in the as-is/baseline branch that could affect a project branch (automatic gap analysis).

If you find it useful, then you have an idea of what ArchOps could be. But the most important is that this is not about tools, it’s about opening new opportunities for our EA work, defining new way of working.

A Boundaryless Information Flow

How to move on?

As Archi is open source, we can’t really provide a definite roadmap for this work, but the key point is that we’d really like to make all this happen in the near future. For this to happen, we are looking for passionate people that could sponsor our work and invest some time with us to discuss ideas in more details and beta-test our solution. I heard that some companies could help us but for the moment no one has really decided to do so. Do you want to be the first?


What is wrong with this picture? (TM)

If you know ArchiMate, there’s a good chance that you know Gerben Wierda‘s post series “What is wrong with this picture?”. This blog post is both a tribute to his work and an attempt to explain the importance of why you should be aware of the difference between core relations and derived ones.

In his book Mastering ArchiMate, Gerben presents several beginner’s pitfalls and especially the (bad) use of derived relations. I can only recommend that you follow his advice, and I will explain why, but let’s start at the beginning…

Core vs derived relations

When reading the ArchiMate Specification you might notice that the relationship tables contain a lot more relationships than those described in the metamodel pictures (such as this one for the business layer). The latter are the “core” relationships. In a detailed ArchiMate model, you could just use only these ones. But in real life, you will certainly have to create some high level views hiding some elements and using derived relationships.

In general, ArchiMate tools implement all of the possible relationships based on the tables in the Appendix of the specification, but don’t tell you which kind of relation you are creating, core or derived, and this may lead to problems.

Infrastructure Service used by Data Object

Today I was working on a model for a new project. For this, I used our standard pattern for a database:


This pattern basically shows a shared server which hosts several databases. In order to be able to move one database from this shared server to another one in the future without having to reconfigure applications using it, each database is accessed though a dedicated DNS alias pointing to the real server name (for those who know Oracle, we assume the service name and the port will not change).

Following our pattern, I then added some additional elements from the application layer, notably a Data Object realized by an Artifact. As I am testing the Archi 3 Early Access Preview, I played with the new Magic Connector functionality and found the following possible relationship – Infrastructure Service used by Data Object…


Wait a minute! What does “Infrastructure Service used by Data Object” actually mean? In natural language it seems to be OK because, after all, my database is managed/presented through the “DB1 (Infrastructure Service)” and therefore relies on it, so I could use it. But let’s examine this situation more closely first.

The first question to ask is whether it is a core or derived relation. That’s the easy part, the Application-Infrastructure Alignment Metamodel clearly shows that it’s not (only Realization from Artifact to Data Object is permitted). So it turns that it must be a derived relation, and we need to find it.

In order to understand what this Used By relation means, let’s start at the endpoint – the Data Object. Only a few core relationships are defined – Realization from Artifact, and Access from both Application Function and Service. A Used By relationship can only be derived from relationships having a strength at least equal to Used by, so this excludes the Access relationship.

After some time checking the Infrastructure Layer Metamodel, I ended up with the following (derived relation in blue):


“DB1” used by “Shared DB server”? Not what I intended to show, and clearly false in my case (there’s nothing on my database server that make use of the DB service).


All this came about because I used a helpful and nice feature in Archi – the Magic Connector. This can really help you a lot and shows you all allowed relationships between concepts, but it doesn’t tell you which relationships make more sense in a given context. As it is, I know ArchiMate well enough to ask such questions, but what if I were new to ArchiMate? I would have kept the Used By relationship and never have understand its real meaning, a common beginner’s pitfall.

So what can we do? As an Architect, I can make sure that I really understand what I’m doing by learning (and Gerben’s book is perfect for that). As an Archi contributor, I can suggest to enhance the Magic Connector to show me whether it is proposing a derived relation or a core one. We could also envisage that Archi could warn me when I manually create relations or reveal their nature (as with the “Show Structural Chains” option). Adding such a feature would really help a lot of Architects master ArchiMate.

Just for fun, re-examine some of your models and take 5 minutes to see how many derived relations you use, and then check their exact meaning. Do you find some strange things?