@memoarchitect/ontology 0.7.0 → 0.8.24

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 (270) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
  7. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  9. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
  10. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  11. package/examples/gpca-pump/memo.package.yaml +3 -0
  12. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  13. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  14. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  15. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  16. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  17. package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
  18. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
  19. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  20. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
  21. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  22. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  23. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  24. package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
  25. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
  26. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  27. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  28. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
  30. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
  31. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
  32. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
  39. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
  41. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
  42. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
  44. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -6
  47. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  48. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
  50. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +5 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  54. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  55. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
  56. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  57. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  58. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
  59. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  60. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  61. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  62. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  63. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  64. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  65. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  66. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  67. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  68. package/examples/reusable-instrument/memo.package.yaml +3 -0
  69. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
  70. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  71. package/examples/ros-mobile-robot/README.md +40 -0
  72. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  73. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  74. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  75. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  76. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +12 -0
  77. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  78. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  79. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
  80. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  81. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  82. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
  83. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  84. package/examples/surgical-robot/memo.package.yaml +3 -0
  85. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  86. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  87. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  88. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
  89. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
  90. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
  91. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
  92. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
  93. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
  94. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
  95. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
  96. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
  97. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
  98. package/examples/temperature-alarm/memo.package.yaml +3 -0
  99. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
  100. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  101. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  102. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  103. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  104. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  105. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  106. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  107. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  108. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
  109. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  110. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  111. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
  112. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
  113. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
  114. package/extensions/LICENSES/MIT.txt +19 -0
  115. package/extensions/README.md +94 -0
  116. package/extensions/aadl/memo.package.yaml +18 -0
  117. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  118. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  119. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  120. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  121. package/extensions/cloud/memo.package.yaml +18 -0
  122. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  123. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  124. package/extensions/container/memo.package.yaml +18 -0
  125. package/extensions/container/src/container_extension.sysml +37 -0
  126. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  127. package/extensions/messaging/memo.package.yaml +18 -0
  128. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  129. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  130. package/extensions/ros/memo.package.yaml +18 -0
  131. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  132. package/extensions/ros/src/ros_extension.sysml +200 -0
  133. package/extensions/template/src/extension.sysml +37 -0
  134. package/memo.manifest.yaml +13 -2
  135. package/methodologies/default/memo.package.yaml +1 -1
  136. package/methodologies/gpca/memo.package.yaml +1 -1
  137. package/ontology/memo.package.yaml +1 -1
  138. package/package.json +5 -3
  139. package/profile/memo.package.yaml +1 -1
  140. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  141. package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
  142. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  143. package/src/architecture/functional/functions/memo_functions.sysml +93 -36
  144. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
  145. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  146. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
  147. package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
  148. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
  149. package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
  150. package/src/architecture/operational/activities/memo_activities.sysml +27 -29
  151. package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
  152. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
  153. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
  154. package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
  155. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  156. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
  157. package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
  158. package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
  159. package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
  160. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  161. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  162. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  163. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  164. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  165. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  166. package/src/artifacts/standards/iec_60812.sysml +51 -0
  167. package/src/artifacts/standards/iec_62304.sysml +210 -0
  168. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  169. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  170. package/src/artifacts/standards/iso_13485.sysml +113 -0
  171. package/src/artifacts/standards/iso_14971.sysml +94 -0
  172. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  173. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  174. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  175. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  176. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  177. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  178. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  179. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  180. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  181. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  182. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  183. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  184. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  185. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  186. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  187. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  188. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  189. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  190. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  191. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  192. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  193. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  194. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  195. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  196. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  197. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  198. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  199. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  200. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  201. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  202. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  203. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  204. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  205. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  206. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  207. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  208. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  209. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  210. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +40 -21
  211. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  212. package/src/assurance/requirements/memo_requirements.sysml +7 -20
  213. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  214. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  215. package/src/assurance/safety_risk/memo_risk.sysml +90 -7
  216. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  217. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  218. package/src/core/annotations/memo_annotations.sysml +25 -6
  219. package/src/core/common/memo_common.sysml +130 -21
  220. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  221. package/src/core/dimensions/dimensions.sysml +12 -0
  222. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  223. package/src/core/relationships/memo_relationships.sysml +199 -196
  224. package/src/memo_namespaces.sysml +30 -0
  225. package/src/methodology/core/memo_core.sysml +24 -0
  226. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  227. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  228. package/src/rules/closure/closure_rules.sysml +20 -20
  229. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  230. package/src/rules/ontology/ontology_invariants.sysml +223 -11
  231. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  232. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
  233. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  234. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  235. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
  236. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
  237. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
  238. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  239. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
  240. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
  241. package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
  242. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
  243. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  244. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
  245. package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
  246. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
  247. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
  248. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  249. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
  250. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  251. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
  252. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  253. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
  254. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  255. package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
  256. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  257. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
  258. package/templates/connected-device/memo.package.yaml +2 -0
  259. package/templates/default/memo.package.yaml +2 -0
  260. package/templates/infusion-pump/memo.package.yaml +2 -0
  261. package/templates/monitoring-device/memo.package.yaml +2 -0
  262. package/templates/samd/memo.package.yaml +2 -0
  263. package/examples/extensions/README.md +0 -16
  264. package/examples/extensions/template/src/extension.sysml +0 -15
  265. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  266. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  267. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  268. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  269. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  270. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -13,154 +13,154 @@ package memo_viewpoints_catalog {
13
13
  // resolution to a standard SysML v2 view kind.
14
14
 
15
15
  // ── Content and context ─────────────────────────────────────
16
- part vpModelContent : Viewpoint {
16
+ viewpoint vpModelContent : MemoViewpoint {
17
17
  attribute :>> id = "VP-CAT-001"; attribute :>> name = "ModelContentViewpoint";
18
18
  attribute :>> purpose = "Browse the model tree and package structure.";
19
19
  attribute :>> defaultViewKind = DiagramViewKind::browser;
20
20
  }
21
- part vpSystemContext : Viewpoint {
21
+ viewpoint vpSystemContext : MemoViewpoint {
22
22
  attribute :>> id = "VP-CAT-002"; attribute :>> name = "SystemContextViewpoint";
23
23
  attribute :>> purpose = "System of interest, actors, external systems, and context exchanges.";
24
24
  attribute :>> defaultViewKind = DiagramViewKind::general;
25
25
  }
26
26
  // ── Operational world ───────────────────────────────────────
27
- part vpUseCase : Viewpoint {
27
+ viewpoint vpUseCase : MemoViewpoint {
28
28
  attribute :>> id = "VP-CAT-003"; attribute :>> name = "UseCaseViewpoint";
29
29
  attribute :>> purpose = "Use cases, initiating users, supporting actors, and motivating needs.";
30
30
  attribute :>> defaultViewKind = DiagramViewKind::general;
31
31
  }
32
- part vpClinicalWorkflow : Viewpoint {
32
+ viewpoint vpClinicalWorkflow : MemoViewpoint {
33
33
  attribute :>> id = "VP-CAT-004"; attribute :>> name = "ClinicalWorkflowViewpoint";
34
34
  attribute :>> purpose = "Workflow steps, decisions, parallel work, handoffs, and roles.";
35
35
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
36
36
  }
37
- part vpOperativeScenario : Viewpoint {
38
- attribute :>> id = "VP-CAT-005"; attribute :>> name = "OperativeScenarioViewpoint";
37
+ viewpoint vpScenario : MemoViewpoint {
38
+ attribute :>> id = "VP-CAT-005"; attribute :>> name = "ScenarioViewpoint";
39
39
  attribute :>> purpose = "Selected paths through workflows: variants, conditions, variation points.";
40
40
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
41
41
  }
42
42
  // ── Functional ──────────────────────────────────────────────
43
- part vpFunctionalArchitecture : Viewpoint {
43
+ viewpoint vpFunctionalArchitecture : MemoViewpoint {
44
44
  attribute :>> id = "VP-CAT-006"; attribute :>> name = "FunctionalArchitectureViewpoint";
45
45
  attribute :>> purpose = "System functions, capabilities, and functional exchanges.";
46
46
  attribute :>> defaultViewKind = DiagramViewKind::general;
47
47
  }
48
- part vpFunctionalFlow : Viewpoint {
48
+ viewpoint vpFunctionalFlow : MemoViewpoint {
49
49
  attribute :>> id = "VP-CAT-007"; attribute :>> name = "FunctionalFlowViewpoint";
50
50
  attribute :>> purpose = "Ordered functional flows and their steps.";
51
51
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
52
52
  }
53
53
  // ── Logical ─────────────────────────────────────────────────
54
- part vpLogicalArchitecture : Viewpoint {
54
+ viewpoint vpLogicalArchitecture : MemoViewpoint {
55
55
  attribute :>> id = "VP-CAT-008"; attribute :>> name = "LogicalArchitectureViewpoint";
56
56
  attribute :>> purpose = "Logical components, channels, and allocations.";
57
57
  attribute :>> defaultViewKind = DiagramViewKind::general;
58
58
  }
59
- part vpSystemDecomposition : Viewpoint {
59
+ viewpoint vpSystemDecomposition : MemoViewpoint {
60
60
  attribute :>> id = "VP-CAT-009"; attribute :>> name = "SystemDecompositionViewpoint";
61
61
  attribute :>> purpose = "Composition hierarchy of the system of interest.";
62
62
  attribute :>> defaultViewKind = DiagramViewKind::browser;
63
63
  }
64
- part vpInternalInterconnection : Viewpoint {
64
+ viewpoint vpInternalInterconnection : MemoViewpoint {
65
65
  attribute :>> id = "VP-CAT-010"; attribute :>> name = "InternalInterconnectionViewpoint";
66
66
  attribute :>> purpose = "Ports, connectors, and exchanges inside a component boundary.";
67
67
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
68
68
  }
69
69
  // ── Implementation ──────────────────────────────────────────
70
- part vpSoftwareModule : Viewpoint {
70
+ viewpoint vpSoftwareModule : MemoViewpoint {
71
71
  attribute :>> id = "VP-CAT-011"; attribute :>> name = "SoftwareModuleViewpoint";
72
72
  attribute :>> purpose = "IEC 62304 module structure: systems, items, units, SOUP.";
73
73
  attribute :>> defaultViewKind = DiagramViewKind::general;
74
74
  }
75
- part vpSoftwareComponents : Viewpoint {
75
+ viewpoint vpSoftwareComponents : MemoViewpoint {
76
76
  attribute :>> id = "VP-CAT-012"; attribute :>> name = "SoftwareComponentViewpoint";
77
77
  attribute :>> purpose = "Runtime component-and-connector structure with concurrency and scheduling.";
78
78
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
79
79
  }
80
- part vpHardwareArchitecture : Viewpoint {
80
+ viewpoint vpHardwareArchitecture : MemoViewpoint {
81
81
  attribute :>> id = "VP-CAT-013"; attribute :>> name = "HardwareArchitectureViewpoint";
82
82
  attribute :>> purpose = "Electronic/electrical structure and processing platform.";
83
83
  attribute :>> defaultViewKind = DiagramViewKind::general;
84
84
  }
85
- part vpPhysicalArchitecture : Viewpoint {
85
+ viewpoint vpPhysicalArchitecture : MemoViewpoint {
86
86
  attribute :>> id = "VP-CAT-014"; attribute :>> name = "PhysicalArchitectureViewpoint";
87
87
  attribute :>> purpose = "Mechanical, fluidic, optical, and other physical realization.";
88
88
  attribute :>> defaultViewKind = DiagramViewKind::general;
89
89
  }
90
- part vpDeviceComposition : Viewpoint {
90
+ viewpoint vpDeviceComposition : MemoViewpoint {
91
91
  attribute :>> id = "VP-CAT-015"; attribute :>> name = "DeviceCompositionViewpoint";
92
92
  attribute :>> purpose = "Device definitions, instances, accessories, and consumables.";
93
93
  attribute :>> defaultViewKind = DiagramViewKind::browser;
94
94
  }
95
- part vpNetworkDeployment : Viewpoint {
95
+ viewpoint vpNetworkDeployment : MemoViewpoint {
96
96
  attribute :>> id = "VP-CAT-016"; attribute :>> name = "NetworkDeploymentViewpoint";
97
97
  attribute :>> purpose = "Deployment units on processing nodes and network topology.";
98
98
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
99
99
  }
100
100
  // ── Interaction and behavior ────────────────────────────────
101
- part vpUiFlow : Viewpoint {
101
+ viewpoint vpUiFlow : MemoViewpoint {
102
102
  attribute :>> id = "VP-CAT-017"; attribute :>> name = "UiFlowViewpoint";
103
103
  attribute :>> purpose = "Interaction flows, UI states, and transitions.";
104
104
  attribute :>> defaultViewKind = DiagramViewKind::statetransition;
105
105
  }
106
- part vpStateMode : Viewpoint {
106
+ viewpoint vpStateMode : MemoViewpoint {
107
107
  attribute :>> id = "VP-CAT-018"; attribute :>> name = "StateModeViewpoint";
108
108
  attribute :>> purpose = "System states, device modes, and transitions.";
109
109
  attribute :>> defaultViewKind = DiagramViewKind::statetransition;
110
110
  }
111
- part vpSequenceInteraction : Viewpoint {
111
+ viewpoint vpSequenceInteraction : MemoViewpoint {
112
112
  attribute :>> id = "VP-CAT-019"; attribute :>> name = "SequenceInteractionViewpoint";
113
113
  attribute :>> purpose = "Ordered message exchanges between participants in a scenario.";
114
114
  attribute :>> defaultViewKind = DiagramViewKind::sequence;
115
115
  }
116
116
  // ── Assurance ───────────────────────────────────────────────
117
- part vpRequirementsTraceability : Viewpoint {
117
+ viewpoint vpRequirementsTraceability : MemoViewpoint {
118
118
  attribute :>> id = "VP-CAT-020"; attribute :>> name = "RequirementsTraceabilityViewpoint";
119
119
  attribute :>> purpose = "Needs → requirements → architecture → verification trace matrix.";
120
120
  attribute :>> defaultViewKind = DiagramViewKind::grid;
121
121
  }
122
- part vpRiskChain : Viewpoint {
122
+ viewpoint vpRiskChain : MemoViewpoint {
123
123
  attribute :>> id = "VP-CAT-021"; attribute :>> name = "RiskChainViewpoint";
124
124
  attribute :>> purpose = "ISO 14971 chain: hazard → hazardous situation → harm with controls.";
125
125
  attribute :>> defaultViewKind = DiagramViewKind::general;
126
126
  }
127
- part vpCybersecurity : Viewpoint {
127
+ viewpoint vpCybersecurity : MemoViewpoint {
128
128
  attribute :>> id = "VP-CAT-022"; attribute :>> name = "CybersecurityViewpoint";
129
129
  attribute :>> purpose = "Assets, threats, trust boundaries, and security controls.";
130
130
  attribute :>> defaultViewKind = DiagramViewKind::general;
131
131
  }
132
- part vpHumanFactors : Viewpoint {
132
+ viewpoint vpHumanFactors : MemoViewpoint {
133
133
  attribute :>> id = "VP-CAT-023"; attribute :>> name = "HumanFactorsViewpoint";
134
134
  attribute :>> purpose = "Users, tasks, use errors, and hazard-related use scenarios.";
135
135
  attribute :>> defaultViewKind = DiagramViewKind::grid;
136
136
  }
137
- part vpVerificationCoverage : Viewpoint {
137
+ viewpoint vpVerificationCoverage : MemoViewpoint {
138
138
  attribute :>> id = "VP-CAT-024"; attribute :>> name = "VerificationCoverageViewpoint";
139
139
  attribute :>> purpose = "Verification cases against requirements and functions.";
140
140
  attribute :>> defaultViewKind = DiagramViewKind::grid;
141
141
  }
142
- part vpValidationCoverage : Viewpoint {
142
+ viewpoint vpValidationCoverage : MemoViewpoint {
143
143
  attribute :>> id = "VP-CAT-025"; attribute :>> name = "ValidationCoverageViewpoint";
144
144
  attribute :>> purpose = "Validation cases against use cases and critical tasks.";
145
145
  attribute :>> defaultViewKind = DiagramViewKind::grid;
146
146
  }
147
- part vpEvidenceTraceability : Viewpoint {
147
+ viewpoint vpEvidenceTraceability : MemoViewpoint {
148
148
  attribute :>> id = "VP-CAT-026"; attribute :>> name = "EvidenceTraceabilityViewpoint";
149
149
  attribute :>> purpose = "Evidence records back to the cases and elements they support.";
150
150
  attribute :>> defaultViewKind = DiagramViewKind::grid;
151
151
  }
152
152
  // A software sequence diagram is a VIEW conforming to this viewpoint
153
153
  // (ISO/IEC/IEEE 42010): it frames the runtime message ordering between
154
- // SoftwareComponents realizing a FunctionalScenario. The viewpoint is the
154
+ // SoftwareComponents realizing a functional OperativeScenario. The viewpoint is the
155
155
  // reusable spec; the diagram of a specific model is the view.
156
- part vpSoftwareSequence : Viewpoint {
156
+ viewpoint vpSoftwareSequence : MemoViewpoint {
157
157
  attribute :>> id = "VP-CAT-027"; attribute :>> name = "SoftwareSequenceViewpoint";
158
158
  attribute :>> purpose = "Runtime message ordering between software components along a functional scenario.";
159
159
  attribute :>> defaultViewKind = DiagramViewKind::sequence;
160
160
  }
161
161
  // The first cataloged viewpoint to resolve to `geometry`: screen regions
162
162
  // carry authored RegionBounds, so a geometry view draws modelled facts.
163
- part vpUILayout : Viewpoint {
163
+ viewpoint vpUILayout : MemoViewpoint {
164
164
  attribute :>> id = "VP-CAT-028"; attribute :>> name = "UILayoutViewpoint";
165
165
  attribute :>> purpose = "Captured screens with their marked regions and the UI elements those regions present.";
166
166
  attribute :>> defaultViewKind = DiagramViewKind::geometry;
@@ -4,10 +4,9 @@ package memo_viewpoints_clinical_clinical_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part clinicalViewpoint : Viewpoint {
7
+ viewpoint clinicalViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-CLIN";
9
9
  attribute :>> name = "ClinicalViewpoint";
10
- attribute :>> title = "Clinical Viewpoint";
11
10
  attribute :>> shortDescription = "Shows clinical context, users, use environment, and clinical evidence.";
12
11
  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
12
  attribute :>> purpose = "Communicate clinical use context and clinical evidence for the device.";
@@ -20,7 +19,7 @@ package memo_viewpoints_clinical_clinical_viewpoint {
20
19
  attribute :>> includedLayers = ("context", "assurance");
21
20
  attribute :>> explorerLane = "assurance";
22
21
  attribute :>> explorerOrder = 4;
23
- attribute :>> allowedElementKinds = ("Actor", "UseContext", "Evidence");
22
+ attribute :>> allowedElementKinds = ("Actor", "UseContext", "MemoEvidence");
24
23
  attribute :>> userExtensible = true;
25
24
  }
26
25
  }
@@ -4,10 +4,9 @@ package memo_viewpoints_context_context_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part contextViewpoint : Viewpoint {
7
+ viewpoint contextViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-CTX";
9
9
  attribute :>> name = "ContextViewpoint";
10
- attribute :>> title = "System Context Viewpoint";
11
10
  attribute :>> shortDescription = "Shows actors, use context, and system boundary.";
12
11
  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
12
  attribute :>> purpose = "Communicate operational context and boundaries.";
@@ -29,7 +28,7 @@ package memo_viewpoints_context_context_viewpoint {
29
28
  // boundary picture. Projects derive their own verbs from it and are
30
29
  // picked up through the specialization closure. The three older
31
30
  // relations remain for models authored before it existed.
32
- attribute :>> allowedRelationshipKinds = ("InteractsInContext", "InteractsWith", "ExchangesWith", "ConnectsPhysically");
31
+ attribute :>> allowedRelationshipKinds = ("InteractsInContext", "InteractsWith", "flow", "bind", "connect");
33
32
  attribute :>> userExtensible = true;
34
33
  }
35
34
  }
@@ -10,7 +10,6 @@ package memo_viewpoints_context_views_system_context_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-CTX-001";
12
12
  attribute :>> name = "SystemContextView";
13
- attribute :>> title = "System Context View";
14
13
  attribute :>> shortDescription = "Actors, use context, and system boundary.";
15
14
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
15
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -24,6 +23,6 @@ package memo_viewpoints_context_views_system_context_view {
24
23
  attribute :>> includeLayers = ("context");
25
24
  attribute :>> rationaleText = "Auto-populate the system context view from the context layer.";
26
25
  }
27
- part :>> viewpointDefinition = contextViewpoint;
26
+ ref :>> viewpointDefinition = contextViewpoint;
28
27
  }
29
28
  }
@@ -4,10 +4,9 @@ package memo_viewpoints_cybersecurity_cybersecurity_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part cybersecurityViewpoint : Viewpoint {
7
+ viewpoint cybersecurityViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-CYB";
9
9
  attribute :>> name = "CybersecurityViewpoint";
10
- attribute :>> title = "Cybersecurity Viewpoint";
11
10
  attribute :>> shortDescription = "Shows assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, and mitigations.";
12
11
  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
12
  attribute :>> purpose = "Communicate cybersecurity design, threat analysis, and cyber risk posture.";
@@ -20,9 +19,8 @@ package memo_viewpoints_cybersecurity_cybersecurity_viewpoint {
20
19
  attribute :>> includedLayers = ("cybersecurity", "software_structure", "hardware_structure", "interfaces", "risk", "assurance");
21
20
  attribute :>> explorerLane = "assurance";
22
21
  attribute :>> explorerOrder = 3;
23
- attribute :>> allowedElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "ThreatScenario");
22
+ attribute :>> allowedElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "OperativeScenario[scenarioKind=threat]");
24
23
  attribute :>> allowedRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "Mitigates", "DerivesCyberRequirement", "ImpactsSafety", "CrossesTrustBoundary");
25
- attribute :>> documentUsage = ("Secure Product Development", "Threat Model", "Cybersecurity Risk Assessment", "QMSR");
26
24
  attribute :>> userExtensible = true;
27
25
  }
28
26
  }
@@ -1,11 +1,37 @@
1
+ // MEMO's ISO/IEC/IEEE 42010 view apparatus, built on native SysML v2 — which
2
+ // already models the whole stack: a View conforms to a Viewpoint, a Viewpoint
3
+ // frames Concerns, Concerns are held by Stakeholders. MemoView extends the
4
+ // native Views::View. Concerns are the native `concern def`; stakeholders are
5
+ // native stakeholder memberships (any Part in the stakeholder role); MEMO adds
6
+ // only the medical-device attributes on top, never a parallel type.
1
7
  package memo_viewpoints_definitions {
2
8
  private import ScalarValues::*;
3
9
 
4
10
  private import memo_core_common::*;
5
11
  private import memo_core_enumerations::*;
12
+ private import memo_core_dimensions::*;
13
+ private import memo_core_terminology::*;
6
14
  private import memo_core_relationships::*;
7
15
 
8
- part def Viewpoint specializes DocumentedElement {
16
+ // Extends the native SysML viewpoint (Views::ViewpointCheck, a
17
+ // RequirementCheck whose subject is a View) with MEMO's catalog
18
+ // attributes. The MEMO identity core is re-declared here because a
19
+ // viewpoint is native requirement-family, not a MemoPart — the same
20
+ // per-metaclass pattern MemoView and the other bases use.
21
+ viewpoint def MemoViewpoint :> Views::ViewpointCheck {
22
+ attribute id : String;
23
+ attribute uuid : String;
24
+ attribute name : String;
25
+ attribute shortDescription : String;
26
+ attribute description : String;
27
+ attribute rationale : String;
28
+ attribute sourceReference : String;
29
+ attribute status : ElementStatusKind;
30
+ attribute lifecycleState : LifecycleStateKind;
31
+ attribute realizationStage : RealizationStageKind[0..1];
32
+ attribute crossCuttingConcerns : CrossCuttingConcernKind[0..*];
33
+ attribute applicableStandards : ExternalReference[0..*];
34
+ attribute codes : TerminologyCode[0..*];
9
35
  attribute purpose : String;
10
36
  attribute audience : AudienceKind[*];
11
37
  attribute stage : WorkflowStageKind;
@@ -47,7 +73,24 @@ package memo_viewpoints_definitions {
47
73
  attribute rationaleText : String;
48
74
  }
49
75
 
50
- view def MemoView :> Views::View, DocumentedElement {
76
+ view def MemoView :> Views::View {
77
+ // MEMO identity core, re-declared here rather than inherited: a view is
78
+ // native SysML and must stay one, so it does not mix in the MemoPart
79
+ // part hierarchy — same per-metaclass pattern the other MEMO bases use.
80
+ attribute id : String;
81
+ attribute uuid : String;
82
+ attribute name : String;
83
+ attribute shortDescription : String;
84
+ attribute description : String;
85
+ attribute rationale : String;
86
+ attribute sourceReference : String;
87
+ attribute status : ElementStatusKind;
88
+ attribute lifecycleState : LifecycleStateKind;
89
+ attribute realizationStage : RealizationStageKind[0..1];
90
+ attribute crossCuttingConcerns : CrossCuttingConcernKind[0..*];
91
+ attribute concerns : ConcernKind[0..*];
92
+ attribute applicableStandards : ExternalReference[0..*];
93
+ attribute codes : TerminologyCode[0..*];
51
94
  attribute outputKind : ViewOutputKind[*];
52
95
  attribute presentationKind : PresentationKind[*];
53
96
  attribute filterExpression : String;
@@ -56,7 +99,7 @@ package memo_viewpoints_definitions {
56
99
  attribute autoPopulate : Boolean;
57
100
  // ISO 42010 conformance is many-to-many: every view has one or more
58
101
  // viewpoints, and a viewpoint may be realized by many reusable views.
59
- part viewpointDefinition : Viewpoint[1..*];
102
+ ref viewpointDefinition : MemoViewpoint[1..*];
60
103
  // Optional grouping within each viewpoint, interpreted by Architect.
61
104
  attribute group : String;
62
105
  ref subjectElement : MemoPart[*];
@@ -4,10 +4,9 @@ package memo_viewpoints_functional_functional_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part functionalViewpoint : Viewpoint {
7
+ viewpoint functionalViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-FUNC";
9
9
  attribute :>> name = "FunctionalViewpoint";
10
- attribute :>> title = "Functional Viewpoint";
11
10
  attribute :>> shortDescription = "Shows system functions, their decomposition, and allocation.";
12
11
  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
12
  attribute :>> purpose = "Describe the system's functional decomposition and behavior.";
@@ -20,7 +19,7 @@ package memo_viewpoints_functional_functional_viewpoint {
20
19
  attribute :>> includedLayers = ("functions");
21
20
  attribute :>> explorerLane = "architecture";
22
21
  attribute :>> explorerOrder = 2;
23
- attribute :>> allowedElementKinds = ("SystemFunction", "FunctionalFlow", "FunctionalFlowStep", "FunctionalScenario", "FunctionalExchange");
22
+ attribute :>> allowedElementKinds = ("SystemFunction", "ComponentFunction", "FunctionalFlow", "FunctionalFlowStep", "OperativeScenario[scenarioKind=functional]", "FunctionalExchange");
24
23
  attribute :>> userExtensible = true;
25
24
  }
26
25
  }
@@ -10,7 +10,6 @@ package memo_viewpoints_functional_views_function_allocation_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-FUNC-002";
12
12
  attribute :>> name = "FunctionAllocationView";
13
- attribute :>> title = "Function Allocation View";
14
13
  attribute :>> shortDescription = "Functions allocated to logical components.";
15
14
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
15
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -20,10 +19,10 @@ package memo_viewpoints_functional_views_function_allocation_view {
20
19
  part :>> selectionQuery {
21
20
  attribute :>> id = "QRY-FUNC-002";
22
21
  attribute :>> name = "FunctionAllocationQuery";
23
- attribute :>> includeElementKinds = ("SystemFunction", "LogicalComponent");
22
+ attribute :>> includeElementKinds = ("SystemFunction", "ComponentFunction", "LogicalComponent");
24
23
  attribute :>> includeLayers = ("functions", "logical_structure");
25
24
  attribute :>> rationaleText = "Auto-populate function-to-component allocation from the functions and logical structure layers.";
26
25
  }
27
- part :>> viewpointDefinition = functionalViewpoint;
26
+ ref :>> viewpointDefinition = functionalViewpoint;
28
27
  }
29
28
  }
@@ -10,7 +10,6 @@ package memo_viewpoints_functional_views_system_functional_tree_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-FUNC-001";
12
12
  attribute :>> name = "SystemFunctionalTreeView";
13
- attribute :>> title = "System Functional Tree";
14
13
  attribute :>> shortDescription = "Hierarchical decomposition of system functions.";
15
14
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
15
  attribute :>> presentationKind = (PresentationKind::activityDiagram);
@@ -20,10 +19,10 @@ package memo_viewpoints_functional_views_system_functional_tree_view {
20
19
  part :>> selectionQuery {
21
20
  attribute :>> id = "QRY-FUNC-001";
22
21
  attribute :>> name = "SystemFunctionalTreeQuery";
23
- attribute :>> includeElementKinds = ("SystemFunction");
22
+ attribute :>> includeElementKinds = ("SystemFunction", "ComponentFunction");
24
23
  attribute :>> includeLayers = ("functions");
25
24
  attribute :>> rationaleText = "Auto-populate the functional tree from the functions layer.";
26
25
  }
27
- part :>> viewpointDefinition = functionalViewpoint;
26
+ ref :>> viewpointDefinition = functionalViewpoint;
28
27
  }
29
28
  }
@@ -4,10 +4,9 @@ package memo_viewpoints_logical_logical_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part logicalArchitectureViewpoint : Viewpoint {
7
+ viewpoint logicalArchitectureViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-LOG";
9
9
  attribute :>> name = "LogicalArchitectureViewpoint";
10
- attribute :>> title = "Logical Viewpoint";
11
10
  attribute :>> shortDescription = "Shows logical decomposition and interfaces.";
12
11
  attribute :>> description = "Default viewpoint derived from the logical architecture layer for subsystem structure, responsibilities, and major interactions, independent of physical realization.";
13
12
  attribute :>> purpose = "Describe the system's logical decomposition.";
@@ -10,7 +10,6 @@ package memo_viewpoints_logical_views_logical_architecture_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-LOG-001";
12
12
  attribute :>> name = "LogicalArchitectureView";
13
- attribute :>> title = "Logical Architecture View";
14
13
  attribute :>> shortDescription = "Logical components and their interfaces.";
15
14
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
15
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -24,6 +23,6 @@ package memo_viewpoints_logical_views_logical_architecture_view {
24
23
  attribute :>> includeLayers = ("logical_structure", "interfaces");
25
24
  attribute :>> rationaleText = "Auto-populate the logical architecture view from the logical structure and interfaces layers.";
26
25
  }
27
- part :>> viewpointDefinition = logicalArchitectureViewpoint;
26
+ ref :>> viewpointDefinition = logicalArchitectureViewpoint;
28
27
  }
29
28
  }
@@ -4,10 +4,9 @@ package memo_viewpoints_operational_operational_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part operationalViewpoint : Viewpoint {
7
+ viewpoint operationalViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-OPS";
9
9
  attribute :>> name = "OperationalViewpoint";
10
- attribute :>> title = "Operational & Use-Case Viewpoint";
11
10
  attribute :>> shortDescription = "Shows actors, use contexts, operational scenarios, and system capabilities.";
12
11
  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
12
  attribute :>> purpose = "Communicate how actors interact with the system and which capabilities they invoke.";
@@ -20,7 +19,7 @@ package memo_viewpoints_operational_operational_viewpoint {
20
19
  attribute :>> includedLayers = ("context", "operational", "system");
21
20
  attribute :>> explorerLane = "architecture";
22
21
  attribute :>> explorerOrder = 1;
23
- attribute :>> allowedElementKinds = ("Actor", "UseContext", "OperationalActivity", "OperativeScenario");
22
+ attribute :>> allowedElementKinds = ("Actor", "UseContext", "OperativeAction", "OperativeScenario[scenarioKind=operative]");
24
23
  attribute :>> userExtensible = true;
25
24
  }
26
25
  }
@@ -10,7 +10,6 @@ package memo_viewpoints_operational_views_use_case_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-OPS-001";
12
12
  attribute :>> name = "UseCaseView";
13
- attribute :>> title = "Use Case Overview";
14
13
  attribute :>> shortDescription = "Actors connected to the operational scenarios and capabilities they invoke.";
15
14
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
15
  attribute :>> presentationKind = (PresentationKind::custom);
@@ -20,10 +19,10 @@ package memo_viewpoints_operational_views_use_case_view {
20
19
  part :>> selectionQuery {
21
20
  attribute :>> id = "QRY-OPS-001";
22
21
  attribute :>> name = "UseCaseQuery";
23
- attribute :>> includeElementKinds = ("Actor", "UseContext", "OperativeScenario");
22
+ attribute :>> includeElementKinds = ("Actor", "UseContext", "OperativeScenario[scenarioKind=operative]");
24
23
  attribute :>> includeLayers = ("context", "operational");
25
24
  attribute :>> rationaleText = "Auto-populate the use case view from the context and operational layers.";
26
25
  }
27
- part :>> viewpointDefinition = operationalViewpoint;
26
+ ref :>> viewpointDefinition = operationalViewpoint;
28
27
  }
29
28
  }
@@ -4,10 +4,9 @@ package memo_viewpoints_physical_physical_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part physicalViewpoint : Viewpoint {
7
+ viewpoint physicalViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-PHY";
9
9
  attribute :>> name = "PhysicalViewpoint";
10
- attribute :>> title = "Physical Viewpoint";
11
10
  attribute :>> shortDescription = "Shows physical components, hardware structure, and their interconnections.";
12
11
  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
12
  attribute :>> purpose = "Describe the system's physical realization and interconnections.";
@@ -10,7 +10,6 @@ package memo_viewpoints_physical_views_network_topology_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-PHY-002";
12
12
  attribute :>> name = "NetworkTopologyView";
13
- attribute :>> title = "Network Topology View";
14
13
  attribute :>> shortDescription = "Physical interconnections and network ports between components.";
15
14
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
15
  attribute :>> presentationKind = (PresentationKind::internalDiagram);
@@ -24,6 +23,6 @@ package memo_viewpoints_physical_views_network_topology_view {
24
23
  attribute :>> includeLayers = ("physical");
25
24
  attribute :>> rationaleText = "Auto-populate the network topology view from the physical interfaces layer.";
26
25
  }
27
- part :>> viewpointDefinition = physicalViewpoint;
26
+ ref :>> viewpointDefinition = physicalViewpoint;
28
27
  }
29
28
  }
@@ -10,7 +10,6 @@ package memo_viewpoints_physical_views_physical_bom_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-PHY-001";
12
12
  attribute :>> name = "PhysicalBOMView";
13
- attribute :>> title = "Physical Bill of Materials View";
14
13
  attribute :>> shortDescription = "Physical and hardware components with their decomposition.";
15
14
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
15
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
@@ -24,6 +23,6 @@ package memo_viewpoints_physical_views_physical_bom_view {
24
23
  attribute :>> includeLayers = ("hardware_structure", "physical");
25
24
  attribute :>> rationaleText = "Auto-populate the physical BOM view from the hardware and physical layers.";
26
25
  }
27
- part :>> viewpointDefinition = physicalViewpoint;
26
+ ref :>> viewpointDefinition = physicalViewpoint;
28
27
  }
29
28
  }
@@ -4,10 +4,9 @@ package memo_viewpoints_requirements_requirements_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part requirementsViewpoint : Viewpoint {
7
+ viewpoint requirementsViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-REQ";
9
9
  attribute :>> name = "RequirementsViewpoint";
10
- attribute :>> title = "Requirements Viewpoint";
11
10
  attribute :>> shortDescription = "Shows stakeholder needs and their decomposition into system, software, and hardware requirements.";
12
11
  attribute :>> description = "Default viewpoint derived from the requirements layer for requirements traceability — the chain from stakeholder need through system, software, and hardware requirements, supporting IEC 62304 §5.1.1 and ISO 13485 §7.3.3.";
13
12
  attribute :>> purpose = "Communicate requirements decomposition and traceability.";
@@ -10,7 +10,6 @@ package memo_viewpoints_requirements_views_requirements_traceability_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-REQ-001";
12
12
  attribute :>> name = "RequirementsTraceabilityView";
13
- attribute :>> title = "Requirements Traceability View";
14
13
  attribute :>> shortDescription = "Stakeholder needs traced through system, software, and hardware requirements.";
15
14
  attribute :>> outputKind = (ViewOutputKind::matrix);
16
15
  attribute :>> presentationKind = (PresentationKind::traceMatrix);
@@ -24,6 +23,6 @@ package memo_viewpoints_requirements_views_requirements_traceability_view {
24
23
  attribute :>> includeLayers = ("requirements");
25
24
  attribute :>> rationaleText = "Auto-populate requirements traceability from the requirements layer.";
26
25
  }
27
- part :>> viewpointDefinition = requirementsViewpoint;
26
+ ref :>> viewpointDefinition = requirementsViewpoint;
28
27
  }
29
28
  }
@@ -4,10 +4,9 @@ package memo_viewpoints_risk_risk_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part riskViewpoint : Viewpoint {
7
+ viewpoint riskViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-RISK";
9
9
  attribute :>> name = "RiskViewpoint";
10
- attribute :>> title = "Risk and Control Viewpoint";
11
10
  attribute :>> shortDescription = "Shows hazards, risks, controls, and assurance links.";
12
11
  attribute :>> description = "Default viewpoint derived from the risk layer for ISO 14971-style reasoning across hazard, hazardous situation, harm, control, and verification evidence.";
13
12
  attribute :>> purpose = "Communicate safety risk chains and controls.";
@@ -10,7 +10,6 @@ package memo_viewpoints_risk_views_risk_chain_view {
10
10
  attribute depth = 2;
11
11
  attribute :>> id = "VIEW-RISK-001";
12
12
  attribute :>> name = "RiskChainView";
13
- attribute :>> title = "Risk Mitigation Chain View";
14
13
  attribute :>> shortDescription = "Hazards through harms with controls and verification.";
15
14
  attribute :>> outputKind = (ViewOutputKind::table);
16
15
  attribute :>> presentationKind = (PresentationKind::riskTable);
@@ -25,6 +24,6 @@ package memo_viewpoints_risk_views_risk_chain_view {
25
24
  attribute :>> includeConcerns = (ConcernKind::safety);
26
25
  attribute :>> rationaleText = "Auto-populate the risk chain view from the risk and assurance layers.";
27
26
  }
28
- part :>> viewpointDefinition = riskViewpoint;
27
+ ref :>> viewpointDefinition = riskViewpoint;
29
28
  }
30
29
  }
@@ -4,10 +4,9 @@ package memo_viewpoints_software_software_viewpoint {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part softwareViewpoint : Viewpoint {
7
+ viewpoint softwareViewpoint : MemoViewpoint {
8
8
  attribute :>> id = "VP-SW";
9
9
  attribute :>> name = "SoftwareViewpoint";
10
- attribute :>> title = "Software Viewpoint";
11
10
  attribute :>> shortDescription = "Shows software systems, components, SOUP, and software interfaces.";
12
11
  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
12
  attribute :>> purpose = "Describe the software architecture for IEC 62304 design documentation.";