@memoarchitect/ontology 0.13.2 → 0.15.1

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 (315) 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 -357
  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 -90
  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 +459 -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 +5 -5
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
  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 +25 -25
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
  137. package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
  138. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  139. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  140. package/examples/temperature-alarm/memo.package.yaml +3 -1
  141. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  142. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  143. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  144. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  145. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  146. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  147. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  148. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  152. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  154. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  155. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  159. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  160. package/extensions/README.md +65 -16
  161. package/extensions/aadl/memo.package.yaml +1 -1
  162. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  163. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  164. package/extensions/clinical/memo.package.yaml +1 -1
  165. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  166. package/extensions/cloud/memo.package.yaml +1 -1
  167. package/extensions/container/memo.package.yaml +1 -1
  168. package/extensions/messaging/memo.package.yaml +1 -1
  169. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  170. package/extensions/ros/memo.package.yaml +1 -1
  171. package/extensions/ros/src/ros_extension.sysml +25 -24
  172. package/extensions/template/memo.package.yaml +1 -1
  173. package/extensions/template/model/extension.sysml +25 -0
  174. package/memo.manifest.yaml +1 -7
  175. package/methodologies/default/memo.package.yaml +1 -1
  176. package/methodologies/gpca/memo.package.yaml +1 -1
  177. package/ontology/memo.package.yaml +1 -1
  178. package/package.json +6 -4
  179. package/profile/memo.package.yaml +1 -1
  180. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  181. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  182. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  183. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  184. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  185. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  186. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  187. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  188. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  189. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  190. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  191. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  192. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  193. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  194. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  195. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  196. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  197. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  198. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  199. package/src/architecture/variability/memo_variability.sysml +87 -0
  200. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  201. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  202. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  203. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  204. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  205. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  206. package/src/artifacts/standards/iec_60812.sysml +4 -8
  207. package/src/artifacts/standards/iec_62304.sysml +607 -47
  208. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  209. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  210. package/src/artifacts/standards/iso_13485.sysml +12 -24
  211. package/src/artifacts/standards/iso_14971.sysml +118 -20
  212. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  213. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  214. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  216. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  220. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  221. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  222. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  223. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  224. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  225. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  226. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  227. package/src/core/common/memo_common.sysml +61 -68
  228. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  229. package/src/core/relationships/memo_relationships.sysml +17 -11
  230. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  231. package/src/core/semantics/semantics.sysml +58 -0
  232. package/src/core/terminology/terminology.sysml +7 -0
  233. package/src/memo_namespaces.sysml +6 -0
  234. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  235. package/src/methodology/core/memo_core.sysml +85 -29
  236. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  237. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  238. package/src/rules/closure/closure_rules.sysml +250 -4
  239. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  240. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  241. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  242. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  243. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  244. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  245. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  246. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
  247. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  248. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
  249. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  250. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  251. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  252. package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
  253. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  254. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  255. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  256. package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
  257. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  258. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  259. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  260. package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
  261. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  262. package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
  263. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  264. package/src/viewpoints/software/software_viewpoint.sysml +2 -3
  265. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  266. package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
  267. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  268. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  269. package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
  270. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  271. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  272. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  274. package/templates/default/memo.package.yaml +6 -1
  275. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  276. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  277. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  278. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  280. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  281. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  282. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  283. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  284. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  285. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  286. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  287. package/extensions/template/src/extension.sysml +0 -39
  288. package/templates/connected-device/memo.package.yaml +0 -13
  289. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  290. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  291. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  292. package/templates/connected-device/model/catalog/project.sysml +0 -30
  293. package/templates/connected-device/package.json +0 -8
  294. package/templates/connected-device/syside.toml +0 -13
  295. package/templates/infusion-pump/memo.package.yaml +0 -13
  296. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  297. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  298. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  299. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  300. package/templates/infusion-pump/package.json +0 -8
  301. package/templates/infusion-pump/syside.toml +0 -13
  302. package/templates/monitoring-device/memo.package.yaml +0 -13
  303. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  304. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  305. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  306. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  307. package/templates/monitoring-device/package.json +0 -8
  308. package/templates/monitoring-device/syside.toml +0 -13
  309. package/templates/samd/memo.package.yaml +0 -13
  310. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  311. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  312. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  313. package/templates/samd/model/catalog/project.sysml +0 -30
  314. package/templates/samd/package.json +0 -8
  315. package/templates/samd/syside.toml +0 -13
