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):
SoftwareSystemis the top, andSoftwareModules are the code units with design responsibility.Algorithm,DataModelandConfigurationArtifactdescribe what they contain. AnSBOMEntryrecords a component in the software bill of materials. - The runtime view: a
SoftwareComponentis a runtime component, with its concurrency, scheduling, health monitoring and fault containment. ItsruntimeKindsays 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
UIActionperforms a function. See Functional. - Interaction serves use: an interaction flow serves a use case
(
FlowServesUseCase), and the interface supports operational tasks with a nativedependency. 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¶
- The GPCA infusion pump: requirements and architecture.
- The implementation API.