@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
@@ -8,17 +8,16 @@ package memo_viewpoints_risk_risk_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint riskViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-RISK"; }
12
- attribute :>> name = "RiskViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-RISK"; :>> label = "RiskViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows hazards, risks, controls, and assurance links."; }
14
- attribute :>> description = "Default viewpoint derived from the risk layer for ISO 14971-style reasoning across hazard, hazardous situation, harm, control, and verification evidence.";
13
+ doc /* Default viewpoint derived from the risk layer for ISO 14971-style reasoning across hazard, hazardous situation, harm, control, and verification evidence. */
15
14
  attribute :>> purpose = "Communicate safety risk chains and controls.";
16
- ref :>> stakeholders = (SafetyEngineer);
15
+ ref :>> stakeholders = (safetyEngineer);
17
16
  attribute :>> stage = WorkflowStageKind::risk;
18
17
  attribute :>> abstractionLevel = "analysis";
19
18
  attribute :>> outputKind = (ViewOutputKind::table);
20
19
  attribute :>> presentationKind = (PresentationKind::riskTable);
21
- ref :>> framedConcerns = (SafetyConcern, RegulatoryConcern);
20
+ ref :>> framedConcerns = (safetyConcern, regulatoryConcern);
22
21
  attribute :>> explorerLane = "assurance";
23
22
  attribute :>> explorerOrder = 2;
24
23
  attribute :>> userExtensible = true;
