@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
@@ -29,12 +29,13 @@ package memo_examples_gpca_pump_gpca_standards {
29
29
  private import memo_examples_gpca_pump_gpca_physical::*;
30
30
  private import memo_examples_gpca_pump_gpca_risk::*;
31
31
 
32
+ private import memo_core_common::MemoIdentity;
32
33
  // ── The controlled documents clause evidence lands in ────────────────
33
34
  // TracesToDocument targets ControlledArtifact, so the DHF documents are
34
35
  // modelled as the artifacts they are rather than as a second document type.
35
36
 
36
37
  part docSrs : MarkdownDocumentSource {
37
- attribute :>> id = "DOC-SRS";
38
+ @MemoIdentity { :>> providedId = "DOC-SRS"; }
38
39
  attribute :>> name = "SoftwareRequirementsSpecification";
39
40
  attribute :>> version = "1.0";
40
41
  attribute :>> artifactKind = ArtifactKind::requirementSpecification;
@@ -46,7 +47,7 @@ package memo_examples_gpca_pump_gpca_standards {
46
47
  attribute :>> generated = true;
47
48
  }
48
49
  part docSad : MarkdownDocumentSource {
49
- attribute :>> id = "DOC-SAD";
50
+ @MemoIdentity { :>> providedId = "DOC-SAD"; }
50
51
  attribute :>> name = "SoftwareArchitectureDescription";
51
52
  attribute :>> version = "1.0";
52
53
  attribute :>> artifactKind = ArtifactKind::architectureDescription;
@@ -58,7 +59,7 @@ package memo_examples_gpca_pump_gpca_standards {
58
59
  attribute :>> generated = true;
59
60
  }
60
61
  part docHrs : MarkdownDocumentSource {
61
- attribute :>> id = "DOC-HRS";
62
+ @MemoIdentity { :>> providedId = "DOC-HRS"; }
62
63
  attribute :>> name = "HardwareRequirementsSpecification";
63
64
  attribute :>> version = "1.0";
64
65
  attribute :>> artifactKind = ArtifactKind::requirementSpecification;
@@ -70,7 +71,7 @@ package memo_examples_gpca_pump_gpca_standards {
70
71
  attribute :>> generated = true;
71
72
  }
72
73
  part docRmf : MarkdownDocumentSource {
73
- attribute :>> id = "DOC-RMF";
74
+ @MemoIdentity { :>> providedId = "DOC-RMF"; }
74
75
  attribute :>> name = "RiskManagementFile";
75
76
  attribute :>> version = "1.0";
76
77
  attribute :>> artifactKind = ArtifactKind::riskRecord;
@@ -84,78 +85,78 @@ package memo_examples_gpca_pump_gpca_standards {
84
85
 
85
86
  // ── IEC 62304 — software lifecycle ───────────────────────────────────
86
87
  // §5.2.2 software requirements content: every software requirement.
87
- connection : ConformsTo connect conformingElement ::> reqOcclusion to clause ::> iec62304Clause5_2_2;
88
- connection : ConformsTo connect conformingElement ::> reqDoorOpen to clause ::> iec62304Clause5_2_2;
89
- connection : ConformsTo connect conformingElement ::> reqMaxHourlyDose to clause ::> iec62304Clause5_2_2;
90
- connection : ConformsTo connect conformingElement ::> reqEventLogging to clause ::> iec62304Clause5_2_2;
91
- connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304Clause5_2_2;
92
- connection : ConformsTo connect conformingElement ::> reqStuckButton to clause ::> iec62304Clause5_2_2;
93
- connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304Clause5_2_2;
88
+ connection : ConformsTo connect conformingElement ::> reqOcclusion to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
89
+ connection : ConformsTo connect conformingElement ::> reqDoorOpen to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
90
+ connection : ConformsTo connect conformingElement ::> reqMaxHourlyDose to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
91
+ connection : ConformsTo connect conformingElement ::> reqEventLogging to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
92
+ connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
93
+ connection : ConformsTo connect conformingElement ::> reqStuckButton to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
94
+ connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2;
94
95
 
95
96
  // §5.2.3 risk control measures carried into software requirements.
96
- connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304Clause5_2_3;
97
- connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304Clause5_2_3;
97
+ connection : ConformsTo connect conformingElement ::> reqWatchdogSafeState to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_3;
98
+ connection : ConformsTo connect conformingElement ::> reqFlowCrossCheck to clause ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_3;
98
99
 
99
100
  // §5.3 software architectural design: the software decomposition.
100
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec62304Clause5_3;
101
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.tlm to clause ::> iec62304Clause5_3;
102
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.infusionMgr to clause ::> iec62304Clause5_3;
103
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.systemMonitor to clause ::> iec62304Clause5_3;
104
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.config to clause ::> iec62304Clause5_3;
101
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
102
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.tlm to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
103
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.infusionMgr to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
104
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.systemMonitor to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
105
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware.config to clause ::> iec62304::iec62304Clause5::iec62304Clause5_3;
105
106
 
106
107
  // ── IEC 60601-1 — basic safety and essential performance ─────────────
107
108
  // §8 protection against electrical hazards.
108
- connection : ConformsTo connect conformingElement ::> reqBatteryBackup to clause ::> iec60601_1Clause8;
109
- connection : ConformsTo connect conformingElement ::> powerSupply to clause ::> iec60601_1Clause8;
110
- connection : ConformsTo connect conformingElement ::> batteryPack to clause ::> iec60601_1Clause8;
109
+ connection : ConformsTo connect conformingElement ::> reqBatteryBackup to clause ::> iec60601_1::iec60601_1Clause8;
110
+ connection : ConformsTo connect conformingElement ::> powerSupply to clause ::> iec60601_1::iec60601_1Clause8;
111
+ connection : ConformsTo connect conformingElement ::> batteryPack to clause ::> iec60601_1::iec60601_1Clause8;
111
112
 
112
113
  // §9 protection against mechanical hazards.
113
- connection : ConformsTo connect conformingElement ::> reqFreeFlowPrevention to clause ::> iec60601_1Clause9;
114
- connection : ConformsTo connect conformingElement ::> antiFreeFlowValve to clause ::> iec60601_1Clause9;
115
- connection : ConformsTo connect conformingElement ::> enclosure to clause ::> iec60601_1Clause9;
114
+ connection : ConformsTo connect conformingElement ::> reqFreeFlowPrevention to clause ::> iec60601_1::iec60601_1Clause9;
115
+ connection : ConformsTo connect conformingElement ::> antiFreeFlowValve to clause ::> iec60601_1::iec60601_1Clause9;
116
+ connection : ConformsTo connect conformingElement ::> enclosure to clause ::> iec60601_1::iec60601_1Clause9;
116
117
 
117
118
  // §14 programmable electrical medical systems.
118
- connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec60601_1Clause14;
119
+ connection : ConformsTo connect conformingElement ::> gpcaDevice.gpcaSoftware to clause ::> iec60601_1::iec60601_1Clause14;
119
120
 
120
121
  // ── IEC 60601-1-2 — electromagnetic compatibility ────────────────────
121
- connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2Clause7;
122
- connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2Clause8;
123
- connection : ConformsTo connect conformingElement ::> reqPost to clause ::> iec60601_1_2Clause8;
122
+ connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2::iec60601_1_2Clause7;
123
+ connection : ConformsTo connect conformingElement ::> controllerBoard to clause ::> iec60601_1_2::iec60601_1_2Clause8;
124
+ connection : ConformsTo connect conformingElement ::> reqPost to clause ::> iec60601_1_2::iec60601_1_2Clause8;
124
125
 
125
126
  // ── ISO 14971 — risk management ──────────────────────────────────────
126
127
  // §7 risk control: the risk control measures themselves.
127
- connection : ConformsTo connect conformingElement ::> lockoutControl to clause ::> iso14971Clause7;
128
- connection : ConformsTo connect conformingElement ::> occlusionAlarmControl to clause ::> iso14971Clause7;
129
- connection : ConformsTo connect conformingElement ::> airDetectionControl to clause ::> iso14971Clause7;
130
- connection : ConformsTo connect conformingElement ::> freeFlowValveControl to clause ::> iso14971Clause7;
131
- connection : ConformsTo connect conformingElement ::> doorInterlockControl to clause ::> iso14971Clause7;
132
- connection : ConformsTo connect conformingElement ::> watchdogControl to clause ::> iso14971Clause7;
133
- connection : ConformsTo connect conformingElement ::> flowCrossCheckControl to clause ::> iso14971Clause7;
128
+ connection : ConformsTo connect conformingElement ::> lockoutControl to clause ::> iso14971::iso14971Clause7;
129
+ connection : ConformsTo connect conformingElement ::> occlusionAlarmControl to clause ::> iso14971::iso14971Clause7;
130
+ connection : ConformsTo connect conformingElement ::> airDetectionControl to clause ::> iso14971::iso14971Clause7;
131
+ connection : ConformsTo connect conformingElement ::> freeFlowValveControl to clause ::> iso14971::iso14971Clause7;
132
+ connection : ConformsTo connect conformingElement ::> doorInterlockControl to clause ::> iso14971::iso14971Clause7;
133
+ connection : ConformsTo connect conformingElement ::> watchdogControl to clause ::> iso14971::iso14971Clause7;
134
+ connection : ConformsTo connect conformingElement ::> flowCrossCheckControl to clause ::> iso14971::iso14971Clause7;
134
135
 
135
136
  // ── Where the evidence for each claim is written down ────────────────
136
137
  // The section reference rides on the link, not on a duplicate section type.
137
- connection : TracesToDocument connect tracedElement ::> iec62304Clause5_2_2 to artifact ::> docSrs {
138
+ connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_2 to artifact ::> docSrs {
138
139
  attribute :>> sectionReference = "3";
139
140
  }
140
- connection : TracesToDocument connect tracedElement ::> iec62304Clause5_2_3 to artifact ::> docSrs {
141
+ connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_3 to artifact ::> docSrs {
141
142
  attribute :>> sectionReference = "3.2";
142
143
  }
143
- connection : TracesToDocument connect tracedElement ::> iec62304Clause5_3 to artifact ::> docSad {
144
+ connection : TracesToDocument connect tracedElement ::> iec62304::iec62304Clause5::iec62304Clause5_3 to artifact ::> docSad {
144
145
  attribute :>> sectionReference = "4";
145
146
  }
146
- connection : TracesToDocument connect tracedElement ::> iec60601_1Clause8 to artifact ::> docHrs {
147
+ connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause8 to artifact ::> docHrs {
147
148
  attribute :>> sectionReference = "4";
148
149
  }
149
- connection : TracesToDocument connect tracedElement ::> iec60601_1Clause9 to artifact ::> docHrs {
150
+ connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause9 to artifact ::> docHrs {
150
151
  attribute :>> sectionReference = "6";
151
152
  }
152
- connection : TracesToDocument connect tracedElement ::> iec60601_1Clause14 to artifact ::> docSad {
153
+ connection : TracesToDocument connect tracedElement ::> iec60601_1::iec60601_1Clause14 to artifact ::> docSad {
153
154
  attribute :>> sectionReference = "6.2";
154
155
  }
155
- connection : TracesToDocument connect tracedElement ::> iec60601_1_2Clause7 to artifact ::> docHrs {
156
+ connection : TracesToDocument connect tracedElement ::> iec60601_1_2::iec60601_1_2Clause7 to artifact ::> docHrs {
156
157
  attribute :>> sectionReference = "5";
157
158
  }
158
- connection : TracesToDocument connect tracedElement ::> iso14971Clause7 to artifact ::> docRmf {
159
+ connection : TracesToDocument connect tracedElement ::> iso14971::iso14971Clause7 to artifact ::> docRmf {
159
160
  attribute :>> sectionReference = "5";
160
161
  }
161
162
  }
@@ -9,13 +9,14 @@ package memo_examples_gpca_pump_gpca_system {
9
9
  private import memo_architecture_operational_use_cases::*;
10
10
  private import memo_core_common::*;
11
11
 
12
+ private import memo_core_common::MemoIdentity;
12
13
  // The device's top-level goal is its IntendedUse (gpcaIntendedUse in
13
14
  // gpca_context) — a MemoMission. The former separate gpcaMission was
14
15
  // retired: "mission" duplicated the regulated intended-use statement.
15
16
 
16
17
  // ── Functional chains ───────────────────────────────────────
17
18
  part fcPatientBolus : FunctionalFlow {
18
- attribute :>> id = "FC-001";
19
+ @MemoIdentity { :>> providedId = "FC-001"; }
19
20
  attribute :>> name = "PatientBolusChain";
20
21
  attribute :>> flowCategory = FunctionalFlowKind::nominal;
21
22
  attribute :>> endToEndLatencyBudgetMs = "100";
@@ -29,23 +30,23 @@ package memo_examples_gpca_pump_gpca_system {
29
30
  perform fcsBolusLog;
30
31
  }
31
32
  action fcsBolusSense : FunctionalFlowStep {
32
- attribute :>> id = "FCS-001"; attribute :>> name = "SenseBolusRequest";
33
+ @MemoIdentity { :>> providedId = "FCS-001"; } attribute :>> name = "SenseBolusRequest";
33
34
  ref :>> function = fnAcquireSensors; ref :>> exchangedItem = ddBolusRequest;
34
35
  }
35
36
  action fcsBolusValidate : FunctionalFlowStep {
36
- attribute :>> id = "FCS-002"; attribute :>> name = "CheckLockoutAndMaxDose";
37
+ @MemoIdentity { :>> providedId = "FCS-002"; } attribute :>> name = "CheckLockoutAndMaxDose";
37
38
  ref :>> function = fnEnforceLimits; ref :>> exchangedItem = ddPrescription;
38
39
  }
39
40
  action fcsBolusCommand : FunctionalFlowStep {
40
- attribute :>> id = "FCS-003"; attribute :>> name = "CommandBolusFlow";
41
+ @MemoIdentity { :>> providedId = "FCS-003"; } attribute :>> name = "CommandBolusFlow";
41
42
  ref :>> function = fnManageInfusion; ref :>> exchangedItem = cdFlowCommand;
42
43
  }
43
44
  action fcsBolusActuate : FunctionalFlowStep {
44
- attribute :>> id = "FCS-004"; attribute :>> name = "ActuatePumpMotor";
45
+ @MemoIdentity { :>> providedId = "FCS-004"; } attribute :>> name = "ActuatePumpMotor";
45
46
  ref :>> function = fnCommandPump; ref :>> exchangedItem = cdFlowCommand;
46
47
  }
47
48
  action fcsBolusLog : FunctionalFlowStep {
48
- attribute :>> id = "FCS-005"; attribute :>> name = "LogBolusOutcome";
49
+ @MemoIdentity { :>> providedId = "FCS-005"; } attribute :>> name = "LogBolusOutcome";
49
50
  ref :>> function = fnLogEvents; ref :>> exchangedItem = ddEventRecord;
50
51
  }
51
52
  first fcsBolusSense then fcsBolusValidate;
@@ -54,7 +55,7 @@ package memo_examples_gpca_pump_gpca_system {
54
55
  first fcsBolusActuate then fcsBolusLog;
55
56
 
56
57
  part fcAlarmStop : FunctionalFlow {
57
- attribute :>> id = "FC-002";
58
+ @MemoIdentity { :>> providedId = "FC-002"; }
58
59
  attribute :>> name = "AlarmDetectionToSafeStateChain";
59
60
  attribute :>> flowCategory = FunctionalFlowKind::alarm;
60
61
  attribute :>> endToEndLatencyBudgetMs = "20";
@@ -67,19 +68,19 @@ package memo_examples_gpca_pump_gpca_system {
67
68
  perform fcsAlarmAnnunciate;
68
69
  }
69
70
  action fcsAlarmSense : FunctionalFlowStep {
70
- attribute :>> id = "FCS-006"; attribute :>> name = "SenseAlarmCondition";
71
+ @MemoIdentity { :>> providedId = "FCS-006"; } attribute :>> name = "SenseAlarmCondition";
71
72
  ref :>> function = fnAcquireSensors; ref :>> exchangedItem = ddSensorVector;
72
73
  }
73
74
  action fcsAlarmEvaluate : FunctionalFlowStep {
74
- attribute :>> id = "FCS-007"; attribute :>> name = "EvaluateAlarmCondition";
75
+ @MemoIdentity { :>> providedId = "FCS-007"; } attribute :>> name = "EvaluateAlarmCondition";
75
76
  ref :>> function = fnMonitorAlarm; ref :>> exchangedItem = ddSensorVector;
76
77
  }
77
78
  action fcsAlarmStopInfusion : FunctionalFlowStep {
78
- attribute :>> id = "FCS-008"; attribute :>> name = "LimitFlowToKvoSameStep";
79
+ @MemoIdentity { :>> providedId = "FCS-008"; } attribute :>> name = "LimitFlowToKvoSameStep";
79
80
  ref :>> function = fnManageInfusion; ref :>> exchangedItem = cdAlarmSignal;
80
81
  }
81
82
  action fcsAlarmAnnunciate : FunctionalFlowStep {
82
- attribute :>> id = "FCS-009"; attribute :>> name = "AnnunciateAudibleVisual";
83
+ @MemoIdentity { :>> providedId = "FCS-009"; } attribute :>> name = "AnnunciateAudibleVisual";
83
84
  ref :>> function = fnAnnunciate; ref :>> exchangedItem = cdAlarmSignal;
84
85
  }
85
86
  first fcsAlarmSense then fcsAlarmEvaluate;
@@ -87,7 +88,7 @@ package memo_examples_gpca_pump_gpca_system {
87
88
  first fcsAlarmStopInfusion then fcsAlarmAnnunciate;
88
89
 
89
90
  part fcStartup : FunctionalFlow {
90
- attribute :>> id = "FC-003";
91
+ @MemoIdentity { :>> providedId = "FC-003"; }
91
92
  attribute :>> name = "PowerOnSelfTestChain";
92
93
  attribute :>> flowCategory = FunctionalFlowKind::startup;
93
94
  attribute :>> endToEndLatencyBudgetMs = "5000";
@@ -100,14 +101,14 @@ package memo_examples_gpca_pump_gpca_system {
100
101
 
101
102
  // ── System scenarios ────────────────────────────────────────
102
103
  action ssBolusDuringBasal : OperativeScenario {
103
- attribute :>> id = "SS-001";
104
+ @MemoIdentity { :>> providedId = "SS-001"; }
104
105
  attribute :>> name = "PatientBolusDuringBasal";
105
106
  attribute :>> preCondition = "BASAL mode active; no REQ 25 ignore condition holds";
106
107
  attribute :>> postCondition = "PATIENT_BOLUS mode entered, bolus delivered, return to BASAL";
107
108
  }
108
109
  action ssAlarmPause : OperativeScenario {
109
110
  attribute :>> scenarioKind = ScenarioKind::alternate;
110
- attribute :>> id = "SS-002";
111
+ @MemoIdentity { :>> providedId = "SS-002"; }
111
112
  attribute :>> name = "InhibitingNotificationPausesInfusion";
112
113
  attribute :>> preCondition = "any ACTIVE therapy mode; infusion-inhibiting notification detected (REQ 59)";
113
114
  attribute :>> postCondition = "PAUSED mode entered in same execution step at FlowRate_kvo_hd keep-vein-open flow; notification annunciated per REQ 59";
@@ -40,12 +40,12 @@ package memo_examples_gpca_pump_gpca_trace {
40
40
  private import memo_viewpoints_definitions::*;
41
41
 
42
42
  // ── System context interactions (context view) ──────────────
43
- connection : InteractsWith connect contextParticipant ::> actorPatient to target ::> entityGpcaPump;
44
- connection : InteractsWith connect contextParticipant ::> actorNurse to target ::> entityGpcaPump;
45
- connection : InteractsWith connect contextParticipant ::> actorPrescriber to target ::> entityGpcaPump;
46
- connection : InteractsWith connect contextParticipant ::> actorPharmacist to target ::> entityGpcaPump;
47
- connection : InteractsWith connect contextParticipant ::> actorTechnician to target ::> entityGpcaPump;
48
- connection : InteractsWith connect contextParticipant ::> actorPharmacist to target ::> entityPharmacy;
43
+ connection connect actorPatient to entityGpcaPump;
44
+ connection connect actorNurse to entityGpcaPump;
45
+ connection connect actorPrescriber to entityGpcaPump;
46
+ connection connect actorPharmacist to entityGpcaPump;
47
+ connection connect actorTechnician to entityGpcaPump;
48
+ connection connect actorPharmacist to entityPharmacy;
49
49
 
50
50
  // ── Fig 2.1 context flows (CriSys §2.1) ─────────────────────
51
51
  // Data flows
@@ -343,7 +343,7 @@ package memo_examples_gpca_pump_gpca_trace {
343
343
  allocate fnSelfTest to gpcaDevice.gpcaSoftware.systemMonitor;
344
344
  // ── Deployment, hosting, and interface realization ──────────
345
345
  allocation gpcaSoftwareDeployment : DeploysTo allocate gpcaDevice.gpcaSoftware to controllerBoard;
346
- connection : HostedBy connect processingNode ::> mainController to hostAssembly ::> controllerBoard;
346
+ allocation : HostedBy allocate mainController to controllerBoard;
347
347
  #refinement dependency sensorInputInterface to hwSoftwareBus;
348
348
  #refinement dependency actuatorCommandInterface to pumpMotorDrive;
349
349
  connection : BindsToInterface connect portElement ::> portPatientPendant to boundInterface ::> bolusButtonLine;
@@ -531,7 +531,9 @@ package memo_examples_gpca_pump_gpca_trace {
531
531
  connection : TracesRisk connect sourceRiskElement ::> ueAlarmDisregard to targetRiskElement ::> seqOcclusion;
532
532
 
533
533
  // ── FMEA and fault tree integration ─────────────────────────
534
- connection : AnalyzedBy connect element ::> pumpMotorAssembly to analysisArtifact ::> fmeaDelivery;
534
+ // Was `AnalyzedBy`: a zero-attribute edge from an element to the
535
+ // artifact analysing it, which is what a bare dependency states.
536
+ dependency from pumpMotorAssembly to fmeaDelivery;
535
537
  connection : HasFailureMode connect element ::> pumpMotorAssembly to failureMode ::> fmMotorRunaway;
536
538
  connection : HasFailureMode connect element ::> airInLineSensor to failureMode ::> fmAirSensorSilent;
537
539
  connection : HasFailureMode connect element ::> occlusionSensor to failureMode ::> fmOcclusionDrift;