@memoarchitect/ontology 0.7.0 → 0.8.22

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 (204) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  4. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  5. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  6. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  7. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  8. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  9. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  10. package/examples/gpca-pump/model/catalog/gpca_context.sysml +9 -0
  11. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +9 -5
  12. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  13. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +82 -58
  14. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  15. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  16. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  17. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -2
  18. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -331
  19. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  20. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  21. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -1
  22. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +1 -1
  23. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +1 -1
  24. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +1 -1
  25. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +1 -1
  28. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +2 -2
  30. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -2
  31. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -2
  32. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -1
  33. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +2 -2
  35. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -2
  36. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +4 -2
  37. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -1
  38. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +3 -2
  39. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  40. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  41. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  42. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  43. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  44. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -5
  45. package/examples/ros-mobile-robot/README.md +40 -0
  46. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  47. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  48. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  49. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  50. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  51. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  52. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -60
  53. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  54. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -15
  55. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -9
  56. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +42 -66
  57. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +56 -66
  58. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +26 -55
  59. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -6
  60. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +0 -18
  61. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +51 -82
  62. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +21 -31
  63. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -8
  64. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -21
  65. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  66. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  67. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  68. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  69. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  70. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  71. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -1
  72. package/extensions/LICENSES/MIT.txt +19 -0
  73. package/extensions/README.md +94 -0
  74. package/extensions/aadl/memo.package.yaml +18 -0
  75. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  76. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  77. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  78. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  79. package/extensions/cloud/memo.package.yaml +18 -0
  80. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  81. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  82. package/extensions/container/memo.package.yaml +18 -0
  83. package/extensions/container/src/container_extension.sysml +37 -0
  84. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  85. package/extensions/messaging/memo.package.yaml +18 -0
  86. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  87. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  88. package/extensions/ros/memo.package.yaml +18 -0
  89. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  90. package/extensions/ros/src/ros_extension.sysml +200 -0
  91. package/extensions/template/src/extension.sysml +37 -0
  92. package/memo.manifest.yaml +13 -2
  93. package/methodologies/default/memo.package.yaml +1 -1
  94. package/methodologies/gpca/memo.package.yaml +1 -1
  95. package/ontology/memo.package.yaml +1 -1
  96. package/package.json +5 -3
  97. package/profile/memo.package.yaml +1 -1
  98. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  99. package/src/architecture/functional/behavior/memo_behavior.sysml +49 -21
  100. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  101. package/src/architecture/functional/functions/memo_functions.sysml +91 -34
  102. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  103. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +37 -10
  104. package/src/architecture/implementation/ui/memo_ui.sysml +78 -38
  105. package/src/architecture/logical/interfaces/memo_interfaces.sysml +63 -11
  106. package/src/architecture/logical/structure/memo_logical_structure.sysml +21 -20
  107. package/src/architecture/operational/activities/memo_activities.sysml +10 -3
  108. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  109. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  110. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  111. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  112. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  113. package/src/architecture/operational/workflows/memo_workflows.sysml +29 -10
  114. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  115. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  116. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  117. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  118. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  119. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  120. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  121. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  122. package/src/artifacts/standards/iec_60812.sysml +51 -0
  123. package/src/artifacts/standards/iec_62304.sysml +210 -0
  124. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  125. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  126. package/src/artifacts/standards/iso_13485.sysml +113 -0
  127. package/src/artifacts/standards/iso_14971.sysml +94 -0
  128. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  129. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  130. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  131. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  132. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  133. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  134. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  135. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  136. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  137. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  138. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  139. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  140. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  141. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  142. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  143. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  144. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  145. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  146. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  147. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  148. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  149. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  150. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  151. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  152. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  153. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  154. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  155. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  156. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  157. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  158. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  159. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  160. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  161. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  162. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  163. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  164. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  165. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  166. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  167. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  168. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  169. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  170. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  171. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  172. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  173. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  174. package/src/core/annotations/memo_annotations.sysml +25 -6
  175. package/src/core/common/memo_common.sysml +121 -16
  176. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  177. package/src/core/dimensions/dimensions.sysml +12 -0
  178. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  179. package/src/core/relationships/memo_relationships.sysml +199 -196
  180. package/src/memo_namespaces.sysml +30 -0
  181. package/src/methodology/core/memo_core.sysml +24 -0
  182. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  183. package/src/rules/ontology/ontology_invariants.sysml +213 -1
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +3 -3
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -1
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -1
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +1 -0
  189. package/src/viewpoints/functional/functional_viewpoint.sysml +1 -1
  190. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -1
  191. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -1
  192. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -1
  193. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +1 -1
  194. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -1
  195. package/src/viewpoints/verification/verification_viewpoint.sysml +1 -1
  196. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -1
  197. package/examples/extensions/README.md +0 -16
  198. package/examples/extensions/template/src/extension.sysml +0 -15
  199. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  200. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  201. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  202. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  203. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  204. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -9,7 +9,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