@@ -10,8 +10,7 @@ package memo_viewpoints_risk_views_risk_chain_view {
10
10
  view riskChainView : MemoDiagramView {
11
11
  expose memo_viewpoints_risk_views_risk_chain_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-RISK-001"; }
14
- attribute :>> name = "RiskChainView";
13
+ @MemoIdentity { :>> providedId = "VIEW-RISK-001"; :>> label = "RiskChainView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Hazards through harms with controls and verification."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::table);
17
16
  attribute :>> presentationKind = (PresentationKind::riskTable);
@@ -19,8 +18,7 @@ package memo_viewpoints_risk_views_risk_chain_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include the explicit ISO 14971 chain, risk controls, residual risks, benefits, and verification evidence.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-RISK-001"; }
23
- attribute :>> name = "RiskChainQuery";
21
+ @MemoIdentity { :>> providedId = "QRY-RISK-001"; :>> label = "RiskChainQuery"; }
24
22
  attribute :>> includeElementKinds = ("SafetyRelatedCharacteristic", "HazardCause", "Hazard", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation", "VerificationCase");
25
23
  attribute :>> includeLayers = ("risk", "assurance");
26
24
  attribute :>> includeConcerns = (ConcernKind::safety);
@@ -8,17 +8,16 @@ package memo_viewpoints_software_software_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint softwareViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-SW"; }
12
- attribute :>> name = "SoftwareViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-SW"; :>> label = "SoftwareViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows software systems, components, SOUP, and software interfaces."; }
14
- attribute :>> description = "Default viewpoint derived from the software structure layer for IEC 62304 software architecture description — software item decomposition, SOUP inventory, and software-to-software interfaces, distinct from system-level logical decomposition.";
13
+ doc /* Default viewpoint derived from the software structure layer for IEC 62304 software architecture description — software item decomposition, SOUP inventory, and software-to-software interfaces, distinct from system-level logical decomposition. */
15
14
  attribute :>> purpose = "Describe the software architecture for IEC 62304 design documentation.";
16
- ref :>> stakeholders = (SoftwareArchitect);
15
+ ref :>> stakeholders = (softwareArchitect);
17
16
  attribute :>> stage = WorkflowStageKind::architecture;
18
17
  attribute :>> abstractionLevel = "software";
19
18
  attribute :>> outputKind = (ViewOutputKind::diagram);
20
19
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
21
- ref :>> framedConcerns = (SafetyConcern, ReliabilityConcern);
20
+ ref :>> framedConcerns = (safetyConcern, reliabilityConcern);
22
21
  attribute :>> explorerLane = "architecture";
23
22
  attribute :>> explorerOrder = 4;
24
23
  attribute :>> userExtensible = true;
@@ -10,8 +10,7 @@ package memo_viewpoints_software_views_software_architecture_view {
10
10
  view softwareArchitectureView : MemoDiagramView {
11
11
  expose memo_viewpoints_software_views_software_architecture_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-SW-001"; }
14
- attribute :>> name = "SoftwareArchitectureView";
13
+ @MemoIdentity { :>> providedId = "VIEW-SW-001"; :>> label = "SoftwareArchitectureView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Software systems, components, and SOUP with their decomposition."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::diagram);
17
16
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -19,9 +18,8 @@ package memo_viewpoints_software_views_software_architecture_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include software systems, components, and SOUP components with their decomposition.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-SW-001"; }
23
- attribute :>> name = "SoftwareArchitectureQuery";
24
- attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "SoftwareModule[moduleKind=soup]");
21
+ @MemoIdentity { :>> providedId = "QRY-SW-001"; :>> label = "SoftwareArchitectureQuery"; }
22
+ attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule");
25
23
  attribute :>> includeLayers = ("software_structure");
26
24
  attribute :>> rationaleText = "Auto-populate the software architecture view from the software structure layer.";
27
25
  }
@@ -97,44 +97,37 @@ package memo_viewpoints_stakeholders_concerns {
97
97
 
98
98
  part def Availability :> MemoQualityAttribute {
99
99
  @MemoIdentity { :>> providedId = "QA-1"; }
100
- attribute :>> name = "Availability";
101
- ref :>> addressesConcerns = (SafetyConcern, ReliabilityConcern, ClinicalConcern);
100
+ ref :>> addressesConcerns = (safetyConcern, reliabilityConcern, clinicalConcern);
102
101
  attribute :>> measure = "Proportion of scheduled procedure time the function is delivered, and time to recover after a fault.";
103
102
  }
104
103
  part def Performance :> MemoQualityAttribute {
105
104
  @MemoIdentity { :>> providedId = "QA-2"; }
106
- attribute :>> name = "Performance";
107
- ref :>> addressesConcerns = (PerformanceConcern, ClinicalConcern);
105
+ ref :>> addressesConcerns = (performanceConcern, clinicalConcern);
108
106
  attribute :>> measure = "Latency and throughput under the arrival pattern the procedure produces.";
109
107
  }
110
108
  part def Security :> MemoQualityAttribute {
111
109
  @MemoIdentity { :>> providedId = "QA-3"; }
112
- attribute :>> name = "Security";
113
- ref :>> addressesConcerns = (CybersecurityConcern, PrivacyConcern, SafetyConcern);
110
+ ref :>> addressesConcerns = (cybersecurityConcern, privacyConcern, safetyConcern);
114
111
  attribute :>> measure = "Resistance to a stated threat, and time to detect and recover from a compromise.";
115
112
  }
116
113
  part def Modifiability :> MemoQualityAttribute {
117
114
  @MemoIdentity { :>> providedId = "QA-4"; }
118
- attribute :>> name = "Modifiability";
119
- ref :>> addressesConcerns = (RegulatoryConcern);
115
+ ref :>> addressesConcerns = (regulatoryConcern);
120
116
  attribute :>> measure = "Cost and blast radius of a stated change, including the re-verification it forces.";
121
117
  }
122
118
  part def Testability :> MemoQualityAttribute {
123
119
  @MemoIdentity { :>> providedId = "QA-5"; }
124
- attribute :>> name = "Testability";
125
- ref :>> addressesConcerns = (RegulatoryConcern, SafetyConcern);
120
+ ref :>> addressesConcerns = (regulatoryConcern, safetyConcern);
126
121
  attribute :>> measure = "Probability that a fault present is revealed by the next test, and the effort to observe it.";
127
122
  }
128
123
  part def Usability :> MemoQualityAttribute {
129
124
  @MemoIdentity { :>> providedId = "QA-6"; }
130
- attribute :>> name = "Usability";
131
- ref :>> addressesConcerns = (UsabilityConcern, SafetyConcern, ClinicalConcern);
125
+ ref :>> addressesConcerns = (usabilityConcern, safetyConcern, clinicalConcern);
132
126
  attribute :>> measure = "Task success and use-error rate for the intended user under use conditions (IEC 62366-1).";
133
127
  }
134
128
  part def Interoperability :> MemoQualityAttribute {
135
129
  @MemoIdentity { :>> providedId = "QA-7"; }
136
- attribute :>> name = "Interoperability";
137
- ref :>> addressesConcerns = (InteroperabilityConcern, ClinicalConcern);
130
+ ref :>> addressesConcerns = (interoperabilityConcern, clinicalConcern);
138
131
  attribute :>> measure = "Proportion of exchanges with a named partner system that are correctly understood.";
139
132
  }
140
133
 
@@ -146,47 +139,63 @@ package memo_viewpoints_stakeholders_concerns {
146
139
  abstract part def MemoStakeholder :> MemoPart;
147
140
 
148
141
  part def SystemArchitect :> MemoStakeholder {
149
- @MemoIdentity { :>> providedId = "STK-1"; }
150
- attribute :>> name = "System Architect";
142
+ @MemoIdentity { :>> providedId = "STK-1"; :>> label = "System Architect"; }
151
143
  }
152
144
  part def SoftwareArchitect :> MemoStakeholder {
153
- @MemoIdentity { :>> providedId = "STK-2"; }
154
- attribute :>> name = "Software Architect";
145
+ @MemoIdentity { :>> providedId = "STK-2"; :>> label = "Software Architect"; }
155
146
  }
156
147
  part def HardwareEngineer :> MemoStakeholder {
157
- @MemoIdentity { :>> providedId = "STK-3"; }
158
- attribute :>> name = "Hardware Engineer";
148
+ @MemoIdentity { :>> providedId = "STK-3"; :>> label = "Hardware Engineer"; }
159
149
  }
160
150
  part def SafetyEngineer :> MemoStakeholder {
161
- @MemoIdentity { :>> providedId = "STK-4"; }
162
- attribute :>> name = "Safety Engineer";
151
+ @MemoIdentity { :>> providedId = "STK-4"; :>> label = "Safety Engineer"; }
163
152
  }
164
153
  part def VerificationEngineer :> MemoStakeholder {
165
- @MemoIdentity { :>> providedId = "STK-5"; }
166
- attribute :>> name = "Verification Engineer";
154
+ @MemoIdentity { :>> providedId = "STK-5"; :>> label = "Verification Engineer"; }
167
155
  }
168
156
  part def RegulatoryEngineer :> MemoStakeholder {
169
- @MemoIdentity { :>> providedId = "STK-6"; }
170
- attribute :>> name = "Regulatory Engineer";
157
+ @MemoIdentity { :>> providedId = "STK-6"; :>> label = "Regulatory Engineer"; }
171
158
  }
172
159
  part def ProjectLead :> MemoStakeholder {
173
- @MemoIdentity { :>> providedId = "STK-7"; }
174
- attribute :>> name = "Project Lead";
160
+ @MemoIdentity { :>> providedId = "STK-7"; :>> label = "Project Lead"; }
175
161
  }
176
162
  part def SecurityEngineer :> MemoStakeholder {
177
- @MemoIdentity { :>> providedId = "STK-8"; }
178
- attribute :>> name = "Security Engineer";
163
+ @MemoIdentity { :>> providedId = "STK-8"; :>> label = "Security Engineer"; }
179
164
  }
180
165
  part def PrivacyEngineer :> MemoStakeholder {
181
- @MemoIdentity { :>> providedId = "STK-9"; }
182
- attribute :>> name = "Privacy Engineer";
166
+ @MemoIdentity { :>> providedId = "STK-9"; :>> label = "Privacy Engineer"; }
183
167
  }
184
168
  part def ClinicalEngineer :> MemoStakeholder {
185
- @MemoIdentity { :>> providedId = "STK-10"; }
186
- attribute :>> name = "Clinical Engineer";
169
+ @MemoIdentity { :>> providedId = "STK-10"; :>> label = "Clinical Engineer"; }
187
170
  }
188
171
  part def UsabilityEngineer :> MemoStakeholder {
189
- @MemoIdentity { :>> providedId = "STK-11"; }
190
- attribute :>> name = "Usability Engineer";
172
+ @MemoIdentity { :>> providedId = "STK-11"; :>> label = "Usability Engineer"; }
191
173
  }
174
+
175
+ // ─── The catalog, as usages ─────────────────────────────────────────
176
+ //
177
+ // A viewpoint's `stakeholders` and `framedConcerns`, and a quality
178
+ // attribute's `addressesConcerns`, are features. What a feature is bound to
179
+ // has to be a feature as well, not a definition, so each concern and each
180
+ // stakeholder above has exactly one usage for those bindings to name.
181
+ concern safetyConcern : SafetyConcern;
182
+ concern usabilityConcern : UsabilityConcern;
183
+ concern cybersecurityConcern : CybersecurityConcern;
184
+ concern performanceConcern : PerformanceConcern;
185
+ concern interoperabilityConcern : InteroperabilityConcern;
186
+ concern reliabilityConcern : ReliabilityConcern;
187
+ concern privacyConcern : PrivacyConcern;
188
+ concern regulatoryConcern : RegulatoryConcern;
189
+ concern clinicalConcern : ClinicalConcern;
190
+ part systemArchitect : SystemArchitect;
191
+ part softwareArchitect : SoftwareArchitect;
192
+ part hardwareEngineer : HardwareEngineer;
193
+ part safetyEngineer : SafetyEngineer;
194
+ part verificationEngineer : VerificationEngineer;
195
+ part regulatoryEngineer : RegulatoryEngineer;
196
+ part projectLead : ProjectLead;
197
+ part securityEngineer : SecurityEngineer;
198
+ part privacyEngineer : PrivacyEngineer;
199
+ part clinicalEngineer : ClinicalEngineer;
200
+ part usabilityEngineer : UsabilityEngineer;
192
201
  }
@@ -8,17 +8,16 @@ package memo_viewpoints_ui_layout_ui_layout_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint uiLayoutViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-UIL"; }
12
- attribute :>> name = "UILayoutViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-UIL"; :>> label = "UILayoutViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows screen captures with the UI element tree laid out over them."; }
14
- attribute :>> description = "Frames the user interface spatially: a captured rendering of a screen, and the UIElement tree laid out over it by each element's bounds. Supports IEC 62366-1 use-related design review and the UI description in the software design specification, by making 'which control is this, and what does it do' answerable from the picture. There is one tree, not two — the elements carrying the geometry are the same elements carrying the requirements, functions, use errors, and risk controls.";
13
+ doc /* Frames the user interface spatially: a captured rendering of a screen, and the UIElement tree laid out over it by each element's bounds. Supports IEC 62366-1 use-related design review and the UI description in the software design specification, by making 'which control is this, and what does it do' answerable from the picture. There is one tree, not two — the elements carrying the geometry are the same elements carrying the requirements, functions, use errors, and risk controls. */
15
14
  attribute :>> purpose = "Review the interface as the user sees it, with every functional area backed by a design record.";
16
- ref :>> stakeholders = (UsabilityEngineer, SoftwareArchitect, SafetyEngineer);
15
+ ref :>> stakeholders = (usabilityEngineer, softwareArchitect, safetyEngineer);
17
16
  attribute :>> stage = WorkflowStageKind::architecture;
18
17
  attribute :>> abstractionLevel = "implementation";
19
18
  attribute :>> outputKind = (ViewOutputKind::diagram, ViewOutputKind::documentSection);
20
19
  attribute :>> presentationKind = (PresentationKind::screenLayout);
21
- ref :>> framedConcerns = (UsabilityConcern, SafetyConcern);
20
+ ref :>> framedConcerns = (usabilityConcern, safetyConcern);
22
21
  attribute :>> explorerLane = "architecture";
23
22
  attribute :>> explorerOrder = 4;
24
23
  attribute :>> defaultViewKind = DiagramViewKind::geometry;
@@ -15,7 +15,7 @@ package memo_viewpoints_ui_layout_views_screen_layout_view {
15
15
  view def MemoScreenLayoutView :> MemoDiagramView {
16
16
  attribute :>> viewKind = DiagramViewKind::geometry;
17
17
  @MemoIdentity { :>> shortDescription = "Screen capture overlaid with its UI element tree."; }
18
- attribute :>> description = "Renders one ScreenCapture as the backdrop and each UIElement composed under the captured screen as a boundary box at its authored bounds, coloured by boundaryColor. Bounds are relative to the parent element, so the renderer accumulates transforms down the Composes tree. Selecting an element isolates it: siblings recede rather than compete. Following an element's NavigatesTo edge swaps the backdrop to the target screen's capture, so the view walks the interface the way the user does.";
18
+ doc /* Renders one ScreenCapture as the backdrop and each UIElement composed under the captured screen as a boundary box at its authored bounds, coloured by boundaryColor. Bounds are relative to the parent element, so the renderer accumulates transforms down the Composes tree. Selecting an element isolates it: siblings recede rather than compete. Following an element's NavigatesTo edge swaps the backdrop to the target screen's capture, so the view walks the interface the way the user does. */
19
19
  attribute :>> outputKind = (ViewOutputKind::diagram);
20
20
  attribute :>> presentationKind = (PresentationKind::screenLayout);
21
21
  attribute :>> layoutHint = "authored";
@@ -8,17 +8,16 @@ package memo_viewpoints_usability_usability_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint usabilityViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-USE"; }
12
- attribute :>> name = "UsabilityViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-USE"; :>> label = "UsabilityViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows use contexts, actors, use errors, and usability requirements."; }
14
- attribute :>> description = "Default viewpoint derived from the context and requirements layers for IEC 62366-1 usability engineering — actors, use contexts, identified use errors, and requirements tagged with the usability concern. Reuses existing context-layer elements (Actor, UseContext, UseError) rather than a separate usability layer.";
13
+ doc /* Default viewpoint derived from the context and requirements layers for IEC 62366-1 usability engineering — actors, use contexts, identified use errors, and requirements tagged with the usability concern. Reuses existing context-layer elements (Actor, UseContext, UseError) rather than a separate usability layer. */
15
14
  attribute :>> purpose = "Communicate use-related hazards and usability requirements for the device.";
16
- ref :>> stakeholders = (UsabilityEngineer, SafetyEngineer);
15
+ ref :>> stakeholders = (usabilityEngineer, safetyEngineer);
17
16
  attribute :>> stage = WorkflowStageKind::requirements;
18
17
  attribute :>> abstractionLevel = "usability";
19
18
  attribute :>> outputKind = (ViewOutputKind::documentSection);
20
19
  attribute :>> presentationKind = (PresentationKind::narrativeSection);
21
- ref :>> framedConcerns = (UsabilityConcern, SafetyConcern);
20
+ ref :>> framedConcerns = (usabilityConcern, safetyConcern);
22
21
  attribute :>> explorerLane = "assurance";
23
22
  attribute :>> explorerOrder = 4;
24
23
  attribute :>> userExtensible = true;
@@ -8,17 +8,16 @@ package memo_viewpoints_verification_verification_viewpoint {
8
8
  private import memo_core_common::*;
9
9
  private import memo_core_common::MemoIdentity;
10
10
  viewpoint verificationViewpoint : MemoViewpoint {
11
- @MemoIdentity { :>> providedId = "VP-VER"; }
12
- attribute :>> name = "VerificationViewpoint";
11
+ @MemoIdentity { :>> providedId = "VP-VER"; :>> label = "VerificationViewpoint"; }
13
12
  @MemoIdentity { :>> shortDescription = "Shows verification cases, validation cases, and the evidence they produce, traced to requirements."; }
14
- attribute :>> description = "Default viewpoint derived from the requirements and assurance layers for V&V coverage — which requirements are verified/validated, by which case, and what evidence was produced, supporting ISO 13485 §7.3.6/§7.3.7 and IEC 62304 §5.7/§5.8.";
13
+ doc /* Default viewpoint derived from the requirements and assurance layers for V&V coverage — which requirements are verified/validated, by which case, and what evidence was produced, supporting ISO 13485 §7.3.6/§7.3.7 and IEC 62304 §5.7/§5.8. */
15
14
  attribute :>> purpose = "Communicate verification and validation coverage against requirements.";
16
- ref :>> stakeholders = (VerificationEngineer);
15
+ ref :>> stakeholders = (verificationEngineer);
17
16
  attribute :>> stage = WorkflowStageKind::verificationStage;
18
17
  attribute :>> abstractionLevel = "verification";
19
18
  attribute :>> outputKind = (ViewOutputKind::matrix);
20
19
  attribute :>> presentationKind = (PresentationKind::traceMatrix);
21
- ref :>> framedConcerns = (SafetyConcern, RegulatoryConcern);
20
+ ref :>> framedConcerns = (safetyConcern, regulatoryConcern);
22
21
  attribute :>> explorerLane = "assurance";
23
22
  attribute :>> explorerOrder = 5;
24
23
  attribute :>> userExtensible = true;
@@ -10,8 +10,7 @@ package memo_viewpoints_verification_views_verification_coverage_view {
10
10
  view verificationCoverageView : MemoDiagramView {
11
11
  expose memo_viewpoints_verification_views_verification_coverage_view::*;
12
12
  attribute depth = 2;
13
- @MemoIdentity { :>> providedId = "VIEW-VER-001"; }
14
- attribute :>> name = "VerificationCoverageView";
13
+ @MemoIdentity { :>> providedId = "VIEW-VER-001"; :>> label = "VerificationCoverageView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Requirements with their verification cases, validation cases, and evidence."; }
16
15
  attribute :>> outputKind = (ViewOutputKind::matrix);
17
16
  attribute :>> presentationKind = (PresentationKind::traceMatrix);
@@ -19,8 +18,7 @@ package memo_viewpoints_verification_views_verification_coverage_view {
19
18
  attribute :>> autoPopulate = true;
20
19
  attribute :>> queryDescription = "Include requirements and their linked verification/validation cases and evidence.";
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-VER-001"; }
23
- attribute :>> name = "VerificationCoverageQuery";
21
+ @MemoIdentity { :>> providedId = "QRY-VER-001"; :>> label = "VerificationCoverageQuery"; }
24
22
  attribute :>> includeElementKinds = ("Requirement", "VerificationCase", "ValidationCase", "MemoEvidence");
25
23
  attribute :>> includeLayers = ("requirements", "assurance");
26
24
  attribute :>> rationaleText = "Auto-populate V&V coverage from the requirements and assurance layers.";
@@ -7,7 +7,12 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '{{name}}'
10
- entrypoint: model/catalog/project.sysml
10
+ entrypoint: model/methodology/project.sysml
11
11
  include: [model]
12
12
  version: 0.1.0
13
13
  description: MEMO architecture and assurance model
14
+ # The SysML compiler every MEMO command uses (internal, syside or opensysml), and
15
+ # the packager `memo pack` uses (internal or sysand).
16
+ # Required; MEMO chooses none for a project that does not.
17
+ toolchain:
18
+ packager: internal
@@ -1,7 +1,11 @@
1
1
  package project_architecture {
2
- private import memo::*;
2
+ private import memo_core_common::*;
3
+ private import memo_core_common::MemoIdentity;
4
+ private import memo_architecture_logical_structure::*;
3
5
 
4
- part system : MemoPart {
5
- attribute redefines name = "{{name}}";
6
+ // The product, as a System: the kind a workspace is made from, and a kind the explorer files
7
+ // under Architecture. (A bare `MemoPart` is the abstract base and files under evidence.)
8
+ part def ProductSystem specializes System {
9
+ @MemoIdentity { :>> label = "{{name}}"; }
6
10
  }
7
11
  }
@@ -17,10 +17,9 @@ package project_catalog {
17
17
 
18
18
  private import memo_core_common::*;
19
19
  private import memo_core_common::MemoIdentity;
20
- part projectMethodBinding : ProjectMethodBinding {
21
- @MemoIdentity { :>> providedId = "PMB-001"; }
22
- attribute :>> name = "{{name}}ProjectMethodBinding";
23
- attribute :>> projectName = "{{name}}";
20
+ part projectMethodBinding : ModelMethodBinding {
21
+ @MemoIdentity { :>> providedId = "PMB-001"; :>> label = "{{name}}ModelMethodBinding"; }
22
+ attribute :>> modelName = "{{name}}";
24
23
  ref :>> selectedMethodology = mdDefaultDefinition;
25
24
  // The project adds no modules of its own yet. Under `explicit` an
26
25
  // empty additive list means exactly that — no additions — rather than
@@ -1,26 +0,0 @@
1
- // Sysml Diagram Samples — project identity and method binding.
2
- //
3
- // The native entrypoint. The imports name what this project contains and the
4
- // binding names the methodology it is governed by. No YAML file participates.
5
- package memo_examples_sysml_diagram_samples_project {
6
- private import ScalarValues::*;
7
-
8
- private import memo_core_enumerations::*;
9
- private import memo_methodology_core::*;
10
- private import memo_methodology_profiles::*;
11
-
12
- // The project's own content, imported so the catalog is one reachable
13
- // closure from a single entrypoint.
14
- private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
15
- private import diagram_samples::*;
16
-
17
- private import memo_core_common::*;
18
- private import memo_core_common::MemoIdentity;
19
- part projectBinding : ProjectMethodBinding {
20
- @MemoIdentity { :>> providedId = "PMB-DIAGRAM-SAMPLES-1"; }
21
- attribute :>> name = "SysmlDiagramSamplesProjectMethodBinding";
22
- attribute :>> projectName = "Sysml Diagram Samples";
23
- ref :>> selectedMethodology = mdDefaultDefinition;
24
- attribute :>> scopeMode = ScopeModeKind::explicit;
25
- }
26
- }
@@ -1,47 +0,0 @@
1
- format: memo.viewlayout/v1
2
- viewSource: model/catalog/viewpoints/unassigned/views/context_view.sysml
3
- layouts:
4
- diag-sample-sampleContextView:
5
- nodes:
6
- __context_boundary__:
7
- x: 327.4
8
- y: 109
9
- ports: {}
10
- infusionSystem:
11
- x: 92
12
- y: 74
13
- ports: {}
14
- biomedTech:
15
- x: 40
16
- y: 40
17
- ports: {}
18
- clinician:
19
- x: 53.400000000000006
20
- y: 146
21
- ports: {}
22
- patient:
23
- x: 53.400000000000006
24
- y: 252
25
- ports: {}
26
- homeContext:
27
- x: 440
28
- y: 600
29
- ports: {}
30
- pharmacySystem:
31
- x: 855.4
32
- y: 199
33
- ports: {}
34
- edges:
35
- rel-8: {}
36
- rel-9: {}
37
- rel-10: {}
38
- rel-11: {}
39
- rel-12: {}
40
- annotations: {}
41
- canvas:
42
- autoLayout: false
43
- zoom: 0.7154088050314465
44
- pan:
45
- x: 50.15487421383642
46
- y: -9.616352201257882
47
- coordinateSpace: context-child-v1
@@ -1,94 +0,0 @@
1
- format: memo.viewlayout/v1
2
- viewSource: model/catalog/viewpoints/unassigned/views/interconnection_view.sysml
3
- layouts:
4
- diag-sample-sampleInterconnectionView:
5
- nodes:
6
- coffeeMachine:
7
- x: 301.2
8
- y: 0
9
- ports:
10
- mainsWaterIn:
11
- x: -12
12
- y: 95
13
- side: left
14
- beverageOut:
15
- x: 536
16
- y: 375
17
- side: right
18
- serviceInterface:
19
- x: 536
20
- y: 217
21
- side: right
22
- diagnostics:
23
- x: 536
24
- y: 247
25
- side: right
26
- width: 768
27
- height: 422
28
- waterTank:
29
- x: 118.75
30
- y: 48
31
- ports:
32
- tankWaterOut:
33
- x: 299.5
34
- y: 47
35
- side: right
36
- tankWaterIn:
37
- x: -12
38
- y: 47
39
- side: left
40
- heaterAssembly:
41
- x: 78.80000000000001
42
- y: 220
43
- ports:
44
- heaterWaterIn:
45
- x: -12
46
- y: 47
47
- side: left
48
- heatedWaterOut:
49
- x: 352
50
- y: 47
51
- side: right
52
- brewGroup:
53
- x: 134
54
- y: 328
55
- ports:
56
- brewWaterIn:
57
- x: -12
58
- y: 47
59
- side: left
60
- brewedCoffeeOut:
61
- x: 268
62
- y: 47
63
- side: right
64
- waterSupply:
65
- x: 0
66
- y: 170
67
- ports:
68
- supplyWaterOut:
69
- x: 198.8
70
- y: 47
71
- side: right
72
- cup:
73
- x: 1000
74
- y: 320
75
- ports:
76
- cupBeverageIn:
77
- x: -12
78
- y: 50
79
- side: left
80
- edges:
81
- rel-66: {}
82
- rel-67: {}
83
- rel-68: {}
84
- rel-69: {}
85
- rel-70: {}
86
- rel-71: {}
87
- annotations: {}
88
- canvas:
89
- autoLayout: false
90
- zoom: 0.83251321227496
91
- pan:
92
- x: -129.43112026011397
93
- y: -3.900376690780462
94
- coordinateSpace: context-child-v1
@@ -1,13 +0,0 @@
1
- format: memo.viewlayout/v1
2
- viewSource: model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml
3
- layouts:
4
- diag-sample-opSetupView:
5
- nodes: {}
6
- edges: {}
7
- canvas:
8
- autoLayout: true
9
- zoom: 0.3666153460391409
10
- pan:
11
- x: 359.78478424853927
12
- y: 41.19938625300375
13
- coordinateSpace: context-child-v1
@@ -1,8 +0,0 @@
1
- package memo_examples_ui_screen_regions_relationships {
2
- private import memo_artifacts_configuration_management::*;
3
- private import memo_assurance_safety_risk::*;
4
- private import memo_examples_ui_screen_regions_architecture_implementation_ui::*;
5
- private import memo_examples_ui_screen_regions_assurance_requirements::*;
6
- connection rel_tracesRisk_uiElement12_reqDrugIdentityDisplay : TracesRisk connect sourceRiskElement ::> elMainScreen::uiElement12 to targetRiskElement ::> reqDrugIdentityDisplay;
7
- connection rel_changes_uiElement12_reqDrugIdentityDisplay : Changes connect changeRequest ::> elMainScreen::uiElement12 to changedElement ::> reqDrugIdentityDisplay;
8
- }
@@ -1,19 +0,0 @@
1
- package memo_extension_aadl_methodology {
2
- private import ScalarValues::*;
3
- private import memo_methodology_core::*;
4
- private import memo_methodology_profiles::*;
5
- private import memo_core_enumerations::*;
6
-
7
- private import memo_core_common::*;
8
- private import memo_core_common::MemoIdentity;
9
- part aadlExtensionMethod : MethodologyDefinition {
10
- @MemoIdentity { :>> providedId = "EXT-AADL-001"; }
11
- attribute :>> name = "AadlCorrespondenceExtension";
12
- attribute :>> version = "0.7.0";
13
- attribute :>> domain = "AADL (SAE AS5506) software runtime";
14
- attribute :>> description = "Adds the AADL correspondence profile and the process / thread / virtual-processor runtime families.";
15
- ref :>> baseMethodology = mdDefaultDefinition;
16
- attribute :>> scopeMode = ScopeModeKind::explicit;
17
- attribute :>> includedModule = "memo_extension_aadl";
18
- }
19
- }
@@ -1,24 +0,0 @@
1
- package memo_extension_clinical_methodology {
2
- private import ScalarValues::*;
3
- private import memo_methodology_core::*;
4
- private import memo_methodology_profiles::*;
5
- private import memo_core_enumerations::*;
6
-
7
- private import memo_core_common::*;
8
- private import memo_core_common::MemoIdentity;
9
- part clinicalExtensionMethod : MethodologyDefinition {
10
- @MemoIdentity { :>> providedId = "EXT-CLINICAL-001"; }
11
- attribute :>> name = "ClinicalProcedureExtension";
12
- attribute :>> version = "0.6.5";
13
- attribute :>> domain = "clinical procedures";
14
- attribute :>> description = "Adds optional clinical-procedure vocabulary to a MEMO project.";
15
- // The base is a typed SysML reference, not a name to keep in sync with
16
- // another file. `baseMethodName` was the pre-flip spelling and no
17
- // longer resolves.
18
- ref :>> baseMethodology = mdDefaultDefinition;
19
- // An extension adds its own module to whatever its base selected;
20
- // saying so explicitly is required now that an empty list means empty.
21
- attribute :>> scopeMode = ScopeModeKind::explicit;
22
- attribute :>> includedModule = "memo_extension_clinical";
23
- }
24
- }