@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
@@ -0,0 +1,388 @@
1
+ // Every view of the diagram gallery, in one package.
2
+ //
3
+ // Each sample's model content lives in its own file and package, next to
4
+ // this one, and is imported below. The views are gathered here so the
5
+ // explorer lists them together under each diagram-type viewpoint: a SysML
6
+ // root package is declared once, in one file, so a shared `diagram_samples`
7
+ // package cannot be split across the sample files themselves.
8
+ package diagram_samples {
9
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
10
+ private import ScalarValues::*;
11
+ private import memo_core_relationships::*;
12
+ private import memo_architecture_logical_structure::*;
13
+ private import memo_architecture_logical_interfaces::*;
14
+ private import memo_architecture_functional_functions::*;
15
+ private import memo_viewpoints_definitions::*;
16
+ private import memo_viewpoints_functional_functional_viewpoint::*;
17
+ private import memo_core_enumerations::*;
18
+ private import memo_core_common::*;
19
+ private import memo_core_common::MemoIdentity;
20
+ private import memo_architecture_operational_context_actors::*;
21
+ private import memo_architecture_operational_use_cases::*;
22
+ private import memo_architecture_operational_structure::*;
23
+ private import memo_viewpoints_operational_operational_viewpoint::*;
24
+ private import memo_architecture_operational_context_use_context::*;
25
+ private import memo_viewpoints_context_context_viewpoint::*;
26
+ private import memo_assurance_safety_risk_analysis::*;
27
+ private import memo_viewpoints_logical_logical_viewpoint::*;
28
+ private import memo_architecture_operational_activities::*;
29
+ private import memo_assurance_requirements_needs::*;
30
+ private import memo_assurance_requirements::*;
31
+ private import memo_viewpoints_requirements_requirements_viewpoint::*;
32
+ private import activity_example::*;
33
+ private import memo_architecture_functional_behavior::*;
34
+ private import memo_architecture_implementation_hardware_structure::*;
35
+ private import memo_architecture_realization_physical::*;
36
+ private import memo_viewpoints_physical_physical_viewpoint::*;
37
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_flow_view::*;
38
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_browser_view::*;
39
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_view::*;
40
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_functional_flow_view::*;
41
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_grid_view::*;
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::*;
44
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operational_behaviour_view::*;
45
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_package_view::*;
46
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirements_view::*;
47
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_sequence_view::*;
48
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_standard_activity_view::*;
49
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_transition_view::*;
50
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_tree_view::*;
51
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case_view::*;
52
+
53
+ // ─── action flow view ────────────────────────────────────────────────
54
+
55
+ // Child action-flow view — the process composite action's own steps. Its
56
+ // subject is `sampleActionFlow.process`, so the parent action-flow shows a
57
+ // "navigate to view" button on the Process node.
58
+ view processStepsDetail : MemoDiagramView {
59
+ expose sampleActionFlow::process::**;
60
+ attribute depth = 2;
61
+ @MemoIdentity { :>> shortDescription = "Internal steps of the Process action — step A through C."; }
62
+ attribute :>> viewKind = DiagramViewKind::actionflow;
63
+ attribute :>> diagramType = "afd";
64
+ ref :>> viewpointDefinition = actionFlowViewpoint;
65
+ }
66
+
67
+ view therapySessionFlow : MemoDiagramView {
68
+ expose sampleActionFlow::**;
69
+ expose laneA;
70
+ expose laneB;
71
+ attribute depth = 2;
72
+ @MemoIdentity { :>> shortDescription = "Dummy actions, typed item flows, successions, and a composite action for renderer development."; }
73
+ attribute :>> viewKind = DiagramViewKind::actionflow;
74
+ attribute :>> diagramType = "afd";
75
+ ref :>> viewpointDefinition = actionFlowViewpoint;
76
+ }
77
+
78
+ // ─── browser view ────────────────────────────────────────────────────
79
+
80
+ view operationalBrowserTree : MemoDiagramView {
81
+ expose controlSystem::**;
82
+ expose systemOperator;
83
+ expose maintenanceEngineer;
84
+ expose remoteMonitor;
85
+ expose startSystem::**;
86
+ expose runDiagnostics::**;
87
+ expose monitorStatus::**;
88
+ @MemoIdentity { :>> shortDescription = "Browser membership tree showing operational entities, actors, and use cases — demonstrates the browser view kind with mixed element types."; }
89
+ attribute :>> viewKind = DiagramViewKind::browser;
90
+ attribute :>> diagramType = "brw";
91
+ ref :>> viewpointDefinition = browserViewpoint;
92
+ part :>> selectionQuery {
93
+ attribute :>> includeElementKinds = ("OperationalEntity", "User", "UseCase");
94
+ attribute :>> includeRelationshipKinds = ("Composes", "ParticipatesIn");
95
+ }
96
+ }
97
+
98
+ // ─── context view ────────────────────────────────────────────────────
99
+
100
+ view systemContextDiagram : MemoDiagramView {
101
+ expose infusionSystem::**;
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;
107
+ expose biomedTech;
108
+ expose pharmacySystem;
109
+ expose homeContext;
110
+ attribute depth = 1;
111
+ @MemoIdentity { :>> shortDescription = "Operational system context: one black-box system boundary, its external people, peer systems, operating environment, and named boundary-crossing interactions."; }
112
+ attribute :>> viewKind = DiagramViewKind::general;
113
+ attribute :>> diagramType = "context";
114
+ ref :>> viewpointDefinition = contextDiagramViewpoint;
115
+ part :>> selectionQuery {
116
+ attribute :>> includeRelationshipKinds = ("connect", "flow", "AppliesInContext");
117
+ }
118
+ }
119
+
120
+ // ─── functional flow view ────────────────────────────────────────────
121
+
122
+ view medicationDeliveryFlow : MemoDiagramView {
123
+ expose fxDeliveryFlow::**;
124
+ expose fxPumpSystem::**;
125
+ attribute depth = 2;
126
+ @MemoIdentity { :>> shortDescription = "Component behaviour: functions in swimlanes per realising component, typed data/energy/material flows, a fork/join for concurrent occlusion monitoring, and a composite 'Deliver Medication' valve sub-flow (double-click to drill in)."; }
127
+ attribute :>> viewKind = DiagramViewKind::actionflow;
128
+ attribute :>> diagramType = "ffd";
129
+ ref :>> viewpointDefinition = actionFlowViewpoint;
130
+ }
131
+
132
+ // ─── grid view ───────────────────────────────────────────────────────
133
+
134
+ view failureModeGrid : MemoDiagramView {
135
+ expose fmMotorRunaway::**;
136
+ expose fmAirSensorSilent::**;
137
+ expose fmOcclusionDrift::**;
138
+ attribute depth = 2;
139
+ @MemoIdentity { :>> shortDescription = "Three FailureMode rows rendered as an FMEA worksheet table — one section, columns auto-derived from the attributes the rows carry."; }
140
+ attribute :>> viewKind = DiagramViewKind::grid;
141
+ attribute :>> diagramType = "fmea";
142
+ ref :>> viewpointDefinition = gridViewpoint;
143
+ part :>> selectionQuery {
144
+ attribute :>> includeElementKinds = ("FailureMode");
145
+ }
146
+ }
147
+
148
+ // ─── interconnection view ────────────────────────────────────────────
149
+
150
+ // Child IBD view — the heater assembly's own internal wiring. Its subject
151
+ // is `heaterAssembly`, so the parent IBD shows a "navigate to view" button
152
+ // on the Thermal Control Assembly part.
153
+ view heaterAssemblyIBD : MemoDiagramView {
154
+ expose coffeeMachine::heaterAssembly::**;
155
+ attribute depth = 2;
156
+ @MemoIdentity { :>> shortDescription = "Internal wiring of the Thermal Control Assembly — heating element and its status output."; }
157
+ attribute :>> viewKind = DiagramViewKind::interconnection;
158
+ attribute :>> diagramType = "ibd";
159
+ attribute :>> rendererProfile = "ibd";
160
+ ref :>> viewpointDefinition = ibdViewpoint;
161
+ part :>> selectionQuery {
162
+ attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
163
+ }
164
+ }
165
+
166
+ view heatingElementIBD : MemoDiagramView {
167
+ expose coffeeMachine::heaterAssembly::heatingElement::**;
168
+ attribute depth = 2;
169
+ @MemoIdentity { :>> shortDescription = "Third-level IBD — resistive coil and temperature sensor inside the heating element."; }
170
+ attribute :>> viewKind = DiagramViewKind::interconnection;
171
+ attribute :>> diagramType = "ibd";
172
+ attribute :>> rendererProfile = "ibd";
173
+ ref :>> viewpointDefinition = ibdViewpoint;
174
+ part :>> selectionQuery {
175
+ attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
176
+ }
177
+ }
178
+
179
+ view beverageMachineIBD : MemoDiagramView {
180
+ expose coffeeMachine::**;
181
+ expose waterSupply::**;
182
+ expose cup::**;
183
+ attribute depth = 2;
184
+ @MemoIdentity { :>> shortDescription = "Balanced internal architecture with readable boundary ports, nested service diagnostics, and external water and beverage interfaces."; }
185
+ attribute :>> viewKind = DiagramViewKind::interconnection;
186
+ attribute :>> diagramType = "ibd";
187
+ // The dedicated IBD renderer (Base -> Ibd class hierarchy): square
188
+ // wall ports, orange-in/green-out, solid grabbable nested-connector
189
+ // housings, orthogonal crossing-bridge routing, monochrome shading.
190
+ attribute :>> rendererProfile = "ibd";
191
+ ref :>> viewpointDefinition = ibdViewpoint;
192
+ part :>> selectionQuery {
193
+ attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
194
+ }
195
+ }
196
+
197
+ // ─── operational behaviour view ──────────────────────────────────────
198
+
199
+ view clinicalSetupActivity : MemoDiagramView {
200
+ expose opSetupFlow::**;
201
+ expose opCareSystem::**;
202
+ attribute depth = 2;
203
+ @MemoIdentity { :>> shortDescription = "Operational activity across clinical roles with concurrent preparation and a composite therapy step."; }
204
+ attribute :>> viewKind = DiagramViewKind::actionflow;
205
+ attribute :>> diagramType = "ofd";
206
+ ref :>> viewpointDefinition = actionFlowViewpoint;
207
+ }
208
+
209
+ // ─── package view ────────────────────────────────────────────────────
210
+
211
+ view threeLayerPackages : MemoDiagramView {
212
+ expose presentation::**;
213
+ expose domain::**;
214
+ expose infrastructure::**;
215
+ attribute depth = 2;
216
+ @MemoIdentity { :>> shortDescription = "Three-layer package overview — presentation, domain, infrastructure — rendered as a browser membership tree."; }
217
+ attribute :>> viewKind = DiagramViewKind::browser;
218
+ attribute :>> diagramType = "pkg";
219
+ ref :>> viewpointDefinition = browserViewpoint;
220
+ part :>> selectionQuery {
221
+ attribute :>> includeRelationshipKinds = ("Composes");
222
+ }
223
+ }
224
+
225
+ // ─── requirements view ───────────────────────────────────────────────
226
+
227
+ view needsToRequirements : MemoDiagramView {
228
+ expose needSafeTherapy::**;
229
+ expose needTimelyAlarms::**;
230
+ expose reqDoseLimit;
231
+ expose reqOcclusionAlarm;
232
+ expose reqAlarmLoudness;
233
+ attribute depth = 1;
234
+ @MemoIdentity { :>> shortDescription = "Stakeholder needs deriving into system requirements, wired by DerivesFrom trace edges."; }
235
+ attribute :>> viewKind = DiagramViewKind::general;
236
+ attribute :>> diagramType = "req";
237
+ ref :>> viewpointDefinition = requirementsDiagramViewpoint;
238
+ part :>> selectionQuery {
239
+ attribute :>> includeRelationshipKinds = ("DerivesFrom");
240
+ }
241
+ }
242
+
243
+ // ─── sequence view ───────────────────────────────────────────────────
244
+
245
+ view startInfusionSequence : MemoDiagramView {
246
+ expose startInfusion::**;
247
+ expose memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_sequence_view::clinician::**;
248
+ expose pumpController::**;
249
+ expose pumpMechanism::**;
250
+ expose monitorLoop::**;
251
+ expose errorHandling::**;
252
+ attribute depth = 2;
253
+ @MemoIdentity { :>> shortDescription = "Start-infusion sequence with combined fragments — loop for sensor monitoring and alt for error handling."; }
254
+ attribute :>> viewKind = DiagramViewKind::sequence;
255
+ attribute :>> diagramType = "seq";
256
+ ref :>> viewpointDefinition = sequenceViewpoint;
257
+ part :>> selectionQuery {
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");
263
+ }
264
+ }
265
+
266
+ // ─── standard activity view ──────────────────────────────────────────
267
+
268
+ view orderFulfillmentActivity : MemoDiagramView {
269
+ expose FulfillOrder::**;
270
+ attribute depth = 2;
271
+ @MemoIdentity { :>> shortDescription = "Order fulfilment — accept, validate, decide, fork into parallel shipment and invoice, join, notify, send receipt, and terminate."; }
272
+ attribute :>> viewKind = DiagramViewKind::actionflow;
273
+ attribute :>> diagramType = "afd";
274
+ ref :>> viewpointDefinition = actionFlowViewpoint;
275
+ }
276
+
277
+ // ─── state transition view ───────────────────────────────────────────
278
+
279
+ view pumpModeStateMachine : MemoDiagramView {
280
+ expose pumpModes::**;
281
+ attribute depth = 2;
282
+ @MemoIdentity { :>> shortDescription = "A pump-mode state machine — Idle, Infusing, Paused, Alarm — where Infusing is a composite state nesting Priming, Delivering and Holding."; }
283
+ attribute :>> viewKind = DiagramViewKind::statetransition;
284
+ attribute :>> diagramType = "stm";
285
+ ref :>> viewpointDefinition = stateMachineViewpoint;
286
+ part :>> selectionQuery {
287
+ attribute :>> includeElementKinds = ("StateMachine", "MemoState");
288
+ }
289
+ }
290
+
291
+ view infusingSubStates : MemoDiagramView {
292
+ expose pumpModes::infusing::**;
293
+ attribute depth = 2;
294
+ @MemoIdentity { :>> shortDescription = "Sub-states of the Infusing composite state — Priming, Delivering, and Holding with their internal transitions."; }
295
+ attribute :>> viewKind = DiagramViewKind::statetransition;
296
+ attribute :>> diagramType = "stm";
297
+ ref :>> viewpointDefinition = stateMachineViewpoint;
298
+ part :>> selectionQuery {
299
+ attribute :>> includeElementKinds = ("MemoState");
300
+ }
301
+ }
302
+
303
+ // ─── tree view ───────────────────────────────────────────────────────
304
+
305
+ view blockDecomposition : MemoDiagramView {
306
+ expose rootA::**;
307
+ attribute depth = 2;
308
+ @MemoIdentity { :>> shortDescription = "Block decomposition tree — hardware assemblies with varied branch depths."; }
309
+ attribute :>> viewKind = DiagramViewKind::general;
310
+ attribute :>> diagramType = "bdd";
311
+ ref :>> viewpointDefinition = treeViewpoint;
312
+ attribute :>> layoutHint = "tree";
313
+ attribute :>> styleHint = "expanded:rootA,rootB,branchA1,branchB1";
314
+ part :>> selectionQuery {
315
+ attribute :>> includeRelationshipKinds = ("Composes");
316
+ }
317
+ }
318
+
319
+ // ─── use case view ───────────────────────────────────────────────────
320
+
321
+ view deviceUseCases : MemoDiagramView {
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;
324
+ expose serviceTechnician;
325
+ expose nursingStaff;
326
+ expose reviewStatus;
327
+ expose configureTherapy;
328
+ expose maintainDevice;
329
+ expose documentTreatment;
330
+ expose validateTherapySettings;
331
+ @MemoIdentity { :>> shortDescription = "Actors outside a device boundary with include, extend, generalization, hierarchy-level, and orthogonal-routing presentation."; }
332
+ attribute :>> viewKind = DiagramViewKind::general;
333
+ attribute :>> diagramType = "ucd";
334
+ ref :>> viewpointDefinition = useCaseViewpoint;
335
+ part :>> selectionQuery {
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");
340
+ }
341
+ attribute :>> layoutHint = "usecase:level=all;edge=rounded";
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
+ }
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
+ }
@@ -1,4 +1,5 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_functional_flow_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  private import ScalarValues::*;
3
4
 
