@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,5 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_interconnection_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  private import ScalarValues::*;
3
4
  private import memo_architecture_operational_context_actors::*;
4
5
  private import memo_architecture_operational_context_use_context::*;
@@ -19,7 +20,7 @@ package diagram_samples {
19
20
  // real containment, not a port-to-port `Composes` edge, which is what
20
21
  // CR-ONT-65 used to forbid before nesting made the rule unnecessary.
21
22
  part coffeeMachine : LogicalComponent {
22
- attribute :>> name = "Coffee Machine";
23
+ @MemoIdentity { :>> label = "Coffee Machine"; }
23
24
  in port mainsWaterIn : DataPort { in item payload : MemoItem; }
24
25
  out port beverageOut : DataPort { out item payload : MemoItem; }
25
26
  inout port serviceInterface : DataPort {
@@ -28,58 +29,56 @@ package diagram_samples {
28
29
  }
29
30
 
30
31
  part waterTank : LogicalComponent {
31
- attribute :>> name = "Water Reservoir";
32
+ @MemoIdentity { :>> label = "Water Reservoir"; }
32
33
  out port tankWaterOut : DataPort { out item payload : MemoItem; }
33
34
  in port tankWaterIn : DataPort { in item payload : MemoItem; }
34
35
  }
35
36
  part heaterAssembly : LogicalComponent {
36
- attribute :>> name = "Thermal Control Assembly";
37
+ @MemoIdentity { :>> label = "Thermal Control Assembly"; }
37
38
  in port heaterWaterIn : DataPort { in item payload : MemoItem; }
38
39
  out port heatedWaterOut : DataPort { out item payload : MemoItem; }
39
40
 
40
41
  part thermostat : LogicalComponent {
41
- attribute :>> name = "Thermostat";
42
42
  in port tempReadingIn : DataPort { in item payload : MemoItem; }
43
43
  out port powerCommandOut : DataPort { out item payload : MemoItem; }
44
44
  }
45
45
 
46
46
  part heatingElement : LogicalComponent {
47
- attribute :>> name = "Water Heating Element";
47
+ @MemoIdentity { :>> label = "Water Heating Element"; }
48
48
  in port powerIn : DataPort { in item payload : MemoItem; }
49
49
  out port heaterStatusOut : DataPort { out item payload : MemoItem; }
50
50
 
51
51
  part resistiveCoil : LogicalComponent {
52
- attribute :>> name = "Resistive Coil";
52
+ @MemoIdentity { :>> label = "Resistive Coil"; }
53
53
  in port coilPowerIn : DataPort { in item payload : MemoItem; }
54
54
  out port heatOut : DataPort { out item payload : MemoItem; }
55
55
  }
56
56
  part temperatureSensor : LogicalComponent {
57
- attribute :>> name = "Temperature Sensor";
57
+ @MemoIdentity { :>> label = "Temperature Sensor"; }
58
58
  in port heatIn : DataPort { in item payload : MemoItem; }
59
59
  out port sensorReadingOut : DataPort { out item payload : MemoItem; }
60
60
  }
61
61
  }
62
62
  }
63
63
  part brewGroup : LogicalComponent {
64
- attribute :>> name = "Brew Group";
64
+ @MemoIdentity { :>> label = "Brew Group"; }
65
65
  in port brewWaterIn : DataPort { in item payload : MemoItem; }
66
66
  out port brewedCoffeeOut : DataPort { out item payload : MemoItem; }
67
67
  }
68
68
  }
69
69
  part waterSupply : LogicalComponent {
70
- attribute :>> name = "Water Supply";
70
+ @MemoIdentity { :>> label = "Water Supply"; }
71
71
  out port supplyWaterOut : DataPort { out item payload : MemoItem; }
72
72
  }
73
73
  part cup : LogicalComponent {
74
- attribute :>> name = "Cup";
75
74
  in port cupBeverageIn : DataPort { in item payload : MemoItem; }
76
75
  }
77
76
 
78
77
  // Transport between two components: `out` to `in`, one item moving.
79
- flow from waterSupply.supplyWaterOut to coffeeMachine.mainsWaterIn;
80
- flow from coffeeMachine.waterTank.tankWaterOut to coffeeMachine.heaterAssembly.heaterWaterIn;
81
- flow from coffeeMachine.heaterAssembly.heatedWaterOut to coffeeMachine.brewGroup.brewWaterIn;
82
- 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;
83
82
 
84
83
  // Delegation between a boundary port and the interior it stands for. These
85
84
  // are `in`-to-`in` and `out`-to-`out`, because nothing travels: the two
@@ -90,58 +89,11 @@ package diagram_samples {
90
89
  bind coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut = coffeeMachine.serviceInterface.diagnostics;
91
90
 
92
91
  // Internal flows within the heater assembly
93
- flow from coffeeMachine.heaterAssembly.thermostat.powerCommandOut to coffeeMachine.heaterAssembly.heatingElement.powerIn;
94
- 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;
95
94
 
96
95
  // Internal flows within the heating element
97
- 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;
98
97
  bind coffeeMachine.heaterAssembly.heatingElement.powerIn = coffeeMachine.heaterAssembly.heatingElement.resistiveCoil.coilPowerIn;
99
98
  bind coffeeMachine.heaterAssembly.heatingElement.temperatureSensor.sensorReadingOut = coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut;
100
-
101
- // Child IBD view — the heater assembly's own internal wiring. Its subject
102
- // is `heaterAssembly`, so the parent IBD shows a "navigate to view" button
103
- // on the Thermal Control Assembly part.
104
- view heaterAssemblyIBD : MemoDiagramView {
105
- expose coffeeMachine.heaterAssembly::**;
106
- attribute depth = 2;
107
- @MemoIdentity { :>> shortDescription = "Internal wiring of the Thermal Control Assembly — heating element and its status output."; }
108
- attribute :>> viewKind = DiagramViewKind::interconnection;
109
- attribute :>> diagramType = "ibd";
110
- attribute :>> rendererProfile = "ibd";
111
- ref :>> viewpointDefinition = ibdViewpoint;
112
- part :>> selectionQuery {
113
- attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
114
- }
115
- }
116
-
117
- view heatingElementIBD : MemoDiagramView {
118
- expose coffeeMachine.heaterAssembly.heatingElement::**;
119
- attribute depth = 2;
120
- @MemoIdentity { :>> shortDescription = "Third-level IBD — resistive coil and temperature sensor inside the heating element."; }
121
- attribute :>> viewKind = DiagramViewKind::interconnection;
122
- attribute :>> diagramType = "ibd";
123
- attribute :>> rendererProfile = "ibd";
124
- ref :>> viewpointDefinition = ibdViewpoint;
125
- part :>> selectionQuery {
126
- attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
127
- }
128
- }
129
-
130
- view beverageMachineIBD : MemoDiagramView {
131
- expose coffeeMachine::**;
132
- expose waterSupply::**;
133
- expose cup::**;
134
- attribute depth = 2;
135
- @MemoIdentity { :>> shortDescription = "Balanced internal architecture with readable boundary ports, nested service diagnostics, and external water and beverage interfaces."; }
136
- attribute :>> viewKind = DiagramViewKind::interconnection;
137
- attribute :>> diagramType = "ibd";
138
- // The dedicated IBD renderer (Base -> Ibd class hierarchy): square
139
- // wall ports, orange-in/green-out, solid grabbable nested-connector
140
- // housings, orthogonal crossing-bridge routing, monochrome shading.
141
- attribute :>> rendererProfile = "ibd";
142
- ref :>> viewpointDefinition = ibdViewpoint;
143
- part :>> selectionQuery {
144
- attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
145
- }
146
- }
147
99
  }
@@ -1,4 +1,5 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operational_behaviour_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  private import ScalarValues::*;
3
4
  private import memo_architecture_operational_context_actors::*;
4
5
  private import memo_core_relationships::*;
@@ -28,49 +29,49 @@ package diagram_samples {
28
29
  // Use the canonical MEMO operational system type—never a sample-local
29
30
  // placeholder—so ontology-driven Explorer grouping remains authoritative.
30
31
  part opCareSystem : OperationalEntity {
31
- attribute :>> name = "PCA Care System";
32
+ @MemoIdentity { :>> label = "PCA Care System"; }
32
33
  attribute :>> entityKind = OperationalEntityKind::device;
33
34
  attribute :>> responsibility = "System of interest for this context view.";
34
35
  part opClinicalTeam : User {
35
- attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Clinical Team";
36
+ attribute :>> actorKind = ActorKind::clinician; @MemoIdentity { :>> label = "Clinical Team"; }
36
37
  part opRolePhysician : User {
37
- attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Physician"; }
38
+ attribute :>> actorKind = ActorKind::clinician; @MemoIdentity { :>> label = "Physician"; } }
38
39
  part opRoleNurse : User {
39
- attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Nurse"; }
40
+ attribute :>> actorKind = ActorKind::clinician; @MemoIdentity { :>> label = "Nurse"; } }
40
41
  part opRoleBiomed : User {
41
- attribute :>> actorKind = ActorKind::technician; attribute :>> name = "Biomed Tech"; }
42
+ attribute :>> actorKind = ActorKind::technician; @MemoIdentity { :>> label = "Biomed Tech"; } }
42
43
  }
43
44
  part opPatientGroup : User {
44
- attribute :>> actorKind = ActorKind::patient; attribute :>> name = "Patient Interaction";
45
+ attribute :>> actorKind = ActorKind::patient; @MemoIdentity { :>> label = "Patient Interaction"; }
45
46
  part opRolePatient : User {
46
- attribute :>> actorKind = ActorKind::patient; attribute :>> name = "Patient"; }
47
+ attribute :>> actorKind = ActorKind::patient; @MemoIdentity { :>> label = "Patient"; } }
47
48
  }
48
49
  }
49
50
 
50
51
  action opSetupFlow : OperativeAction {
51
- action opPrescribe : OpPrescribeTherapy { attribute :>> name = "Prescribe Therapy"; }
52
- action opVerify : OpVerifyPrescription { attribute :>> name = "Verify Prescription"; }
52
+ action opPrescribe : OpPrescribeTherapy {@MemoIdentity { :>> label = "Prescribe Therapy"; } }
53
+ action opVerify : OpVerifyPrescription {@MemoIdentity { :>> label = "Verify Prescription"; } }
53
54
  fork opForkPrep;
54
- action opPrime : OperativeAction { attribute :>> name = "Prime Pump & Load Reservoir"; }
55
- action opSelfTest : OperativeAction { attribute :>> name = "Run Device Self-Test"; }
55
+ action opPrime : OperativeAction {@MemoIdentity { :>> label = "Prime Pump & Load Reservoir"; } }
56
+ action opSelfTest : OperativeAction {@MemoIdentity { :>> label = "Run Device Self-Test"; } }
56
57
  join opJoinPrep;
57
- action opProgram : OperativeAction { attribute :>> name = "Program Pump Parameters"; }
58
- action opConnect : OperativeAction { attribute :>> name = "Connect to Patient"; }
59
- action opStart : OperativeAction { attribute :>> name = "Start Infusion"; }
58
+ action opProgram : OperativeAction {@MemoIdentity { :>> label = "Program Pump Parameters"; } }
59
+ action opConnect : OperativeAction {@MemoIdentity { :>> label = "Connect to Patient"; } }
60
+ action opStart : OperativeAction {@MemoIdentity { :>> label = "Start Infusion"; } }
60
61
  action opAdminister : OperativeAction {
61
- attribute :>> name = "Administer PCA Therapy";
62
- action opRequestBolus : OpRequestBolus { attribute :>> name = "Request Bolus"; }
63
- action opCheckLockout : OpCheckLockout { attribute :>> name = "Check Lockout"; }
64
- action opDeliverDose : OperativeAction { attribute :>> name = "Deliver Dose"; }
65
- action opLogEvent : OperativeAction { attribute :>> name = "Log Dose Event"; }
66
- flow of OpBolusRequest from opRequestBolus.bolusRequest to opCheckLockout.bolusRequest;
62
+ @MemoIdentity { :>> label = "Administer PCA Therapy"; }
63
+ action opRequestBolus : OpRequestBolus {@MemoIdentity { :>> label = "Request Bolus"; } }
64
+ action opCheckLockout : OpCheckLockout {@MemoIdentity { :>> label = "Check Lockout"; } }
65
+ action opDeliverDose : OperativeAction {@MemoIdentity { :>> label = "Deliver Dose"; } }
66
+ action opLogEvent : OperativeAction {@MemoIdentity { :>> label = "Log Dose Event"; } }
67
+ flow opBolusRequestFlow of OpBolusRequest from opRequestBolus.bolusRequest to opCheckLockout.bolusRequest;
67
68
  first start then opRequestBolus;
68
69
  first opRequestBolus then opCheckLockout;
69
70
  first opCheckLockout then opDeliverDose;
70
71
  first opDeliverDose then opLogEvent;
71
72
  first opLogEvent then done;
72
73
  }
73
- flow of OpPrescription from opPrescribe.prescription to opVerify.prescription;
74
+ flow opPrescriptionFlow of OpPrescription from opPrescribe.prescription to opVerify.prescription;
74
75
  first start then opPrescribe;
75
76
  first opPrescribe then opVerify;
76
77
  first opVerify then opForkPrep;
@@ -97,14 +98,4 @@ package diagram_samples {
97
98
  allocate opSetupFlow.opAdminister.opCheckLockout to opCareSystem.opClinicalTeam.opRoleNurse;
98
99
  allocate opSetupFlow.opAdminister.opDeliverDose to opCareSystem.opClinicalTeam.opRoleNurse;
99
100
  allocate opSetupFlow.opAdminister.opLogEvent to opCareSystem.opClinicalTeam.opRoleNurse;
100
-
101
- view clinicalSetupActivity : MemoDiagramView {
102
- expose opSetupFlow::**;
103
- expose opCareSystem::**;
104
- attribute depth = 2;
105
- @MemoIdentity { :>> shortDescription = "Operational activity across clinical roles with concurrent preparation and a composite therapy step."; }
106
- attribute :>> viewKind = DiagramViewKind::actionflow;
107
- attribute :>> diagramType = "ofd";
108
- ref :>> viewpointDefinition = actionFlowViewpoint;
109
- }
110
101
  }
@@ -1,4 +1,5 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_package_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  private import ScalarValues::*;
3
4
  private import memo_architecture_logical_structure::*;
4
5
  private import memo_architecture_logical_interfaces::*;
@@ -16,54 +17,40 @@ package diagram_samples {
16
17
 
17
18
  package presentation {
18
19
  part dashboardUI : LogicalComponent {
19
- attribute :>> name = "Dashboard UI";
20
+ @MemoIdentity { :>> label = "Dashboard UI"; }
20
21
  out port apiCall : DataPort { out item payload : MemoItem; }
21
22
  }
22
23
  part settingsUI : LogicalComponent {
23
- attribute :>> name = "Settings UI";
24
+ @MemoIdentity { :>> label = "Settings UI"; }
24
25
  out port configRequest : DataPort { out item payload : MemoItem; }
25
26
  }
26
27
  }
27
28
 
28
29
  package domain {
29
30
  part therapyEngine : LogicalComponent {
30
- attribute :>> name = "Therapy Engine";
31
+ @MemoIdentity { :>> label = "Therapy Engine"; }
31
32
  in port incomingRequest : DataPort { in item payload : MemoItem; }
32
33
  out port statusUpdate : DataPort { out item payload : MemoItem; }
33
34
  }
34
35
  part alarmManager : LogicalComponent {
35
- attribute :>> name = "Alarm Manager";
36
+ @MemoIdentity { :>> label = "Alarm Manager"; }
36
37
  in port trigger : DataPort { in item payload : MemoItem; }
37
38
  }
38
39
  part configService : LogicalComponent {
39
- attribute :>> name = "Configuration Service";
40
+ @MemoIdentity { :>> label = "Configuration Service"; }
40
41
  in port configIn : DataPort { in item payload : MemoItem; }
41
42
  }
42
43
  }
43
44
 
44
45
  package infrastructure {
45
46
  part dataStore : LogicalComponent {
46
- attribute :>> name = "Data Store";
47
+ @MemoIdentity { :>> label = "Data Store"; }
47
48
  in port writePort : DataPort { in item payload : MemoItem; }
48
49
  out port readPort : DataPort { out item payload : MemoItem; }
49
50
  }
50
51
  part networkAdapter : LogicalComponent {
51
- attribute :>> name = "Network Adapter";
52
+ @MemoIdentity { :>> label = "Network Adapter"; }
52
53
  inout port netIO : DataPort { inout item payload : MemoItem; }
53
54
  }
54
55
  }
55
-
56
- view threeLayerPackages : MemoDiagramView {
57
- expose presentation::**;
58
- expose domain::**;
59
- expose infrastructure::**;
60
- attribute depth = 2;
61
- @MemoIdentity { :>> shortDescription = "Three-layer package overview — presentation, domain, infrastructure — rendered as a browser membership tree."; }
62
- attribute :>> viewKind = DiagramViewKind::browser;
63
- attribute :>> diagramType = "pkg";
64
- ref :>> viewpointDefinition = browserViewpoint;
65
- part :>> selectionQuery {
66
- attribute :>> includeRelationshipKinds = ("Composes");
67
- }
68
- }
69
56
  }
@@ -1,4 +1,5 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirements_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  // Requirements sample (general view kind, `req` diagram type). Stakeholder needs
3
4
  // on the left derive into system requirements; `DerivesFrom` edges render as the
4
5
  // requirements-diagram trace lines.
@@ -15,28 +16,28 @@ package diagram_samples {
15
16
  private import memo_core_common::MemoIdentity;
16
17
  requirement needSafeTherapy : Need {
17
18
  attribute :>> needKind = NeedKind::'stakeholder';
18
- @MemoIdentity { :>> providedId = "NEED-1"; } attribute :>> name = "SafeTherapy";
19
+ @MemoIdentity { :>> providedId = "NEED-1"; :>> label = "SafeTherapy"; }
19
20
  attribute :>> statement = "The device shall support safe patient-controlled infusion therapy.";
20
21
  }
21
22
  requirement needTimelyAlarms : Need {
22
23
  attribute :>> needKind = NeedKind::'stakeholder';
23
- @MemoIdentity { :>> providedId = "NEED-2"; } attribute :>> name = "TimelyAlarms";
24
+ @MemoIdentity { :>> providedId = "NEED-2"; :>> label = "TimelyAlarms"; }
24
25
  attribute :>> statement = "Clinicians shall be notified promptly of any condition that endangers therapy.";
25
26
  }
26
27
 
27
28
  requirement reqDoseLimit : Requirement {
28
29
  attribute :>> requirementType = RequirementTypeKind::system;
29
- @MemoIdentity { :>> providedId = "REQ-1"; } attribute :>> name = "DoseLimitEnforcement";
30
+ @MemoIdentity { :>> providedId = "REQ-1"; :>> label = "DoseLimitEnforcement"; }
30
31
  attribute :>> statement = "The pump shall not deliver more than the prescribed maximum dose in any one-hour window.";
31
32
  }
32
33
  requirement reqOcclusionAlarm : Requirement {
33
34
  attribute :>> requirementType = RequirementTypeKind::system;
34
- @MemoIdentity { :>> providedId = "REQ-2"; } attribute :>> name = "OcclusionAlarm";
35
+ @MemoIdentity { :>> providedId = "REQ-2"; :>> label = "OcclusionAlarm"; }
35
36
  attribute :>> statement = "The pump shall raise an alarm within two seconds of detecting a downstream occlusion.";
36
37
  }
37
38
  requirement reqAlarmLoudness : Requirement {
38
39
  attribute :>> requirementType = RequirementTypeKind::system;
39
- @MemoIdentity { :>> providedId = "REQ-3"; } attribute :>> name = "AlarmLoudness";
40
+ @MemoIdentity { :>> providedId = "REQ-3"; :>> label = "AlarmLoudness"; }
40
41
  attribute :>> statement = "An active alarm shall be audible at 65 dBA at one metre.";
41
42
  }
42
43
 
@@ -44,20 +45,4 @@ package diagram_samples {
44
45
  connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqOcclusionAlarm;
45
46
  connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqOcclusionAlarm;
46
47
  connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqAlarmLoudness;
47
-
48
- view needsToRequirements : MemoDiagramView {
49
- expose needSafeTherapy::**;
50
- expose needTimelyAlarms::**;
51
- expose reqDoseLimit;
52
- expose reqOcclusionAlarm;
53
- expose reqAlarmLoudness;
54
- attribute depth = 1;
55
- @MemoIdentity { :>> shortDescription = "Stakeholder needs deriving into system requirements, wired by DerivesFrom trace edges."; }
56
- attribute :>> viewKind = DiagramViewKind::general;
57
- attribute :>> diagramType = "req";
58
- ref :>> viewpointDefinition = requirementsDiagramViewpoint;
59
- part :>> selectionQuery {
60
- attribute :>> includeRelationshipKinds = ("DerivesFrom");
61
- }
62
- }
63
48
  }
@@ -1,6 +1,7 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_sequence_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  // Sequence sample (sequence view kind, `seq` diagram type). A FunctionalFlow
3
- // owns an ordered chain of FunctionalFlowSteps; each step is `allocate`d to
4
+ // owns an ordered chain of nested actions (its steps); each step is `allocate`d to
4
5
  // the lifeline (an actor or component) that performs it, and the sequence
5
6
  // template lays lifelines out as columns with one row per step in
6
7
  // declaration order.
@@ -18,39 +19,39 @@ package diagram_samples {
18
19
  private import memo_core_common::MemoIdentity;
19
20
 
20
21
  // Lifelines — the actor and components each step is allocated to.
21
- part clinician : User { attribute :>> name = "Clinician"; }
22
- part pumpController : LogicalComponent { attribute :>> name = "Pump Controller"; }
23
- part pumpMechanism : LogicalComponent { attribute :>> name = "Pump Mechanism"; }
22
+ part clinician : User { }
23
+ part pumpController : LogicalComponent {@MemoIdentity { :>> label = "Pump Controller"; } }
24
+ part pumpMechanism : LogicalComponent {@MemoIdentity { :>> label = "Pump Mechanism"; } }
24
25
 
25
26
  // Combined fragment definitions — referenced by steps' `fragment` attribute.
26
27
  part monitorLoop {
27
- attribute :>> name = "Monitor Loop";
28
+ attribute name = "Monitor Loop";
28
29
  attribute fragmentType = "loop";
29
30
  attribute guard = "vitals abnormal";
30
31
  }
31
32
  part errorHandling {
32
- attribute :>> name = "Error Handling";
33
+ attribute name = "Error Handling";
33
34
  attribute fragmentType = "alt";
34
35
  attribute fragmentGuards = "[error recoverable]|[else]";
35
36
  }
36
37
 
37
38
  action startInfusion : FunctionalFlow {
38
- attribute :>> name = "Start Infusion";
39
+ @MemoIdentity { :>> label = "Start Infusion"; }
39
40
 
40
- action stepRequestStart : FunctionalFlowStep { attribute :>> name = "Request start infusion"; }
41
- action stepValidate : FunctionalFlowStep { attribute :>> name = "Validate prescribed rate"; }
42
- action stepCommandMotor : FunctionalFlowStep { attribute :>> name = "Command motor drive"; }
43
- action stepConfirm : FunctionalFlowStep { attribute :>> name = "Confirm delivery started"; }
41
+ action stepRequestStart {@MemoIdentity { :>> label = "Request start infusion"; } }
42
+ action stepValidate {@MemoIdentity { :>> label = "Validate prescribed rate"; } }
43
+ action stepCommandMotor {@MemoIdentity { :>> label = "Command motor drive"; } }
44
+ action stepConfirm {@MemoIdentity { :>> label = "Confirm delivery started"; } }
44
45
 
45
46
  // Steps inside the monitoring loop fragment
46
- action stepReadSensor : FunctionalFlowStep { attribute :>> name = "Read sensor data"; attribute stepOrder = "5"; attribute fragment = "monitorLoop"; }
47
- action stepCheckVitals : FunctionalFlowStep { attribute :>> name = "Check vital signs"; attribute stepOrder = "6"; attribute fragment = "monitorLoop"; }
47
+ action stepReadSensor {@MemoIdentity { :>> label = "Read sensor data"; } attribute stepOrder = "5"; attribute fragment = "monitorLoop"; }
48
+ action stepCheckVitals {@MemoIdentity { :>> label = "Check vital signs"; } attribute stepOrder = "6"; attribute fragment = "monitorLoop"; }
48
49
 
49
50
  // Steps inside the alt (error-handling) fragment
50
- action stepRetryDelivery : FunctionalFlowStep { attribute :>> name = "Retry delivery"; attribute stepOrder = "7"; attribute fragment = "errorHandling"; attribute fragmentOperand = "1"; }
51
- action stepAlertUser : FunctionalFlowStep { attribute :>> name = "Alert user"; attribute stepOrder = "8"; attribute fragment = "errorHandling"; attribute fragmentOperand = "2"; }
51
+ action stepRetryDelivery {@MemoIdentity { :>> label = "Retry delivery"; } attribute stepOrder = "7"; attribute fragment = "errorHandling"; attribute fragmentOperand = "1"; }
52
+ action stepAlertUser {@MemoIdentity { :>> label = "Alert user"; } attribute stepOrder = "8"; attribute fragment = "errorHandling"; attribute fragmentOperand = "2"; }
52
53
 
53
- action stepNotify : FunctionalFlowStep { attribute :>> name = "Notify delivery started"; attribute stepOrder = "9"; }
54
+ action stepNotify {@MemoIdentity { :>> label = "Notify delivery started"; } attribute stepOrder = "9"; }
54
55
 
55
56
  first start then stepRequestStart;
56
57
  first stepRequestStart then stepValidate;
@@ -77,21 +78,4 @@ package diagram_samples {
77
78
  allocate startInfusion.stepRetryDelivery to pumpController;
78
79
  allocate startInfusion.stepAlertUser to clinician;
79
80
  allocate startInfusion.stepNotify to clinician;
80
-
81
- view startInfusionSequence : MemoDiagramView {
82
- expose startInfusion::**;
83
- expose clinician::**;
84
- expose pumpController::**;
85
- expose pumpMechanism::**;
86
- expose monitorLoop::**;
87
- expose errorHandling::**;
88
- attribute depth = 2;
89
- @MemoIdentity { :>> shortDescription = "Start-infusion sequence with combined fragments — loop for sensor monitoring and alt for error handling."; }
90
- attribute :>> viewKind = DiagramViewKind::sequence;
91
- attribute :>> diagramType = "seq";
92
- ref :>> viewpointDefinition = sequenceViewpoint;
93
- part :>> selectionQuery {
94
- attribute :>> includeElementKinds = ("FunctionalFlowStep", "User", "LogicalComponent", "Part");
95
- }
96
- }
97
81
  }
@@ -1,4 +1,5 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_standard_activity_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  // Standard SysML v2 activity sample (actionflow view kind, `afd` diagram type).
3
4
  //
4
5
  // The view over `activity_example::CustomerProcess`, the standard-SysML activity
@@ -23,12 +24,4 @@ package diagram_samples {
23
24
 
24
25
  private import memo_core_common::*;
25
26
  private import memo_core_common::MemoIdentity;
26
- view orderFulfillmentActivity : MemoDiagramView {
27
- expose FulfillOrder::**;
28
- attribute depth = 2;
29
- @MemoIdentity { :>> shortDescription = "Order fulfilment — accept, validate, decide, fork into parallel shipment and invoice, join, notify, send receipt, and terminate."; }
30
- attribute :>> viewKind = DiagramViewKind::actionflow;
31
- attribute :>> diagramType = "afd";
32
- ref :>> viewpointDefinition = actionFlowViewpoint;
33
- }
34
27
  }
@@ -1,4 +1,5 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_transition_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  // State transition sample (statetransition view kind, `stm` diagram type). A
3
4
  // behaviour machine owns its mode states by containing them, and each native
4
5
  // transition lives inside the state whose substates it connects.
@@ -13,76 +14,51 @@ package diagram_samples {
13
14
 
14
15
  private import memo_core_common::MemoIdentity;
15
16
  state pumpModes : StateMachine {
16
- attribute :>> name = "Pump Operating Modes";
17
+ @MemoIdentity { :>> label = "Pump Operating Modes"; }
17
18
 
18
- state idle : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Idle"; }
19
+ state idle : MemoState { attribute :>> stateKind = StateKind::mode; }
19
20
 
20
21
  // Infusing is a composite state: its substates show what the pump is
21
22
  // doing while it is infusing, and containment is the nesting itself —
22
23
  // not a parallel set of Composes edges.
23
24
  state infusing : MemoState {
24
25
  attribute :>> stateKind = StateKind::mode;
25
- attribute :>> name = "Infusing";
26
26
 
27
- state priming : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Priming"; }
28
- state delivering : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Delivering"; }
29
- state holding : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Holding (KVO)"; }
27
+ state priming : MemoState { attribute :>> stateKind = StateKind::mode; }
28
+ state delivering : MemoState { attribute :>> stateKind = StateKind::mode; }
29
+ state holding : MemoState { attribute :>> stateKind = StateKind::mode; @MemoIdentity { :>> label = "Holding (KVO)"; } }
30
30
 
31
31
  transition tPrimed first priming then delivering {
32
- @TransitionRecord { :>> name = "primed"; :>> trigger = "primeComplete"; }
32
+ @MemoIdentity { :>> label = "primed"; } @TransitionRecord { :>> trigger = "primeComplete"; }
33
33
  }
34
34
  transition tKvo first delivering then holding {
35
- @TransitionRecord { :>> name = "keepVeinOpen"; :>> trigger = "doseComplete"; }
35
+ @MemoIdentity { :>> label = "keepVeinOpen"; } @TransitionRecord { :>> trigger = "doseComplete"; }
36
36
  }
37
37
  transition tResumeDose first holding then delivering {
38
- @TransitionRecord { :>> name = "resumeDose"; :>> trigger = "doseScheduled"; }
38
+ @MemoIdentity { :>> label = "resumeDose"; } @TransitionRecord { :>> trigger = "doseScheduled"; }
39
39
  }
40
40
  }
41
41
 
42
- state paused : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Paused"; }
43
- state alarm : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Alarm"; }
42
+ state paused : MemoState { attribute :>> stateKind = StateKind::mode; }
43
+ state alarm : MemoState { attribute :>> stateKind = StateKind::mode; }
44
44
 
45
45
  transition tStart first idle then infusing {
46
- @TransitionRecord { :>> name = "start"; :>> trigger = "startInfusion"; }
46
+ @MemoIdentity { :>> label = "start"; } @TransitionRecord { :>> trigger = "startInfusion"; }
47
47
  }
48
48
  transition tPause first infusing then paused {
49
- @TransitionRecord { :>> name = "pause"; :>> trigger = "pauseRequested"; }
49
+ @MemoIdentity { :>> label = "pause"; } @TransitionRecord { :>> trigger = "pauseRequested"; }
50
50
  }
51
51
  transition tResume first paused then infusing {
52
- @TransitionRecord { :>> name = "resume"; :>> trigger = "resumeRequested"; }
52
+ @MemoIdentity { :>> label = "resume"; } @TransitionRecord { :>> trigger = "resumeRequested"; }
53
53
  }
54
54
  transition tFault first infusing then alarm {
55
- @TransitionRecord { :>> name = "fault"; :>> trigger = "occlusionDetected"; }
55
+ @MemoIdentity { :>> label = "fault"; } @TransitionRecord { :>> trigger = "occlusionDetected"; }
56
56
  }
57
57
  transition tRecover first alarm then idle {
58
- @TransitionRecord { :>> name = "acknowledge"; :>> trigger = "alarmCleared"; }
58
+ @MemoIdentity { :>> label = "acknowledge"; } @TransitionRecord { :>> trigger = "alarmCleared"; }
59
59
  }
60
60
  transition tStop first infusing then idle {
61
- @TransitionRecord { :>> name = "stop"; :>> trigger = "stopInfusion"; }
62
- }
63
- }
64
-
65
- view pumpModeStateMachine : MemoDiagramView {
66
- expose pumpModes::**;
67
- attribute depth = 2;
68
- @MemoIdentity { :>> shortDescription = "A pump-mode state machine — Idle, Infusing, Paused, Alarm — where Infusing is a composite state nesting Priming, Delivering and Holding."; }
69
- attribute :>> viewKind = DiagramViewKind::statetransition;
70
- attribute :>> diagramType = "stm";
71
- ref :>> viewpointDefinition = stateMachineViewpoint;
72
- part :>> selectionQuery {
73
- attribute :>> includeElementKinds = ("StateMachine", "MemoState");
74
- }
75
- }
76
-
77
- view infusingSubStates : MemoDiagramView {
78
- expose pumpModes.infusing::**;
79
- attribute depth = 2;
80
- @MemoIdentity { :>> shortDescription = "Sub-states of the Infusing composite state — Priming, Delivering, and Holding with their internal transitions."; }
81
- attribute :>> viewKind = DiagramViewKind::statetransition;
82
- attribute :>> diagramType = "stm";
83
- ref :>> viewpointDefinition = stateMachineViewpoint;
84
- part :>> selectionQuery {
85
- attribute :>> includeElementKinds = ("MemoState");
61
+ @MemoIdentity { :>> label = "stop"; } @TransitionRecord { :>> trigger = "stopInfusion"; }
86
62
  }
87
63
  }
88
64