@memoarchitect/ontology 0.12.1 → 0.15.0

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 (317) hide show
  1. package/README.md +5 -3
  2. package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
  3. package/examples/connected-patient-monitor/memo.package.yaml +3 -1
  4. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
  5. package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
  8. package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
  9. package/examples/functional-logical-physical/memo.identity.yaml +28 -0
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -1
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  12. package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
  13. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
  14. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
  15. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
  16. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
  17. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
  18. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
  19. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
  20. package/examples/gpca-pump/analysis/Samples/README.md +15 -9
  21. package/examples/gpca-pump/analysis/memo_model.py +243 -0
  22. package/examples/gpca-pump/memo.identity.yaml +521 -26
  23. package/examples/gpca-pump/memo.package.yaml +3 -1
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -358
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
  38. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -91
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
  47. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
  50. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
  54. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
  55. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
  56. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
  57. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
  58. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
  59. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
  60. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
  61. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  62. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
  64. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  65. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
  66. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
  67. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  68. package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
  69. package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
  70. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
  71. package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
  72. package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
  73. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
  74. package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
  75. package/examples/multidimensional-layers/memo.package.yaml +3 -1
  76. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
  77. package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
  78. package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
  79. package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
  80. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
  81. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
  83. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
  86. package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
  87. package/examples/reusable-instrument/memo.package.yaml +3 -1
  88. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
  89. package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
  90. package/examples/robot-cell-family/README.md +34 -0
  91. package/examples/robot-cell-family/memo.identity.yaml +142 -0
  92. package/examples/robot-cell-family/memo.package.yaml +7 -0
  93. package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
  94. package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
  95. package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
  96. package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
  97. package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
  98. package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
  99. package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
  100. package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
  101. package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
  102. package/examples/robot-platform/memo.package.yaml +3 -0
  103. package/examples/robot-platform/model/platform.sysml +15 -0
  104. package/examples/ros-mobile-robot/README.md +5 -4
  105. package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
  106. package/examples/ros-mobile-robot/memo.package.yaml +3 -1
  107. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
  108. package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
  109. package/examples/software-only-medical-device/memo.package.yaml +3 -1
  110. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
  111. package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
  112. package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
  113. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
  114. package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
  115. package/examples/surgical-robot/memo.package.yaml +3 -1
  116. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
  117. package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
  118. package/examples/sysml-diagram-samples/README.md +1 -0
  119. package/examples/sysml-diagram-samples/memo.identity.yaml +675 -0
  120. package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +7 -29
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +12 -36
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +13 -25
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +388 -0
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +27 -36
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +8 -21
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +17 -65
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +23 -32
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +9 -22
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +7 -22
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +18 -34
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +2 -9
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +18 -42
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +11 -24
  137. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +9 -36
  138. package/examples/sysml-diagram-samples/model/methodology/project.sysml +40 -0
  139. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  140. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  141. package/examples/temperature-alarm/memo.package.yaml +3 -1
  142. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  143. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  144. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  145. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  146. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  147. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  148. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  152. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  154. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  155. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  156. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  159. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  160. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  161. package/extensions/README.md +65 -16
  162. package/extensions/aadl/memo.package.yaml +1 -1
  163. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  164. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  165. package/extensions/clinical/memo.package.yaml +1 -1
  166. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  167. package/extensions/cloud/memo.package.yaml +1 -1
  168. package/extensions/container/memo.package.yaml +1 -1
  169. package/extensions/messaging/memo.package.yaml +1 -1
  170. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  171. package/extensions/ros/memo.package.yaml +1 -1
  172. package/extensions/ros/src/ros_extension.sysml +25 -24
  173. package/extensions/template/memo.package.yaml +1 -1
  174. package/extensions/template/model/extension.sysml +25 -0
  175. package/memo.manifest.yaml +1 -7
  176. package/methodologies/default/memo.package.yaml +1 -1
  177. package/methodologies/gpca/memo.package.yaml +1 -1
  178. package/ontology/memo.package.yaml +1 -1
  179. package/package.json +6 -4
  180. package/profile/memo.package.yaml +1 -1
  181. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  182. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  183. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  184. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  185. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  186. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  187. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  188. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  189. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  190. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  191. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  192. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  193. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  194. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  195. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  196. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  197. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  198. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  199. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  200. package/src/architecture/variability/memo_variability.sysml +87 -0
  201. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  202. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  203. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  204. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  205. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  206. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  207. package/src/artifacts/standards/iec_60812.sysml +4 -8
  208. package/src/artifacts/standards/iec_62304.sysml +607 -47
  209. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  210. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  211. package/src/artifacts/standards/iso_13485.sysml +12 -24
  212. package/src/artifacts/standards/iso_14971.sysml +118 -20
  213. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  214. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  216. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  220. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  221. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  222. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  223. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  224. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  225. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  226. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  227. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  228. package/src/core/common/memo_common.sysml +51 -68
  229. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  230. package/src/core/relationships/memo_relationships.sysml +17 -11
  231. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  232. package/src/core/semantics/semantics.sysml +58 -0
  233. package/src/core/terminology/terminology.sysml +7 -0
  234. package/src/memo_namespaces.sysml +6 -0
  235. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  236. package/src/methodology/core/memo_core.sysml +85 -29
  237. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  238. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  239. package/src/rules/closure/closure_rules.sysml +250 -4
  240. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  241. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  242. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  243. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  244. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -5
  245. package/src/viewpoints/context/context_viewpoint.sysml +4 -5
  246. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  247. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -5
  248. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  249. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +3 -5
  250. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -5
  251. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  252. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  253. package/src/viewpoints/logical/logical_viewpoint.sysml +4 -5
  254. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  255. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -5
  256. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  257. package/src/viewpoints/physical/physical_viewpoint.sysml +4 -5
  258. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  259. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  260. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  261. package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -5
  262. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  263. package/src/viewpoints/risk/risk_viewpoint.sysml +4 -5
  264. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  265. package/src/viewpoints/software/software_viewpoint.sysml +4 -5
  266. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  267. package/src/viewpoints/{definitions → stakeholders_concerns}/memo_stakeholders_concerns.sysml +45 -36
  268. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -5
  269. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  270. package/src/viewpoints/usability/usability_viewpoint.sysml +4 -5
  271. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -5
  272. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  274. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  275. package/templates/default/memo.package.yaml +6 -1
  276. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  277. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  278. package/examples/sysml-diagram-samples/model/catalog/project.sysml +0 -26
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  280. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  281. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  282. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  283. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  284. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  285. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  286. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  287. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  288. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  289. package/extensions/template/src/extension.sysml +0 -39
  290. package/templates/connected-device/memo.package.yaml +0 -13
  291. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  292. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  293. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  294. package/templates/connected-device/model/catalog/project.sysml +0 -30
  295. package/templates/connected-device/package.json +0 -8
  296. package/templates/connected-device/syside.toml +0 -13
  297. package/templates/infusion-pump/memo.package.yaml +0 -13
  298. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  299. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  300. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  301. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  302. package/templates/infusion-pump/package.json +0 -8
  303. package/templates/infusion-pump/syside.toml +0 -13
  304. package/templates/monitoring-device/memo.package.yaml +0 -13
  305. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  306. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  307. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  308. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  309. package/templates/monitoring-device/package.json +0 -8
  310. package/templates/monitoring-device/syside.toml +0 -13
  311. package/templates/samd/memo.package.yaml +0 -13
  312. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  313. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  314. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  315. package/templates/samd/model/catalog/project.sysml +0 -30
  316. package/templates/samd/package.json +0 -8
  317. package/templates/samd/syside.toml +0 -13
