@memoarchitect/ontology 0.13.2 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +5 -3
  2. package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
  3. package/examples/connected-patient-monitor/memo.package.yaml +3 -1
  4. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
  5. package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
  8. package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
  9. package/examples/functional-logical-physical/memo.identity.yaml +28 -0
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -1
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  12. package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
  13. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
  14. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
  15. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
  16. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
  17. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
  18. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
  19. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
  20. package/examples/gpca-pump/analysis/Samples/README.md +15 -9
  21. package/examples/gpca-pump/analysis/memo_model.py +243 -0
  22. package/examples/gpca-pump/memo.identity.yaml +521 -26
  23. package/examples/gpca-pump/memo.package.yaml +3 -1
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
  38. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
  47. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
  50. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
  54. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
  55. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
  56. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
  57. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
  58. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
  59. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
  60. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
  61. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  62. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
  64. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  65. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
  66. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
  67. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  68. package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
  69. package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
  70. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
  71. package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
  72. package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
  73. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
  74. package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
  75. package/examples/multidimensional-layers/memo.package.yaml +3 -1
  76. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
  77. package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
  78. package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
  79. package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
  80. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
  81. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
  83. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
  86. package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
  87. package/examples/reusable-instrument/memo.package.yaml +3 -1
  88. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
  89. package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
  90. package/examples/robot-cell-family/README.md +34 -0
  91. package/examples/robot-cell-family/memo.identity.yaml +142 -0
  92. package/examples/robot-cell-family/memo.package.yaml +7 -0
  93. package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
  94. package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
  95. package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
  96. package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
  97. package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
  98. package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
  99. package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
  100. package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
  101. package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
  102. package/examples/robot-platform/memo.package.yaml +3 -0
  103. package/examples/robot-platform/model/platform.sysml +15 -0
  104. package/examples/ros-mobile-robot/README.md +5 -4
  105. package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
  106. package/examples/ros-mobile-robot/memo.package.yaml +3 -1
  107. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
  108. package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
  109. package/examples/software-only-medical-device/memo.package.yaml +3 -1
  110. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
  111. package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
  112. package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
  113. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
  114. package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
  115. package/examples/surgical-robot/memo.package.yaml +3 -1
  116. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
  117. package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
  118. package/examples/sysml-diagram-samples/README.md +1 -0
  119. package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
  120. package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
  137. package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
  138. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  139. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  140. package/examples/temperature-alarm/memo.package.yaml +3 -1
  141. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  142. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  143. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  144. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  145. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  146. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  147. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  148. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  152. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  154. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  155. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  159. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  160. package/extensions/README.md +65 -16
  161. package/extensions/aadl/memo.package.yaml +1 -1
  162. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  163. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  164. package/extensions/clinical/memo.package.yaml +1 -1
  165. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  166. package/extensions/cloud/memo.package.yaml +1 -1
  167. package/extensions/container/memo.package.yaml +1 -1
  168. package/extensions/messaging/memo.package.yaml +1 -1
  169. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  170. package/extensions/ros/memo.package.yaml +1 -1
  171. package/extensions/ros/src/ros_extension.sysml +25 -24
  172. package/extensions/template/memo.package.yaml +1 -1
  173. package/extensions/template/model/extension.sysml +25 -0
  174. package/memo.manifest.yaml +1 -7
  175. package/methodologies/default/memo.package.yaml +1 -1
  176. package/methodologies/gpca/memo.package.yaml +1 -1
  177. package/ontology/memo.package.yaml +1 -1
  178. package/package.json +6 -4
  179. package/profile/memo.package.yaml +1 -1
  180. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  181. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  182. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  183. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  184. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  185. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  186. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  187. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  188. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  189. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  190. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  191. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  192. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  193. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  194. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  195. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  196. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  197. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  198. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  199. package/src/architecture/variability/memo_variability.sysml +87 -0
  200. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  201. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  202. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  203. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  204. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  205. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  206. package/src/artifacts/standards/iec_60812.sysml +4 -8
  207. package/src/artifacts/standards/iec_62304.sysml +607 -47
  208. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  209. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  210. package/src/artifacts/standards/iso_13485.sysml +12 -24
  211. package/src/artifacts/standards/iso_14971.sysml +118 -20
  212. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  213. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  214. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  216. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  220. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  221. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  222. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  223. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  224. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  225. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  226. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  227. package/src/core/common/memo_common.sysml +61 -68
  228. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  229. package/src/core/relationships/memo_relationships.sysml +17 -11
  230. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  231. package/src/core/semantics/semantics.sysml +58 -0
  232. package/src/core/terminology/terminology.sysml +7 -0
  233. package/src/memo_namespaces.sysml +6 -0
  234. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  235. package/src/methodology/core/memo_core.sysml +85 -29
  236. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  237. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  238. package/src/rules/closure/closure_rules.sysml +250 -4
  239. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  240. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  241. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  242. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  243. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  244. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  245. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  246. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
  247. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  248. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
  249. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  250. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  251. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  252. package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
  253. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  254. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  255. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  256. package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
  257. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  258. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  259. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  260. package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
  261. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  262. package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
  263. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  264. package/src/viewpoints/software/software_viewpoint.sysml +2 -3
  265. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  266. package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
  267. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  268. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  269. package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
  270. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  271. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  272. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  274. package/templates/default/memo.package.yaml +6 -1
  275. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  276. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  277. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  278. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  280. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  281. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  282. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  283. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  284. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  285. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  286. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  287. package/extensions/template/src/extension.sysml +0 -39
  288. package/templates/connected-device/memo.package.yaml +0 -13
  289. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  290. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  291. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  292. package/templates/connected-device/model/catalog/project.sysml +0 -30
  293. package/templates/connected-device/package.json +0 -8
  294. package/templates/connected-device/syside.toml +0 -13
  295. package/templates/infusion-pump/memo.package.yaml +0 -13
  296. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  297. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  298. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  299. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  300. package/templates/infusion-pump/package.json +0 -8
  301. package/templates/infusion-pump/syside.toml +0 -13
  302. package/templates/monitoring-device/memo.package.yaml +0 -13
  303. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  304. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  305. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  306. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  307. package/templates/monitoring-device/package.json +0 -8
  308. package/templates/monitoring-device/syside.toml +0 -13
  309. package/templates/samd/memo.package.yaml +0 -13
  310. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  311. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  312. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  313. package/templates/samd/model/catalog/project.sysml +0 -30
  314. package/templates/samd/package.json +0 -8
  315. package/templates/samd/syside.toml +0 -13
