@memoarchitect/ontology 0.7.0 → 0.8.24

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 (270) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
  7. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  9. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
  10. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  11. package/examples/gpca-pump/memo.package.yaml +3 -0
  12. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  13. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  14. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  15. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  16. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  17. package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
  18. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
  19. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  20. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
  21. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  22. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  23. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  24. package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
  25. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
  26. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  27. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  28. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
  30. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
  31. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
  32. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
  39. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
  41. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
  42. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
  44. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -6
  47. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  48. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
  50. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +5 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  54. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  55. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
  56. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  57. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  58. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
  59. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  60. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  61. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  62. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  63. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  64. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  65. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  66. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  67. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  68. package/examples/reusable-instrument/memo.package.yaml +3 -0
  69. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
  70. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  71. package/examples/ros-mobile-robot/README.md +40 -0
  72. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  73. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  74. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  75. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  76. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +12 -0
  77. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  78. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  79. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
  80. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  81. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  82. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
  83. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  84. package/examples/surgical-robot/memo.package.yaml +3 -0
  85. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  86. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  87. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  88. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
  89. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
  90. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
  91. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
  92. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
  93. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
  94. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
  95. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
  96. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
  97. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
  98. package/examples/temperature-alarm/memo.package.yaml +3 -0
  99. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
  100. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  101. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  102. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  103. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  104. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  105. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  106. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  107. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  108. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
  109. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  110. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  111. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
  112. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
  113. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
  114. package/extensions/LICENSES/MIT.txt +19 -0
  115. package/extensions/README.md +94 -0
  116. package/extensions/aadl/memo.package.yaml +18 -0
  117. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  118. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  119. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  120. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  121. package/extensions/cloud/memo.package.yaml +18 -0
  122. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  123. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  124. package/extensions/container/memo.package.yaml +18 -0
  125. package/extensions/container/src/container_extension.sysml +37 -0
  126. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  127. package/extensions/messaging/memo.package.yaml +18 -0
  128. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  129. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  130. package/extensions/ros/memo.package.yaml +18 -0
  131. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  132. package/extensions/ros/src/ros_extension.sysml +200 -0
  133. package/extensions/template/src/extension.sysml +37 -0
  134. package/memo.manifest.yaml +13 -2
  135. package/methodologies/default/memo.package.yaml +1 -1
  136. package/methodologies/gpca/memo.package.yaml +1 -1
  137. package/ontology/memo.package.yaml +1 -1
  138. package/package.json +5 -3
  139. package/profile/memo.package.yaml +1 -1
  140. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  141. package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
  142. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  143. package/src/architecture/functional/functions/memo_functions.sysml +93 -36
  144. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
  145. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  146. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
  147. package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
  148. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
  149. package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
  150. package/src/architecture/operational/activities/memo_activities.sysml +27 -29
  151. package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
  152. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
  153. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
  154. package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
  155. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  156. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
  157. package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
  158. package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
  159. package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
  160. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  161. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  162. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  163. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  164. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  165. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  166. package/src/artifacts/standards/iec_60812.sysml +51 -0
  167. package/src/artifacts/standards/iec_62304.sysml +210 -0
  168. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  169. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  170. package/src/artifacts/standards/iso_13485.sysml +113 -0
  171. package/src/artifacts/standards/iso_14971.sysml +94 -0
  172. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  173. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  174. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  175. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  176. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  177. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  178. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  179. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  180. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  181. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  182. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  183. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  184. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  185. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  186. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  187. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  188. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  189. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  190. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  191. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  192. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  193. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  194. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  195. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  196. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  197. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  198. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  199. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  200. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  201. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  202. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  203. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  204. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  205. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  206. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  207. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  208. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  209. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  210. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +40 -21
  211. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  212. package/src/assurance/requirements/memo_requirements.sysml +7 -20
  213. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  214. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  215. package/src/assurance/safety_risk/memo_risk.sysml +90 -7
  216. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  217. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  218. package/src/core/annotations/memo_annotations.sysml +25 -6
  219. package/src/core/common/memo_common.sysml +130 -21
  220. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  221. package/src/core/dimensions/dimensions.sysml +12 -0
  222. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  223. package/src/core/relationships/memo_relationships.sysml +199 -196
  224. package/src/memo_namespaces.sysml +30 -0
  225. package/src/methodology/core/memo_core.sysml +24 -0
  226. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  227. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  228. package/src/rules/closure/closure_rules.sysml +20 -20
  229. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  230. package/src/rules/ontology/ontology_invariants.sysml +223 -11
  231. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  232. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
  233. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  234. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  235. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
  236. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
  237. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
  238. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  239. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
  240. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
  241. package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
  242. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
  243. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  244. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
  245. package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
  246. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
  247. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
  248. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  249. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
  250. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  251. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
  252. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  253. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
  254. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  255. package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
  256. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  257. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
  258. package/templates/connected-device/memo.package.yaml +2 -0
  259. package/templates/default/memo.package.yaml +2 -0
  260. package/templates/infusion-pump/memo.package.yaml +2 -0
  261. package/templates/monitoring-device/memo.package.yaml +2 -0
  262. package/templates/samd/memo.package.yaml +2 -0
  263. package/examples/extensions/README.md +0 -16
  264. package/examples/extensions/template/src/extension.sysml +0 -15
  265. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  266. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  267. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  268. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  269. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  270. /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";
