Skip to content

Implementation layer

The question this layer answers

What is it built from?

The implementation layer is where technology commitments live, and the only place they live. The logical layer said what blocks exist; this layer says what each one is made of: software, hardware, or the user interface that people touch. Each element here realises something in the logical design.

Namespace: memo::architecture::implementation · Source: src/architecture/implementation/

Key elements

Software. IEC 62304 calls any identifiable part of a program a software item, and it decomposes software item by item. MEMO's base for that concept is SoftwareElement. It is named so because SysML reserves item for things that flow, which is what MEMO's DataItem is: software data or content that is stored or exchanged. Software is described in two views:

  • The module view (IEC 62304 5.3 to 5.4): SoftwareSystem is the top, and SoftwareModules are the code units with design responsibility. Algorithm, DataModel and ConfigurationArtifact describe what they contain. An SBOMEntry records a component in the software bill of materials.
  • The runtime view: a SoftwareComponent is a runtime component, with its concurrency, scheduling, health monitoring and fault containment. Its runtimeKind says what kind: a process, thread, task, service, container, partition, data store, or message broker.

Hardware. PhysicalElement is the root of a physical taxonomy: PhysicalAssembly and PhysicalSubassembly, HardwareAssembly, PhysicalComponent and HardwareComponent. Below them are electrical and electronic parts (PowerSupply, Battery, Cable, NetworkMedium), fluidic and pneumatic parts, mechanical parts and enclosures, optical, acoustic and thermal components, and the Sensors and Actuators that meet the physical world.

User interface. A UserInterface is what the user operates. A UIElement is one element of it, such as a banner or a button. A UIElement is a software element. A UIAction is an operative action, because clicking a button has a trigger, a precondition, a criticality and a potential harm, just as turning a knob does. UIState and UIEvent describe the interface's behaviour. An InteractionFlow is a reusable dialogue structure through the interface; one path through it is an OperativeScenario of kind ui. ScreenCapture and RegionBounds tie the model to real screen layouts.

How it connects