@@ -15,138 +15,138 @@ package memo_viewpoints_catalog {
15
15
 
16
16
  // ── Content and context ─────────────────────────────────────
17
17
  viewpoint vpModelContent : MemoViewpoint {
18
- @MemoIdentity { :>> providedId = "VP-CAT-001"; } attribute :>> name = "ModelContentViewpoint";
18
+ @MemoIdentity { :>> providedId = "VP-CAT-001"; :>> label = "ModelContentViewpoint"; }
19
19
  attribute :>> purpose = "Browse the model tree and package structure.";
20
20
  attribute :>> defaultViewKind = DiagramViewKind::browser;
21
21
  }
22
22
  viewpoint vpSystemContext : MemoViewpoint {
23
- @MemoIdentity { :>> providedId = "VP-CAT-002"; } attribute :>> name = "SystemContextViewpoint";
23
+ @MemoIdentity { :>> providedId = "VP-CAT-002"; :>> label = "SystemContextViewpoint"; }
24
24
  attribute :>> purpose = "System of interest, actors, external systems, and context exchanges.";
25
25
  attribute :>> defaultViewKind = DiagramViewKind::general;
26
26
  }
27
27
  // ── Operational world ───────────────────────────────────────
28
28
  viewpoint vpUseCase : MemoViewpoint {
29
- @MemoIdentity { :>> providedId = "VP-CAT-003"; } attribute :>> name = "UseCaseViewpoint";
29
+ @MemoIdentity { :>> providedId = "VP-CAT-003"; :>> label = "UseCaseViewpoint"; }
30
30
  attribute :>> purpose = "Use cases, initiating users, supporting actors, and motivating needs.";
31
31
  attribute :>> defaultViewKind = DiagramViewKind::general;
32
32
  }
33
33
  viewpoint vpClinicalWorkflow : MemoViewpoint {
34
- @MemoIdentity { :>> providedId = "VP-CAT-004"; } attribute :>> name = "ClinicalWorkflowViewpoint";
34
+ @MemoIdentity { :>> providedId = "VP-CAT-004"; :>> label = "ClinicalWorkflowViewpoint"; }
35
35
  attribute :>> purpose = "Workflow steps, decisions, parallel work, handoffs, and roles.";
36
36
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
37
37
  }
38
38
  viewpoint vpScenario : MemoViewpoint {
39
- @MemoIdentity { :>> providedId = "VP-CAT-005"; } attribute :>> name = "ScenarioViewpoint";
39
+ @MemoIdentity { :>> providedId = "VP-CAT-005"; :>> label = "ScenarioViewpoint"; }
40
40
  attribute :>> purpose = "Selected paths through workflows: variants, conditions, variation points.";
41
41
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
42
42
  }
43
43
  // ── Functional ──────────────────────────────────────────────
44
44
  viewpoint vpFunctionalArchitecture : MemoViewpoint {
45
- @MemoIdentity { :>> providedId = "VP-CAT-006"; } attribute :>> name = "FunctionalArchitectureViewpoint";
45
+ @MemoIdentity { :>> providedId = "VP-CAT-006"; :>> label = "FunctionalArchitectureViewpoint"; }
46
46
  attribute :>> purpose = "System functions, capabilities, and functional exchanges.";
47
47
  attribute :>> defaultViewKind = DiagramViewKind::general;
48
48
  }
49
49
  viewpoint vpFunctionalFlow : MemoViewpoint {
50
- @MemoIdentity { :>> providedId = "VP-CAT-007"; } attribute :>> name = "FunctionalFlowViewpoint";
50
+ @MemoIdentity { :>> providedId = "VP-CAT-007"; :>> label = "FunctionalFlowViewpoint"; }
51
51
  attribute :>> purpose = "Ordered functional flows and their steps.";
52
52
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
53
53
  }
54
54
  // ── Logical ─────────────────────────────────────────────────
55
55
  viewpoint vpLogicalArchitecture : MemoViewpoint {
56
- @MemoIdentity { :>> providedId = "VP-CAT-008"; } attribute :>> name = "LogicalArchitectureViewpoint";
56
+ @MemoIdentity { :>> providedId = "VP-CAT-008"; :>> label = "LogicalArchitectureViewpoint"; }
57
57
  attribute :>> purpose = "Logical components, channels, and allocations.";
58
58
  attribute :>> defaultViewKind = DiagramViewKind::general;
59
59
  }
60
60
  viewpoint vpSystemDecomposition : MemoViewpoint {
61
- @MemoIdentity { :>> providedId = "VP-CAT-009"; } attribute :>> name = "SystemDecompositionViewpoint";
61
+ @MemoIdentity { :>> providedId = "VP-CAT-009"; :>> label = "SystemDecompositionViewpoint"; }
62
62
  attribute :>> purpose = "Composition hierarchy of the system of interest.";
63
63
  attribute :>> defaultViewKind = DiagramViewKind::browser;
64
64
  }
65
65
  viewpoint vpInternalInterconnection : MemoViewpoint {
66
- @MemoIdentity { :>> providedId = "VP-CAT-010"; } attribute :>> name = "InternalInterconnectionViewpoint";
66
+ @MemoIdentity { :>> providedId = "VP-CAT-010"; :>> label = "InternalInterconnectionViewpoint"; }
67
67
  attribute :>> purpose = "Ports, connectors, and exchanges inside a component boundary.";
68
68
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
69
69
  }
70
70
  // ── Implementation ──────────────────────────────────────────
71
71
  viewpoint vpSoftwareModule : MemoViewpoint {
72
- @MemoIdentity { :>> providedId = "VP-CAT-011"; } attribute :>> name = "SoftwareModuleViewpoint";
72
+ @MemoIdentity { :>> providedId = "VP-CAT-011"; :>> label = "SoftwareModuleViewpoint"; }
73
73
  attribute :>> purpose = "IEC 62304 module structure: systems, items, units, SOUP.";
74
74
  attribute :>> defaultViewKind = DiagramViewKind::general;
75
75
  }
76
76
  viewpoint vpSoftwareComponents : MemoViewpoint {
77
- @MemoIdentity { :>> providedId = "VP-CAT-012"; } attribute :>> name = "SoftwareComponentViewpoint";
77
+ @MemoIdentity { :>> providedId = "VP-CAT-012"; :>> label = "SoftwareComponentViewpoint"; }
78
78
  attribute :>> purpose = "Runtime component-and-connector structure with concurrency and scheduling.";
79
79
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
80
80
  }
81
81
  viewpoint vpHardwareArchitecture : MemoViewpoint {
82
- @MemoIdentity { :>> providedId = "VP-CAT-013"; } attribute :>> name = "HardwareArchitectureViewpoint";
82
+ @MemoIdentity { :>> providedId = "VP-CAT-013"; :>> label = "HardwareArchitectureViewpoint"; }
83
83
  attribute :>> purpose = "Electronic/electrical structure and processing platform.";
84
84
  attribute :>> defaultViewKind = DiagramViewKind::general;
85
85
  }
86
86
  viewpoint vpPhysicalArchitecture : MemoViewpoint {
87
- @MemoIdentity { :>> providedId = "VP-CAT-014"; } attribute :>> name = "PhysicalArchitectureViewpoint";
87
+ @MemoIdentity { :>> providedId = "VP-CAT-014"; :>> label = "PhysicalArchitectureViewpoint"; }
88
88
  attribute :>> purpose = "Mechanical, fluidic, optical, and other physical realization.";
89
89
  attribute :>> defaultViewKind = DiagramViewKind::general;
90
90
  }
91
91
  viewpoint vpDeviceComposition : MemoViewpoint {
92
- @MemoIdentity { :>> providedId = "VP-CAT-015"; } attribute :>> name = "DeviceCompositionViewpoint";
92
+ @MemoIdentity { :>> providedId = "VP-CAT-015"; :>> label = "DeviceCompositionViewpoint"; }
93
93
  attribute :>> purpose = "Device definitions, instances, accessories, and consumables.";
94
94
  attribute :>> defaultViewKind = DiagramViewKind::browser;
95
95
  }
96
96
  viewpoint vpNetworkDeployment : MemoViewpoint {
97
- @MemoIdentity { :>> providedId = "VP-CAT-016"; } attribute :>> name = "NetworkDeploymentViewpoint";
97
+ @MemoIdentity { :>> providedId = "VP-CAT-016"; :>> label = "NetworkDeploymentViewpoint"; }
98
98
  attribute :>> purpose = "Deployment units on processing nodes and network topology.";
99
99
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
100
100
  }
101
101
  // ── Interaction and behavior ────────────────────────────────
102
102
  viewpoint vpUiFlow : MemoViewpoint {
103
- @MemoIdentity { :>> providedId = "VP-CAT-017"; } attribute :>> name = "UiFlowViewpoint";
103
+ @MemoIdentity { :>> providedId = "VP-CAT-017"; :>> label = "UiFlowViewpoint"; }
104
104
  attribute :>> purpose = "Interaction flows, UI states, and transitions.";
105
105
  attribute :>> defaultViewKind = DiagramViewKind::statetransition;
106
106
  }
107
107
  viewpoint vpStateMode : MemoViewpoint {
108
- @MemoIdentity { :>> providedId = "VP-CAT-018"; } attribute :>> name = "StateModeViewpoint";
108
+ @MemoIdentity { :>> providedId = "VP-CAT-018"; :>> label = "StateModeViewpoint"; }
109
109
  attribute :>> purpose = "System states, device modes, and transitions.";
110
110
  attribute :>> defaultViewKind = DiagramViewKind::statetransition;
111
111
  }
112
112
  viewpoint vpSequenceInteraction : MemoViewpoint {
113
- @MemoIdentity { :>> providedId = "VP-CAT-019"; } attribute :>> name = "SequenceInteractionViewpoint";
113
+ @MemoIdentity { :>> providedId = "VP-CAT-019"; :>> label = "SequenceInteractionViewpoint"; }
114
114
  attribute :>> purpose = "Ordered message exchanges between participants in a scenario.";
115
115
  attribute :>> defaultViewKind = DiagramViewKind::sequence;
116
116
  }
117
117
  // ── Assurance ───────────────────────────────────────────────
118
118
  viewpoint vpRequirementsTraceability : MemoViewpoint {
119
- @MemoIdentity { :>> providedId = "VP-CAT-020"; } attribute :>> name = "RequirementsTraceabilityViewpoint";
119
+ @MemoIdentity { :>> providedId = "VP-CAT-020"; :>> label = "RequirementsTraceabilityViewpoint"; }
120
120
  attribute :>> purpose = "Needs → requirements → architecture → verification trace matrix.";
121
121
  attribute :>> defaultViewKind = DiagramViewKind::grid;
122
122
  }
123
123
  viewpoint vpRiskChain : MemoViewpoint {
124
- @MemoIdentity { :>> providedId = "VP-CAT-021"; } attribute :>> name = "RiskChainViewpoint";
124
+ @MemoIdentity { :>> providedId = "VP-CAT-021"; :>> label = "RiskChainViewpoint"; }
125
125
  attribute :>> purpose = "ISO 14971 chain: hazard → hazardous situation → harm with controls.";
126
126
  attribute :>> defaultViewKind = DiagramViewKind::general;
127
127
  }
128
128
  viewpoint vpCybersecurity : MemoViewpoint {
129
- @MemoIdentity { :>> providedId = "VP-CAT-022"; } attribute :>> name = "CybersecurityViewpoint";
129
+ @MemoIdentity { :>> providedId = "VP-CAT-022"; :>> label = "CybersecurityViewpoint"; }
130
130
  attribute :>> purpose = "Assets, threats, trust boundaries, and security controls.";
131
131
  attribute :>> defaultViewKind = DiagramViewKind::general;
132
132
  }
133
133
  viewpoint vpHumanFactors : MemoViewpoint {
134
- @MemoIdentity { :>> providedId = "VP-CAT-023"; } attribute :>> name = "HumanFactorsViewpoint";
134
+ @MemoIdentity { :>> providedId = "VP-CAT-023"; :>> label = "HumanFactorsViewpoint"; }
135
135
  attribute :>> purpose = "Users, tasks, use errors, and hazard-related use scenarios.";
136
136
  attribute :>> defaultViewKind = DiagramViewKind::grid;
137
137
  }
138
138
  viewpoint vpVerificationCoverage : MemoViewpoint {
139
- @MemoIdentity { :>> providedId = "VP-CAT-024"; } attribute :>> name = "VerificationCoverageViewpoint";
139
+ @MemoIdentity { :>> providedId = "VP-CAT-024"; :>> label = "VerificationCoverageViewpoint"; }
140
140
  attribute :>> purpose = "Verification cases against requirements and functions.";
141
141
  attribute :>> defaultViewKind = DiagramViewKind::grid;
142
142
  }
143
143
  viewpoint vpValidationCoverage : MemoViewpoint {
144
- @MemoIdentity { :>> providedId = "VP-CAT-025"; } attribute :>> name = "ValidationCoverageViewpoint";
144
+ @MemoIdentity { :>> providedId = "VP-CAT-025"; :>> label = "ValidationCoverageViewpoint"; }
145
145
  attribute :>> purpose = "Validation cases against use cases and critical tasks.";
146
146
  attribute :>> defaultViewKind = DiagramViewKind::grid;
147
147
  }
148
148
  viewpoint vpEvidenceTraceability : MemoViewpoint {
149
- @MemoIdentity { :>> providedId = "VP-CAT-026"; } attribute :>> name = "EvidenceTraceabilityViewpoint";
149
+ @MemoIdentity { :>> providedId = "VP-CAT-026"; :>> label = "EvidenceTraceabilityViewpoint"; }
150
150
  attribute :>> purpose = "Evidence records back to the cases and elements they support.";
151
151
  attribute :>> defaultViewKind = DiagramViewKind::grid;
152
152
  }
@@ -155,14 +155,14 @@ package memo_viewpoints_catalog {
155
155
  // SoftwareComponents realizing a functional OperativeScenario. The viewpoint is the
156
156
  // reusable spec; the diagram of a specific model is the view.
157
157
  viewpoint vpSoftwareSequence : MemoViewpoint {
158
- @MemoIdentity { :>> providedId = "VP-CAT-027"; } attribute :>> name = "SoftwareSequenceViewpoint";
158
+ @MemoIdentity { :>> providedId = "VP-CAT-027"; :>> label = "SoftwareSequenceViewpoint"; }
159
159
  attribute :>> purpose = "Runtime message ordering between software components along a functional scenario.";
160
160
  attribute :>> defaultViewKind = DiagramViewKind::sequence;
161
161
  }
162
162
  // The first cataloged viewpoint to resolve to `geometry`: screen regions
163
163
  // carry authored RegionBounds, so a geometry view draws modelled facts.
164
164
  viewpoint vpUILayout : MemoViewpoint {
165
- @MemoIdentity { :>> providedId = "VP-CAT-028"; } attribute :>> name = "UILayoutViewpoint";
165
+ @MemoIdentity { :>> providedId = "VP-CAT-028"; :>> label = "UILayoutViewpoint"; }
166
166
  attribute :>> purpose = "Captured screens with their marked regions and the UI elements those regions present.";
167
167
  attribute :>> defaultViewKind = DiagramViewKind::geometry;
168
168
  }
@@ -8,10 +8,9 @@ package memo_viewpoints_clinical_clinical_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint clinicalViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-CLIN"; }
12
- attribute :>> name = "ClinicalViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-CLIN"; :>> label = "ClinicalViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows clinical context, users, use environment, and clinical evidence."; }
14
- attribute :>> description = "Default viewpoint derived from the context and assurance layers for clinical stakeholders — intended use, patient/clinician interaction, clinical evidence, and clinical safety claims.";
13
+ doc /* Default viewpoint derived from the context and assurance layers for clinical stakeholders — intended use, patient/clinician interaction, clinical evidence, and clinical safety claims. */
15
14
  attribute :>> purpose = "Communicate clinical use context and clinical evidence for the device.";
16
15
  ref :>> stakeholders = (clinicalEngineer, regulatoryEngineer);
17
16
  attribute :>> stage = WorkflowStageKind::context;
@@ -8,10 +8,9 @@ package memo_viewpoints_context_context_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint contextViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-CTX"; }
12
- attribute :>> name = "ContextViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-CTX"; :>> label = "ContextViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows actors, use context, and system boundary."; }
14
- attribute :>> description = "Default viewpoint derived from the context layer to communicate who interacts with the device, under which use conditions, and where trust or safety boundaries exist.";
13
+ doc /* Default viewpoint derived from the context layer to communicate who interacts with the device, under which use conditions, and where trust or safety boundaries exist. */
15
14
  attribute :>> purpose = "Communicate operational context and boundaries.";