9
9
  private import memo_core_common::*;
10
10
 
11
11
  // ── Logical functions ───────────────────────────────────────
12
- part fnAcquireSensors : SystemFunction {
12
+ action fnAcquireSensors : SystemFunction {
13
13
  attribute :>> id = "FUNC-001";
14
14
  attribute :>> name = "AcquireSensorData";
15
15
  attribute :>> functionCategory = "sensing";
@@ -17,8 +17,49 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
17
17
  attribute :>> outputSummary = "Debounced, range-checked sensor status vector";
18
18
  attribute :>> concernKind = ConcernKind::safety;
19
19
  attribute :>> criticality = CriticalityKind::catastrophic;
20
+
21
+ // ── Component functions decomposing FUNC-001 ─────────────
22
+ // The functional chain does not stop at the system boundary.
23
+ // "Acquire sensor data" is a system responsibility; measuring a flow
24
+ // rate is the flowmeter's, and aggregating the status vector is the
25
+ // sensor subassembly's. Each names its component through
26
+ // AllocatedTo (see gpca_behavior_actions), which CR-ONT-074
27
+ // requires — a component function allocated nowhere is a
28
+ // responsibility nobody has accepted.
29
+ action cfnMeasureFlowRate : ComponentFunction {
30
+ attribute :>> id = "CFUN-001";
31
+ attribute :>> name = "MeasureFlowRate";
32
+ attribute :>> functionCategory = "sensing";
33
+ attribute :>> actionKind = ActionKind::sense;
34
+ attribute :>> trigger = "continuous, sampled every 20 ms execution step";
35
+ attribute :>> outputSummary = "Measured delivered flow rate in mL/h, with a validity flag";
36
+ attribute :>> concernKind = ConcernKind::safety;
37
+ attribute :>> criticality = CriticalityKind::catastrophic;
38
+ }
39
+ action cfnDetectAirInLine : ComponentFunction {
40
+ attribute :>> id = "CFUN-002";
41
+ attribute :>> name = "DetectAirInLine";
42
+ attribute :>> functionCategory = "protection";
43
+ attribute :>> actionKind = ActionKind::sense;
44
+ attribute :>> trigger = "continuous, sampled every 20 ms execution step";
45
+ attribute :>> outputSummary = "Air-in-line present or absent, with accumulated bolus volume";
46
+ attribute :>> concernKind = ConcernKind::safety;
47
+ attribute :>> criticality = CriticalityKind::catastrophic;
48
+ }
49
+ // The subassembly case: a component function need not sit on a leaf part.
50
+ action cfnAggregateSensorStatus : ComponentFunction {
51
+ attribute :>> id = "CFUN-003";
52
+ attribute :>> name = "AggregateSensorStatus";
53
+ attribute :>> functionCategory = "sensing";
54
+ attribute :>> actionKind = ActionKind::transform;
55
+ attribute :>> trigger = "every 20 ms execution step";
56
+ attribute :>> outputSummary = "Debounced, range-checked sensor status vector for the controller";
57
+ attribute :>> concernKind = ConcernKind::safety;
58
+ attribute :>> criticality = CriticalityKind::catastrophic;
59
+ }
20
60
  }
21
- part fnValidatePrescription : SystemFunction {
61
+
62
+ action fnValidatePrescription : SystemFunction {
22
63
  attribute :>> id = "FUNC-002";
23
64
  attribute :>> name = "ValidatePrescription";
24
65
  attribute :>> functionCategory = "configuration";
@@ -27,7 +68,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
27
68
  attribute :>> concernKind = ConcernKind::safety;
28
69
  attribute :>> criticality = CriticalityKind::catastrophic;
29
70
  }
30
- part fnMonitorAlarm : SystemFunction {
71
+ action fnMonitorAlarm : SystemFunction {
31
72
  attribute :>> id = "FUNC-003";
32
73
  attribute :>> name = "MonitorExceptionalConditions";
33
74
  attribute :>> functionCategory = "alarm";
@@ -36,7 +77,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
36
77
  attribute :>> concernKind = ConcernKind::safety;
37
78
  attribute :>> criticality = CriticalityKind::catastrophic;
38
79
  }
39
- part fnAnnunciate : SystemFunction {
80
+ action fnAnnunciate : SystemFunction {
40
81
  attribute :>> id = "FUNC-004";
41
82
  attribute :>> name = "AnnunciateAlarms";
42
83
  attribute :>> functionCategory = "alarm";
@@ -45,7 +86,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
45
86
  attribute :>> concernKind = ConcernKind::safety;
46
87
  attribute :>> criticality = CriticalityKind::high;
47
88
  }
48
- part fnManageInfusion : SystemFunction {
89
+ action fnManageInfusion : SystemFunction {
49
90
  attribute :>> id = "FUNC-005";
50
91
  attribute :>> name = "ManageInfusion";
51
92
  attribute :>> functionCategory = "infusion";
@@ -54,7 +95,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
54
95
  attribute :>> concernKind = ConcernKind::safety;
55
96
  attribute :>> criticality = CriticalityKind::catastrophic;
56
97
  }
57
- part fnEnforceLimits : SystemFunction {
98
+ action fnEnforceLimits : SystemFunction {
58
99
  attribute :>> id = "FUNC-006";
59
100
  attribute :>> name = "EnforceDoseLimits";
60
101
  attribute :>> functionCategory = "infusion";
@@ -63,7 +104,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
63
104
  attribute :>> concernKind = ConcernKind::safety;
64
105
  attribute :>> criticality = CriticalityKind::catastrophic;
65
106
  }
66
- part fnCommandPump : SystemFunction {
107
+ action fnCommandPump : SystemFunction {
67
108
  attribute :>> id = "FUNC-007";
68
109
  attribute :>> name = "CommandPumpMotor";
69
110
  attribute :>> functionCategory = "actuation";
@@ -72,7 +113,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
72
113
  attribute :>> concernKind = ConcernKind::safety;
73
114
  attribute :>> criticality = CriticalityKind::catastrophic;
74
115
  }
75
- part fnLogEvents : SystemFunction {
116
+ action fnLogEvents : SystemFunction {
76
117
  attribute :>> id = "FUNC-008";
77
118
  attribute :>> name = "LogTherapyEvents";
78
119
  attribute :>> functionCategory = "logging";
@@ -81,7 +122,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
81
122
  attribute :>> concernKind = ConcernKind::regulatory;
82
123
  attribute :>> criticality = CriticalityKind::medium;
83
124
  }
84
- part fnManagePower : SystemFunction {
125
+ action fnManagePower : SystemFunction {
85
126
  attribute :>> id = "FUNC-009";
86
127
  attribute :>> name = "ManagePower";
87
128
  attribute :>> functionCategory = "platform";
@@ -90,7 +131,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
90
131
  attribute :>> concernKind = ConcernKind::reliability;
91
132
  attribute :>> criticality = CriticalityKind::high;
92
133
  }
93
- part fnPresentStatus : SystemFunction {
134
+ action fnPresentStatus : SystemFunction {
94
135
  attribute :>> id = "FUNC-010";
95
136
  attribute :>> name = "PresentStatus";
96
137
  attribute :>> functionCategory = "user-interface";
@@ -99,7 +140,7 @@ package memo_examples_gpca_pump_gpca_behavior_subsystems {
99
140
  attribute :>> concernKind = ConcernKind::usability;
100
141
  attribute :>> criticality = CriticalityKind::high;
101
142
  }
102
- part fnSelfTest : SystemFunction {
143
+ action fnSelfTest : SystemFunction {
103
144
  attribute :>> id = "FUNC-011";
104
145
  attribute :>> name = "ExecuteSelfTest";
105
146
  attribute :>> functionCategory = "platform";
@@ -6,6 +6,7 @@ package memo_examples_gpca_pump_gpca_context {
6
6
  private import memo_assurance_requirements::*;
7
7
  private import memo_assurance_human_factors::*;
8
8
  private import memo_core_enumerations::*;
9
+ private import memo_examples_gpca_pump_gpca_operational::*;
9
10
 
10
11
  // ── Intended use (ISO 14971 §5.2, IEC 62366-1) ──────────────
11
12
  part gpcaIntendedUse : IntendedUse {
@@ -53,6 +54,7 @@ package memo_examples_gpca_pump_gpca_context {
53
54
  attribute :>> name = "Patient";
54
55
  attribute :>> trainingLevel = "instructed by clinician on bolus request button only";
55
56
  attribute :>> description = "Receives the infusion and requests bolus doses via the patient pendant.";
57
+ perform oaRequestBolus;
56
58
  }
57
59
  part actorNurse : User {
58
60
  attribute :>> actorKind = ActorKind::clinician;
@@ -60,6 +62,10 @@ package memo_examples_gpca_pump_gpca_context {
60
62
  attribute :>> name = "ClinicianNurse";
61
63
  attribute :>> trainingLevel = "trained clinical user; programs prescriptions and responds to alarms";
62
64
  attribute :>> description = "Loads the drug reservoir, programs and confirms the prescription, starts/stops therapy, and responds to alarms.";
65
+ perform oaProgram;
66
+ perform oaStartTherapy;
67
+ perform oaRespondAlarm;
68
+ perform oaReviewLog;
63
69
  }
64
70
  part actorPrescriber : User {
65
71
  attribute :>> actorKind = ActorKind::clinician;
@@ -67,6 +73,7 @@ package memo_examples_gpca_pump_gpca_context {
67
73
  attribute :>> name = "PrescribingPhysician";
68
74
  attribute :>> trainingLevel = "licensed prescriber";
69
75
  attribute :>> description = "Prescribes drug, concentration, basal rate, bolus volume, lockout interval, and maximum dose limits.";
76
+ perform oaPrescribe;
70
77
  }
71
78
  part actorPharmacist : User {
72
79
  attribute :>> actorKind = ActorKind::clinician;
@@ -74,6 +81,7 @@ package memo_examples_gpca_pump_gpca_context {
74
81
  attribute :>> name = "Pharmacist";
75
82
  attribute :>> trainingLevel = "licensed pharmacist";
76
83
  attribute :>> description = "Prepares the drug reservoir and verifies drug and concentration against the prescription.";
84
+ perform oaLoadReservoir;
77
85
  }
78
86
  part actorTechnician : User {
79
87
  attribute :>> actorKind = ActorKind::technician;
@@ -81,6 +89,7 @@ package memo_examples_gpca_pump_gpca_context {
81
89
  attribute :>> name = "BiomedicalTechnician";
82
90
  attribute :>> trainingLevel = "service-trained; authenticated service access";
83
91
  attribute :>> description = "Performs maintenance, battery replacement, and calibration through the service interface.";
92
+ perform oaMaintain;
84
93
  }
85
94
 
86
95
  // ── Foreseeable use errors (IEC 62366-1, AAMI TIR PCA) ──────
@@ -1,11 +1,14 @@
1
1
  package memo_examples_gpca_pump_gpca_cybersecurity {
2
2
  private import ScalarValues::*;
3
+ private import memo_core_dimensions::*; // ElementStatusKind
3
4
 
4
5
  private import memo_assurance_cybersecurity::*;
5
6
  private import memo_assurance_requirements::*;
6
7
  private import memo_assurance_safety_risk::*;
7
8
  private import memo_assurance_verification_validation::*;
8
9
  private import memo_core_enumerations::*;
10
+ private import memo_core_common::*;
11
+ private import memo_architecture_operational_scenarios::*;
9
12
  private import memo_core_relationships::*;
10
13
  private import memo_examples_gpca_pump_gpca_architecture::*;
11
14
  private import memo_examples_gpca_pump_gpca_risk::*;
@@ -78,9 +81,10 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
78
81
  attribute :>> cweReference = "CWE-798";
79
82
  }
80
83
 
81
- action tamperedConfigurationScenario : ThreatScenario {
84
+ action tamperedConfigurationScenario : MemoScenario {
82
85
  attribute :>> id = "SCN-001";
83
86
  attribute :>> name = "TamperedTherapyConfigurationScenario";
87
+ attribute :>> scenarioKind = ScenarioKind::threat;
84
88
  attribute :>> description = "An attacker with local access to the maintenance port alters lockout or dose parameters, aiming to bypass safety limits; may enable unsafe therapy delivery or bypass safeguards.";
85
89
  attribute :>> actorDescription = "unauthorized actor with local access to the maintenance port";
86
90
  attribute :>> defaultCategory = ThreatCategoryKind::tampering;
@@ -128,7 +132,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
128
132
  attribute :>> statement = "The system shall require authenticated and authorized service access before any therapy configuration parameter can be modified.";
129
133
  attribute :>> sourceKind = RequirementSourceKind::risk;
130
134
  attribute :>> concernKind = ConcernKind::cybersecurity;
131
- attribute :>> requirementStatus = RequirementStatusKind::approved;
135
+ attribute :>> status = ElementStatusKind::approved;
132
136
  attribute :>> acceptanceCriteria = "Unauthenticated or unauthorized attempts to modify therapy configuration are rejected and logged.";
133
137
  attribute :>> subjectDescription = "maintenance and configuration path";
134
138
  attribute :>> actorDescription = "service personnel";
@@ -145,7 +149,9 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
145
149
  attribute :>> name = "VerifyAuthenticatedServiceAccess";
146
150
  attribute :>> methodKind = VerificationMethodKind::test;
147
151
  attribute :>> acceptanceCriteria = "Only authenticated and authorized service sessions may modify therapy configuration; all attempts are logged.";
148
- attribute :>> status = "planned";
152
+ attribute :>> status = ElementStatusKind::approved;
153
+
154
+ objective { verify reqAuthenticatedServiceAccess; }
149
155
  }
150
156
 
151
157
  connection : ThreatenedBy connect protectedAsset ::> therapyConfigurationAsset to realizedThreat ::> unauthorizedConfigChangeThreat;
@@ -166,7 +172,5 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
166
172
 
167
173
  connection : CrossesTrustBoundary connect boundary ::> maintenancePortBoundary to crossingItem ::> therapyConfigurationAsset;
168
174
 
169
- connection : VerifiedBy connect verificationTarget ::> reqAuthenticatedServiceAccess to verificationCase ::> vcAuthenticatedServiceAccess;
170
-
171
175
  connection : ProducesEvidence connect producer ::> vcAuthenticatedServiceAccess to producedEvidence ::> evidenceLockout;
172
176
  }