@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
@@ -1,174 +1,179 @@
1
1
  // Functional architecture — the row axis of the DSM.
2
2
  //
3
- // Four capability trees, each decomposed with Composes, plus the functional
3
+ // Four capability trees, each a native containment tree, plus the functional
4
4
  // exchanges between the leaves. The exchanges are deliberately not a clean
5
5
  // pipeline: DriveActuator and MeasureDeliveredVolume feed each other, so a
6
6
  // partitioned DSM still shows one genuine feedback mark instead of an empty
7
7
  // lower triangle.
8
8
  package memo_examples_nested_architecture_dsm_architecture_functional_functions {
9
+ private import memo_examples_nested_architecture_dsm_assurance_requirements::*;
9
10
  private import ScalarValues::*;
10
11
 
11
12
  private import memo_core_enumerations::*;
12
13
  private import memo_core_relationships::*;
13
14
  private import memo_architecture_functional_functions::*;
15
+ private import memo_architecture_operational_context_use_context::*;
14
16
 
15
17
  // ── Deliver therapy ──────────────────────────────────────────
16
- part fnDeliverTherapy : SystemFunction {
18
+ action fnDeliverTherapy : SystemFunction {
17
19
  attribute :>> id = "NDS-FN-001"; attribute :>> name = "DeliverTherapy";
18
20
  attribute :>> functionCategory = "therapy";
19
21
  attribute :>> criticality = CriticalityKind::catastrophic;
20
22
  attribute :>> concernKind = ConcernKind::safety;
21
23
  attribute :>> outputSummary = "fluid delivered to the patient line at the prescribed rate";
24
+
25
+ action fnMeterFluid : SystemFunction {
26
+ attribute :>> id = "NDS-FN-002"; attribute :>> name = "MeterFluid";
27
+ attribute :>> functionCategory = "therapy";
28
+ attribute :>> criticality = CriticalityKind::catastrophic;
29
+ attribute :>> concernKind = ConcernKind::safety;
30
+ attribute :>> outputSummary = "measured volume displaced per control period";
31
+
32
+ action fnDriveActuator : SystemFunction {
33
+ attribute :>> id = "NDS-FN-003"; attribute :>> name = "DriveActuator";
34
+ attribute :>> functionCategory = "therapy";
35
+ attribute :>> criticality = CriticalityKind::catastrophic;
36
+ attribute :>> trigger = "rate command from the dose control loop";
37
+ attribute :>> concernKind = ConcernKind::safety;
38
+ }
39
+ action fnMeasureDelivered : SystemFunction {
40
+ attribute :>> id = "NDS-FN-004"; attribute :>> name = "MeasureDeliveredVolume";
41
+ attribute :>> functionCategory = "therapy";
42
+ attribute :>> criticality = CriticalityKind::high;
43
+ attribute :>> concernKind = ConcernKind::safety;
44
+ attribute :>> outputSummary = "cumulative delivered volume";
45
+ }
46
+ }
47
+ action fnControlDose : SystemFunction {
48
+ attribute :>> id = "NDS-FN-005"; attribute :>> name = "ControlDose";
49
+ attribute :>> functionCategory = "therapy";
50
+ attribute :>> criticality = CriticalityKind::catastrophic;
51
+ attribute :>> concernKind = ConcernKind::safety;
52
+
53
+ action fnComputeRate : SystemFunction {
54
+ attribute :>> id = "NDS-FN-006"; attribute :>> name = "ComputeInfusionRate";
55
+ attribute :>> functionCategory = "therapy";
56
+ attribute :>> criticality = CriticalityKind::catastrophic;
57
+ attribute :>> concernKind = ConcernKind::safety;
58
+ attribute :>> outputSummary = "rate command, saturated at the prescribed ceiling";
59
+ }
60
+ action fnValidatePrescription : SystemFunction {
61
+ attribute :>> id = "NDS-FN-007"; attribute :>> name = "ValidatePrescription";
62
+ attribute :>> functionCategory = "therapy";
63
+ attribute :>> criticality = CriticalityKind::high;
64
+ attribute :>> concernKind = ConcernKind::clinical;
65
+ attribute :>> outputSummary = "accepted or rejected prescription, with the reason";
66
+ }
67
+ }
22
68
  }
23
- part fnMeterFluid : SystemFunction {
24
- attribute :>> id = "NDS-FN-002"; attribute :>> name = "MeterFluid";
25
- attribute :>> functionCategory = "therapy";
26
- attribute :>> criticality = CriticalityKind::catastrophic;
27
- attribute :>> concernKind = ConcernKind::safety;
28
- attribute :>> outputSummary = "measured volume displaced per control period";
29
- }
30
- part fnDriveActuator : SystemFunction {
31
- attribute :>> id = "NDS-FN-003"; attribute :>> name = "DriveActuator";
32
- attribute :>> functionCategory = "therapy";
33
- attribute :>> criticality = CriticalityKind::catastrophic;
34
- attribute :>> trigger = "rate command from the dose control loop";
35
- attribute :>> concernKind = ConcernKind::safety;
36
- }
37
- part fnMeasureDelivered : SystemFunction {
38
- attribute :>> id = "NDS-FN-004"; attribute :>> name = "MeasureDeliveredVolume";
39
- attribute :>> functionCategory = "therapy";
40
- attribute :>> criticality = CriticalityKind::high;
41
- attribute :>> concernKind = ConcernKind::safety;
42
- attribute :>> outputSummary = "cumulative delivered volume";
43
- }
44
- part fnControlDose : SystemFunction {
45
- attribute :>> id = "NDS-FN-005"; attribute :>> name = "ControlDose";
46
- attribute :>> functionCategory = "therapy";
47
- attribute :>> criticality = CriticalityKind::catastrophic;
48
- attribute :>> concernKind = ConcernKind::safety;
49
- }
50
- part fnComputeRate : SystemFunction {
51
- attribute :>> id = "NDS-FN-006"; attribute :>> name = "ComputeInfusionRate";
52
- attribute :>> functionCategory = "therapy";
53
- attribute :>> criticality = CriticalityKind::catastrophic;
54
- attribute :>> concernKind = ConcernKind::safety;
55
- attribute :>> outputSummary = "rate command, saturated at the prescribed ceiling";
56
- }
57
- part fnValidatePrescription : SystemFunction {
58
- attribute :>> id = "NDS-FN-007"; attribute :>> name = "ValidatePrescription";
59
- attribute :>> functionCategory = "therapy";
60
- attribute :>> criticality = CriticalityKind::high;
61
- attribute :>> concernKind = ConcernKind::clinical;
62
- attribute :>> outputSummary = "accepted or rejected prescription, with the reason";
63
- }
64
- connection : Composes connect parent ::> fnDeliverTherapy to child ::> fnMeterFluid;
65
- connection : Composes connect parent ::> fnDeliverTherapy to child ::> fnControlDose;
66
- connection : Composes connect parent ::> fnMeterFluid to child ::> fnDriveActuator;
67
- connection : Composes connect parent ::> fnMeterFluid to child ::> fnMeasureDelivered;
68
- connection : Composes connect parent ::> fnControlDose to child ::> fnComputeRate;
69
- connection : Composes connect parent ::> fnControlDose to child ::> fnValidatePrescription;
70
69
 
71
70
  // ── Ensure safety ────────────────────────────────────────────
72
- part fnEnsureSafety : SystemFunction {
71
+ action fnEnsureSafety : SystemFunction {
73
72
  attribute :>> id = "NDS-FN-008"; attribute :>> name = "EnsureSafety";
74
73
  attribute :>> functionCategory = "protection";
75
74
  attribute :>> criticality = CriticalityKind::catastrophic;
76
75
  attribute :>> concernKind = ConcernKind::safety;
76
+
77
+ action fnDetectOcclusion : SystemFunction {
78
+ attribute :>> id = "NDS-FN-009"; attribute :>> name = "DetectOcclusion";
79
+ attribute :>> functionCategory = "protection";
80
+ attribute :>> criticality = CriticalityKind::catastrophic;
81
+ attribute :>> trigger = "line pressure above the occlusion threshold";
82
+ attribute :>> concernKind = ConcernKind::safety;
83
+ }
84
+ action fnDetectAirInLine : SystemFunction {
85
+ attribute :>> id = "NDS-FN-010"; attribute :>> name = "DetectAirInLine";
86
+ attribute :>> functionCategory = "protection";
87
+ attribute :>> criticality = CriticalityKind::catastrophic;
88
+ attribute :>> trigger = "air bolus detected in the patient line";
89
+ attribute :>> concernKind = ConcernKind::safety;
90
+ }
91
+ action fnEnforceDoseLimits : SystemFunction {
92
+ attribute :>> id = "NDS-FN-011"; attribute :>> name = "EnforceDoseLimits";
93
+ attribute :>> functionCategory = "protection";
94
+ attribute :>> criticality = CriticalityKind::catastrophic;
95
+ attribute :>> concernKind = ConcernKind::safety;
96
+ attribute :>> outputSummary = "delivery stopped when the commanded dose leaves the accepted envelope";
97
+ }
77
98
  }
78
- part fnDetectOcclusion : SystemFunction {
79
- attribute :>> id = "NDS-FN-009"; attribute :>> name = "DetectOcclusion";
80
- attribute :>> functionCategory = "protection";
81
- attribute :>> criticality = CriticalityKind::catastrophic;
82
- attribute :>> trigger = "line pressure above the occlusion threshold";
83
- attribute :>> concernKind = ConcernKind::safety;
84
- }
85
- part fnDetectAirInLine : SystemFunction {
86
- attribute :>> id = "NDS-FN-010"; attribute :>> name = "DetectAirInLine";
87
- attribute :>> functionCategory = "protection";
88
- attribute :>> criticality = CriticalityKind::catastrophic;
89
- attribute :>> trigger = "air bolus detected in the patient line";
90
- attribute :>> concernKind = ConcernKind::safety;
91
- }
92
- part fnEnforceDoseLimits : SystemFunction {
93
- attribute :>> id = "NDS-FN-011"; attribute :>> name = "EnforceDoseLimits";
94
- attribute :>> functionCategory = "protection";
95
- attribute :>> criticality = CriticalityKind::catastrophic;
96
- attribute :>> concernKind = ConcernKind::safety;
97
- attribute :>> outputSummary = "delivery stopped when the commanded dose leaves the accepted envelope";
98
- }
99
- connection : Composes connect parent ::> fnEnsureSafety to child ::> fnDetectOcclusion;
100
- connection : Composes connect parent ::> fnEnsureSafety to child ::> fnDetectAirInLine;
101
- connection : Composes connect parent ::> fnEnsureSafety to child ::> fnEnforceDoseLimits;
102
99
 
103
100
  // ── Inform the user ──────────────────────────────────────────
104
- part fnInformUser : SystemFunction {
101
+ action fnInformUser : SystemFunction {
105
102
  attribute :>> id = "NDS-FN-012"; attribute :>> name = "InformUser";
106
103
  attribute :>> functionCategory = "interaction";
107
104
  attribute :>> criticality = CriticalityKind::high;
108
105
  attribute :>> concernKind = ConcernKind::usability;
106
+
107
+ action fnRenderStatus : SystemFunction {
108
+ attribute :>> id = "NDS-FN-013"; attribute :>> name = "RenderTherapyStatus";
109
+ attribute :>> functionCategory = "interaction";
110
+ attribute :>> criticality = CriticalityKind::high;
111
+ attribute :>> concernKind = ConcernKind::usability;
112
+ attribute :>> outputSummary = "rate, volume delivered and time remaining";
113
+ }
114
+ action fnAnnunciateAlarm : SystemFunction {
115
+ attribute :>> id = "NDS-FN-014"; attribute :>> name = "AnnunciateAlarm";
116
+ attribute :>> functionCategory = "interaction";
117
+ attribute :>> criticality = CriticalityKind::catastrophic;
118
+ attribute :>> trigger = "any active alarm condition";
119
+ attribute :>> concernKind = ConcernKind::safety;
120
+ }
121
+ action fnAcceptInput : SystemFunction {
122
+ attribute :>> id = "NDS-FN-015"; attribute :>> name = "AcceptClinicianInput";
123
+ attribute :>> functionCategory = "interaction";
124
+ attribute :>> criticality = CriticalityKind::high;
125
+ attribute :>> concernKind = ConcernKind::usability;
126
+ attribute :>> outputSummary = "confirmed prescription changes";
127
+ }
109
128
  }
110
- part fnRenderStatus : SystemFunction {
111
- attribute :>> id = "NDS-FN-013"; attribute :>> name = "RenderTherapyStatus";
112
- attribute :>> functionCategory = "interaction";
113
- attribute :>> criticality = CriticalityKind::high;
114
- attribute :>> concernKind = ConcernKind::usability;
115
- attribute :>> outputSummary = "rate, volume delivered and time remaining";
116
- }
117
- part fnAnnunciateAlarm : SystemFunction {
118
- attribute :>> id = "NDS-FN-014"; attribute :>> name = "AnnunciateAlarm";
119
- attribute :>> functionCategory = "interaction";
120
- attribute :>> criticality = CriticalityKind::catastrophic;
121
- attribute :>> trigger = "any active alarm condition";
122
- attribute :>> concernKind = ConcernKind::safety;
123
- }
124
- part fnAcceptInput : SystemFunction {
125
- attribute :>> id = "NDS-FN-015"; attribute :>> name = "AcceptClinicianInput";
126
- attribute :>> functionCategory = "interaction";
127
- attribute :>> criticality = CriticalityKind::high;
128
- attribute :>> concernKind = ConcernKind::usability;
129
- attribute :>> outputSummary = "confirmed prescription changes";
130
- }
131
- connection : Composes connect parent ::> fnInformUser to child ::> fnRenderStatus;
132
- connection : Composes connect parent ::> fnInformUser to child ::> fnAnnunciateAlarm;
133
- connection : Composes connect parent ::> fnInformUser to child ::> fnAcceptInput;
134
129
 
135
130
  // ── Manage power ─────────────────────────────────────────────
136
- part fnManagePower : SystemFunction {
131
+ action fnManagePower : SystemFunction {
137
132
  attribute :>> id = "NDS-FN-016"; attribute :>> name = "ManagePower";
138
133
  attribute :>> functionCategory = "platform";
139
134
  attribute :>> criticality = CriticalityKind::high;
140
135
  attribute :>> concernKind = ConcernKind::reliability;
136
+
137
+ action fnMonitorBattery : SystemFunction {
138
+ attribute :>> id = "NDS-FN-017"; attribute :>> name = "MonitorBatteryState";
139
+ attribute :>> functionCategory = "platform";
140
+ attribute :>> criticality = CriticalityKind::high;
141
+ attribute :>> concernKind = ConcernKind::reliability;
142
+ attribute :>> outputSummary = "state of charge and remaining run time";
143
+ }
144
+ action fnSelectPowerSource : SystemFunction {
145
+ attribute :>> id = "NDS-FN-018"; attribute :>> name = "SelectPowerSource";
146
+ attribute :>> functionCategory = "platform";
147
+ attribute :>> criticality = CriticalityKind::high;
148
+ attribute :>> trigger = "mains loss or rail brownout";
149
+ attribute :>> concernKind = ConcernKind::reliability;
150
+ }
141
151
  }
142
- part fnMonitorBattery : SystemFunction {
143
- attribute :>> id = "NDS-FN-017"; attribute :>> name = "MonitorBatteryState";
144
- attribute :>> functionCategory = "platform";
145
- attribute :>> criticality = CriticalityKind::high;
146
- attribute :>> concernKind = ConcernKind::reliability;
147
- attribute :>> outputSummary = "state of charge and remaining run time";
148
- }
149
- part fnSelectPowerSource : SystemFunction {
150
- attribute :>> id = "NDS-FN-018"; attribute :>> name = "SelectPowerSource";
151
- attribute :>> functionCategory = "platform";
152
- attribute :>> criticality = CriticalityKind::high;
153
- attribute :>> trigger = "mains loss or rail brownout";
154
- attribute :>> concernKind = ConcernKind::reliability;
155
- }
156
- connection : Composes connect parent ::> fnManagePower to child ::> fnMonitorBattery;
157
- connection : Composes connect parent ::> fnManagePower to child ::> fnSelectPowerSource;
158
152
 
159
153
  // ── Functional exchange ──────────────────────────────────────
160
154
  // Cross-tree marks are the interesting ones: they are what a collapsed DSM
161
155
  // rolls up into a single number between two capabilities.
162
- connection : ExchangesWith connect source ::> fnMeasureDelivered to target ::> fnComputeRate;
163
- connection : ExchangesWith connect source ::> fnComputeRate to target ::> fnDriveActuator;
164
- connection : ExchangesWith connect source ::> fnDriveActuator to target ::> fnMeasureDelivered;
165
- connection : ExchangesWith connect source ::> fnValidatePrescription to target ::> fnComputeRate;
166
- connection : ExchangesWith connect source ::> fnAcceptInput to target ::> fnValidatePrescription;
167
- connection : ExchangesWith connect source ::> fnDetectOcclusion to target ::> fnEnforceDoseLimits;
168
- connection : ExchangesWith connect source ::> fnDetectAirInLine to target ::> fnAnnunciateAlarm;
169
- connection : ExchangesWith connect source ::> fnEnforceDoseLimits to target ::> fnDriveActuator;
170
- connection : ExchangesWith connect source ::> fnMeasureDelivered to target ::> fnRenderStatus;
171
- connection : ExchangesWith connect source ::> fnMonitorBattery to target ::> fnAnnunciateAlarm;
172
- connection : ExchangesWith connect source ::> fnSelectPowerSource to target ::> fnDriveActuator;
173
- connection : ExchangesWith connect source ::> fnDetectOcclusion to target ::> fnAnnunciateAlarm;
156
+ flow from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnDeliverTherapy.fnControlDose.fnComputeRate;
157
+ flow from fnDeliverTherapy.fnControlDose.fnComputeRate to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
158
+ flow from fnDeliverTherapy.fnMeterFluid.fnDriveActuator to fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered;
159
+ flow from fnDeliverTherapy.fnControlDose.fnValidatePrescription to fnDeliverTherapy.fnControlDose.fnComputeRate;
160
+ flow from fnInformUser.fnAcceptInput to fnDeliverTherapy.fnControlDose.fnValidatePrescription;
161
+ flow from fnEnsureSafety.fnDetectOcclusion to fnEnsureSafety.fnEnforceDoseLimits;
162
+ flow from fnEnsureSafety.fnDetectAirInLine to fnInformUser.fnAnnunciateAlarm;
163
+ flow from fnEnsureSafety.fnEnforceDoseLimits to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
164
+ flow from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnInformUser.fnRenderStatus;
165
+ flow from fnManagePower.fnMonitorBattery to fnInformUser.fnAnnunciateAlarm;
166
+ flow from fnManagePower.fnSelectPowerSource to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
167
+ flow from fnEnsureSafety.fnDetectOcclusion to fnInformUser.fnAnnunciateAlarm;
168
+ satisfy reqDoseAccuracy by fnDeliverTherapy.fnControlDose.fnComputeRate;
169
+ satisfy reqDoseAccuracy by fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
170
+ satisfy reqOcclusionDetection by fnEnsureSafety.fnDetectOcclusion;
171
+ satisfy reqOcclusionDetection by fnEnsureSafety.fnEnforceDoseLimits;
172
+ satisfy reqAirInLine by fnEnsureSafety.fnDetectAirInLine;
173
+ satisfy reqAirInLine by fnInformUser.fnAnnunciateAlarm;
174
+ satisfy reqAlarmAnnunciation by fnInformUser.fnAnnunciateAlarm;
175
+ satisfy reqBatteryEndurance by fnManagePower.fnMonitorBattery;
176
+ satisfy reqBatteryEndurance by fnManagePower.fnSelectPowerSource;
177
+ satisfy reqPrescriptionConfirmation by fnInformUser.fnAcceptInput;
178
+ satisfy reqPrescriptionConfirmation by fnDeliverTherapy.fnControlDose.fnValidatePrescription;
174
179
  }