16
15
  ref :>> stakeholders = (systemArchitect);
17
16
  attribute :>> stage = WorkflowStageKind::context;
@@ -10,8 +10,7 @@ package memo_viewpoints_context_views_system_context_view {
10
10
  view systemContextView : MemoDiagramView {
11
11
  expose memo_viewpoints_context_views_system_context_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-CTX-001"; }
14
- attribute :>> name = "SystemContextView";
13
+ @MemoIdentity { :>> providedId = "VIEW-CTX-001"; :>> label = "SystemContextView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Actors, use context, and system boundary."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::diagram);
17
16
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -19,9 +18,8 @@ package memo_viewpoints_context_views_system_context_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include actors, use contexts, and trust boundaries at the system boundary.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-CTX-001"; }
23
- attribute :>> name = "SystemContextQuery";
24
- attribute :>> includeElementKinds = ("Actor", "UseContext", "TrustBoundary");
21
+ @MemoIdentity { :>> providedId = "QRY-CTX-001"; :>> label = "SystemContextQuery"; }
22
+ attribute :>> includeElementKinds = ("OperationalParticipant", "UseContext", "TrustBoundary");
25
23
  attribute :>> includeLayers = ("context");
26
24
  attribute :>> rationaleText = "Auto-populate the system context view from the context layer.";
27
25
  }
@@ -8,10 +8,9 @@ package memo_viewpoints_cybersecurity_cybersecurity_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint cybersecurityViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-CYB"; }
12
- attribute :>> name = "CybersecurityViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-CYB"; :>> label = "CybersecurityViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, and mitigations."; }
14
- attribute :>> description = "Default viewpoint derived from the cybersecurity layer, using STRIDE-style threat categories by default while allowing safety and privacy impacts to be traced into the broader model.";
13
+ doc /* Default viewpoint derived from the cybersecurity layer, using STRIDE-style threat categories by default while allowing safety and privacy impacts to be traced into the broader model. */
15
14
  attribute :>> purpose = "Communicate cybersecurity design, threat analysis, and cyber risk posture.";