Within the layer. A UI element triggers a UI action (ElementTriggersAction). A screen capture shows a UI element (CapturesScreen). A SOUP item (IEC 62304's software of unknown provenance) is a SOUPSoftwareModule; an OTSSoftwareModule is the off-the-shelf kind of SOUP and adds the license, package URL and checksum. Any element can depend on a SOUP software element (DependsOnSoup).

To other layers and disciplines:

  • It realises the logical design. An implementation element is linked to the logical element it realises with #refinement dependency, written as <realizing> to <realized>. See Logical.
  • UI actions carry out functions: a UIAction performs a function. See Functional.
  • Interaction serves use: an interaction flow serves a use case (FlowServesUseCase), and the interface supports operational tasks with a native dependency. See Operational.
  • It is where controls are built. A risk control is implemented by an implementation element (ControlImplementedBy), and a use error happens at an element (ErrorAtElement). See Safety and risk and Human factors.
  • It is deployed in the realization layer. Modules build into deployment units (BuildsInto), runtime components bind to memory (MemoryBinding), and exchanges bind to a network medium (ConnectionBinding). See Realization.

In the running example

The bedside display carries the alarm banner. The banner triggers the acknowledge action, which performs the detection function. A native dependency records that the display supports the nurse's acknowledgement task.

part uiBedside : UserInterface {
    @MemoIdentity { :>> providedId = "TA-UI-001"; :>> label = "BedsideDisplay"; }
    attribute :>> modality = "visual + audible";
}
part elAlarmBanner : UIElement {
    @MemoIdentity { :>> providedId = "TA-EL-001"; :>> label = "TempAlarmBanner"; }
    attribute :>> alarmPriority = NotificationPriorityKind::high;
    attribute :>> annunciationModality = "flashing banner + tone";
    attribute :>> silenceable = true;
}
action uiaAcknowledge : UIAction {
    @MemoIdentity { :>> providedId = "TA-UIA-001"; :>> label = "AcknowledgeAlarm"; }
    attribute :>> intent = InteractionIntentKind::acknowledgement;
    attribute :>> confirmationRequired = true;
    perform fnDetectDeviation;
}
connection : ElementTriggersAction connect element ::> elAlarmBanner to triggeredAction ::> uiaAcknowledge;
// Was `Supports`, a zero-attribute duplicate of both `Enables` and the
// native `dependency`.
dependency from uiBedside to actAcknowledgeAlarm::taskAckAlarm;

The full inventory

Generated from src/architecture/implementation/.

Elements

Hardware

Element SysML kind What it is
PhysicalElement (abstract) part def Physical element definition specializing MemoPart.
PhysicalAssembly part def Physical assembly definition specializing PhysicalElement.
PhysicalSubassembly part def Physical subassembly definition specializing PhysicalAssembly.
HardwareAssembly part def Hardware assembly definition specializing PhysicalAssembly.
PhysicalComponent part def Physical component definition specializing PhysicalElement.
HardwareComponent part def Hardware component definition specializing PhysicalComponent.
AcousticComponent part def Acoustic component definition specializing PhysicalComponent.
ThermalComponent part def Thermal component definition specializing PhysicalComponent.
ElectricalComponent part def Electrical component definition specializing PhysicalComponent.
ElectronicComponent part def Electronic component definition specializing PhysicalComponent.
PowerSupply part def Power supply definition specializing ElectricalComponent.
Battery part def Battery definition specializing ElectricalComponent.
Cable part def Cable definition specializing PhysicalComponent.
PhysicalConnectorPart part def Physical connector part definition specializing PhysicalComponent.
NetworkMedium part def Network medium definition specializing PhysicalComponent.
FluidicComponent part def Fluidic component definition specializing PhysicalComponent.
PneumaticComponent part def Pneumatic component definition specializing PhysicalComponent.
MechanicalPart part def Mechanical part definition specializing PhysicalComponent.
Enclosure part def Enclosure definition specializing MechanicalPart.
OpticalComponent part def Optical component definition specializing PhysicalComponent.
Sensor part def Sensor definition specializing PhysicalComponent.
Actuator part def Actuator definition specializing PhysicalComponent.

Software

Element SysML kind What it is
SoftwareComponent part def Software component definition specializing SoftwareElement.
OTSSoftwareComponent part def A runtime service or process that exists only because an OTS module is deployed. Optional: a library the product links normally needs only the module.
SoftwareElement (abstract) part def Software element definition specializing MemoPart.
SoftwareSystem part def Software system definition specializing SoftwareElement.
SoftwareModule part def Software module definition specializing SoftwareElement.
Algorithm part def Algorithm definition specializing MemoPart.
DataModel part def Data model definition specializing MemoPart.
ConfigurationArtifact part def Configuration artifact definition specializing MemoPart.
DataItem (abstract) item def Data item definition specializing MemoItem.
SOUPSoftwareModule part def Soupsoftware module definition specializing SoftwareModule.
OTSSoftwareModule part def Otssoftware module definition specializing SOUPSoftwareModule.
SBOMEntry part def An SBOM is a document; its entries are inventory records. An entry names one software element and says what is known about it as shipped. Vulnerabilities, anomalies and risks are separate objects that point at the entry; they are not attributes of the document.
SoftwareBillOfMaterials part def Software bill of materials definition specializing MemoPart.

Ui

Element SysML kind What it is
RegionBounds attribute def Region bounds definition.
UserInterface part def User interface definition specializing MemoPart.
UIElement part def Uielement definition specializing SoftwareElement.
OperatorInterfaceElement part def Operator interface element definition specializing PhysicalComponent.
ScreenCapture part def Screen capture definition specializing MemoEvidence.
UIState part def UI state is presentation state — distinct from system/device state.
UIEvent part def Uievent definition specializing MemoPart.
UIAction action def Clicking a button IS an operative action: it has a trigger, a precondition, a criticality, a potential harm and a frequency of use, exactly as turning a knob does.…
InteractionFlow action def A reusable dialogue structure through the UI; a selected path through it is a OperativeScenario with scenarioKind ui.

Connections at a glance

Each arrow is one relationship, from its source end to its target end. A grey box belongs to another layer.

flowchart LR
  MemoPart["MemoPart"]:::other
  SoftwareElement["SoftwareElement"]
  ScreenCapture["ScreenCapture"]
  UIElement["UIElement"]
  UIAction["UIAction"]
  InteractionFlow["InteractionFlow"]
  UseCase["UseCase"]:::other
  UseError["UseError"]:::other
  RiskControlMeasure["RiskControlMeasure"]:::other
  anyElement["any element"]:::other
  SoftwareModule["SoftwareModule"]
  SoftwareDeploymentUnit["SoftwareDeploymentUnit"]:::other
  SoftwareComponent["SoftwareComponent"]
  MemoryDevice["MemoryDevice"]:::other
  MemoInterface["MemoInterface"]:::other
  PhysicalComponent["PhysicalComponent"]
  Vulnerability["Vulnerability"]:::other
  SBOMEntry["SBOMEntry"]
  PostmarketProcess["PostmarketProcess"]:::other
  MemoPart -->|DependsOnSoup| SoftwareElement
  ScreenCapture -->|CapturesScreen| UIElement
  UIElement -->|NavigatesTo| UIElement
  MemoPart -->|ElementTriggersAction| UIAction
  InteractionFlow -->|FlowServesUseCase| UseCase
  UseError -->|ErrorAtElement| MemoPart
  RiskControlMeasure -->|ControlImplementedBy| anyElement
  SoftwareModule -->|BuildsInto| SoftwareDeploymentUnit
  SoftwareComponent -->|MemoryBinding| MemoryDevice
  MemoInterface -->|ConnectionBinding| PhysicalComponent
  Vulnerability -->|AffectsSBOMEntry| SBOMEntry
  PostmarketProcess -->|MonitorsSBOMEntry| SBOMEntry
  classDef other fill:#eef1f4,stroke:#9aa7b2,color:#4a5a66

Relationships declared here

Relationship From To What it says
DependsOnSoup MemoPart SoftwareElement Typed relationship from MemoPart to SoftwareElement.
CapturesScreen ScreenCapture UIElement Which modelled screen an image is a rendering of.
NavigatesTo UIElement UIElement Typed relationship from UIElement to UIElement.
ElementTriggersAction MemoPart UIAction Typed relationship from MemoPart to UIAction.
FlowServesUseCase InteractionFlow UseCase Typed relationship from InteractionFlow to UseCase.
ErrorAtElement UseError MemoPart Typed relationship from UseError to MemoPart.
ControlImplementedBy RiskControlMeasure any element A risk control implemented by a UI element or by task design (confirmation dialog, lockout, guarded control).

Relationships from elsewhere that reach this layer

Relationship Declared in From To What it says
BuildsInto realization SoftwareModule SoftwareDeploymentUnit Typed relationship from SoftwareModule to SoftwareDeploymentUnit.
MemoryBinding realization SoftwareComponent MemoryDevice AADL actual_memory_binding. Which memory a software component's code and data occupy — what makes a memory budget a claim about a device rather than a string.
ConnectionBinding realization MemoInterface PhysicalComponent AADL actual_connection_binding. Which physical thing carries an interface: a network medium under a component exchange, a cable or harness under a hardware Interface, a connector, a tube.…
AffectsSBOMEntry cybersecurity Vulnerability SBOMEntry Typed relationship from Vulnerability to SBOMEntry.
MonitorsSBOMEntry cybersecurity PostmarketProcess SBOMEntry Typed relationship from PostmarketProcess to SBOMEntry.

Enumerations

Enumeration Values
RuntimeKind process, thread, task, service, container, partition, dataStore, messageBroker
ModuleKind unit, code, firmware
SbomFormatKind spdx, cycloneDx, other
UIElementFormKind screen, dialog, panel, menu, tab, drawer, wizardStep, button, field, selector, slider, table, chart, icon, textMessage, decoration
UIDisclosureKind inline, overlay, transient, scrolled, conditional
BoundsDetectionKind manual, automatic, automaticConfirmed, imported
InteractionIntentKind userInput, feedback, navigation, confirmation, inputValidation, errorMessage, alarmAnnunciation, acknowledgement, cancellation, timeout, lockout, correction, recovery
OperatorInterfaceFormKind knob, dial, pushButton, toggleSwitch, rockerSwitch, lever, physicalSlider, keypad, footPedal, touchSurface, indicatorLamp, gauge, audibleIndicator, hapticIndicator, printedMarking

Go deeper