skip to content

Within each ArchiMate layer, elements are classified along three aspects: active structure, behavior, and passive structure. What does each aspect capture, and how would you classify 'application component', 'application function', and 'data object' using this framework?

level: middleimportance: must knowfreq 55%

answer

  1. 3x3 core framework grid
  2. active=who, behavior=what, passive=object acted on
  3. assignment links active to behavior
  4. access links behavior to passive structure

basics

~20 s

Active structure = the 'doers' (people, systems). Behavior = the 'doing' (processes, functions, actions). Passive structure = the 'stuff acted upon' (data, documents). An application component is active structure, an application function is behavior, and a data object is passive structure.

solid answer

~40 s

ArchiMate's core framework crosses three layers (business/application/technology) with three structural aspects, giving a 3x3 grid. Active structure elements are the subjects that display behavior - actors, roles, components, nodes (e.g. Application Component). Behavior elements are what active structure elements do - processes, functions, services, interactions (e.g. Application Function realized by a component). Passive structure elements are the objects behavior acts upon - business objects, data objects, artifacts - they don't act, they're acted upon. The framework matters because it forces precise modeling: you can't accidentally model a database table as if it performs an action, and every behavior element should be traceable to the active structure element assigned to perform it.

go deeper

for a junior

Can identify basic examples of active structure (a system or person), behavior (a process or function), and passive structure (data) when given a simple scenario.

for a middle

Correctly classifies elements within a given layer and knows which relationship (assignment vs access) typically connects each pair of aspects.

for a senior

Catches misclassification in existing models (e.g. function used where service was meant) and explains the downstream analytical cost of getting it wrong.

for a principal

Defines modeling conventions/guidelines for an organization's ArchiMate practice to prevent aspect misclassification at scale, including how to certify or review submitted models.

## The 3x3 core framework ArchiMate's core is often visualized as a **3x3 grid**: three layers (business, application, technology) crossed with three structural aspects (active structure, behavior, passive structure). The layers were covered separately; this aspect dimension is orthogonal to them and repeats identically inside each layer, which is one of the language's more elegant design decisions because it means once you learn the pattern in one layer, you already know it in the other two. ## Active structure — the subjects **Active structure** elements are the 'subjects' of the model - the things capable of performing behavior: - in the **business layer** this is business actors (a person or organizational unit) and business roles (the responsibility an actor takes on) - in the **application layer** it's application components (deployable, executable software units, e.g. a 'Payments Service' microservice) and application collaborations - in the **technology layer** it's nodes, devices, and system software (e.g. a Kubernetes cluster or a database engine) Active structure elements are linked to the behavior they perform via an `assignment` relationship - a business role is assigned to a business process, an application component is assigned to an application function. ## Behavior — the verbs **Behavior** elements are the 'verbs' - what active structure elements actually do. This includes: - **processes** (ordered activity with a clear start/end, e.g. 'Handle Insurance Claim') - **functions** (grouped activity by required skill/resource, without inherent sequencing, e.g. 'Claims Validation') - **interactions** (collaborative behavior between two active structure elements) - **events** (something that happens instantaneously and can trigger behavior) - **services** (externally visible, meaningful behavior offered to an environment, e.g. 'Claim Validation Service') Services are the most important behavior element for cross-layer and cross-organization communication because they are deliberately implementation-agnostic - a consumer of a service doesn't need to know which component or which role realizes it. ## Passive structure — the objects **Passive structure** elements are the 'objects' - things behavior acts upon but which cannot themselves act: - **business layer**: business objects (e.g. 'Insurance Claim' as a concept) - **application layer**: data objects (the software representation, e.g. a 'Claim' record with fields) - **technology layer**: artifacts (deployable/storable pieces like a config file, a container image, or a database table) A data object never 'does' anything in the model - if you find yourself wanting to draw an arrow originating from a data object representing an action, that's a signal you've picked the wrong element type; you likely need a function or process instead, with an `access` relationship connecting it to the data object it reads or writes. ## Why the split exists Why this three-way split exists: many earlier and competing notations blur these categories - UML class diagrams, for instance, let a class have both data (attributes) and behavior (methods) in a single box, which is appropriate for object-oriented code but awkward for enterprise-level modeling where you often want to reason about behavior and the data it touches as separately governed concerns. Separating active structure, behavior, and passive structure lets ArchiMate express relationships like `assignment` (actor performs behavior), `access` (behavior reads/writes data, further qualified as read/write/read-write), and `realization` (a more concrete element implements a more abstract one) with precise, unambiguous semantics, which is what makes automated model analysis reliable. ## The trade-off The trade-off is that this rigor requires discipline in classification, and many practitioners new to ArchiMate misclassify elements, especially: - around **functions versus processes** (functions are non-sequential groupings by capability, processes are sequenced with clear triggers - conflating them makes traceability queries in tooling return incomplete or duplicate results) - around whether something is a **service versus a function** Getting this wrong doesn't break the diagram visually, but it silently degrades the model's analytical value: automated queries like 'what serves this business process' or 'what data does this function access' return wrong or incomplete answers precisely when they were needed for a real decision. ## A common failure mode A common failure mode in production enterprise-architecture practice: modelers under time pressure draw everything as a generic box with a label and skip picking the correct ArchiMate element type, which produces diagrams that look plausible to a human reader but cannot be reliably queried by tooling, and worse, mislead automated conformance checks such as a GDPR-driven audit tool walking access relationships from data objects tagged as containing personal data. ## Where the classification pays off A concrete real-world usage: a telecom operator building a data-lineage view for regulatory reporting models each data object (e.g. 'Customer Billing Record') and traces every `access` relationship from application functions across dozens of billing, CRM, and analytics systems, producing an accurate answer to 'which of our 40 systems touch billing PII' that would otherwise require weeks of manual system-owner interviews - this only works because access relationships were modeled with the correct read/write qualifier from the start.

  • What relationship connects an application component to the application function it performs, and what relationship connects that function to the data object it processes?
    The component is linked to the function via 'assignment' (the component performs the function). The function is linked to the data object via 'access', which can be further qualified as read, write, or read/write to show exactly how the behavior touches the data.
  • Why is 'application function' considered behavior while 'application component' is active structure, even though both sound like they describe 'the system'?
    The component is the structural, deployable unit - the thing that exists and can be assigned work, analogous to a person's role. The function is the capability or activity that component performs - the 'what it does', analogous to a job description's duties. Separating them lets you reassign the same function to a different component without redefining the capability itself.
  • A modeler draws an arrow directly from a data object to a business process, labeled 'triggers'. What's wrong with this?
    Data objects are passive structure and cannot perform behavior or trigger anything on their own - only behavior elements can trigger other behavior. The correct model would have an event (e.g. 'Claim Received') trigger the process, with the event itself possibly related to the data object via access, not the data object directly initiating behavior.

Think of a kitchen: the chef and the oven are active structure (they act), the recipe steps are behavior (cooking, baking), and the ingredients and the finished dish are passive structure (they get acted upon, they don't act).

saying these in an interview costs you the question

  • Confuses application function with application process and uses them interchangeably
  • Draws a data object as the source of a triggering or flow relationship
  • Cannot state which relationship (assignment vs access) connects active structure to behavior versus behavior to passive structure
  • Labels every element as a generic box rather than picking the correct ArchiMate type

context