@@ -1,4 +1,4 @@
1
- // Ivd Laboratory System — project identity and method binding.
1
+ // Ivd Laboratory System — model identity and method binding.
2
2
  //
3
3
  // The native entrypoint. The imports name what this project contains and the
4
4
  // binding names the methodology it is governed by. No YAML file participates.
@@ -16,10 +16,9 @@ package memo_examples_ivd_laboratory_system_project {
16
16
 
17
17
  private import memo_core_common::*;
18
18
  private import memo_core_common::MemoIdentity;
19
- part projectBinding : ProjectMethodBinding {
20
- @MemoIdentity { :>> providedId = "PMB-LABORATORY-SYSTEM-001"; }
21
- attribute :>> name = "IvdLaboratorySystemProjectMethodBinding";
22
- attribute :>> projectName = "Ivd Laboratory System";
19
+ part projectBinding : ModelMethodBinding {
20
+ @MemoIdentity { :>> providedId = "PMB-LABORATORY-SYSTEM-001"; :>> label = "IvdLaboratorySystemModelMethodBinding"; }
21
+ attribute :>> modelName = "Ivd Laboratory System";
23
22
  ref :>> selectedMethodology = mdDefaultDefinition;
24
23
  attribute :>> scopeMode = ScopeModeKind::explicit;
25
24
  }
@@ -1,3 +1,5 @@
1
1
  name: manual-surgical-instrument
2
- entrypoint: model/catalog/project.sysml
2
+ entrypoint: model/methodology/project.sysml
3
3
  include: [model]
4
+ toolchain:
5
+ packager: internal
@@ -15,12 +15,10 @@ package memo_examples_manual_surgical_instrument {
15
15
  // ── Modeled product and physical structure ──────────────────
16
16
  part needleHolder : PhysicalAssembly {
17
17
  @MemoIdentity { :>> providedId = "MSI-DEV-001"; }
18
- attribute :>> name = "NeedleHolder";
19
18
  attribute :>> responsibility = "grasp and drive a suture needle";
20
19
  }
21
20
  part jawAssembly : MechanicalPart {
22
- @MemoIdentity { :>> providedId = "MSI-PART-001"; }
23
- attribute :>> name = "TungstenCarbideJaws";
21
+ @MemoIdentity { :>> providedId = "MSI-PART-001"; :>> label = "TungstenCarbideJaws"; }
24
22
  attribute :>> mechanicalFunction = "serrated needle grip";
25
23
  attribute :>> patientContact = true;
26
24
  attribute :>> contactNature = "intact tissue / surgical site, indirect";
@@ -28,7 +26,6 @@ package memo_examples_manual_surgical_instrument {
28
26
  }
29
27
  part ratchetLock : MechanicalPart {
30
28
  @MemoIdentity { :>> providedId = "MSI-PART-002"; }
31
- attribute :>> name = "RatchetLock";
32
29
  attribute :>> mechanicalFunction = "maintains jaw clamping force without continuous grip";
33
30
  attribute :>> patientContact = false;
34
31
  }
@@ -38,8 +35,7 @@ package memo_examples_manual_surgical_instrument {
38
35
  // A task may be traced to the architecture later when the project has a
39
36
  // specific allocation or interaction claim to make.
40
37
  action taskPlaceSutures : OperativeAction {
41
- @MemoIdentity { :>> providedId = "MSI-TASK-001"; }
42
- attribute :>> name = "PlaceSutures";
38
+ @MemoIdentity { :>> providedId = "MSI-TASK-001"; :>> label = "PlaceSutures"; }
43
39
  attribute :>> taskGoal = "place interrupted sutures";
44
40
  }
45
41
  }
@@ -1,4 +1,4 @@
1
- // Manual Surgical Instrument — project identity and method binding.
1
+ // Manual Surgical Instrument — model identity and method binding.
2
2
  //
3
3
  // The native entrypoint. The imports name what this project contains and the
4
4
  // binding names the methodology it is governed by. No YAML file participates.
@@ -16,10 +16,9 @@ package memo_examples_manual_surgical_instrument_project {
16
16
 
17
17
  private import memo_core_common::*;
18
18
  private import memo_core_common::MemoIdentity;
19
- part projectBinding : ProjectMethodBinding {
20
- @MemoIdentity { :>> providedId = "PMB-SURGICAL-INSTRUMENT-001"; }
21
- attribute :>> name = "ManualSurgicalInstrumentProjectMethodBinding";
22
- attribute :>> projectName = "Manual Surgical Instrument";
19
+ part projectBinding : ModelMethodBinding {
20
+ @MemoIdentity { :>> providedId = "PMB-SURGICAL-INSTRUMENT-001"; :>> label = "ManualSurgicalInstrumentModelMethodBinding"; }
21
+ attribute :>> modelName = "Manual Surgical Instrument";
23
22
  ref :>> selectedMethodology = mdDefaultDefinition;
24
23
  attribute :>> scopeMode = ScopeModeKind::explicit;
25
24
  }
@@ -1,3 +1,5 @@
1
1
  name: multidimensional-layers
2
- entrypoint: model/catalog/project.sysml
2
+ entrypoint: model/methodology/project.sysml
3
3
  include: [model]
4
+ toolchain:
5
+ packager: internal
@@ -21,7 +21,6 @@ package memo_examples_multidimensional_layers {
21
21
  private import memo_core_common::MemoIdentity;
22
22
  part doseLimitChecker : SoftwareModule {
23
23
  @MemoIdentity { :>> providedId = "MDL-SW-001"; }
24
- attribute :>> name = "DoseLimitChecker";
25
24
  attribute :>> responsibility = "Reject therapy parameters outside the drug library's hard limits.";
26
25
  attribute :>> safetyClass = SafetyClassKind::C;
27
26
  // Axis ownership is this element's package (implementation layer) — not
@@ -35,8 +34,7 @@ package memo_examples_multidimensional_layers {
35
34
  // The SAME identity progresses through realization stages — a deployed
36
35
  // configuration is a stage of the element, not a second element.
37
36
  part doseLimitCheckerRuntime : SoftwareComponent {
38
- @MemoIdentity { :>> providedId = "MDL-RT-001"; }
39
- attribute :>> name = "DoseLimitCheckerTask";
37
+ @MemoIdentity { :>> providedId = "MDL-RT-001"; :>> label = "DoseLimitCheckerTask"; }
40
38
  attribute :>> periodMs = 50.0;
41
39
  attribute :>> deadlineMs = 50.0;
42
40
  attribute :>> wcetMs = 8.0;
@@ -47,7 +45,7 @@ package memo_examples_multidimensional_layers {
47
45
  #refinement dependency doseLimitCheckerRuntime to doseLimitChecker;
48
46
 
49
47
  verification vcLimitEnforcement : VerificationCase {
50
- @MemoIdentity { :>> providedId = "MDL-VC-001"; } attribute :>> name = "VerifyHardLimitEnforcement";
48
+ @MemoIdentity { :>> providedId = "MDL-VC-001"; :>> label = "VerifyHardLimitEnforcement"; }
51
49
  attribute :>> methodKind = MemoVerificationMethodKind::test;
52
50
  attribute :>> acceptanceCriteria = "all out-of-limit programs rejected across the equivalence classes";
53
51
 
@@ -1,4 +1,4 @@
1
- // Multidimensional Layers — project identity and method binding.
1
+ // Multidimensional Layers — model identity and method binding.
2
2
  //
3
3
  // The native entrypoint. The imports name what this project contains and the
4
4
  // binding names the methodology it is governed by. No YAML file participates.
@@ -16,10 +16,9 @@ package memo_examples_multidimensional_layers_project {
16
16
 
17
17
  private import memo_core_common::*;
18
18
  private import memo_core_common::MemoIdentity;
19
- part projectBinding : ProjectMethodBinding {
20
- @MemoIdentity { :>> providedId = "PMB-MULTIDIMENSIONAL-LAYERS-001"; }
21
- attribute :>> name = "MultidimensionalLayersProjectMethodBinding";
22
- attribute :>> projectName = "Multidimensional Layers";
19
+ part projectBinding : ModelMethodBinding {
20
+ @MemoIdentity { :>> providedId = "PMB-MULTIDIMENSIONAL-LAYERS-001"; :>> label = "MultidimensionalLayersModelMethodBinding"; }
21
+ attribute :>> modelName = "Multidimensional Layers";
23
22
  ref :>> selectedMethodology = mdDefaultDefinition;
24
23
  attribute :>> scopeMode = ScopeModeKind::explicit;
25
24
  }
@@ -20,6 +20,24 @@ elements:
20
20
  "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy":
21
21
  shortId: "SYS-5"
22
22
  uuid: "97af02c1-1869-51cd-b6a3-3d9b0803cac0"
23
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnControlDose":
24
+ shortId: "SYS-4"
25
+ uuid: "02ff5db5-4708-5084-8b09-2700ddb32faf"
26
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnControlDose::fnComputeRate":
27
+ shortId: "SYS-3"
28
+ uuid: "88ffa158-7036-55a6-910f-72ebeff80d8c"
29
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnControlDose::fnValidatePrescription":
30
+ shortId: "SYS-18"
31
+ uuid: "a8c04e09-7dfe-50ae-8b7e-184964772b59"
32
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnMeterFluid":
33
+ shortId: "SYS-14"
34
+ uuid: "ad2c6549-6cde-5d0c-972d-121765bad784"
35
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnMeterFluid::fnDriveActuator":
36
+ shortId: "SYS-8"
37
+ uuid: "cafa121a-9376-543e-b16f-3e1755ca2aa6"
38
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnMeterFluid::fnMeasureDelivered":
39
+ shortId: "SYS-13"
40
+ uuid: "e9e92f6d-4d74-5ab2-8a04-3a8a502db932"
23
41
  "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDetectAirInLine":
24
42
  shortId: "SYS-6"
25
43
  uuid: "01cc8a11-19d1-598f-a56f-f7cf5ba0d243"
@@ -35,12 +53,36 @@ elements:
35
53
  "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety":
36
54
  shortId: "SYS-10"
37
55
  uuid: "4c0057ea-363a-534f-b3cb-d939e9b9f22d"
56
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety::fnDetectAirInLine":
57
+ shortId: "SYS-6"
58
+ uuid: "01cc8a11-19d1-598f-a56f-f7cf5ba0d243"
59
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety::fnDetectOcclusion":
60
+ shortId: "SYS-7"
61
+ uuid: "a1c87fbc-9933-5b07-a7a4-faa2a1b53589"
62
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety::fnEnforceDoseLimits":
63
+ shortId: "SYS-9"
64
+ uuid: "e3f15682-175f-550c-9daa-305017c19b54"
38
65
  "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser":
39
66
  shortId: "SYS-11"
40
67
  uuid: "c0d2ae2a-c619-552c-ad94-67a87d75a5f0"
68
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser::fnAcceptInput":
69
+ shortId: "SYS-1"
70
+ uuid: "743bc427-3611-54b4-b02f-f30d4474e8be"
71
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser::fnAnnunciateAlarm":
72
+ shortId: "SYS-2"
73
+ uuid: "38a50787-f2bd-51ee-9b90-6e0e6695b9f6"
74
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser::fnRenderStatus":
75
+ shortId: "SYS-16"
76
+ uuid: "2f581251-4e2e-5e0c-b937-e668d7abb1df"
41
77
  "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnManagePower":
42
78
  shortId: "SYS-12"
43
79
  uuid: "7306642f-c2c8-53ed-bf55-4369cdec0373"
80
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnManagePower::fnMonitorBattery":
81
+ shortId: "SYS-15"
82
+ uuid: "fa001550-9cd2-5118-880b-16dcc35f11e9"
83
+ "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnManagePower::fnSelectPowerSource":
84
+ shortId: "SYS-17"
85
+ uuid: "96806e2b-9dad-5a25-906e-097da793517f"
44
86
  "memo_examples_nested_architecture_dsm_architecture_functional_functions::fnMeasureDelivered":
45
87
  shortId: "SYS-13"
46
88
  uuid: "e9e92f6d-4d74-5ab2-8a04-3a8a502db932"
@@ -113,6 +155,57 @@ elements:
113
155
  "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery":
114
156
  shortId: "SYS-19"
115
157
  uuid: "523429e1-0a24-5aa6-b5c0-47c7eb82f4df"
158
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl":
159
+ shortId: "SBS-1"
160
+ uuid: "077d4a45-b168-52a4-9641-17c1f5b600ff"
161
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::lcDoseController":
162
+ shortId: "LGC-4"
163
+ uuid: "3b49ad97-598e-5474-aae7-e1b378be185d"
164
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::lcTherapyStateStore":
165
+ shortId: "LGC-11"
166
+ uuid: "59faa354-00b6-542a-9097-8b54c7cfa0a4"
167
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::subSafetyMonitor":
168
+ shortId: "SBS-4"
169
+ uuid: "c22054ce-e7da-5a61-8d9e-3dc1c364baba"
170
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::subSafetyMonitor::lcPressureIntegrityChannel":
171
+ shortId: "LGC-8"
172
+ uuid: "45f4a37a-5d78-5b1c-8638-e3df1bdcfedf"
173
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::subSafetyMonitor::lcWatchdogChannel":
174
+ shortId: "LGC-12"
175
+ uuid: "11ebfa38-f25a-5d86-a3fe-0daf3bbf37ae"
176
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subFluidPath":
177
+ shortId: "SBS-2"
178
+ uuid: "43548a32-68a1-51bf-ab90-378990d36d2c"
179
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subFluidPath::lcOcclusionChannel":
180
+ shortId: "LGC-6"
181
+ uuid: "f1964871-b8a4-510d-b946-c962847f61d4"
182
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subFluidPath::lcPumpMechanism":
183
+ shortId: "LGC-9"
184
+ uuid: "630e869e-ef26-52f5-85a4-a9ab0e045006"
185
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subFluidPath::lcReservoirInterface":
186
+ shortId: "LGC-10"
187
+ uuid: "8bf720eb-227b-59bc-a8bd-17597157badf"
188
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subPower":
189
+ shortId: "SBS-3"
190
+ uuid: "aa677b1f-eddb-5436-9c6f-85221b3b77aa"
191
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subPower::lcBatteryManager":
192
+ shortId: "LGC-2"
193
+ uuid: "d6971bce-148e-5366-ab22-f80166c10b3f"
194
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subPower::lcPowerRailMonitor":
195
+ shortId: "LGC-7"
196
+ uuid: "4deb4ccd-b9f0-5ff4-904e-cf88beff861d"
197
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subUserInterface":
198
+ shortId: "SBS-5"
199
+ uuid: "d549ae19-f954-5553-98bc-2aae381754ae"
200
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subUserInterface::lcAlarmAnnunciator":
201
+ shortId: "LGC-1"
202
+ uuid: "4a3bc844-d379-53a5-bd07-45cfddbb306f"
203
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subUserInterface::lcDisplayManager":
204
+ shortId: "LGC-3"
205
+ uuid: "429d103c-969c-53fc-a447-2a0a9bb74764"
206
+ "memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subUserInterface::lcKeypadHandler":
207
+ shortId: "LGC-5"
208
+ uuid: "69673dde-9347-5e7b-a896-6ee9e9069a86"
116
209
  "memo_examples_nested_architecture_dsm_architecture_operational_context::ctxIntraHospitalTransport":
117
210
  shortId: "USE-1"
118
211
  uuid: "a4ec22e7-25cb-54f8-b606-397da672af36"
@@ -1,3 +1,5 @@
1
1
  name: nested-architecture-dsm
2
- entrypoint: model/catalog/project.sysml
2
+ entrypoint: model/methodology/project.sysml
3
3
  include: [model]
4
+ toolchain:
5
+ packager: internal
@@ -18,28 +18,28 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
18
18
  private import memo_core_common::MemoIdentity;
19
19
  // ── Deliver therapy ──────────────────────────────────────────
20
20
  action fnDeliverTherapy : SystemFunction {
21
- @MemoIdentity { :>> providedId = "NDS-FN-001"; } attribute :>> name = "DeliverTherapy";
21
+ @MemoIdentity { :>> providedId = "NDS-FN-001"; :>> label = "DeliverTherapy"; }
22
22
  attribute :>> functionCategory = "therapy";
23
23
  attribute :>> criticality = CriticalityKind::catastrophic;
24
24
  attribute :>> concernKind = ConcernKind::safety;
25
25
  attribute :>> outputSummary = "fluid delivered to the patient line at the prescribed rate";
26
26
 
27
27
  action fnMeterFluid : SystemFunction {
28
- @MemoIdentity { :>> providedId = "NDS-FN-002"; } attribute :>> name = "MeterFluid";
28
+ @MemoIdentity { :>> providedId = "NDS-FN-002"; :>> label = "MeterFluid"; }
29
29
  attribute :>> functionCategory = "therapy";
30
30
  attribute :>> criticality = CriticalityKind::catastrophic;
31
31
  attribute :>> concernKind = ConcernKind::safety;
32
32
  attribute :>> outputSummary = "measured volume displaced per control period";
33
33
 
34
34
  action fnDriveActuator : SystemFunction {
35
- @MemoIdentity { :>> providedId = "NDS-FN-003"; } attribute :>> name = "DriveActuator";
35
+ @MemoIdentity { :>> providedId = "NDS-FN-003"; :>> label = "DriveActuator"; }
36
36
  attribute :>> functionCategory = "therapy";
37
37
  attribute :>> criticality = CriticalityKind::catastrophic;
38
38
  attribute :>> trigger = "rate command from the dose control loop";
39
39
  attribute :>> concernKind = ConcernKind::safety;
40
40
  }
41
41
  action fnMeasureDelivered : SystemFunction {
42
- @MemoIdentity { :>> providedId = "NDS-FN-004"; } attribute :>> name = "MeasureDeliveredVolume";
42
+ @MemoIdentity { :>> providedId = "NDS-FN-004"; :>> label = "MeasureDeliveredVolume"; }
43
43
  attribute :>> functionCategory = "therapy";
44
44
  attribute :>> criticality = CriticalityKind::high;
45
45
  attribute :>> concernKind = ConcernKind::safety;
@@ -47,20 +47,20 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
47
47
  }
48
48
  }
49
49
  action fnControlDose : SystemFunction {
50
- @MemoIdentity { :>> providedId = "NDS-FN-005"; } attribute :>> name = "ControlDose";
50
+ @MemoIdentity { :>> providedId = "NDS-FN-005"; :>> label = "ControlDose"; }
51
51
  attribute :>> functionCategory = "therapy";
52
52
  attribute :>> criticality = CriticalityKind::catastrophic;
53
53
  attribute :>> concernKind = ConcernKind::safety;
54
54
 
55
55
  action fnComputeRate : SystemFunction {
56
- @MemoIdentity { :>> providedId = "NDS-FN-006"; } attribute :>> name = "ComputeInfusionRate";
56
+ @MemoIdentity { :>> providedId = "NDS-FN-006"; :>> label = "ComputeInfusionRate"; }
57
57
  attribute :>> functionCategory = "therapy";
58
58
  attribute :>> criticality = CriticalityKind::catastrophic;
59
59
  attribute :>> concernKind = ConcernKind::safety;
60
60
  attribute :>> outputSummary = "rate command, saturated at the prescribed ceiling";
61
61
  }
62
62
  action fnValidatePrescription : SystemFunction {
63
- @MemoIdentity { :>> providedId = "NDS-FN-007"; } attribute :>> name = "ValidatePrescription";
63
+ @MemoIdentity { :>> providedId = "NDS-FN-007"; :>> label = "ValidatePrescription"; }
64
64
  attribute :>> functionCategory = "therapy";
65
65
  attribute :>> criticality = CriticalityKind::high;
66
66
  attribute :>> concernKind = ConcernKind::clinical;
@@ -71,27 +71,27 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
71
71
 
72
72
  // ── Ensure safety ────────────────────────────────────────────
73
73
  action fnEnsureSafety : SystemFunction {
74
- @MemoIdentity { :>> providedId = "NDS-FN-008"; } attribute :>> name = "EnsureSafety";
74
+ @MemoIdentity { :>> providedId = "NDS-FN-008"; :>> label = "EnsureSafety"; }
75
75
  attribute :>> functionCategory = "protection";
76
76
  attribute :>> criticality = CriticalityKind::catastrophic;
77
77
  attribute :>> concernKind = ConcernKind::safety;
78
78
 
79
79
  action fnDetectOcclusion : SystemFunction {
80
- @MemoIdentity { :>> providedId = "NDS-FN-009"; } attribute :>> name = "DetectOcclusion";
80
+ @MemoIdentity { :>> providedId = "NDS-FN-009"; :>> label = "DetectOcclusion"; }
81
81
  attribute :>> functionCategory = "protection";
82
82
  attribute :>> criticality = CriticalityKind::catastrophic;
83
83
  attribute :>> trigger = "line pressure above the occlusion threshold";
84
84
  attribute :>> concernKind = ConcernKind::safety;
85
85
  }
86
86
  action fnDetectAirInLine : SystemFunction {
87
- @MemoIdentity { :>> providedId = "NDS-FN-010"; } attribute :>> name = "DetectAirInLine";
87
+ @MemoIdentity { :>> providedId = "NDS-FN-010"; :>> label = "DetectAirInLine"; }
88
88
  attribute :>> functionCategory = "protection";
89
89
  attribute :>> criticality = CriticalityKind::catastrophic;
90
90
  attribute :>> trigger = "air bolus detected in the patient line";
91
91
  attribute :>> concernKind = ConcernKind::safety;
92
92
  }
93
93
  action fnEnforceDoseLimits : SystemFunction {
94
- @MemoIdentity { :>> providedId = "NDS-FN-011"; } attribute :>> name = "EnforceDoseLimits";
94
+ @MemoIdentity { :>> providedId = "NDS-FN-011"; :>> label = "EnforceDoseLimits"; }
95
95
  attribute :>> functionCategory = "protection";
96
96
  attribute :>> criticality = CriticalityKind::catastrophic;
97
97
  attribute :>> concernKind = ConcernKind::safety;
@@ -101,27 +101,27 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
101
101
 
102
102
  // ── Inform the user ──────────────────────────────────────────
103
103
  action fnInformUser : SystemFunction {
104
- @MemoIdentity { :>> providedId = "NDS-FN-012"; } attribute :>> name = "InformUser";
104
+ @MemoIdentity { :>> providedId = "NDS-FN-012"; :>> label = "InformUser"; }
105
105
  attribute :>> functionCategory = "interaction";
106
106
  attribute :>> criticality = CriticalityKind::high;
107
107
  attribute :>> concernKind = ConcernKind::usability;
108
108
 
109
109
  action fnRenderStatus : SystemFunction {
110
- @MemoIdentity { :>> providedId = "NDS-FN-013"; } attribute :>> name = "RenderTherapyStatus";
110
+ @MemoIdentity { :>> providedId = "NDS-FN-013"; :>> label = "RenderTherapyStatus"; }
111
111
  attribute :>> functionCategory = "interaction";
112
112
  attribute :>> criticality = CriticalityKind::high;
113
113
  attribute :>> concernKind = ConcernKind::usability;
114
114
  attribute :>> outputSummary = "rate, volume delivered and time remaining";
115
115
  }
116
116
  action fnAnnunciateAlarm : SystemFunction {
117
- @MemoIdentity { :>> providedId = "NDS-FN-014"; } attribute :>> name = "AnnunciateAlarm";
117
+ @MemoIdentity { :>> providedId = "NDS-FN-014"; :>> label = "AnnunciateAlarm"; }
118
118
  attribute :>> functionCategory = "interaction";
119
119
  attribute :>> criticality = CriticalityKind::catastrophic;
120
120
  attribute :>> trigger = "any active alarm condition";
121
121
  attribute :>> concernKind = ConcernKind::safety;
122
122
  }
123
123
  action fnAcceptInput : SystemFunction {
124
- @MemoIdentity { :>> providedId = "NDS-FN-015"; } attribute :>> name = "AcceptClinicianInput";
124
+ @MemoIdentity { :>> providedId = "NDS-FN-015"; :>> label = "AcceptClinicianInput"; }
125
125
  attribute :>> functionCategory = "interaction";
126
126
  attribute :>> criticality = CriticalityKind::high;
127
127
  attribute :>> concernKind = ConcernKind::usability;
@@ -131,20 +131,20 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
131
131
 
132
132
  // ── Manage power ─────────────────────────────────────────────
133
133
  action fnManagePower : SystemFunction {
134
- @MemoIdentity { :>> providedId = "NDS-FN-016"; } attribute :>> name = "ManagePower";
134
+ @MemoIdentity { :>> providedId = "NDS-FN-016"; :>> label = "ManagePower"; }
135
135
  attribute :>> functionCategory = "platform";
136
136
  attribute :>> criticality = CriticalityKind::high;
137
137
  attribute :>> concernKind = ConcernKind::reliability;
138
138
 
139
139
  action fnMonitorBattery : SystemFunction {
140
- @MemoIdentity { :>> providedId = "NDS-FN-017"; } attribute :>> name = "MonitorBatteryState";
140
+ @MemoIdentity { :>> providedId = "NDS-FN-017"; :>> label = "MonitorBatteryState"; }
141
141
  attribute :>> functionCategory = "platform";
142
142
  attribute :>> criticality = CriticalityKind::high;
143
143
  attribute :>> concernKind = ConcernKind::reliability;
144
144
  attribute :>> outputSummary = "state of charge and remaining run time";
145
145
  }
146
146
  action fnSelectPowerSource : SystemFunction {
147
- @MemoIdentity { :>> providedId = "NDS-FN-018"; } attribute :>> name = "SelectPowerSource";
147
+ @MemoIdentity { :>> providedId = "NDS-FN-018"; :>> label = "SelectPowerSource"; }
148
148
  attribute :>> functionCategory = "platform";
149
149
  attribute :>> criticality = CriticalityKind::high;
150
150
  attribute :>> trigger = "mains loss or rail brownout";
@@ -155,18 +155,18 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
155
155
  // ── Functional exchange ──────────────────────────────────────
156
156
  // Cross-tree marks are the interesting ones: they are what a collapsed DSM
157
157
  // rolls up into a single number between two capabilities.
158
- flow from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnDeliverTherapy.fnControlDose.fnComputeRate;
159
- flow from fnDeliverTherapy.fnControlDose.fnComputeRate to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
160
- flow from fnDeliverTherapy.fnMeterFluid.fnDriveActuator to fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered;
161
- flow from fnDeliverTherapy.fnControlDose.fnValidatePrescription to fnDeliverTherapy.fnControlDose.fnComputeRate;
162
- flow from fnInformUser.fnAcceptInput to fnDeliverTherapy.fnControlDose.fnValidatePrescription;
163
- flow from fnEnsureSafety.fnDetectOcclusion to fnEnsureSafety.fnEnforceDoseLimits;
164
- flow from fnEnsureSafety.fnDetectAirInLine to fnInformUser.fnAnnunciateAlarm;
165
- flow from fnEnsureSafety.fnEnforceDoseLimits to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
166
- flow from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnInformUser.fnRenderStatus;
167
- flow from fnManagePower.fnMonitorBattery to fnInformUser.fnAnnunciateAlarm;
168
- flow from fnManagePower.fnSelectPowerSource to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
169
- flow from fnEnsureSafety.fnDetectOcclusion to fnInformUser.fnAnnunciateAlarm;
158
+ flow fnMeasureDeliveredToFnComputeRate from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnDeliverTherapy.fnControlDose.fnComputeRate;
159
+ flow fnComputeRateToFnDriveActuator from fnDeliverTherapy.fnControlDose.fnComputeRate to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
160
+ flow fnDriveActuatorToFnMeasureDelivered from fnDeliverTherapy.fnMeterFluid.fnDriveActuator to fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered;
161
+ flow fnValidatePrescriptionToFnComputeRate from fnDeliverTherapy.fnControlDose.fnValidatePrescription to fnDeliverTherapy.fnControlDose.fnComputeRate;
162
+ flow fnAcceptInputToFnValidatePrescription from fnInformUser.fnAcceptInput to fnDeliverTherapy.fnControlDose.fnValidatePrescription;
163
+ flow fnDetectOcclusionToFnEnforceDoseLimits from fnEnsureSafety.fnDetectOcclusion to fnEnsureSafety.fnEnforceDoseLimits;
164
+ flow fnDetectAirInLineToFnAnnunciateAlarm from fnEnsureSafety.fnDetectAirInLine to fnInformUser.fnAnnunciateAlarm;
165
+ flow fnEnforceDoseLimitsToFnDriveActuator from fnEnsureSafety.fnEnforceDoseLimits to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
166
+ flow fnMeasureDeliveredToFnRenderStatus from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnInformUser.fnRenderStatus;
167
+ flow fnMonitorBatteryToFnAnnunciateAlarm from fnManagePower.fnMonitorBattery to fnInformUser.fnAnnunciateAlarm;
168
+ flow fnSelectPowerSourceToFnDriveActuator from fnManagePower.fnSelectPowerSource to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
169
+ flow fnDetectOcclusionToFnAnnunciateAlarm from fnEnsureSafety.fnDetectOcclusion to fnInformUser.fnAnnunciateAlarm;
170
170
  satisfy reqDoseAccuracy by fnDeliverTherapy.fnControlDose.fnComputeRate;
171
171
  satisfy reqDoseAccuracy by fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
172
172
  satisfy reqOcclusionDetection by fnEnsureSafety.fnDetectOcclusion;
@@ -16,7 +16,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
16
16
  private import memo_core_common::MemoIdentity;
17
17
  // ── Level 0: the system ──────────────────────────────────────
18
18
  part sysTherapyDelivery : System {
19
- @MemoIdentity { :>> providedId = "NDS-SYS-001"; } attribute :>> name = "TherapyDeliverySystem";
19
+ @MemoIdentity { :>> providedId = "NDS-SYS-001"; :>> label = "TherapyDeliverySystem"; }
20
20
  attribute :>> componentRole = ComponentRoleKind::generic;
21
21
  attribute :>> systemType = SystemTypeKind::logical;
22
22
  attribute :>> systemBoundaryDescription = "Everything inside the pump enclosure, including its power path and user interface.";
@@ -24,35 +24,35 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
24
24
 
25
25
  // ── Level 1: subsystems ──────────────────────────────────
26
26
  part subFluidPath : Subsystem {
27
- @MemoIdentity { :>> providedId = "NDS-SUB-001"; } attribute :>> name = "FluidPathSubsystem";
27
+ @MemoIdentity { :>> providedId = "NDS-SUB-001"; :>> label = "FluidPathSubsystem"; }
28
28
  attribute :>> componentRole = ComponentRoleKind::generic;
29
29
  attribute :>> systemType = SystemTypeKind::hardware;
30
30
  attribute :>> responsibility = "Move fluid from the reservoir to the patient line at a commanded rate.";
31
31
 
32
32
  // ── Level 2/3: components ─────────────────────────────
33
33
  part lcPumpMechanism : LogicalComponent {
34
- @MemoIdentity { :>> providedId = "NDS-LC-001"; } attribute :>> name = "PumpMechanism";
34
+ @MemoIdentity { :>> providedId = "NDS-LC-001"; :>> label = "PumpMechanism"; }
35
35
  attribute :>> componentRole = ComponentRoleKind::controlElement;
36
36
  attribute :>> systemType = SystemTypeKind::hardware;
37
37
  attribute :>> responsibility = "Displace fluid under command.";
38
38
  attribute :>> controlledVariable = "delivered volume per stroke";
39
39
  }
40
40
  part lcOcclusionChannel : LogicalComponent {
41
- @MemoIdentity { :>> providedId = "NDS-LC-002"; } attribute :>> name = "OcclusionSensingChannel";
41
+ @MemoIdentity { :>> providedId = "NDS-LC-002"; :>> label = "OcclusionSensingChannel"; }
42
42
  attribute :>> componentRole = ComponentRoleKind::channel;
43
43
  attribute :>> systemType = SystemTypeKind::hardware;
44
44
  attribute :>> responsibility = "Sense line pressure and air in line.";
45
45
  attribute :>> channelRole = ChannelRoleKind::primary;
46
46
  }
47
47
  part lcReservoirInterface : LogicalComponent {
48
- @MemoIdentity { :>> providedId = "NDS-LC-003"; } attribute :>> name = "ReservoirInterface";
48
+ @MemoIdentity { :>> providedId = "NDS-LC-003"; :>> label = "ReservoirInterface"; }
49
49
  attribute :>> componentRole = ComponentRoleKind::generic;
50
50
  attribute :>> systemType = SystemTypeKind::hardware;
51
51
  attribute :>> responsibility = "Seat the reservoir and expose its remaining volume.";
52
52
  }
53
53
  }
54
54
  part subControl : Subsystem {
55
- @MemoIdentity { :>> providedId = "NDS-SUB-002"; } attribute :>> name = "ControlSubsystem";
55
+ @MemoIdentity { :>> providedId = "NDS-SUB-002"; :>> label = "ControlSubsystem"; }
56
56
  attribute :>> componentRole = ComponentRoleKind::controlElement;
57
57
  attribute :>> systemType = SystemTypeKind::software;
58
58
  attribute :>> responsibility = "Decide what the fluid path should do, and hold the therapy state.";
@@ -62,14 +62,14 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
62
62
  // which is what makes a collapsed ControlSubsystem row a genuine
63
63
  // roll-up rather than a rename of its children.
64
64
  part subSafetyMonitor : Subsystem {
65
- @MemoIdentity { :>> providedId = "NDS-SUB-005"; } attribute :>> name = "SafetyMonitorSubsystem";
65
+ @MemoIdentity { :>> providedId = "NDS-SUB-005"; :>> label = "SafetyMonitorSubsystem"; }
66
66
  attribute :>> componentRole = ComponentRoleKind::channel;
67
67
  attribute :>> systemType = SystemTypeKind::software;
68
68
  attribute :>> responsibility = "Watch the control path from outside it and stop delivery on breach.";
69
69
  attribute :>> safetyPartition = "monitor partition, separate MPU region from the control partition";
70
70
 
71
71
  part lcWatchdogChannel : LogicalComponent {
72
- @MemoIdentity { :>> providedId = "NDS-LC-006"; } attribute :>> name = "WatchdogChannel";
72
+ @MemoIdentity { :>> providedId = "NDS-LC-006"; :>> label = "WatchdogChannel"; }
73
73
  attribute :>> componentRole = ComponentRoleKind::channel;
74
74
  attribute :>> systemType = SystemTypeKind::software;
75
75
  attribute :>> responsibility = "Reset to the safe state when the control loop misses its deadline.";
@@ -77,7 +77,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
77
77
  attribute :>> diversityBasis = "independent time base from the control partition";
78
78
  }
79
79
  part lcPressureIntegrityChannel : LogicalComponent {
80
- @MemoIdentity { :>> providedId = "NDS-LC-007"; } attribute :>> name = "PressureIntegrityChannel";
80
+ @MemoIdentity { :>> providedId = "NDS-LC-007"; :>> label = "PressureIntegrityChannel"; }
81
81
  attribute :>> componentRole = ComponentRoleKind::channel;
82
82
  attribute :>> systemType = SystemTypeKind::software;
83
83
  attribute :>> responsibility = "Cross-check pressure against the commanded rate and stop on divergence.";
@@ -86,7 +86,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
86
86
  }
87
87
  }
88
88
  part lcDoseController : LogicalComponent {
89
- @MemoIdentity { :>> providedId = "NDS-LC-004"; } attribute :>> name = "DoseController";
89
+ @MemoIdentity { :>> providedId = "NDS-LC-004"; :>> label = "DoseController"; }
90
90
  attribute :>> componentRole = ComponentRoleKind::controlElement;
91
91
  attribute :>> systemType = SystemTypeKind::software;
92
92
  attribute :>> responsibility = "Turn a prescription into rate commands.";
@@ -94,7 +94,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
94
94
  attribute :>> controlledVariable = "infusion rate";
95
95
  }
96
96
  part lcTherapyStateStore : LogicalComponent {
97
- @MemoIdentity { :>> providedId = "NDS-LC-005"; } attribute :>> name = "TherapyStateStore";
97
+ @MemoIdentity { :>> providedId = "NDS-LC-005"; :>> label = "TherapyStateStore"; }
98
98
  attribute :>> componentRole = ComponentRoleKind::dataStore;
99
99
  attribute :>> systemType = SystemTypeKind::software;
100
100
  attribute :>> responsibility = "Hold the active therapy record across power cycles.";
@@ -103,27 +103,27 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
103
103
  }
104
104
  }
105
105
  part subUserInterface : Subsystem {
106
- @MemoIdentity { :>> providedId = "NDS-SUB-003"; } attribute :>> name = "UserInterfaceSubsystem";
106
+ @MemoIdentity { :>> providedId = "NDS-SUB-003"; :>> label = "UserInterfaceSubsystem"; }
107
107
  attribute :>> componentRole = ComponentRoleKind::userInterface;
108
108
  attribute :>> systemType = SystemTypeKind::software;
109
109
  attribute :>> responsibility = "Present therapy state to the clinician and accept their input.";
110
110
 
111
111
  part lcDisplayManager : LogicalComponent {
112
- @MemoIdentity { :>> providedId = "NDS-LC-008"; } attribute :>> name = "DisplayManager";
112
+ @MemoIdentity { :>> providedId = "NDS-LC-008"; :>> label = "DisplayManager"; }
113
113
  attribute :>> componentRole = ComponentRoleKind::userInterface;
114
114
  attribute :>> systemType = SystemTypeKind::software;
115
115
  attribute :>> responsibility = "Render therapy state on the main screen.";
116
116
  attribute :>> interactionSummary = "read-only status surface, refreshed once per second";
117
117
  }
118
118
  part lcAlarmAnnunciator : LogicalComponent {
119
- @MemoIdentity { :>> providedId = "NDS-LC-009"; } attribute :>> name = "AlarmAnnunciator";
119
+ @MemoIdentity { :>> providedId = "NDS-LC-009"; :>> label = "AlarmAnnunciator"; }
120
120
  attribute :>> componentRole = ComponentRoleKind::userInterface;
121
121
  attribute :>> systemType = SystemTypeKind::software;
122
122
  attribute :>> responsibility = "Raise audible and visible alarms by priority.";
123
123
  attribute :>> interactionSummary = "IEC 60601-1-8 alarm signals";
124
124
  }
125
125
  part lcKeypadHandler : LogicalComponent {
126
- @MemoIdentity { :>> providedId = "NDS-LC-010"; } attribute :>> name = "KeypadHandler";
126
+ @MemoIdentity { :>> providedId = "NDS-LC-010"; :>> label = "KeypadHandler"; }
127
127
  attribute :>> componentRole = ComponentRoleKind::userInterface;
128
128
  attribute :>> systemType = SystemTypeKind::software;
129
129
  attribute :>> responsibility = "Debounce and interpret key presses.";
@@ -131,19 +131,19 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
131
131
  }
132
132
  }
133
133
  part subPower : Subsystem {
134
- @MemoIdentity { :>> providedId = "NDS-SUB-004"; } attribute :>> name = "PowerSubsystem";
134
+ @MemoIdentity { :>> providedId = "NDS-SUB-004"; :>> label = "PowerSubsystem"; }
135
135
  attribute :>> componentRole = ComponentRoleKind::generic;
136
136
  attribute :>> systemType = SystemTypeKind::hardware;
137
137
  attribute :>> responsibility = "Supply and monitor power across mains and battery operation.";
138
138
 
139
139
  part lcBatteryManager : LogicalComponent {
140
- @MemoIdentity { :>> providedId = "NDS-LC-011"; } attribute :>> name = "BatteryManager";
140
+ @MemoIdentity { :>> providedId = "NDS-LC-011"; :>> label = "BatteryManager"; }
141
141
  attribute :>> componentRole = ComponentRoleKind::generic;
142
142
  attribute :>> systemType = SystemTypeKind::hardware;
143
143
  attribute :>> responsibility = "Charge, gauge and protect the battery.";
144
144
  }
145
145
  part lcPowerRailMonitor : LogicalComponent {
146
- @MemoIdentity { :>> providedId = "NDS-LC-012"; } attribute :>> name = "PowerRailMonitor";
146
+ @MemoIdentity { :>> providedId = "NDS-LC-012"; :>> label = "PowerRailMonitor"; }
147
147
  attribute :>> componentRole = ComponentRoleKind::channel;
148
148
  attribute :>> systemType = SystemTypeKind::hardware;
149
149
  attribute :>> responsibility = "Detect rail brownout and request a source switch.";
@@ -153,15 +153,15 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
153
153
 
154
154
  // ── Component-to-component dependency ─────────────────────
155
155
  // What the DSM plots when both axes are architecture: who needs whom.
156
- flow from subFluidPath.lcOcclusionChannel to subControl.lcDoseController;
157
- flow from subControl.lcDoseController to subFluidPath.lcPumpMechanism;
158
- flow from subFluidPath.lcPumpMechanism to subControl.lcTherapyStateStore;
159
- flow from subControl.lcTherapyStateStore to subUserInterface.lcDisplayManager;
160
- flow from subControl.subSafetyMonitor.lcWatchdogChannel to subControl.lcDoseController;
161
- flow from subControl.subSafetyMonitor.lcPressureIntegrityChannel to subUserInterface.lcAlarmAnnunciator;
162
- flow from subUserInterface.lcKeypadHandler to subControl.lcDoseController;
163
- flow from subFluidPath.lcReservoirInterface to subFluidPath.lcPumpMechanism;
164
- flow from subPower.lcBatteryManager to subPower.lcPowerRailMonitor;
165
- flow from subPower.lcPowerRailMonitor to subUserInterface.lcAlarmAnnunciator;
156
+ flow lcOcclusionChannelToLcDoseController from subFluidPath.lcOcclusionChannel to subControl.lcDoseController;
157
+ flow lcDoseControllerToLcPumpMechanism from subControl.lcDoseController to subFluidPath.lcPumpMechanism;
158
+ flow lcPumpMechanismToLcTherapyStateStore from subFluidPath.lcPumpMechanism to subControl.lcTherapyStateStore;
159
+ flow lcTherapyStateStoreToLcDisplayManager from subControl.lcTherapyStateStore to subUserInterface.lcDisplayManager;
160
+ flow lcWatchdogChannelToLcDoseController from subControl.subSafetyMonitor.lcWatchdogChannel to subControl.lcDoseController;
161
+ flow lcPressureIntegrityChannelToLcAlarmAnnunciator from subControl.subSafetyMonitor.lcPressureIntegrityChannel to subUserInterface.lcAlarmAnnunciator;
162
+ flow lcKeypadHandlerToLcDoseController from subUserInterface.lcKeypadHandler to subControl.lcDoseController;
163
+ flow lcReservoirInterfaceToLcPumpMechanism from subFluidPath.lcReservoirInterface to subFluidPath.lcPumpMechanism;
164
+ flow lcBatteryManagerToLcPowerRailMonitor from subPower.lcBatteryManager to subPower.lcPowerRailMonitor;
165
+ flow lcPowerRailMonitorToLcAlarmAnnunciator from subPower.lcPowerRailMonitor to subUserInterface.lcAlarmAnnunciator;
166
166
  }
167
167
  }