4
5
  private import memo_architecture_logical_structure::*;
@@ -52,45 +53,45 @@ package diagram_samples {
52
53
  // Component hierarchy used by the Level control:
53
54
  // L1 system → L2 subsystems → L3 allocated components.
54
55
  part fxPumpSystem : LogicalComponent {
55
- attribute :>> name = "Infusion Pump System";
56
+ @MemoIdentity { :>> label = "Infusion Pump System"; }
56
57
  part fxSensingSubsystem : LogicalComponent {
57
- attribute :>> name = "Sensing Subsystem";
58
- part fxSensor : LogicalComponent { attribute :>> name = "Sensor Subsystem"; }
58
+ @MemoIdentity { :>> label = "Sensing Subsystem"; }
59
+ part fxSensor : LogicalComponent {@MemoIdentity { :>> label = "Sensor Subsystem"; } }
59
60
  }
60
61
  part fxControlSubsystem : LogicalComponent {
61
- attribute :>> name = "Control Subsystem";
62
- part fxController : LogicalComponent { attribute :>> name = "Infusion Controller"; }
62
+ @MemoIdentity { :>> label = "Control Subsystem"; }
63
+ part fxController : LogicalComponent {@MemoIdentity { :>> label = "Infusion Controller"; } }
63
64
  }
64
65
  part fxDeliverySubsystem : LogicalComponent {
65
- attribute :>> name = "Delivery Subsystem";
66
- part fxActuator : LogicalComponent { attribute :>> name = "Pump Actuator"; }
66
+ @MemoIdentity { :>> label = "Delivery Subsystem"; }
67
+ part fxActuator : LogicalComponent {@MemoIdentity { :>> label = "Pump Actuator"; } }
67
68
  }
68
69
  part fxSafetySubsystem : LogicalComponent {
69
- attribute :>> name = "Safety Subsystem";
70
- part fxSafety : LogicalComponent { attribute :>> name = "Safety Monitor"; }
70
+ @MemoIdentity { :>> label = "Safety Subsystem"; }
71
+ part fxSafety : LogicalComponent {@MemoIdentity { :>> label = "Safety Monitor"; } }
71
72
  }
72
73
  }
73
74
 
74
75
  action fxDeliveryFlow : SystemFunction {
75
- action fxAcquire : FxAcquire { attribute :>> name = "Acquire Sensor Data"; }
76
- 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"; } }
77
78
 
78
79
  // Split: enforce/drive/deliver runs concurrently with occlusion monitoring
79
80
  fork fxForkDeliver;
80
- action fxEnforce : FxEnforce { attribute :>> name = "Enforce Dose Limits"; }
81
- action fxDrive : FxDrive { attribute :>> name = "Drive Pump Motor"; }
82
- action fxMonitor : FxMonitor { attribute :>> name = "Monitor Occlusion"; }
83
- 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"; } }
84
85
  join fxJoinDeliver;
85
86
 
86
87
  // Composite function — valve sub-flow (drill-in)
87
88
  action fxDeliver : FxDeliverMedication {
88
- attribute :>> name = "Deliver Medication";
89
- action fxOpenValve : SystemFunction { attribute :>> name = "Open Valve"; }
90
- action fxHoldDose : SystemFunction { attribute :>> name = "Hold Metered Dose"; }
91
- 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; }
92
93
 
93
- flow of FxMedicationFluid from fxDeliveryFlow.fxDeliver.fxHoldDose to fxCloseValve;
94
+ flow fxHoldDoseToFxCloseValve of FxMedicationFluid from fxHoldDose.fluid to fxCloseValve.fluid;
94
95
 
95
96
  first start then fxOpenValve;
96
97
  first fxOpenValve then fxHoldDose;
@@ -98,12 +99,12 @@ package diagram_samples {
98
99
  first fxCloseValve then done;
99
100
  }
100
101
 
101
- action fxLog : SystemFunction { attribute :>> name = "Log Delivery"; }
102
+ action fxLog : SystemFunction {@MemoIdentity { :>> label = "Log Delivery"; } }
102
103
 
103
- flow of FxSensorReading from fxAcquire.reading to fxCompute.reading;
104
- flow of FxRateCommand from fxEnforce.safeCommand to fxDrive.command;
105
- flow of FxMotorEnergy from fxDrive.energy to fxDeliver.energy;
106
- 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;
107
108
 
108
109
  first start then fxAcquire;
109
110
  first fxAcquire then fxCompute;
@@ -131,14 +132,4 @@ package diagram_samples {
131
132
  allocate fxDeliveryFlow.fxDeliver.fxOpenValve to fxPumpSystem.fxDeliverySubsystem.fxActuator;
132
133
  allocate fxDeliveryFlow.fxDeliver.fxHoldDose to fxPumpSystem.fxDeliverySubsystem.fxActuator;
133
134
  allocate fxDeliveryFlow.fxDeliver.fxCloseValve to fxPumpSystem.fxDeliverySubsystem.fxActuator;
134
-
135
- view medicationDeliveryFlow : MemoDiagramView {
136
- expose fxDeliveryFlow::**;
137
- expose fxPumpSystem::**;
138
- attribute depth = 2;
139
- @MemoIdentity { :>> shortDescription = "Component behaviour: functions in swimlanes per realising component, typed data/energy/material flows, a fork/join for concurrent occlusion monitoring, and a composite 'Deliver Medication' valve sub-flow (double-click to drill in)."; }
140
- attribute :>> viewKind = DiagramViewKind::actionflow;
141
- attribute :>> diagramType = "ffd";
142
- ref :>> viewpointDefinition = actionFlowViewpoint;
143
- }
144
135
  }
@@ -1,4 +1,5 @@
1
- package diagram_samples {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_grid_view {
2
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
2
3
  // Grid sample (grid view kind, `fmea` diagram type). The grid template groups
3
4
  // rows by kind and derives columns from whichever attributes the rows
4
5
  // actually carry — no fixed schema, so three FailureMode rows render as one
@@ -14,8 +15,8 @@ package diagram_samples {
14
15
  private import memo_core_common::*;
15
16
  private import memo_core_common::MemoIdentity;
16
17
 
17
- part fmMotorRunaway : FailureMode {
18
- attribute :>> name = "PumpMotorRunaway";
18
+ item fmMotorRunaway : FailureMode {
19
+ @MemoIdentity { :>> label = "PumpMotorRunaway"; }
19
20
  attribute :>> failureModeKind = FailureModeKind::unintendedFunction;
20
21
  attribute :>> effect = "Excess drug delivered beyond the prescribed rate.";
21
22
  attribute :>> severityRating = 1;
@@ -25,8 +26,8 @@ package diagram_samples {
25
26
  attribute :>> rpn = 6;
26
27
  attribute :>> criticality = CriticalityKind::catastrophic;
27
28
  }
28
- part fmAirSensorSilent : FailureMode {
29
- attribute :>> name = "AirSensorFailsSilent";
29
+ item fmAirSensorSilent : FailureMode {
30
+ @MemoIdentity { :>> label = "AirSensorFailsSilent"; }
30
31
  attribute :>> failureModeKind = FailureModeKind::lossOfFunction;
31
32
  attribute :>> effect = "Air embolism reaches the patient undetected.";
32
33
  attribute :>> severityRating = 1;
@@ -36,8 +37,8 @@ package diagram_samples {
36
37
  attribute :>> rpn = 12;
37
38
  attribute :>> criticality = CriticalityKind::catastrophic;
38
39
  }
39
- part fmOcclusionDrift : FailureMode {
40
- attribute :>> name = "OcclusionSensorDrift";
40
+ item fmOcclusionDrift : FailureMode {
41
+ @MemoIdentity { :>> label = "OcclusionSensorDrift"; }
41
42
  attribute :>> failureModeKind = FailureModeKind::degradedFunction;
42
43
  attribute :>> effect = "Occlusion is detected late, interrupting therapy.";
43
44
  attribute :>> severityRating = 7;
@@ -47,18 +48,4 @@ package diagram_samples {
47
48
  attribute :>> rpn = 112;
48
49
  attribute :>> criticality = CriticalityKind::high;
49
50
  }
50
-
51
- view failureModeGrid : MemoDiagramView {
52
- expose fmMotorRunaway::**;
53
- expose fmAirSensorSilent::**;
54
- expose fmOcclusionDrift::**;
55
- attribute depth = 2;
56
- @MemoIdentity { :>> shortDescription = "Three FailureMode rows rendered as an FMEA worksheet table — one section, columns auto-derived from the attributes the rows carry."; }
57
- attribute :>> viewKind = DiagramViewKind::grid;
58
- attribute :>> diagramType = "fmea";
59
- ref :>> viewpointDefinition = gridViewpoint;
60
- part :>> selectionQuery {
61
- attribute :>> includeElementKinds = ("FailureMode");
62
- }
63
- }
64
51
  }