16
15
  ref :>> stakeholders = (securityEngineer);
17
16
  attribute :>> stage = WorkflowStageKind::risk;
@@ -0,0 +1,150 @@
1
+ // Where a view's boxes sit. A drawing's layout is presentation, and it is
2
+ // written in the view that owns it: `@MemoLayout` and its `@MemoLayout*`
3
+ // siblings annotate a `view` usage (their `annotatedElement` is never anything
4
+ // else), inside the view's own body. It used to live in a `.viewlayout`
5
+ // companion beside the file, which the compiler, review and the pinned build
6
+ // could not see.
7
+ //
8
+ // Flat on purpose. Each box, port, connector route and note is one metadata
9
+ // usage with primitive values, because a metadata body can redefine an
10
+ // attribute with a literal (MetadataBodyUsage, SysML-textual-bnf.kebnf:1694)
11
+ // but cannot construct a nested record, and a repeated record needs one usage
12
+ // per instance. Elements are named by their qualified id as a STRING, not a
13
+ // reference: a layout is not a model fact, so it must not become a
14
+ // relationship, and a reference to a renamed element would break the compile
15
+ // where a stale string only returns that box to automatic placement.
16
+ //
17
+ // The camera (zoom and pan) is not stored. It is one person's window onto the
18
+ // drawing, not the drawing, and recording it would put a diff in the model
19
+ // every time someone scrolled.
20
+ package memo_viewpoints_definitions_layout {
21
+ private import ScalarValues::*;
22
+
23
+ enum def MemoLayoutSide {
24
+ enum top;
25
+ enum bottom;
26
+ enum left;
27
+ enum right;
28
+ }
29
+
30
+ enum def MemoLayoutLineStyle {
31
+ enum solid;
32
+ enum dashed;
33
+ enum dotted;
34
+ }
35
+
36
+ enum def MemoLayoutAlign {
37
+ enum left;
38
+ enum center;
39
+ enum right;
40
+ }
41
+
42
+ enum def MemoLayoutVerticalAlign {
43
+ enum top;
44
+ enum middle;
45
+ enum bottom;
46
+ }
47
+
48
+ /** The view-wide choices. One per view, absent when the view keeps every default. */
49
+ metadata def MemoLayout {
50
+ :> annotatedElement : SysML::ViewUsage;
51
+ /** False once a person has placed a box by hand. */
52
+ attribute autoLayout : Boolean[0..1];
53
+ attribute grid : Real[0..1];
54
+ attribute snap : Boolean[0..1];
55
+ /**
56
+ * The positions were written in a coordinate frame that differs from the
57
+ * current one; `context-child-v1` says a nested box's position is
58
+ * relative to its parent, as the canvas stores it now.
59
+ */
60
+ attribute coordinateSpace : String[0..1];
61
+ /** The automatic-layout provider the person chose for this view, and the version of it that placed the boxes. */
62
+ attribute layoutProvider : String[0..1];
63
+ attribute layoutProviderVersion : String[0..1];
64
+ attribute layoutContractVersion : String[0..1];
65
+ attribute layoutPreset : String[0..1];
66
+ attribute layoutSeed : Real[0..1];
67
+ }
68
+
69
+ /**
70
+ * One box. `x` and `y` are in the frame of `parentElement` (the box it is
71
+ * nested in), or on the board when there is none; the frame is recorded
72
+ * because a box that changes nesting would otherwise be read in the wrong
73
+ * one and jump.
74
+ */
75
+ metadata def MemoLayoutNode {
76
+ :> annotatedElement : SysML::ViewUsage;
77
+ attribute element : String;
78
+ attribute parentElement : String[0..1];
79
+ attribute x : Real;
80
+ attribute y : Real;
81
+ attribute width : Real[0..1];
82
+ attribute height : Real[0..1];
83
+ attribute fillColor : String[0..1];
84
+ attribute borderColor : String[0..1];
85
+ attribute textColor : String[0..1];
86
+ attribute fontSize : Real[0..1];
87
+ attribute fontWeight : Real[0..1];
88
+ attribute textAlign : MemoLayoutAlign[0..1];
89
+ attribute verticalAlign : MemoLayoutVerticalAlign[0..1];
90
+ attribute opacity : Real[0..1];
91
+ }
92
+
93
+ /** Where a boundary port sits on its owner's box, relative to that box. */
94
+ metadata def MemoLayoutPort {
95
+ :> annotatedElement : SysML::ViewUsage;
96
+ attribute element : String;
97
+ attribute portName : String;
98
+ attribute x : Real;
99
+ attribute y : Real;
100
+ attribute side : MemoLayoutSide[0..1];
101
+ attribute size : Real[0..1];
102
+ }
103
+
104
+ /**
105
+ * Which wall a boundary port straddles. A constraint rather than a
106
+ * position: automatic layout still places the port, on that wall.
107
+ */
108
+ metadata def MemoLayoutPortWall {
109
+ :> annotatedElement : SysML::ViewUsage;
110
+ attribute portId : String;
111
+ attribute wall : MemoLayoutSide;
112
+ }
113
+
114
+ /**
115
+ * A connector's presentation. `route` is the hand-drawn bend points as
116
+ * x, y, x, y, … in board coordinates; the landings say where each end meets
117
+ * its box, as a wall and a fraction along it, and survive the box moving.
118
+ */
119
+ metadata def MemoLayoutEdge {
120
+ :> annotatedElement : SysML::ViewUsage;
121
+ attribute edge : String;
122
+ attribute color : String[0..1];
123
+ attribute strokeWidth : Real[0..1];
124
+ attribute labelVisible : Boolean[0..1];
125
+ attribute lineStyle : MemoLayoutLineStyle[0..1];
126
+ attribute route : Real[0..*] ordered;
127
+ attribute sourceElement : String[0..1];
128
+ attribute targetElement : String[0..1];
129
+ attribute sourcePortId : String[0..1];
130
+ attribute targetPortId : String[0..1];
131
+ attribute manualLanding : Boolean[0..1];
132
+ attribute sourceSide : MemoLayoutSide[0..1];
133
+ attribute sourceT : Real[0..1];
134
+ attribute targetSide : MemoLayoutSide[0..1];
135
+ attribute targetT : Real[0..1];
136
+ }
137
+
138
+ /** A note, text label or constraint box that belongs to the drawing and not to the model. */
139
+ metadata def MemoLayoutNote {
140
+ :> annotatedElement : SysML::ViewUsage;
141
+ attribute noteId : String;
142
+ attribute noteKind : String;
143
+ attribute x : Real;
144
+ attribute y : Real;
145
+ attribute width : Real[0..1];
146
+ attribute height : Real[0..1];
147
+ attribute text : String;
148
+ attribute fillColor : String[0..1];
149
+ }
150
+ }
@@ -20,8 +20,6 @@ package memo_viewpoints_definitions {
20
20
  // rather than a re-declared core: a viewpoint is native requirement-family,
21
21
  // not a MemoPart, and metadata crosses metaclasses where inheritance cannot.
22
22
  viewpoint def MemoViewpoint :> Views::ViewpointCheck {
23
- attribute name : String;
24
- attribute description : String;
25
23
  attribute status : ElementStatusKind;
26
24
  attribute lifecycleState : LifecycleStateKind;
27
25
  attribute realizationStage : RealizationStageKind[0..1];
@@ -134,8 +132,6 @@ package memo_viewpoints_definitions {
134
132
  // Identity comes from the `@MemoIdentity` metadata carrier, which
135
133
  // annotates any metaclass — so a view stays native SysML without
136
134
  // re-declaring the identification core the other bases used to copy.
137
- attribute name : String;
138
- attribute description : String;
139
135
  attribute status : ElementStatusKind;
140
136
  attribute lifecycleState : LifecycleStateKind;
141
137
  attribute realizationStage : RealizationStageKind[0..1];
@@ -8,10 +8,9 @@ package memo_viewpoints_functional_functional_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint functionalViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-FUNC"; }
12
- attribute :>> name = "FunctionalViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-FUNC"; :>> label = "FunctionalViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows system functions, their decomposition, and allocation."; }
14
- attribute :>> description = "Default viewpoint derived from the functions layer for what the system does, independent of how it is structured — function trees, function allocation, and behavior triggers.";
13
+ doc /* Default viewpoint derived from the functions layer for what the system does, independent of how it is structured — function trees, function allocation, and behavior triggers. */
15
14
  attribute :>> purpose = "Describe the system's functional decomposition and behavior.";
16
15
  ref :>> stakeholders = (systemArchitect);
17
16
  attribute :>> stage = WorkflowStageKind::architecture;
@@ -10,8 +10,7 @@ package memo_viewpoints_functional_views_function_allocation_view {
10
10
  view functionAllocationView : MemoDiagramView {
11
11
  expose memo_viewpoints_functional_views_function_allocation_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-FUNC-002"; }
14
- attribute :>> name = "FunctionAllocationView";
13
+ @MemoIdentity { :>> providedId = "VIEW-FUNC-002"; :>> label = "FunctionAllocationView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Functions allocated to logical components."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::diagram);
17
16
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -19,8 +18,7 @@ package memo_viewpoints_functional_views_function_allocation_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include functions and the logical components they are allocated to.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-FUNC-002"; }
23
- attribute :>> name = "FunctionAllocationQuery";
21
+ @MemoIdentity { :>> providedId = "QRY-FUNC-002"; :>> label = "FunctionAllocationQuery"; }
24
22
  attribute :>> includeElementKinds = ("SystemFunction", "ComponentFunction", "LogicalComponent");
25
23
  attribute :>> includeLayers = ("functions", "logical_structure");
26
24
  attribute :>> rationaleText = "Auto-populate function-to-component allocation from the functions and logical structure layers.";
@@ -10,8 +10,7 @@ package memo_viewpoints_functional_views_system_functional_tree_view {
10
10
  view systemFunctionalTreeView : MemoDiagramView {
11
11
  expose memo_viewpoints_functional_views_system_functional_tree_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-FUNC-001"; }
14
- attribute :>> name = "SystemFunctionalTreeView";
13
+ @MemoIdentity { :>> providedId = "VIEW-FUNC-001"; :>> label = "SystemFunctionalTreeView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Hierarchical decomposition of system functions."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::diagram);
17
16
  attribute :>> presentationKind = (PresentationKind::activityDiagram);
@@ -19,8 +18,7 @@ package memo_viewpoints_functional_views_system_functional_tree_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include functions and their decomposition into subfunctions.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-FUNC-001"; }
23
- attribute :>> name = "SystemFunctionalTreeQuery";
21
+ @MemoIdentity { :>> providedId = "QRY-FUNC-001"; :>> label = "SystemFunctionalTreeQuery"; }
24
22
  attribute :>> includeElementKinds = ("SystemFunction", "ComponentFunction");
25
23
  attribute :>> includeLayers = ("functions");
26
24
  attribute :>> rationaleText = "Auto-populate the functional tree from the functions layer.";
@@ -8,10 +8,9 @@ package memo_viewpoints_logical_logical_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint logicalArchitectureViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-LOG"; }
12
- attribute :>> name = "LogicalArchitectureViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-LOG"; :>> label = "LogicalArchitectureViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows logical decomposition and interfaces."; }
14
- attribute :>> description = "Default viewpoint derived from the logical architecture layer for subsystem structure, responsibilities, and major interactions, independent of physical realization.";
13
+ doc /* Default viewpoint derived from the logical architecture layer for subsystem structure, responsibilities, and major interactions, independent of physical realization. */
15
14
  attribute :>> purpose = "Describe the system's logical decomposition.";
16
15
  ref :>> stakeholders = (systemArchitect);
17
16
  attribute :>> stage = WorkflowStageKind::architecture;
@@ -10,8 +10,7 @@ package memo_viewpoints_logical_views_logical_architecture_view {
10
10
  view logicalArchitectureView : MemoDiagramView {
11
11
  expose memo_viewpoints_logical_views_logical_architecture_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-LOG-001"; }
14
- attribute :>> name = "LogicalArchitectureView";
13
+ @MemoIdentity { :>> providedId = "VIEW-LOG-001"; :>> label = "LogicalArchitectureView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Logical components and their interfaces."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::diagram);
17
16
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -19,8 +18,7 @@ package memo_viewpoints_logical_views_logical_architecture_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include logical components and the interfaces that connect them.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-LOG-001"; }
23
- attribute :>> name = "LogicalArchitectureQuery";
21
+ @MemoIdentity { :>> providedId = "QRY-LOG-001"; :>> label = "LogicalArchitectureQuery"; }
24
22
  attribute :>> includeElementKinds = ("LogicalComponent", "Interface");
25
23
  attribute :>> includeLayers = ("logical_structure", "interfaces");
26
24
  attribute :>> rationaleText = "Auto-populate the logical architecture view from the logical structure and interfaces layers.";
@@ -8,10 +8,9 @@ package memo_viewpoints_operational_operational_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint operationalViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-OPS"; }
12
- attribute :>> name = "OperationalViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-OPS"; :>> label = "OperationalViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows actors, use contexts, operational scenarios, and system capabilities."; }
14
- attribute :>> description = "Default viewpoint derived from the context, operational, and system layers for how actors use the device — operational scenarios, capabilities, and the functional chains that realize them.";
13
+ doc /* Default viewpoint derived from the context, operational, and system layers for how actors use the device — operational scenarios, capabilities, and the functional chains that realize them. */
15
14
  attribute :>> purpose = "Communicate how actors interact with the system and which capabilities they invoke.";
16
15
  ref :>> stakeholders = (projectLead, systemArchitect);
17
16
  attribute :>> stage = WorkflowStageKind::context;
@@ -10,8 +10,7 @@ package memo_viewpoints_operational_views_use_case_view {
10
10
  view useCaseView : MemoDiagramView {
11
11
  expose memo_viewpoints_operational_views_use_case_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-OPS-001"; }
14
- attribute :>> name = "UseCaseView";
13
+ @MemoIdentity { :>> providedId = "VIEW-OPS-001"; :>> label = "UseCaseView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Actors connected to the operational scenarios and capabilities they invoke."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::diagram);
17
16
  attribute :>> presentationKind = (PresentationKind::custom);
@@ -19,9 +18,8 @@ package memo_viewpoints_operational_views_use_case_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include actors, use contexts, and the operational scenarios they participate in.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-OPS-001"; }
23
- attribute :>> name = "UseCaseQuery";
24
- attribute :>> includeElementKinds = ("Actor", "UseContext", "OperativeScenario[scenarioKind=operative]");
21
+ @MemoIdentity { :>> providedId = "QRY-OPS-001"; :>> label = "UseCaseQuery"; }
22
+ attribute :>> includeElementKinds = ("OperationalParticipant", "UseContext", "OperativeScenario");
25
23
  attribute :>> includeLayers = ("context", "operational");
26
24
  attribute :>> rationaleText = "Auto-populate the use case view from the context and operational layers.";
27
25
  }
@@ -8,10 +8,9 @@ package memo_viewpoints_physical_physical_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint physicalViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-PHY"; }
12
- attribute :>> name = "PhysicalViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-PHY"; :>> label = "PhysicalViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows physical components, hardware structure, and their interconnections."; }
14
- attribute :>> description = "Default viewpoint derived from the physical and hardware structure layers for bill-of-materials, hardware decomposition, physical interfaces, and network/connectivity topology.";
13
+ doc /* Default viewpoint derived from the physical and hardware structure layers for bill-of-materials, hardware decomposition, physical interfaces, and network/connectivity topology. */
15
14
  attribute :>> purpose = "Describe the system's physical realization and interconnections.";
16
15
  ref :>> stakeholders = (hardwareEngineer);
17
16
  attribute :>> stage = WorkflowStageKind::architecture;
@@ -10,8 +10,7 @@ package memo_viewpoints_physical_views_network_topology_view {
10
10
  view networkTopologyView : MemoDiagramView {
11
11
  expose memo_viewpoints_physical_views_network_topology_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-PHY-002"; }
14
- attribute :>> name = "NetworkTopologyView";
13
+ @MemoIdentity { :>> providedId = "VIEW-PHY-002"; :>> label = "NetworkTopologyView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Physical interconnections and network ports between components."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::diagram);
17
16
  attribute :>> presentationKind = (PresentationKind::internalDiagram);
@@ -19,8 +18,7 @@ package memo_viewpoints_physical_views_network_topology_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include physical ports and connections that make up the device's network topology.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-PHY-002"; }
23
- attribute :>> name = "NetworkTopologyQuery";
21
+ @MemoIdentity { :>> providedId = "QRY-PHY-002"; :>> label = "NetworkTopologyQuery"; }
24
22
  attribute :>> includeElementKinds = ("PhysicalPort", "ProcessingNode");
25
23
  attribute :>> includeLayers = ("physical");
26
24
  attribute :>> rationaleText = "Auto-populate the network topology view from the physical interfaces layer.";
@@ -10,8 +10,7 @@ package memo_viewpoints_physical_views_physical_bom_view {
10
10
  view physicalBOMView : MemoDiagramView {
11
11
  expose memo_viewpoints_physical_views_physical_bom_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-PHY-001"; }
14
- attribute :>> name = "PhysicalBOMView";
13
+ @MemoIdentity { :>> providedId = "VIEW-PHY-001"; :>> label = "PhysicalBOMView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Physical and hardware components with their decomposition."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::diagram);
17
16
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -19,8 +18,7 @@ package memo_viewpoints_physical_views_physical_bom_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include physical and hardware components and their assembly structure.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-PHY-001"; }
23
- attribute :>> name = "PhysicalBOMQuery";
21
+ @MemoIdentity { :>> providedId = "QRY-PHY-001"; :>> label = "PhysicalBOMQuery"; }
24
22
  attribute :>> includeElementKinds = ("ProcessingNode", "HardwareAssembly");
25
23
  attribute :>> includeLayers = ("hardware_structure", "physical");
26
24
  attribute :>> rationaleText = "Auto-populate the physical BOM view from the hardware and physical layers.";