@@ -3,15 +3,17 @@ package memo_examples_gpca_pump_gpca_context {
3
3
 
4
4
  private import memo_architecture_operational_context_actors::*;
5
5
  private import memo_architecture_operational_context_use_context::*;
6
+ private import memo_architecture_operational_structure::*;
6
7
  private import memo_assurance_requirements::*;
8
+ private import memo_assurance_safety_risk::*;
7
9
  private import memo_assurance_human_factors::*;
8
10
  private import memo_core_enumerations::*;
11
+ private import memo_examples_gpca_pump_gpca_operational::*;
9
12
 
10
13
  // ── Intended use (ISO 14971 §5.2, IEC 62366-1) ──────────────
11
14
  part gpcaIntendedUse : IntendedUse {
12
15
  attribute :>> id = "IU-001";
13
16
  attribute :>> name = "GPCA_IntendedUse";
14
- attribute :>> title = "GPCA Pump Intended Use";
15
17
  attribute :>> shortDescription = "Patient-controlled analgesia infusion of prescribed opioid analgesics.";
16
18
  attribute :>> description = "The GPCA pump delivers a prescribed analgesic drug intravenously at a programmed basal rate, supplemented by square boluses delivered automatically at programmed intervals and by patient-requested bolus doses, subject to lockout intervals and maximum-dose limits.";
17
19
  attribute :>> indication = "Management of acute post-operative or chronic pain requiring titrated intravenous opioid analgesia.";
@@ -19,12 +21,14 @@ package memo_examples_gpca_pump_gpca_context {
19
21
  attribute :>> patientPopulation = "Adult in-patients under clinical supervision.";
20
22
  attribute :>> clinicalBenefit = "Timely, patient-titrated analgesia with lower total opioid consumption than fixed-schedule dosing.";
21
23
  attribute :>> regulatoryClassification = "FDA Class II infusion pump (21 CFR 880.5725); IEC 62304 software safety class C.";
24
+ attribute :>> missionKind = "therapeutic device mission";
25
+ attribute :>> successCriteria = "Drug delivered per prescription; no overdose or undetected under-infusion; every hazardous condition annunciated within its alarm latency budget.";
26
+ attribute :>> operationalContext = "Acute-care hospital ward, fixed (non-ambulatory) location (UC-001).";
22
27
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1-2.3 (GPCA overview, system functions, user characteristics)";
23
28
  }
24
29
  part bolusByProxyMisuse : ReasonablyForeseeableMisuse {
25
30
  attribute :>> id = "RFM-001";
26
31
  attribute :>> name = "BolusRequestBySomeoneOtherThanPatient";
27
- attribute :>> title = "Bolus by proxy";
28
32
  attribute :>> shortDescription = "A caregiver or visitor presses the patient bolus control.";
29
33
  attribute :>> description = "A person other than the patient activates the bolus request control, bypassing the intended patient self-limiting behavior.";
30
34
  attribute :>> misuseContext = "Patient-controlled analgesia in a supervised hospital setting.";
@@ -41,7 +45,6 @@ package memo_examples_gpca_pump_gpca_context {
41
45
  attribute :>> environment = "indoor clinical environment, mains power with battery backup, pole or bed-rail mounted";
42
46
  attribute :>> jurisdiction = "generic (FDA/EU reference model)";
43
47
  attribute :>> connectedUse = true;
44
- attribute :>> intendedUseReference = "IU-001";
45
48
  }
46
49
  // UC-002 (intra-hospital transport) removed: CriSys §2.4 states the
47
50
  // system is used in a fixed location and is not ambulatory.
@@ -53,6 +56,7 @@ package memo_examples_gpca_pump_gpca_context {
53
56
  attribute :>> name = "Patient";
54
57
  attribute :>> trainingLevel = "instructed by clinician on bolus request button only";
55
58
  attribute :>> description = "Receives the infusion and requests bolus doses via the patient pendant.";
59
+ perform oaRequestBolus;
56
60
  }
57
61
  part actorNurse : User {
58
62
  attribute :>> actorKind = ActorKind::clinician;
@@ -60,6 +64,10 @@ package memo_examples_gpca_pump_gpca_context {
60
64
  attribute :>> name = "ClinicianNurse";
61
65
  attribute :>> trainingLevel = "trained clinical user; programs prescriptions and responds to alarms";
62
66
  attribute :>> description = "Loads the drug reservoir, programs and confirms the prescription, starts/stops therapy, and responds to alarms.";
67
+ perform oaProgram;
68
+ perform oaStartTherapy;
69
+ perform oaRespondAlarm;
70
+ perform oaReviewLog;
63
71
  }
64
72
  part actorPrescriber : User {
65
73
  attribute :>> actorKind = ActorKind::clinician;
@@ -67,6 +75,7 @@ package memo_examples_gpca_pump_gpca_context {
67
75
  attribute :>> name = "PrescribingPhysician";
68
76
  attribute :>> trainingLevel = "licensed prescriber";
69
77
  attribute :>> description = "Prescribes drug, concentration, basal rate, bolus volume, lockout interval, and maximum dose limits.";
78
+ perform oaPrescribe;
70
79
  }
71
80
  part actorPharmacist : User {
72
81
  attribute :>> actorKind = ActorKind::clinician;
@@ -74,6 +83,7 @@ package memo_examples_gpca_pump_gpca_context {
74
83
  attribute :>> name = "Pharmacist";
75
84
  attribute :>> trainingLevel = "licensed pharmacist";
76
85
  attribute :>> description = "Prepares the drug reservoir and verifies drug and concentration against the prescription.";
86
+ perform oaLoadReservoir;
77
87
  }
78
88
  part actorTechnician : User {
79
89
  attribute :>> actorKind = ActorKind::technician;
@@ -81,6 +91,7 @@ package memo_examples_gpca_pump_gpca_context {
81
91
  attribute :>> name = "BiomedicalTechnician";
82
92
  attribute :>> trainingLevel = "service-trained; authenticated service access";
83
93
  attribute :>> description = "Performs maintenance, battery replacement, and calibration through the service interface.";
94
+ perform oaMaintain;
84
95
  }
85
96
 
86
97
  // ── 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,7 +81,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
78
81
  attribute :>> cweReference = "CWE-798";
79
82
  }
80
83
 
81
- action tamperedConfigurationScenario : ThreatScenario {
84
+ action tamperedConfigurationScenario : OperativeScenario {
82
85
  attribute :>> id = "SCN-001";
83
86
  attribute :>> name = "TamperedTherapyConfigurationScenario";
84
87
  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.";
@@ -128,7 +131,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
128
131
  attribute :>> statement = "The system shall require authenticated and authorized service access before any therapy configuration parameter can be modified.";
129
132
  attribute :>> sourceKind = RequirementSourceKind::risk;
130
133
  attribute :>> concernKind = ConcernKind::cybersecurity;
131
- attribute :>> requirementStatus = RequirementStatusKind::approved;
134
+ attribute :>> status = ElementStatusKind::approved;
132
135
  attribute :>> acceptanceCriteria = "Unauthenticated or unauthorized attempts to modify therapy configuration are rejected and logged.";
133
136
  attribute :>> subjectDescription = "maintenance and configuration path";
134
137
  attribute :>> actorDescription = "service personnel";
@@ -145,7 +148,9 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
145
148
  attribute :>> name = "VerifyAuthenticatedServiceAccess";
146
149
  attribute :>> methodKind = VerificationMethodKind::test;
147
150
  attribute :>> acceptanceCriteria = "Only authenticated and authorized service sessions may modify therapy configuration; all attempts are logged.";
148
- attribute :>> status = "planned";
151
+ attribute :>> status = ElementStatusKind::approved;
152
+
153
+ objective { verify reqAuthenticatedServiceAccess; }
149
154
  }
150
155
 
151
156
  connection : ThreatenedBy connect protectedAsset ::> therapyConfigurationAsset to realizedThreat ::> unauthorizedConfigChangeThreat;
@@ -166,7 +171,5 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
166
171
 
167
172
  connection : CrossesTrustBoundary connect boundary ::> maintenancePortBoundary to crossingItem ::> therapyConfigurationAsset;
168
173
 
169
- connection : VerifiedBy connect verificationTarget ::> reqAuthenticatedServiceAccess to verificationCase ::> vcAuthenticatedServiceAccess;
170
-
171
174
  connection : ProducesEvidence connect producer ::> vcAuthenticatedServiceAccess to producedEvidence ::> evidenceLockout;
172
175
  }