Documentation menu

Modeling with Arcadia

Arcadia is a model-based systems engineering method. It was created at Thales and is the method of Capella, the open-source modeling tool of the Eclipse Foundation. ArcLang follows Arcadia: its blocks are the levels of the method, and its element kinds are the Arcadia concepts.

This page explains the method level by level, with the home heating model of the tutorial as the example. For each level it gives the question the level answers, its main concepts, the names of the Capella diagrams of that level, and the ArcLang block and view that match them.

The idea of the method

Arcadia describes a system at five levels, from the need to the delivered product. Each level answers one question, and the method asks you to answer them in order:

Level Question it answers Main concepts
Operational analysis (OA) What do the users need to accomplish? Operational actors and entities, activities, interactions, operational capabilities
System analysis (SA) What must the system do for them? System, actors, system functions, functional exchanges, missions, capabilities, functional chains
Logical architecture (LA) How will the system work, independent of technology? Logical components, logical functions, component exchanges, interfaces
Physical architecture (PA) How will it be built? Nodes, behavior and hardware components, physical functions, physical links
End product breakdown structure (EPBS) What is delivered and bought? Systems, subsystems, configuration items

Two principles run through all five:

  • Functions and structure are separate. Each level has its own functions (what is done) and its own structure (who does it). A function is allocated to the structural element that performs it.
  • Each level realizes the one above. A system function realizes an operational activity; a logical function realizes a system function; and so on. These realization links make every element traceable to the need.

Requirements are not a level of their own: they sit beside the levels and are linked to them by traces.

Operational analysis

Question: what do the users and the systems around them need to accomplish, whatever the solution?

The operational analysis describes the world before the system exists. Operational actors are people; operational entities are organizations or existing systems. They perform operational activities, which exchange interactions. An operational capability is what they achieve together, and an operational process is an ordered path through activities.

For the heating system: the Occupant (an actor) and the Home (an entity) take a wished temperature and keep the rooms warm.

Capella diagram Shows In ArcLang
Operational Entity Breakdown (OEBD) Entities and actors in a tree operational_analysis block, actor and entity
Operational Capabilities Blank (OCB) Operational capabilities and who is involved operational_capability with involves; the cap view
Operational Activity Interaction Blank (OAIB) Activities and their interactions activity and interaction
Operational Architecture Blank (OAB) Entities and actors with the activities they perform the oab view
Operational Entity Scenario (OES) Exchanges between entities over time scenario; the es view

System analysis

Question: what must the system do for its users, seen from the outside as a black box?

The system analysis draws the boundary. The system is one box, the actors are around it, and the system functions say what the system must do. Functions have input and output ports, linked by functional exchanges. Missions are high-level goals; capabilities are what the system can do to serve them. A functional chain is an ordered path through functions, often with a latency budget.

For the heating system: measure the room temperature, take the set temperature, decide the heating demand, drive the burner; the chain Reading to burner must take at most 2 s.

Capella diagram Shows In ArcLang
Missions and Capabilities Blank (MCB) Missions, capabilities, actors involved mission, capability; the cap view
System Data Flow Blank (SDFB) Functions and functional exchanges function, functional_exchange
System Function Breakdown (SFBD) Functions in a tree functions nested in functions
System Architecture Blank (SAB) The system, actors, allocated functions and exchanges system_analysis block; the sab view
Functional chain description The steps of a chain, with branches functional_chain with involves, control and sequence
Exchange Scenario (ES) Messages between the system and actors over time scenario; the es view

Logical architecture

Question: how will the system work inside, without choosing technology yet?

The logical architecture opens the box. Logical components split the system; each performs logical functions that realize the system functions. Components are linked by component exchanges through their ports, and can provide or require interfaces. This is where architecture trade-offs are made: which component does what, and what passes between them.

For the heating system: a Thermostat, a Heating controller and a Burner unit.

Capella diagram Shows In ArcLang
Logical Component Breakdown (LCBD) Components in a tree component nested in component
Logical Data Flow Blank (LDFB) Logical functions and their exchanges function in a component, functional_exchange
Logical Architecture Blank (LAB) Components, allocated functions, component exchanges logical_architecture block; the lab view
Capability Realization Blank (CRB) Capabilities realized at this level capability_realization

In ArcLang, a function written inside a component is allocated to it, and realizes: names the system function it realizes:

allocation.arc
system_analysis "System Analysis" {
  function "Decide the heating demand" { id: "SF-DECIDE" }
}

