Reusable Ideas and Archimate in Practice

Communicating an enterprise (or solution) architectural vision to a group of business stakeholders is a non-trivial activity. This is due to several reasons

  • The architecture is attempting to bridge the IT/ business divide
  • There may be significant pre-existing positions and points of view that need to be overcome to ensure a successful adoption
  • Often the concepts that the enterprise architecture is attempting to communicate are esoteric, ethereal or just plain old complicated

Pictures and diagrams help a lot, and a common language or set of symbols improves matters greatly- I am currently using Archimate in Visio to create these diagrams and it seems to work fairly well. But the real challenge comes in dividing up the diagrams to uniquely convey a single point that can be re-used.

What exactly do I mean by this? Well, for a number of years the IT world has attempted to create reusable objects of code- first in procedural functions, then in object oriented programming, now as web services. Whatever technique was used the idea was the same: Invent once, reuse many times. It can be debated how successful this has been, personally I can point to at least a couple of successes where I created or used existing web services and many, many times where the reuse was difficult orĀ  flat out impossible. As we move into ‘higher’ areas with tighter turnaround times, the need to create reusable things becomes ever more important.

I have given up counting the number of times I have read documents created in the business environment that simply consist of cut and paste from other documents. Now that is fine if the purpose of the two documents is exactly the same and the idea that is being conveyed is exactly the same (though this does then beg the question, why are you recreating the same document again? But that is a discussion for another time and place) but most times the purpose of the document is different. At this point you need ‘atomic ideas’: Atomic ideas are difficult to create in words, but diagrams that convey a single point are slightly easier to create as long as you don’t try to overload the picture.

And this is where Archimate starts to come in: It is a rich language and set of symbols that can describe a wide range of architectural scenarios- this is good as the typical enterprise that is attempting to create an enterprise architecture is a complex beast. However, the very richness available through Archimate means that, very much like the UML that it is largely based on, it is very easy to confuse the message a diagram is trying to show by adding in more and more details or fogetting to be entirely consistent in what types of objects you associate on a single diagram.

The rigour necessary to create these truly reusable diagrams can be implemented in a tool- if it creates a set of underlying data, rather than just creating the diagrams. This is what I mean by ‘architecture by model’ as opposed to ‘architecture by diagram’: In a model a Component ‘knows’ that it can connect to another component, it can be accessed by a role or an actor but, for example, it is not possible to connect a component to a department.
Unfortunately, most of the time the reason for creating the diagram is to communicate. And in order to communicate we overload the diagram to help explain things. This would be fine if the diagram were built up of these atomic ideas- the idea could be reused in many diagrams, and a different view on the same set of data would allow the atom to be used for different purposes. But if you are truly creating a diagram then you aren’t using atomic ideas, you are creating a complete picture.

I just think that most people don’t think in terms of atomic ideas: making people think inside a rigorous, formal structure is difficult. Maybe it is because thinking in this way requires a large learning curve and needs you to leave your preconceptions at the intellectual door or maybe most people just aren’t wired in such a structured way. I don’t know what it is, but the ability to create and then use fundamental ideas as part of a structured system is going to be crucial if we are able to build consistent, stable solutions. Archimate helps in this matter, as does UML, but the real leap is an intellectual one: We need (as an IT profession) to be able to create atomic ideas that can be reused as fit for purpose communication to all interested parties (and even a few uninterested ones too) until then we will be stuck doing things by diagram instead of by model.

Archimate: A language for Architects

A large part of the role of a Solution Architect is to communicate the sometimes abstract ideas in a computer system to business users, technical experts and often times just to yourself. I am a visual guy; I like pictures. There are many, many languages and diagram formats that can be used for different levels of detail in an IT system: ER diagrams for the data part, UML class diagrams for the class model, use cases, component model, node model, deployment diagram etc.

Except that often as a Solution Architect I do not work at this level of detail: I am trying to extract what business information a user needs, where reports are generated and what processes access the various pieces of information. ER diagrams don’t really work, UML class diagrams aren’t what I need either. I kind of need an extension of UML and hard as looked I couldn’t find anything…..

Until I started working in the Netherlands (damned clever, these cloggies) and came across Archimate. I am using it on a number of projects to create solution and domain (small scale enterprise) architectures. And so far it seems to be a damned good idea. I have heard rumours and rumblings that it will soon be adopted by the Open Group so that it will be a language extension to UML- we’ll just have to wait and see on that front.

The only downside is that so far I can only use Archimate in Visio, so I am doing ‘Architecture by diagram’ rather than ‘Architecture by model’. In the not too distant future I hope to start using System Architect to do the architecture work- and SA is probably the best tool out there for this kind of work, does have a true model behind it (thus allowing true validation of what you construct) and it should be possible to set it up to use Archimate as the language.

This may make my life harder in the short term as I learn a new language, get re-aquainted with a tool and fight to meet deadlines; but in the long run this is a good thing. Storing a true model is far, far better than any set of diagrams.