@@ -13,71 +13,61 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned {
13
13
  private import memo_core_common::MemoIdentity;
14
14
 
15
15
  viewpoint contextDiagramViewpoint : MemoViewpoint {
16
- @MemoIdentity { :>> providedId = "VP-DEMO-CTX"; }
17
- attribute :>> name = "Context Diagram";
16
+ @MemoIdentity { :>> providedId = "VP-DEMO-CTX"; :>> label = "Context Diagram"; }
18
17
  @MemoIdentity { :>> shortDescription = "System context — actors, external systems, and boundary interactions."; }
19
18
  attribute :>> explorerOrder = 1;
20
19
  }
21
20
 
22
21
  viewpoint actionFlowViewpoint : MemoViewpoint {
23
- @MemoIdentity { :>> providedId = "VP-DEMO-AFD"; }
24
- attribute :>> name = "Action Flow";
22
+ @MemoIdentity { :>> providedId = "VP-DEMO-AFD"; :>> label = "Action Flow"; }
25
23
  @MemoIdentity { :>> shortDescription = "Swimlane action flows with typed item flows and composite actions."; }
26
24
  attribute :>> explorerOrder = 2;
27
25
  }
28
26
 
29
27
  viewpoint ibdViewpoint : MemoViewpoint {
30
- @MemoIdentity { :>> providedId = "VP-DEMO-IBD"; }
31
- attribute :>> name = "Internal Block Diagram";
28
+ @MemoIdentity { :>> providedId = "VP-DEMO-IBD"; :>> label = "Internal Block Diagram"; }
32
29
  @MemoIdentity { :>> shortDescription = "Internal structure — parts, ports, and connectors."; }
33
30
  attribute :>> explorerOrder = 3;
34
31
  }
35
32
 
36
33
  viewpoint stateMachineViewpoint : MemoViewpoint {
37
- @MemoIdentity { :>> providedId = "VP-DEMO-STD"; }
38
- attribute :>> name = "State Machine";
34
+ @MemoIdentity { :>> providedId = "VP-DEMO-STD"; :>> label = "State Machine"; }
39
35
  @MemoIdentity { :>> shortDescription = "State transitions with composite states and guards."; }
40
36
  attribute :>> explorerOrder = 4;
41
37
  }
42
38
 
43
39
  viewpoint sequenceViewpoint : MemoViewpoint {
44
- @MemoIdentity { :>> providedId = "VP-DEMO-SEQ"; }
45
- attribute :>> name = "Sequence Diagram";
40
+ @MemoIdentity { :>> providedId = "VP-DEMO-SEQ"; :>> label = "Sequence Diagram"; }
46
41
  @MemoIdentity { :>> shortDescription = "Message sequences with combined fragments (loop, alt)."; }
47
42
  attribute :>> explorerOrder = 5;
48
43
  }
49
44
 
50
45
  viewpoint useCaseViewpoint : MemoViewpoint {
51
- @MemoIdentity { :>> providedId = "VP-DEMO-UCD"; }
52
- attribute :>> name = "Use Case Diagram";
46
+ @MemoIdentity { :>> providedId = "VP-DEMO-UCD"; :>> label = "Use Case Diagram"; }
53
47
  @MemoIdentity { :>> shortDescription = "Actors, use cases, include/extend/generalization."; }
54
48
  attribute :>> explorerOrder = 6;
55
49
  }
56
50
 
57
51
  viewpoint requirementsDiagramViewpoint : MemoViewpoint {
58
- @MemoIdentity { :>> providedId = "VP-DEMO-REQ"; }
59
- attribute :>> name = "Requirements Diagram";
52
+ @MemoIdentity { :>> providedId = "VP-DEMO-REQ"; :>> label = "Requirements Diagram"; }
60
53
  @MemoIdentity { :>> shortDescription = "Needs, requirements, and derivation traces."; }
61
54
  attribute :>> explorerOrder = 7;
62
55
  }
63
56
 
64
57
  viewpoint browserViewpoint : MemoViewpoint {
65
- @MemoIdentity { :>> providedId = "VP-DEMO-BRW"; }
66
- attribute :>> name = "Browser View";
58
+ @MemoIdentity { :>> providedId = "VP-DEMO-BRW"; :>> label = "Browser View"; }
67
59
  @MemoIdentity { :>> shortDescription = "Hierarchical membership tree of model elements."; }
68
60
  attribute :>> explorerOrder = 8;
69
61
  }
70
62
 
71
63
  viewpoint gridViewpoint : MemoViewpoint {
72
- @MemoIdentity { :>> providedId = "VP-DEMO-GRD"; }
73
- attribute :>> name = "Grid / Table View";
64
+ @MemoIdentity { :>> providedId = "VP-DEMO-GRD"; :>> label = "Grid / Table View"; }
74
65
  @MemoIdentity { :>> shortDescription = "Tabular worksheet rendering of model attributes."; }
75
66
  attribute :>> explorerOrder = 9;
76
67
  }
77
68
 
78
69
  viewpoint treeViewpoint : MemoViewpoint {
79
- @MemoIdentity { :>> providedId = "VP-DEMO-TRE"; }
80
- attribute :>> name = "Decomposition Diagram";
70
+ @MemoIdentity { :>> providedId = "VP-DEMO-TRE"; :>> label = "Decomposition Diagram"; }
81
71
  @MemoIdentity { :>> shortDescription = "Block decomposition — hierarchical breakdown rendered as a tree."; }
82
72
  attribute :>> explorerOrder = 10;
83
73
  }
@@ -26,8 +26,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_f
26
26
  action def ProcessInput specializes SystemFunction { in item validated : EnergyToken; out item result : MaterialBatch; }
27
27
  action def RecordResult specializes SystemFunction { in item result : MaterialBatch; }
28
28
 
29
- part laneA : LogicalComponent { attribute :>> name = "Lane A"; }
30
- part laneB : LogicalComponent { attribute :>> name = "Lane B"; }
29
+ part laneA : LogicalComponent {@MemoIdentity { :>> label = "Lane A"; } }
30
+ part laneB : LogicalComponent {@MemoIdentity { :>> label = "Lane B"; } }
31
31
 
32
32
  action sampleActionFlow : SystemFunction {
33
33
  action receive : ReceiveInput;
@@ -43,9 +43,9 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_f
43
43
  }
44
44
  action record : RecordResult;
45
45
 
46
- flow of DataPacket from receive.received to validate.received;
47
- flow of EnergyToken from validate.validated to process.validated;
48
- flow of MaterialBatch from process.result to record.result;
46
+ flow dataPacketFlow of DataPacket from receive.received to validate.received;
47
+ flow energyTokenFlow of EnergyToken from validate.validated to process.validated;
48
+ flow materialBatchFlow of MaterialBatch from process.result to record.result;
49
49
 
50
50
  first start then receive;
51
51
  first receive then validate;
@@ -17,49 +17,46 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_browser_
17
17
  // to demonstrate the browser view's hierarchical grouping by kind.
18
18
 
19
19
  part controlSystem : OperationalEntity {
20
- attribute :>> name = "Control System";
20
+ @MemoIdentity { :>> label = "Control System"; }
21
21
 
22
22
  part supervisorModule : OperationalEntity {
23
- attribute :>> name = "Supervisor Module";
23
+ @MemoIdentity { :>> label = "Supervisor Module"; }
24
24
  }
25
25
  part safetyModule : OperationalEntity {
26
- attribute :>> name = "Safety Module";
26
+ @MemoIdentity { :>> label = "Safety Module"; }
27
27
  }
28
28
  part communicationModule : OperationalEntity {
29
- attribute :>> name = "Communication Module";
29
+ @MemoIdentity { :>> label = "Communication Module"; }
30
30
  }
31
31
  }
32
32
 
33
33
  part systemOperator : User {
34
34
  attribute :>> actorKind = ActorKind::clinician;
35
- attribute :>> name = "Operator";
35
+ @MemoIdentity { :>> label = "Operator"; }
36
36
  }
37
37
  part maintenanceEngineer : User {
38
38
  attribute :>> actorKind = ActorKind::technician;
39
- attribute :>> name = "Maintenance Engineer";
39
+ @MemoIdentity { :>> label = "Maintenance Engineer"; }
40
40
  }
41
41
  part remoteMonitor : User {
42
42
  attribute :>> actorKind = ActorKind::clinician;
43
- attribute :>> name = "Remote Monitor";
43
+ @MemoIdentity { :>> label = "Remote Monitor"; }
44
44
  }
45
45
 
46
46
  use case startSystem : UseCase {
47
- @MemoIdentity { :>> providedId = "UC-BRW-1"; }
48
- attribute :>> name = "Start System";
47
+ @MemoIdentity { :>> providedId = "UC-BRW-1"; :>> label = "Start System"; }
49
48
  attribute :>> useCaseKind = UseCaseKind::clinical;
50
49
  subject controlSystem;
51
50
  actor operatorActor = systemOperator;
52
51
  }
53
52
  use case runDiagnostics : UseCase {
54
- @MemoIdentity { :>> providedId = "UC-BRW-2"; }
55
- attribute :>> name = "Run Diagnostics";
53
+ @MemoIdentity { :>> providedId = "UC-BRW-2"; :>> label = "Run Diagnostics"; }
56
54
  attribute :>> useCaseKind = UseCaseKind::service;
57
55
  subject controlSystem;
58
56
  actor engineerActor = maintenanceEngineer;
59
57
  }
60
58
  use case monitorStatus : UseCase {
61
- @MemoIdentity { :>> providedId = "UC-BRW-3"; }
62
- attribute :>> name = "Monitor Status";
59
+ @MemoIdentity { :>> providedId = "UC-BRW-3"; :>> label = "Monitor Status"; }
63
60
  attribute :>> useCaseKind = UseCaseKind::clinical;
64
61
  subject controlSystem;
65
62
  actor monitorActor = remoteMonitor;
@@ -19,22 +19,26 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_
19
19
  // black box. Context diagrams show its environment and interfaces, not its
20
20
  // internal decomposition.
21
21
  part infusionSystem : OperationalEntity {
22
- attribute :>> name = "Infusion Pump System";
22
+ @MemoIdentity { :>> label = "Infusion Pump System"; }
23
23
  attribute :>> entityKind = OperationalEntityKind::device;
24
24
  attribute :>> responsibility = "System of interest for this context view.";
25
+ out port pPharmacyOut : MemoPort;
25
26
  }
26
- part clinician : User { attribute :>> name = "Clinician"; }
27
- part patient : User { attribute :>> name = "Patient"; }
28
- part biomedTech : User { attribute :>> name = "Biomedical Technician"; }
27
+ part clinician : User { }
28
+ part patient : User { }
29
+ part biomedTech : User {@MemoIdentity { :>> label = "Biomedical Technician"; } }
29
30
  part pharmacySystem : OperationalEntity {
30
- attribute :>> name = "Pharmacy Information System";
31
+ @MemoIdentity { :>> label = "Pharmacy Information System"; }
31
32
  attribute :>> entityKind = OperationalEntityKind::externalSystem;
33
+ in port pInfusionIn : MemoPort;
32
34
  }
33
- part homeContext : UseContext { attribute :>> name = "Home Care Environment"; }
35
+ part homeContext : UseContext {@MemoIdentity { :>> label = "Home Care Environment"; } }
34
36
 
35
37
  connection connect clinician to infusionSystem;
36
38
  connection connect patient to infusionSystem;
37
39
  connection connect biomedTech to infusionSystem;
38
- flow from infusionSystem to pharmacySystem;
40
+ // A flow end names a feature of its participant (`part.feature`): the black
41
+ // boxes exchange across their boundary, at these ports.
42
+ flow infusionSystemToPharmacySystem from infusionSystem.pPharmacyOut to pharmacySystem.pInfusionIn;
39
43
  connection : AppliesInContext connect useContext ::> homeContext to subjectElement ::> infusionSystem;
40
44
  }
@@ -40,6 +40,7 @@ package diagram_samples {
40
40
  private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_functional_flow_view::*;
41
41
  private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_grid_view::*;
42
42
  private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_interconnection_view::*;
43
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_drill_down_view::*;
43
44
  private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operational_behaviour_view::*;
44
45
  private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_package_view::*;
45
46
  private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirements_view::*;
@@ -98,8 +99,11 @@ package diagram_samples {
98
99
 
99
100
  view systemContextDiagram : MemoDiagramView {
100
101
  expose infusionSystem::**;
101
- expose clinician;
102
- expose patient;
102
+ // Qualified because three samples each declare an actor called
103
+ // `clinician` and two declare a `patient`: each sample is standalone,
104
+ // which is the point of a gallery. A bare name would name all of them.
105
+ expose memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_view::clinician;
106
+ expose memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_view::patient;
103
107
  expose biomedTech;
104
108
  expose pharmacySystem;
105
109
  expose homeContext;
@@ -240,7 +244,7 @@ package diagram_samples {
240
244
 
241
245
  view startInfusionSequence : MemoDiagramView {
242
246
  expose startInfusion::**;
243
- expose clinician::**;
247
+ expose memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_sequence_view::clinician::**;
244
248
  expose pumpController::**;
245
249
  expose pumpMechanism::**;
246
250
  expose monitorLoop::**;
@@ -251,7 +255,11 @@ package diagram_samples {
251
255
  attribute :>> diagramType = "seq";
252
256
  ref :>> viewpointDefinition = sequenceViewpoint;
253
257
  part :>> selectionQuery {
254
- attribute :>> includeElementKinds = ("FunctionalFlowStep", "User", "LogicalComponent", "Part");
258
+ // No "User": each sample in this gallery declares its own actors,
259
+ // and a kind filter is model-wide, so it would draw every other
260
+ // sample's clinician onto this one's lifelines. The actors this
261
+ // view wants are the ones it exposes by name above.
262
+ attribute :>> includeElementKinds = ("FunctionalFlow", "LogicalComponent");
255
263
  }
256
264
  }
257
265
 
@@ -311,8 +319,8 @@ package diagram_samples {
311
319
  // ─── use case view ───────────────────────────────────────────────────
312
320
 
313
321
  view deviceUseCases : MemoDiagramView {
314
- expose patient;
315
- expose clinician;
322
+ expose memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case_view::patient;
323
+ expose memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case_view::clinician;
316
324
  expose serviceTechnician;
317
325
  expose nursingStaff;
318
326
  expose reviewStatus;
@@ -325,9 +333,56 @@ package diagram_samples {
325
333
  attribute :>> diagramType = "ucd";
326
334
  ref :>> viewpointDefinition = useCaseViewpoint;
327
335
  part :>> selectionQuery {
328
- attribute :>> includeElementKinds = ("User", "UseCase");
329
- attribute :>> includeRelationshipKinds = ("ParticipatesIn", "IncludesStep", "Extends", "Specialization");
336
+ // No "User", for the reason the sequence view gives: the actors
337
+ // are exposed by name, and a kind filter reaches other samples.
338
+ attribute :>> includeElementKinds = ("UseCase");
339
+ attribute :>> includeRelationshipKinds = ("ParticipatesIn", "IncludesStep", "Specialization");
330
340
  }
331
341
  attribute :>> layoutHint = "usecase:level=all;edge=rounded";
332
342
  }
343
+
344
+ // ─── drill-down samples: a usage typed by a definition ───────────────
345
+
346
+ view driveOverview : MemoDiagramView {
347
+ expose drive;
348
+ expose drive::gearbox;
349
+ expose drive::motor;
350
+ expose drive::controller;
351
+ @MemoIdentity { :>> shortDescription = "Parts typed by definitions: gearbox has its own authored view, motor drills into generated levels, controller has nothing to open."; }
352
+ attribute :>> viewKind = DiagramViewKind::interconnection;
353
+ attribute :>> diagramType = "ibd";
354
+ attribute :>> rendererProfile = "ibd";
355
+ ref :>> viewpointDefinition = ibdViewpoint;
356
+ part :>> selectionQuery {
357
+ attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
358
+ }
359
+ }
360
+
361
+ view gearboxInside : MemoDiagramView {
362
+ expose DrillGearbox::**;
363
+ @MemoIdentity { :>> shortDescription = "The authored view of the gearbox definition; every usage typed by it opens this one."; }
364
+ attribute :>> viewKind = DiagramViewKind::interconnection;
365
+ attribute :>> diagramType = "ibd";
366
+ attribute :>> rendererProfile = "ibd";
367
+ ref :>> viewpointDefinition = ibdViewpoint;
368
+ part :>> selectionQuery {
369
+ attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
370
+ }
371
+ }
372
+
373
+ view servicingFlow : MemoDiagramView {
374
+ expose servicing::**;
375
+ @MemoIdentity { :>> shortDescription = "Two composite actions typed by definitions: calibrate has an authored view, confirm drills into generated steps."; }
376
+ attribute :>> viewKind = DiagramViewKind::actionflow;
377
+ attribute :>> diagramType = "afd";
378
+ ref :>> viewpointDefinition = actionFlowViewpoint;
379
+ }
380
+
381
+ view calibrateDetail : MemoDiagramView {
382
+ expose DrillCalibrate::**;
383
+ @MemoIdentity { :>> shortDescription = "The authored view of the calibrate definition."; }
384
+ attribute :>> viewKind = DiagramViewKind::actionflow;
385
+ attribute :>> diagramType = "afd";
386
+ ref :>> viewpointDefinition = actionFlowViewpoint;
387
+ }
333
388
  }
@@ -0,0 +1,88 @@
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_drill_down_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
3
+ private import ScalarValues::*;
4
+ private import memo_architecture_logical_interfaces::*;
5
+ private import memo_architecture_logical_structure::*;
6
+ private import memo_architecture_functional_functions::*;
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
9
+
10
+ // Parts and actions that are TYPED by a definition, so each way into a
11
+ // lower level can be tried on its own. The overview draws only the usages;
12
+ // what is inside each comes from the definition it is typed by.
13
+ //
14
+ // gearbox typed by DrillGearbox: has an authored child view
15
+ // (gearboxInside), so it shows the ↗ button and a way back.
16
+ // motor typed by DrillMotor: parts, two levels deep, and NO view,
17
+ // so only the generated level opens; drill again for
18
+ // windings, then back out.
19
+ // controller typed by DrillController: ports and no parts, so there is
20
+ // nothing to drill into and no view to open.
21
+ part def DrillGearbox specializes LogicalComponent {
22
+ in port shaftIn : DataPort { in item payload : MemoItem; }
23
+ out port shaftOut : DataPort { out item payload : MemoItem; }
24
+ part inputStage : LogicalComponent {
25
+ in port torqueIn : DataPort { in item payload : MemoItem; }
26
+ out port torqueOut : DataPort { out item payload : MemoItem; }
27
+ }
28
+ part outputStage : LogicalComponent {
29
+ in port torqueIn : DataPort { in item payload : MemoItem; }
30
+ out port torqueOut : DataPort { out item payload : MemoItem; }
31
+ }
32
+ }
33
+
34
+ part def DrillMotor specializes LogicalComponent {
35
+ in port powerIn : DataPort { in item payload : MemoItem; }
36
+ out port torqueOut : DataPort { out item payload : MemoItem; }
37
+ part rotor : LogicalComponent {
38
+ out port torqueOut : DataPort { out item payload : MemoItem; }
39
+ }
40
+ part stator : LogicalComponent {
41
+ in port powerIn : DataPort { in item payload : MemoItem; }
42
+ part windings : LogicalComponent {
43
+ in port currentIn : DataPort { in item payload : MemoItem; }
44
+ }
45
+ }
46
+ }
47
+
48
+ part def DrillController specializes LogicalComponent {
49
+ in port commandIn : DataPort { in item payload : MemoItem; }
50
+ out port powerOut : DataPort { out item payload : MemoItem; }
51
+ }
52
+
53
+ part def DrillDrive specializes LogicalComponent {
54
+ part gearbox : DrillGearbox;
55
+ part motor : DrillMotor;
56
+ part controller : DrillController;
57
+ }
58
+
59
+ part drive : DrillDrive {
60
+ @MemoIdentity { :>> label = "Drive"; }
61
+ }
62
+
63
+ // The same two cases for an action flow: calibrate has an authored child
64
+ // view (calibrateDetail), confirm has child actions and none.
65
+ action def DrillCalibrate specializes SystemFunction {
66
+ action measure : SystemFunction;
67
+ action adjust : SystemFunction;
68
+ first start then measure;
69
+ first measure then adjust;
70
+ first adjust then done;
71
+ }
72
+
73
+ action def DrillVerify specializes SystemFunction {
74
+ action compare : SystemFunction;
75
+ action sign : SystemFunction;
76
+ first start then compare;
77
+ first compare then sign;
78
+ first sign then done;
79
+ }
80
+
81
+ action servicing : SystemFunction {
82
+ action calibrate : DrillCalibrate;
83
+ action confirm : DrillVerify;
84
+ first start then calibrate;
85
+ first calibrate then confirm;
86
+ first confirm then done;
87
+ }
88
+ }
@@ -53,45 +53,45 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_function
53
53
  // Component hierarchy used by the Level control:
54
54
  // L1 system → L2 subsystems → L3 allocated components.
55
55
  part fxPumpSystem : LogicalComponent {
56
- attribute :>> name = "Infusion Pump System";
56
+ @MemoIdentity { :>> label = "Infusion Pump System"; }
57
57
  part fxSensingSubsystem : LogicalComponent {
58
- attribute :>> name = "Sensing Subsystem";
59
- part fxSensor : LogicalComponent { attribute :>> name = "Sensor Subsystem"; }
58
+ @MemoIdentity { :>> label = "Sensing Subsystem"; }
59
+ part fxSensor : LogicalComponent {@MemoIdentity { :>> label = "Sensor Subsystem"; } }
60
60
  }
61
61
  part fxControlSubsystem : LogicalComponent {
62
- attribute :>> name = "Control Subsystem";
63
- part fxController : LogicalComponent { attribute :>> name = "Infusion Controller"; }
62
+ @MemoIdentity { :>> label = "Control Subsystem"; }
63
+ part fxController : LogicalComponent {@MemoIdentity { :>> label = "Infusion Controller"; } }
64
64
  }
65
65
  part fxDeliverySubsystem : LogicalComponent {
66
- attribute :>> name = "Delivery Subsystem";
67
- part fxActuator : LogicalComponent { attribute :>> name = "Pump Actuator"; }
66
+ @MemoIdentity { :>> label = "Delivery Subsystem"; }
67
+ part fxActuator : LogicalComponent {@MemoIdentity { :>> label = "Pump Actuator"; } }
68
68
  }
69
69
  part fxSafetySubsystem : LogicalComponent {
70
- attribute :>> name = "Safety Subsystem";
71
- part fxSafety : LogicalComponent { attribute :>> name = "Safety Monitor"; }
70
+ @MemoIdentity { :>> label = "Safety Subsystem"; }
71
+ part fxSafety : LogicalComponent {@MemoIdentity { :>> label = "Safety Monitor"; } }
72
72
  }
73
73
  }
74
74
 
75
75
  action fxDeliveryFlow : SystemFunction {
76
- action fxAcquire : FxAcquire { attribute :>> name = "Acquire Sensor Data"; }
77
- action fxCompute : FxCompute { attribute :>> name = "Compute Infusion Rate"; }
76
+ action fxAcquire : FxAcquire {@MemoIdentity { :>> label = "Acquire Sensor Data"; } }
77
+ action fxCompute : FxCompute {@MemoIdentity { :>> label = "Compute Infusion Rate"; } }
78
78
 
79
79
  // Split: enforce/drive/deliver runs concurrently with occlusion monitoring
80
80
  fork fxForkDeliver;
81
- action fxEnforce : FxEnforce { attribute :>> name = "Enforce Dose Limits"; }
82
- action fxDrive : FxDrive { attribute :>> name = "Drive Pump Motor"; }
83
- action fxMonitor : FxMonitor { attribute :>> name = "Monitor Occlusion"; }
84
- action fxDetect : FxDetect { attribute :>> name = "Detect Occlusion"; }
81
+ action fxEnforce : FxEnforce {@MemoIdentity { :>> label = "Enforce Dose Limits"; } }
82
+ action fxDrive : FxDrive {@MemoIdentity { :>> label = "Drive Pump Motor"; } }
83
+ action fxMonitor : FxMonitor {@MemoIdentity { :>> label = "Monitor Occlusion"; } }
84
+ action fxDetect : FxDetect {@MemoIdentity { :>> label = "Detect Occlusion"; } }
85
85
  join fxJoinDeliver;
86
86
 
87
87
  // Composite function — valve sub-flow (drill-in)
88
88
  action fxDeliver : FxDeliverMedication {
89
- attribute :>> name = "Deliver Medication";
90
- action fxOpenValve : SystemFunction { attribute :>> name = "Open Valve"; }
91
- action fxHoldDose : SystemFunction { attribute :>> name = "Hold Metered Dose"; }
92
- action fxCloseValve : SystemFunction { attribute :>> name = "Close Valve"; }
89
+ @MemoIdentity { :>> label = "Deliver Medication"; }
90
+ action fxOpenValve : SystemFunction {@MemoIdentity { :>> label = "Open Valve"; } }
91
+ action fxHoldDose : SystemFunction {@MemoIdentity { :>> label = "Hold Metered Dose"; } out item fluid : FxMedicationFluid; }
92
+ action fxCloseValve : SystemFunction {@MemoIdentity { :>> label = "Close Valve"; } in item fluid : FxMedicationFluid; }
93
93
 
94
- flow of FxMedicationFluid from fxDeliveryFlow.fxDeliver.fxHoldDose to fxCloseValve;
94
+ flow fxHoldDoseToFxCloseValve of FxMedicationFluid from fxHoldDose.fluid to fxCloseValve.fluid;
95
95
 
96
96
  first start then fxOpenValve;
97
97
  first fxOpenValve then fxHoldDose;
@@ -99,12 +99,12 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_function
99
99
  first fxCloseValve then done;
100
100
  }
101
101
 
102
- action fxLog : SystemFunction { attribute :>> name = "Log Delivery"; }
102
+ action fxLog : SystemFunction {@MemoIdentity { :>> label = "Log Delivery"; } }
103
103
 
104
- flow of FxSensorReading from fxAcquire.reading to fxCompute.reading;
105
- flow of FxRateCommand from fxEnforce.safeCommand to fxDrive.command;
106
- flow of FxMotorEnergy from fxDrive.energy to fxDeliver.energy;
107
- flow of FxOcclusionSignal from fxMonitor.signal to fxDetect.signal;
104
+ flow fxSensorReadingFlow of FxSensorReading from fxAcquire.reading to fxCompute.reading;
105
+ flow safeCommandToCommand of FxRateCommand from fxEnforce.safeCommand to fxDrive.command;
106
+ flow fxMotorEnergyFlow of FxMotorEnergy from fxDrive.energy to fxDeliver.energy;
107
+ flow fxOcclusionSignalFlow of FxOcclusionSignal from fxMonitor.signal to fxDetect.signal;
108
108
 
109
109
  first start then fxAcquire;
110
110
  first fxAcquire then fxCompute;
@@ -15,8 +15,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_grid_vie
15
15
  private import memo_core_common::*;
16
16
  private import memo_core_common::MemoIdentity;
17
17
 
18
- part fmMotorRunaway : FailureMode {
19
- attribute :>> name = "PumpMotorRunaway";
18
+ item fmMotorRunaway : FailureMode {
19
+ @MemoIdentity { :>> label = "PumpMotorRunaway"; }
20
20
  attribute :>> failureModeKind = FailureModeKind::unintendedFunction;
21
21
  attribute :>> effect = "Excess drug delivered beyond the prescribed rate.";
22
22
  attribute :>> severityRating = 1;
@@ -26,8 +26,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_grid_vie
26
26
  attribute :>> rpn = 6;
27
27
  attribute :>> criticality = CriticalityKind::catastrophic;
28
28
  }
29
- part fmAirSensorSilent : FailureMode {
30
- attribute :>> name = "AirSensorFailsSilent";
29
+ item fmAirSensorSilent : FailureMode {
30
+ @MemoIdentity { :>> label = "AirSensorFailsSilent"; }
31
31
  attribute :>> failureModeKind = FailureModeKind::lossOfFunction;
32
32
  attribute :>> effect = "Air embolism reaches the patient undetected.";
33
33
  attribute :>> severityRating = 1;
@@ -37,8 +37,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_grid_vie
37
37
  attribute :>> rpn = 12;
38
38
  attribute :>> criticality = CriticalityKind::catastrophic;
39
39
  }
40
- part fmOcclusionDrift : FailureMode {
41
- attribute :>> name = "OcclusionSensorDrift";
40
+ item fmOcclusionDrift : FailureMode {
41
+ @MemoIdentity { :>> label = "OcclusionSensorDrift"; }
42
42
  attribute :>> failureModeKind = FailureModeKind::degradedFunction;
43
43
  attribute :>> effect = "Occlusion is detected late, interrupting therapy.";
44
44
  attribute :>> severityRating = 7;
@@ -20,7 +20,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_intercon
20
20
  // real containment, not a port-to-port `Composes` edge, which is what
21
21
  // CR-ONT-65 used to forbid before nesting made the rule unnecessary.
22
22
  part coffeeMachine : LogicalComponent {
23
- attribute :>> name = "Coffee Machine";
23
+ @MemoIdentity { :>> label = "Coffee Machine"; }
24
24
  in port mainsWaterIn : DataPort { in item payload : MemoItem; }
25
25
  out port beverageOut : DataPort { out item payload : MemoItem; }
26
26
  inout port serviceInterface : DataPort {
@@ -29,58 +29,56 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_intercon
29
29
  }
30
30
 
31
31
  part waterTank : LogicalComponent {
32
- attribute :>> name = "Water Reservoir";
32
+ @MemoIdentity { :>> label = "Water Reservoir"; }
33
33
  out port tankWaterOut : DataPort { out item payload : MemoItem; }
34
34
  in port tankWaterIn : DataPort { in item payload : MemoItem; }
35
35
  }
36
36
  part heaterAssembly : LogicalComponent {
37
- attribute :>> name = "Thermal Control Assembly";
37
+ @MemoIdentity { :>> label = "Thermal Control Assembly"; }
38
38
  in port heaterWaterIn : DataPort { in item payload : MemoItem; }
39
39
  out port heatedWaterOut : DataPort { out item payload : MemoItem; }
40
40
 
41
41
  part thermostat : LogicalComponent {
42
- attribute :>> name = "Thermostat";
43
42
  in port tempReadingIn : DataPort { in item payload : MemoItem; }
44
43
  out port powerCommandOut : DataPort { out item payload : MemoItem; }
45
44
  }
46
45
 
47
46
  part heatingElement : LogicalComponent {
48
- attribute :>> name = "Water Heating Element";
47
+ @MemoIdentity { :>> label = "Water Heating Element"; }
49
48
  in port powerIn : DataPort { in item payload : MemoItem; }
50
49
  out port heaterStatusOut : DataPort { out item payload : MemoItem; }
51
50
 
52
51
  part resistiveCoil : LogicalComponent {
53
- attribute :>> name = "Resistive Coil";
52
+ @MemoIdentity { :>> label = "Resistive Coil"; }
54
53
  in port coilPowerIn : DataPort { in item payload : MemoItem; }
55
54
  out port heatOut : DataPort { out item payload : MemoItem; }
56
55
  }
57
56
  part temperatureSensor : LogicalComponent {
58
- attribute :>> name = "Temperature Sensor";
57
+ @MemoIdentity { :>> label = "Temperature Sensor"; }
59
58
  in port heatIn : DataPort { in item payload : MemoItem; }
60
59
  out port sensorReadingOut : DataPort { out item payload : MemoItem; }
61
60
  }
62
61
  }
63
62
  }
64
63
  part brewGroup : LogicalComponent {
65
- attribute :>> name = "Brew Group";
64
+ @MemoIdentity { :>> label = "Brew Group"; }
66
65
  in port brewWaterIn : DataPort { in item payload : MemoItem; }
67
66
  out port brewedCoffeeOut : DataPort { out item payload : MemoItem; }
68
67
  }
69
68
  }
70
69
  part waterSupply : LogicalComponent {
71
- attribute :>> name = "Water Supply";
70
+ @MemoIdentity { :>> label = "Water Supply"; }
72
71
  out port supplyWaterOut : DataPort { out item payload : MemoItem; }
73
72
  }
74
73
  part cup : LogicalComponent {
75
- attribute :>> name = "Cup";
76
74
  in port cupBeverageIn : DataPort { in item payload : MemoItem; }
77
75
  }
78
76
 
79
77
  // Transport between two components: `out` to `in`, one item moving.
80
- flow from waterSupply.supplyWaterOut to coffeeMachine.mainsWaterIn;
81
- flow from coffeeMachine.waterTank.tankWaterOut to coffeeMachine.heaterAssembly.heaterWaterIn;
82
- flow from coffeeMachine.heaterAssembly.heatedWaterOut to coffeeMachine.brewGroup.brewWaterIn;
83
- flow from coffeeMachine.beverageOut to cup.cupBeverageIn;
78
+ flow supplyWaterOutToMainsWaterIn from waterSupply.supplyWaterOut to coffeeMachine.mainsWaterIn;
79
+ flow tankWaterOutToHeaterWaterIn from coffeeMachine.waterTank.tankWaterOut to coffeeMachine.heaterAssembly.heaterWaterIn;
80
+ flow heatedWaterOutToBrewWaterIn from coffeeMachine.heaterAssembly.heatedWaterOut to coffeeMachine.brewGroup.brewWaterIn;
81
+ flow beverageOutToCupBeverageIn from coffeeMachine.beverageOut to cup.cupBeverageIn;
84
82
 
85
83
  // Delegation between a boundary port and the interior it stands for. These
86
84
  // are `in`-to-`in` and `out`-to-`out`, because nothing travels: the two
@@ -91,11 +89,11 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_intercon
91
89
  bind coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut = coffeeMachine.serviceInterface.diagnostics;
92
90
 
93
91
  // Internal flows within the heater assembly
94
- flow from coffeeMachine.heaterAssembly.thermostat.powerCommandOut to coffeeMachine.heaterAssembly.heatingElement.powerIn;
95
- flow from coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut to coffeeMachine.heaterAssembly.thermostat.tempReadingIn;
92
+ flow powerCommandOutToPowerIn from coffeeMachine.heaterAssembly.thermostat.powerCommandOut to coffeeMachine.heaterAssembly.heatingElement.powerIn;
93
+ flow heaterStatusOutToTempReadingIn from coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut to coffeeMachine.heaterAssembly.thermostat.tempReadingIn;
96
94
 
97
95
  // Internal flows within the heating element
98
- flow from coffeeMachine.heaterAssembly.heatingElement.resistiveCoil.heatOut to coffeeMachine.heaterAssembly.heatingElement.temperatureSensor.heatIn;
96
+ flow heatOutToHeatIn from coffeeMachine.heaterAssembly.heatingElement.resistiveCoil.heatOut to coffeeMachine.heaterAssembly.heatingElement.temperatureSensor.heatIn;
99
97
  bind coffeeMachine.heaterAssembly.heatingElement.powerIn = coffeeMachine.heaterAssembly.heatingElement.resistiveCoil.coilPowerIn;
100
98
  bind coffeeMachine.heaterAssembly.heatingElement.temperatureSensor.sensorReadingOut = coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut;
101
99
  }