skip to content

ArchiMate defines a fixed set of relationship types (serving, realization, assignment, access, triggering, flow, among others) with precise semantics rather than letting modelers draw generic arrows. Explain the difference between 'serving' and 'realization', and give an example of when using the wrong one would mislead a reader.

level: middleimportance: should knowfreq 45%

answer

  1. realization = concrete implements abstract
  2. serving = supports another's separate goal
  3. component realizes service, service serves process
  4. wrong relationship breaks automated queries

basics

~20 s

'Realization' means one thing implements a more abstract thing (like a component realizing a service). 'Serving' means one thing provides value or support to another that uses it (like a service serving a process). Mixing them up makes the model say the wrong thing about how pieces actually relate.

solid answer

~40 s

Realization connects a concrete element to a more abstract element it implements - e.g. an Application Component realizes an Application Service, or a Business Process realizes a Business Service. Serving connects an element to another that it provides functionality/value to, typically a service serving a process, or one process serving another. The key distinction: realization is about implementation of an abstraction (different levels of concreteness for 'the same thing'), while serving is about one element supporting a different element's separate goal. Using 'serving' where you mean 'realization' breaks the traceability chain that lets tooling say 'here is exactly what implements this service', turning a precise implementation link into a vague support link that analysis tools can't use to answer 'what would break if this component is retired'.

go deeper

for a junior

Can point to an example of a component 'providing' a service and a service 'supporting' a process, even without naming the exact relationship types.

for a middle

Correctly picks realization versus serving in straightforward cases and can explain the difference in one or two sentences.

for a senior

Diagnoses relationship misuse in an existing model and explains the concrete downstream query/analysis impact of the error.

for a principal

Establishes relationship-usage conventions and review checklists for an organization's ArchiMate models so misuse is caught before models are relied on for decommission/migration planning.

## A fixed palette, not free-text arrows ArchiMate deliberately restricts modelers to a fixed palette of relationship types, each with formally defined semantics, rather than allowing free-text or generic arrows the way informal box-and-line diagrams do. This is one of the language's core design bets: a small, well-defined relationship vocabulary is what turns a picture into a model that software can query and reason about. The relationships fall into a few families: | Family | The relationship types in it | |---|---| | structural | composition, aggregation, assignment, realization | | dependency | serving, access, influence | | dynamic | triggering, flow | | other | specialization, association, junction | Mixing them up is the most common source of models that look right to a human but return wrong answers to automated queries. ## Realization — the concrete version of an abstraction **Realization** models a strong 'implements the abstraction of' relationship: element A realizes element B when A is a more concrete manifestation of the same underlying thing B represents more abstractly. The canonical example is a service realized by the internal behavior or structure that provides it: - an **Application Component** realizes an **Application Service** (the component is the concrete software; the service is what it exposes to the outside) - a **Business Process** realizes a **Business Service** (the internal steps are the concrete work; the service is the value delivered externally) Realization is also used between a data object and the business object it represents. The defining test for realization: can you say 'A is how B actually gets done' or 'A is the concrete version of abstract B'? If yes, it's realization. ## Serving — support for a separate goal **Serving** models a different kind of link: element A serves element B when A makes itself available to, or provides functionality that supports, B's separate goals - crucially, A and B are not two levels of abstraction of the same thing, they are genuinely different elements where one helps the other. A payment-processing application service serves the checkout business process (the service supports the process's goal, but the service is not 'the same thing, more concretely' as the process). One business process can serve another (e.g. an 'Identity Verification' process serving an 'Account Opening' process). The defining test for serving: can you say 'A provides support/value that B relies on to do its own separate job'? If yes, it's serving, not realization. ## Why the distinction matters The practical distinction matters because these two relationships answer different architectural questions and tooling treats them differently: - if you ask a model 'what implements this service' (relevant to deciding what to test or redeploy during a service change), the tool walks realization relationships - if you ask 'what does this process depend on to function' (relevant to impact analysis when planning an outage), the tool walks serving relationships Confusing them makes the model return incomplete or wrong answers to whichever query type actually matters for a given decision, because the tool is querying by relationship semantics, not by arrow shape alone. ## The cost of that precision Why does the language bother with this much precision instead of one generic 'relates to' arrow? Because the entire value proposition of ArchiMate over informal diagramming is that a model with formally typed relationships can be validated, queried, and used to automate impact analysis, gap analysis, and consistency checking. A generic arrow can't be programmatically distinguished from any other generic arrow, so a tool can't tell 'this arrow means implementation' from 'this arrow means dependency'. The cost of this precision is a real learning curve: new ArchiMate modelers routinely misuse relationships, and unlike a syntax error in code, a semantically wrong-but-syntactically-valid relationship doesn't get flagged by tooling - it silently sits in the model looking plausible. ## Where the confusion bites A concrete failure mode in production practice: an architecture team migrating a monolith to microservices models the new services with 'serving' relationships to the business processes they support, but retroactively also draws 'serving' (instead of 'realization') from each new microservice to the application service it's meant to replace. 1. When leadership later runs a 'what implements our checkout service' query to plan a phased cutover, the query - correctly walking realization relationships - returns only the old monolith, because the new microservices were never actually marked as realizing anything. 2. The migration plan built on that query is wrong. 3. The team only discovers the gap when the old monolith is decommissioned and the checkout service technically has no realizer left in the model. ## Getting it right A real-world usage that gets this right: a telco modeling its OSS/BSS layer marks every microservice with a `realization` arrow to the exact application service it provides, and `serving` arrows to every business process that consumes that service, letting architects run automated 'what realizes X' and 'what depends on X' queries side by side to plan safe decommissions without manual spreadsheet cross-referencing.

  • Which relationship would you use to show that a business process 'Account Opening' relies on a separate process 'Identity Verification' completing first, and does relationship choice depend on whether it's a strict sequence or just a support dependency?
    If Identity Verification simply provides value/support that Account Opening depends on without strict ordering being the focus, use 'serving'. If the point is specifically that one triggers the other in sequence, use 'triggering' instead. The two are often combined: serving shows the dependency exists, triggering shows the order it happens in.
  • Why does ArchiMate give realization and serving visually distinct arrow styles instead of one generic dependency arrow?
    Because the relationships carry different formal semantics that automated tooling and human readers both need to distinguish at a glance - realization implies 'this is the concrete version of that abstraction' while serving implies 'this supports that separate thing's goal'. A single generic arrow would collapse two different analytical questions into one, making model queries ambiguous.
  • A modeler is unsure whether to model the link between a data object and the business object it represents as 'realization' or 'association'. Which is correct and why?
    Realization is correct: the data object is the concrete, software-level representation of the more abstract business object, exactly the 'concrete implements abstract' pattern realization is defined for. Association would be too weak/generic here, losing the specific implementation-of-abstraction meaning that matters for data lineage and traceability queries.

A power plant realizes the 'electricity supply' abstraction (it's the concrete thing that IS the supply), while that electricity service serves your house (it supports your house's separate goal of running appliances) - the plant and the service are two views of one thing, but the service and your house are two genuinely different things helping each other.

saying these in an interview costs you the question

  • Uses 'serving' and 'realization' interchangeably or can't articulate the difference
  • Draws association for every relationship because it's the generic catch-all
  • Cannot explain why relationship type choice affects what automated model queries return
  • Doesn't know that ArchiMate relationships have fixed, formally defined semantics rather than free-text meaning

context