IT Architecture languages
UML, C4 and ArchiMate all three can be used for visualizing IT Architecture. This does however not mean that they are equal. Each of the languages was designed for a specific need.
UML originated in 1994 because there was a need to describe object-oriented software. In 2006 the need for more structure than the UML arrows and boxes resulted in the C4 language.
In 2002 ArchiMate development started because of the need for a language to describe an enterprise.
From an ArchiMate perspective C4 defines a number of viewpoints.
UML
The Unified Modeling Language (UML) was designed to be a general-purpose modeling language for visualizing system design. It provides a language for many types of diagrams including behavior diagrams, interaction diagrams, and structure diagrams.
UML is said to be decreasing in popularity (source: Google Trends) but the language being around for more than 30 years and it's general-purpose nature make that it's use is still widespread.
UML Diagrams
UML provides language for many types of diagrams. The model below shows the two major groups: behavior and structure. Where behavior contains a third group named interaction.

Who uses UML?
As mentioned, the use of UML is widespread. Activity Diagrams are well known for visualizing system flows. Within software development these diagrams are often used:
- use case diagrams, for interactions between actors;
- class diagrams, for class relationships, attributes and methods;
- sequence diagrams, for a sequence of messages between participants.



C4
The C4 language was designed to be easy to learn and developer friendly. It reaches that goal by focussing on clarity and simplicity.
From the C4 documentation:
A software system is made up of one or more containers (applications and data stores), each of which contains one or more components, which in turn are implemented by one or more code elements (classes, interfaces, objects, functions, etc).
The four emphasized words in this one sentence correspond to the four static structure diagrams that define the core of C4.
- (system) context diagram
- container diagram
- component diagram
- code diagram
Additionally there's three more diagrams:
- system landscape diagram
- dynamic diagram
- deployment diagram
But that's it. Simple to use and easy to learn.
C4 elements

Who uses C4?
C4 being specifically designed for software architecture it is mainly used by solution and software architects. Security and enterprise architects tend to choose for ArchiMate instead because of the limited C4 set of elements.
ArchiMate
From the three languages in this post, UML defines more than 100 elements. C4 is a lot simpler with no more than 10 elements. The 3.2 Specification of ArchiMate counts around 60 elements.
One of the ArchiMate design goals was to make ArchiMate 'as small as possible' and not to cover every possible edge case. When describing something as large as an enterprise, 'small' has relative meaning. Compared to C4, being able to model with 60 elements divided over six layers allows for much more aspects.
The image below however is really brief and shows the full ArchiMate framework.

Who uses ArchiMate?
ArchiMate was designed to model an enterprise which makes it the obvious choice for Enterprise Architects. In a team of architects the language allows for clear communication between the layers that the ArchiMate framework defines.
As there are many architect roles, this paragraph evolved into a separate post. More on how architect roles map to the ArchiMate layers in the post below.

- Jacco Meijer
- |
- Mar 18, 2025
Architect roles in the ArchiMate context
An ArchiMate model that maps architect roles to the ArchiMate framework layers.
ArchiMate Elements
The list below gives an impression of the wide range of ArchiMate elements and what they are used for.
Motivation elements
Motivation elements are at the core of the ArchiMate language. These elements guide the design of an enterprise and answer to the 'Why' in the Zachman framework.
For example, strategy elements can influence goals. Another example is a business or application element that realizes a principle or a requirement.

Strategy elements
Contrary to business and application elements, strategy elements do not define a service or an interface element. This is because the abstraction level of the strategy layer is higher than the business layer.
A capability, for example, can serve a value stream and a resource can be assigned to a capability that realizes a goal in the motivation stack.

Business elements
Business elements model the operation of an enterprise.
These elements can be used to describe how e.g. a customer role relates to a business service, how a work processes relates to a service on the application layer or to e.g. detail the steps a business process.

Application elements
Application elements model applications and information. The main active structure element is the component.
A function for example can be used to describe how a data object is accessed. With a component assigned to the function the software component that provides the function can be expressed. Interfaces and services are often used to connect functions and components to business elements.

Technology elements
Technology elements model technical infrastructure. The main active structure element is the node.
A service is often modeled to serve a function on the application layer and a node typically connects to a network element which could connect to e.g. a device. Functions can be used to e.g. model data replication.

Implementation and Migration elements
Implementation and migration elements are used for programs and planning.
An event could trigger a work package which could then realizes a deliverable.

Relationships
ArchiMate defines structural relationships as shown in the first diagram below. The second diagram shows dependency relationships and the third diagram shows dynamic relationships. The last group with the Specialization relationship is named 'other'.



C4 compared to ArchiMate
C4 can be seen as a subset of ArchiMate, the C4 diagrams can be expressed with the Archimage viewpoint concept. Depending on how you look at it, the C4 elements can be mapped in a couple of ways to ArchiMate elements.
System
The C4 system element is described as something that delivers value to users which could map to the ArchiMate value stream on the strategy layer. C4 also defines a system as something a single software development team is building. The ArchiMate application function or application component would then be a better fit.
Container
The C4 Container element is described as something that needs to be running for the system to work. The ArchiMate application component could be used to express this.
Component
The C4 documentation states that a Component is a hugely overloaded term. And of course, the word component can be used in many different ways. C4 defines it as grouping of related functionality encapsulated behind a well-defined interface. This could be an ArchiMate application component or application service. The well-defined interface can be modelled separately in ArchiMate by using the application interface.
Code
The C4 element Code is hard to model in ArchiMate. The application component can be used to express a software library and the data object can be used, but concepts like classes, attributes and methods are not available. The application component can be used for this if you really have to, but UML and C4 are a much better suited for this.
Application Component
Simply put, all C4 elements can be modeled with the ArchiMate application component. It makes clear how C4 and ArchiMate differ. C4 defines four sizes of application components whereas ArchiMate has nine different application elements like interface, function and service that can be used to add more detail.
Besides the application layer, ArchiMate defines five other layers and has motivation elements.
Structure as code
All three languages have structure as code equivalents of which PlantUml is the most popular. PlantUml can be extended to support the ArchiMate and C4 languages by using macro libraries.
PlantUml uses sequential text scripts to model a diagram. Because PlantUml sequence diagrams and text scripts share the same sequential nature sequence diagrams can conveniently be modeled with PlantUml.
For other diagrams and especially when modeling ArchiMate a platform like Bizzdesign Horizzon with integrated collaboration capabilities, comes highly recommended.