logical_architecture "Logical Architecture" {
  component "Heating controller" {
    id: "LC-CTRL"
    function "Compute the demand" { id: "LF-DECIDE" realizes: "SF-DECIDE" }
  }
}

Physical architecture

Question: how will the system be built, with what hardware and software?

The physical architecture chooses the technology. Nodes (Capella's node physical components) are hardware: boards, computers, devices. Behavior components are the software or logic that runs on them, and perform physical functions. Nodes are connected by physical links (cables, buses, radio). In ArcLang, a node deploys the logical components it hosts, and a behavior_component written inside a node is deployed on it.

For the heating system: a Wall thermostat and a Boiler control board, linked by a radio link.

Capella diagram Shows In ArcLang
Physical Component Breakdown (PCBD) Physical components in a tree node, behavior_component, hardware_component
Physical Data Flow Blank (PDFB) Physical functions and their exchanges function in a behavior component
Physical Architecture Blank (PAB) Nodes, deployed components, physical links physical_architecture block; the pab view
Physical path description A route over several links physical_path

End product breakdown structure

Question: what exactly is delivered, bought or manufactured?

The EPBS lists the products: systems, subsystems and configuration items, each with a part number and a supplier if needed. A configuration item realizes the physical elements it contains.

Here is the EPBS of the heating system, added to the tutorial model with an import:

heating_epbs.arc
import "heating.arc"

epbs "EPBS" {
  system "Home heating kit" {
    id: "EPBS-KIT"
    subsystem "Controls" {
      id: "EPBS-CONTROLS"
      item "Wall thermostat" { id: "EPBS-THERMO" part_number: "TH-200" }
      item "Boiler control board" { id: "EPBS-BOARD" part_number: "BC-10" }
    }
  }
}

trace "EPBS-THERMO" realizes "PN-WALL"
trace "EPBS-BOARD" realizes "PN-BOARD"
Capella diagram Shows In ArcLang
EPBS Architecture Blank (EAB) Configuration items and their content epbs block; the pbs view
Configuration Items Breakdown (CIBD) Configuration items in a tree system, subsystem, item

Transverse diagrams

Some Capella diagrams belong to no single level. ArcLang has the same concepts:

Capella diagram Shows In ArcLang
Class Diagram Blank (CDB) Classes, data types, exchange items class, enumeration, data_type, exchange_item; the cdb view
Mode and State Machine (MSM) Modes, states and transitions state_machine; the msm view
Requirements (add-on) Requirements and their relations requirements; the req view

Draw every view

arclang diagram draws every view the model has, in one HTML file that needs no network:

$ arclang diagram heating_epbs.arc -f html -o heating.html
✓ oab — 4 nodes, 2 edges
✓ sab — 6 nodes, 3 edges
✓ lab — 7 nodes, 2 edges
✓ pab — 5 nodes, 1 edges
✓ cap — 10 nodes, 9 edges
✓ pbs — 4 nodes, 3 edges
✓ req — 9 nodes, 6 edges
✓ par — 9 nodes, 4 edges
✓ gv — 14 nodes, 5 edges
✓ iv:Operational Analysis — 2 nodes, 0 edges
✓ afv:System Analysis — 8 nodes, 5 edges
✓ iv:Logical Architecture — 3 nodes, 2 edges
✓ iv:Physical Architecture — 2 nodes, 1 edges
  Output: heating.html

The view codes in the output are the ones used in the tables above. A diagram declaration names a subset of a view, as a Capella user names a diagram: see Diagrams. In the workbench, each view has its palette, and each level of the layer bar opens the sheet of that level.

Traces between levels

Arcadia realizations become realizes traces in ArcLang (or the realizes: attribute of a function or capability). A realization goes from a lower level to the level above it: SA to OA, LA to SA, PA to LA, EPBS to PA. Both ends must exist, or the build stops. The other trace kinds (satisfies, implements, allocates, refines, derives, validates) link the architecture to requirements and to tests. The metamodel lists which elements each kind may link.

Exchange with Capella

ArcLang reads and writes Capella projects: arclang import -f capella reads a Capella 6 or 7 project with its diagrams, and arclang export -f capella writes the .capella, .aird and .afm files of a Capella 7 project.

arclang import -f capella "My model.capella" -o my_model.arc
arclang export -f capella my_model.arc -o out/my_model.capella

The Capella page says what each direction carries, what it leaves out, and how the round trip keeps Capella's identifiers.

Next

  • Model the same system with the concepts of the SysML v2 standard.
  • The language tour gives the syntax of every Arcadia concept, level by level.

Every ArcLang sample on this page is compiled, and every command is run, with the released compiler when the site is built.