@memoarchitect/ontology 0.8.24 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  2. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
  4. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  5. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
  6. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  7. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  8. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  9. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  10. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  11. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  13. package/examples/gpca-pump/model/catalog/gpca_context.sysml +22 -20
  14. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
  15. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  16. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  17. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
  18. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  19. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  20. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  21. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  22. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
  23. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
  24. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  25. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  26. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
  27. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
  28. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
  30. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
  31. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
  32. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
  39. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
  41. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
  42. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
  44. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
  47. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
  48. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
  50. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
  51. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
  52. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
  53. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  54. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
  55. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  56. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  57. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  58. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  59. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  60. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  61. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  62. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  63. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  64. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  65. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
  66. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  67. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  68. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  69. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
  70. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  71. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +51 -51
  72. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  73. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  74. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  75. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
  76. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
  77. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
  78. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
  79. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
  80. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +8 -6
  81. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
  82. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
  83. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
  84. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
  85. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  86. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  87. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
  88. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  89. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  90. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  91. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  92. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  93. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  94. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  95. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  96. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  97. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  98. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  99. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  100. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  101. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  102. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
  103. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
  104. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
  105. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
  106. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
  107. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
  108. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  109. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  110. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  111. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  112. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  113. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  114. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  115. package/extensions/template/src/extension.sysml +3 -1
  116. package/package.json +2 -2
  117. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  118. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  119. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  120. package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
  121. package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
  122. package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
  123. package/src/architecture/operational/scenarios/memo_scenarios.sysml +0 -10
  124. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
  125. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
  126. package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
  127. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  128. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  129. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  130. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  131. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  132. package/src/artifacts/standards/iec_60812.sysml +21 -22
  133. package/src/artifacts/standards/iec_62304.sysml +150 -169
  134. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  135. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  136. package/src/artifacts/standards/iso_13485.sysml +80 -89
  137. package/src/artifacts/standards/iso_14971.sysml +66 -73
  138. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  139. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  140. package/src/core/common/memo_common.sysml +50 -50
  141. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  142. package/src/core/relationships/memo_relationships.sysml +22 -49
  143. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  144. package/src/methodology/core/memo_core.sysml +0 -10
  145. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  146. package/src/rules/closure/closure_rules.sysml +22 -20
  147. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  148. package/src/rules/ontology/ontology_invariants.sysml +106 -33
  149. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  150. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
  151. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  152. package/src/viewpoints/context/context_viewpoint.sysml +5 -3
  153. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
  154. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  155. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
  156. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  157. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
  158. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
  159. package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
  160. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
  161. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  162. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
  163. package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
  164. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
  165. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
  166. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  167. package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
  168. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
  169. package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
  170. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
  171. package/src/viewpoints/software/software_viewpoint.sysml +4 -2
  172. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
  173. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
  174. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  175. package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
  176. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  177. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
  178. package/templates/connected-device/model/catalog/project.sysml +3 -1
  179. package/templates/default/model/catalog/project.sysml +3 -1
  180. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  181. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  182. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -11,22 +11,24 @@ package memo_examples_connected_patient_monitor {
11
11
  private import memo_architecture_logical_interfaces::*;
12
12
  private import memo_assurance_cybersecurity::*;
13
13
 
14
+ private import memo_core_common::*;
15
+ private import memo_core_common::MemoIdentity;
14
16
  part lcMonitor : LogicalComponent {
15
- attribute :>> id = "CPM-LC-001"; attribute :>> name = "BedsideMonitor";
17
+ @MemoIdentity { :>> providedId = "CPM-LC-001"; } attribute :>> name = "BedsideMonitor";
16
18
  attribute :>> responsibility = "Acquire and display vitals; publish measurements.";
17
19
  }
18
20
  part lcGateway : LogicalComponent {
19
- attribute :>> id = "CPM-LC-002"; attribute :>> name = "WardGateway";
21
+ @MemoIdentity { :>> providedId = "CPM-LC-002"; } attribute :>> name = "WardGateway";
20
22
  attribute :>> responsibility = "Aggregate device data; bridge device LAN to hospital network.";
21
23
  }
22
24
  part lcCdrService : LogicalComponent {
23
- attribute :>> id = "CPM-LC-003"; attribute :>> name = "ClinicalDataRepository";
25
+ @MemoIdentity { :>> providedId = "CPM-LC-003"; } attribute :>> name = "ClinicalDataRepository";
24
26
  attribute :>> externalOwner = "hospital IT";
25
27
  }
26
28
 
27
29
  // Typed measurement item, coded against ISO/IEEE 11073-10101.
28
30
  item spo2Item : LogicalExchangeItem {
29
- attribute :>> id = "CPM-IT-001"; attribute :>> name = "SpO2Measurement";
31
+ @MemoIdentity { :>> providedId = "CPM-IT-001"; } attribute :>> name = "SpO2Measurement";
30
32
  attribute :>> contentKind = FlowContentKind::measurement;
31
33
  attribute :>> unit = "%";
32
34
  attribute :>> timestampRequired = true;
@@ -39,7 +41,7 @@ package memo_examples_connected_patient_monitor {
39
41
  }
40
42
 
41
43
  part exSpo2ToGateway : LogicalExchange {
42
- attribute :>> id = "CPM-EX-001"; attribute :>> name = "SpO2ToGateway";
44
+ @MemoIdentity { :>> providedId = "CPM-EX-001"; } attribute :>> name = "SpO2ToGateway";
43
45
  attribute :>> contentKind = FlowContentKind::measurement;
44
46
  attribute :>> direction = DirectionKind::output;
45
47
  ref :>> exchangedItem = spo2Item;
@@ -56,13 +58,13 @@ package memo_examples_connected_patient_monitor {
56
58
  // Network interface with cybersecurity properties; trust boundary at the
57
59
  // hospital network edge.
58
60
  interface ifHl7Feed : Interface {
59
- attribute :>> id = "CPM-IF-001"; attribute :>> name = "GatewayToCdrFeed";
61
+ @MemoIdentity { :>> providedId = "CPM-IF-001"; } attribute :>> name = "GatewayToCdrFeed";
60
62
  attribute :>> protocol = "HL7 FHIR REST over TLS 1.3";
61
63
  attribute :>> securityCriticality = CriticalityKind::high;
62
64
  attribute :>> patientContactInterface = false;
63
65
  }
64
66
  part tbHospitalEdge : TrustBoundary {
65
- attribute :>> id = "CPM-TB-001"; attribute :>> name = "DeviceLanToHospitalNetwork";
67
+ @MemoIdentity { :>> providedId = "CPM-TB-001"; } attribute :>> name = "DeviceLanToHospitalNetwork";
66
68
  }
67
69
  connection : CrossesTrustBoundary connect boundary ::> tbHospitalEdge to crossingItem ::> ifHl7Feed {
68
70
  attribute :>> crossingKind = InterfaceKind::network;
@@ -14,8 +14,10 @@ package memo_examples_connected_patient_monitor_project {
14
14
  private import memo_examples_connected_patient_monitor_viewpoints_unassigned::*;
15
15
  private import memo_examples_connected_patient_monitor_viewpoints_unassigned_views_connected_patient_monitor_overview::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  part projectBinding : ProjectMethodBinding {
18
- attribute :>> id = "PMB-PATIENT-MONITOR-001";
20
+ @MemoIdentity { :>> providedId = "PMB-PATIENT-MONITOR-001"; }
19
21
  attribute :>> name = "ConnectedPatientMonitorProjectMethodBinding";
20
22
  attribute :>> projectName = "Connected Patient Monitor";
21
23
  ref :>> selectedMethodology = mdDefaultDefinition;
@@ -13,16 +13,18 @@ package memo_examples_embedded_infusion_pump {
13
13
  private import memo_architecture_realization_deployment::*;
14
14
  private import memo_architecture_realization_physical::*;
15
15
 
16
+ private import memo_core_common::*;
17
+ private import memo_core_common::MemoIdentity;
16
18
  // Module view (IEC 62304).
17
19
  part swInfusionControl : SoftwareModule {
18
20
  attribute :>> moduleKind = ModuleKind::'item';
19
- attribute :>> id = "EIP-SW-001"; attribute :>> name = "InfusionControlItem";
21
+ @MemoIdentity { :>> providedId = "EIP-SW-001"; } attribute :>> name = "InfusionControlItem";
20
22
  attribute :>> iec62304Role = "software item, class C";
21
23
  attribute :>> safetyClass = SafetyClassKind::C;
22
24
  }
23
25
  part swMotorDriver : SoftwareModule {
24
26
  attribute :>> moduleKind = ModuleKind::unit;
25
- attribute :>> id = "EIP-SW-002"; attribute :>> name = "MotorDriverUnit";
27
+ @MemoIdentity { :>> providedId = "EIP-SW-002"; } attribute :>> name = "MotorDriverUnit";
26
28
  attribute :>> implementationLanguage = "C";
27
29
  attribute :>> safetyClass = SafetyClassKind::C;
28
30
  }
@@ -31,7 +33,7 @@ package memo_examples_embedded_infusion_pump {
31
33
  // Runtime view.
32
34
  part rtControlLoop : SoftwareComponent {
33
35
  attribute :>> runtimeKind = RuntimeKind::task;
34
- attribute :>> id = "EIP-RT-001"; attribute :>> name = "ControlLoopTask";
36
+ @MemoIdentity { :>> providedId = "EIP-RT-001"; } attribute :>> name = "ControlLoopTask";
35
37
  attribute :>> periodMs = 10.0;
36
38
  attribute :>> deadlineMs = 10.0;
37
39
  attribute :>> wcetMs = 2.5;
@@ -44,25 +46,25 @@ package memo_examples_embedded_infusion_pump {
44
46
 
45
47
  // Deployment view.
46
48
  part duControlImage : SoftwareDeploymentUnit {
47
- attribute :>> id = "EIP-DU-001"; attribute :>> name = "ControlFirmwareImage";
49
+ @MemoIdentity { :>> providedId = "EIP-DU-001"; } attribute :>> name = "ControlFirmwareImage";
48
50
  attribute :>> unitKind = "signed firmware image";
49
51
  attribute :>> version = "3.1.0";
50
52
  attribute :>> integrityProtection = "signature verified by boot loader";
51
53
  }
52
54
  part mcuSafety : ProcessingNode {
53
- attribute :>> id = "EIP-HW-001"; attribute :>> name = "SafetyMCU";
55
+ @MemoIdentity { :>> providedId = "EIP-HW-001"; } attribute :>> name = "SafetyMCU";
54
56
  attribute :>> nodeKind = ProcessingNodeKind::microcontroller;
55
57
  attribute :>> realTimeCapable = true;
56
58
  attribute :>> supportsContainerization = false;
57
59
  }
58
60
  part rteBareMetal : RuntimeEnvironment {
59
- attribute :>> id = "EIP-RTE-001"; attribute :>> name = "StaticRTOS";
61
+ @MemoIdentity { :>> providedId = "EIP-RTE-001"; } attribute :>> name = "StaticRTOS";
60
62
  attribute :>> osOrRtos = "static-priority RTOS, no dynamic allocation";
61
63
  }
62
64
  allocation swInfusionControlBuild : BuildsInto allocate swInfusionControl to duControlImage;
63
65
  allocation duControlImageDeployment : DeploysTo allocate duControlImage to mcuSafety {
64
66
  attribute :>> deploymentKind = DeploymentKind::embedded;
65
67
  }
66
- connection : HostedBy connect hostAssembly ::> mcuSafety to processingNode ::> rtControlLoop;
68
+ allocation : HostedBy allocate rtControlLoop to mcuSafety;
67
69
  connection : ProvidesEnvironment connect node ::> mcuSafety to environment ::> rteBareMetal;
68
70
  }
@@ -14,8 +14,10 @@ package memo_examples_embedded_infusion_pump_project {
14
14
  private import memo_examples_embedded_infusion_pump_viewpoints_unassigned::*;
15
15
  private import memo_examples_embedded_infusion_pump_viewpoints_unassigned_views_embedded_infusion_pump_overview::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  part projectBinding : ProjectMethodBinding {
18
- attribute :>> id = "PMB-INFUSION-PUMP-001";
20
+ @MemoIdentity { :>> providedId = "PMB-INFUSION-PUMP-001"; }
19
21
  attribute :>> name = "EmbeddedInfusionPumpProjectMethodBinding";
20
22
  attribute :>> projectName = "Embedded Infusion Pump";
21
23
  ref :>> selectedMethodology = mdDefaultDefinition;
@@ -14,34 +14,36 @@ package memo_examples_functional_logical_physical {
14
14
  private import memo_architecture_implementation_software_structure::*;
15
15
  private import memo_architecture_implementation_hardware_structure::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  // Operational world: what the clinician does.
18
20
  action actOcclusionResponse : OperativeAction {
19
- attribute :>> id = "FLP-ACT-001"; attribute :>> name = "RespondToLineOcclusion";
21
+ @MemoIdentity { :>> providedId = "FLP-ACT-001"; } attribute :>> name = "RespondToLineOcclusion";
20
22
  attribute :>> criticality = CriticalityKind::high;
21
23
  }
22
24
 
23
25
  // Functional: technology-independent responsibility.
24
26
  action fnLimitLinePressure : SystemFunction {
25
- attribute :>> id = "FLP-FN-001"; attribute :>> name = "LimitLinePressure";
27
+ @MemoIdentity { :>> providedId = "FLP-FN-001"; } attribute :>> name = "LimitLinePressure";
26
28
  attribute :>> criticality = CriticalityKind::high;
27
29
  }
28
- connection : Enables connect enabling ::> fnLimitLinePressure to enabled ::> actOcclusionResponse;
30
+ dependency from fnLimitLinePressure to actOcclusionResponse;
29
31
 
30
32
  // Logical: solution structure, still technology-independent.
31
33
  part lcPressureProtection : LogicalComponent {
32
- attribute :>> id = "FLP-LC-001"; attribute :>> name = "PressureProtectionElement";
34
+ @MemoIdentity { :>> providedId = "FLP-LC-001"; } attribute :>> name = "PressureProtectionElement";
33
35
  attribute :>> controlledVariable = "line pressure";
34
36
  }
35
37
  allocate fnLimitLinePressure to lcPressureProtection;
36
38
  // Implementation: the SAME logical element is realized by software
37
39
  // (pressure-limit supervision) AND mechanics (mechanical relief valve).
38
40
  part swPressureSupervisor : SoftwareModule {
39
- attribute :>> id = "FLP-SW-001"; attribute :>> name = "PressureSupervisor";
41
+ @MemoIdentity { :>> providedId = "FLP-SW-001"; } attribute :>> name = "PressureSupervisor";
40
42
  attribute :>> responsibility = "Pause pumping when measured pressure exceeds threshold.";
41
43
  attribute :>> safetyClass = SafetyClassKind::C;
42
44
  }
43
45
  part mechReliefValve : MechanicalPart {
44
- attribute :>> id = "FLP-HW-001"; attribute :>> name = "MechanicalReliefValve";
46
+ @MemoIdentity { :>> providedId = "FLP-HW-001"; } attribute :>> name = "MechanicalReliefValve";
45
47
  attribute :>> mechanicalFunction = "vents line pressure above mechanical set point, independent of software";
46
48
  attribute :>> patientContact = false;
47
49
  }
@@ -14,8 +14,10 @@ package memo_examples_functional_logical_physical_project {
14
14
  private import memo_examples_functional_logical_physical_viewpoints_unassigned::*;
15
15
  private import memo_examples_functional_logical_physical_viewpoints_unassigned_views_functional_logical_physical_overview::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  part projectBinding : ProjectMethodBinding {
18
- attribute :>> id = "PMB-LOGICAL-PHYSICAL-001";
20
+ @MemoIdentity { :>> providedId = "PMB-LOGICAL-PHYSICAL-001"; }
19
21
  attribute :>> name = "FunctionalLogicalPhysicalProjectMethodBinding";
20
22
  attribute :>> projectName = "Functional Logical Physical";
21
23
  ref :>> selectedMethodology = mdDefaultDefinition;