@memoarchitect/ontology 0.8.22 → 0.10.9

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 (240) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  4. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  5. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
  8. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  9. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
  12. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  13. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  15. package/examples/gpca-pump/memo.package.yaml +3 -0
  16. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  17. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  18. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  33. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
  35. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
  37. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
  38. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
  39. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
  40. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
  41. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
  42. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
  47. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
  50. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
  51. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
  52. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
  53. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
  54. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
  55. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
  56. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
  57. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
  58. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
  59. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
  60. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  61. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
  62. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  63. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  64. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  65. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
  66. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  67. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  68. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  69. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  70. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  71. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  72. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  73. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  74. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  75. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  76. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  77. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  78. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  79. package/examples/reusable-instrument/memo.package.yaml +3 -0
  80. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  81. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
  82. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  83. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  84. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  85. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  86. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  87. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  88. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  89. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
  90. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  91. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  92. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  93. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
  94. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  95. package/examples/surgical-robot/memo.package.yaml +3 -0
  96. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  97. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  98. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  99. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  100. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  101. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
  102. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
  103. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
  104. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
  105. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
  106. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
  107. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
  108. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
  109. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
  110. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
  111. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  112. package/examples/temperature-alarm/memo.package.yaml +3 -0
  113. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  114. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
  115. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  116. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  117. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  118. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  119. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  120. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  121. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  122. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  123. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  124. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  125. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  126. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  127. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  128. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  129. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  130. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  131. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
  132. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
  133. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
  134. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
  135. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
  136. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
  137. package/extensions/aadl/memo.package.yaml +1 -1
  138. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  139. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  140. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  141. package/extensions/cloud/memo.package.yaml +1 -1
  142. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  143. package/extensions/container/memo.package.yaml +1 -1
  144. package/extensions/container/src/container_extension.sysml +2 -2
  145. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  146. package/extensions/messaging/memo.package.yaml +1 -1
  147. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  148. package/extensions/ros/memo.package.yaml +1 -1
  149. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  150. package/extensions/template/src/extension.sysml +3 -1
  151. package/methodologies/default/memo.package.yaml +1 -1
  152. package/methodologies/gpca/memo.package.yaml +1 -1
  153. package/ontology/memo.package.yaml +1 -1
  154. package/package.json +2 -2
  155. package/profile/memo.package.yaml +1 -1
  156. package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
  157. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  158. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  159. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  160. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  161. package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
  162. package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
  163. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  164. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  165. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  166. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  167. package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
  168. package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
  169. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  170. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
  171. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
  172. package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
  173. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  174. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  175. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  176. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  177. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  178. package/src/artifacts/standards/iec_60812.sysml +21 -22
  179. package/src/artifacts/standards/iec_62304.sysml +150 -169
  180. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  181. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  182. package/src/artifacts/standards/iso_13485.sysml +80 -89
  183. package/src/artifacts/standards/iso_14971.sysml +66 -73
  184. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  185. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  186. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  187. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  188. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  189. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  190. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  191. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  192. package/src/core/common/memo_common.sysml +59 -55
  193. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  194. package/src/core/relationships/memo_relationships.sysml +29 -56
  195. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  196. package/src/methodology/core/memo_core.sysml +0 -10
  197. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  198. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  199. package/src/rules/closure/closure_rules.sysml +22 -20
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  201. package/src/rules/ontology/ontology_invariants.sysml +121 -48
  202. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  203. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
  204. package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
  205. package/src/viewpoints/context/context_viewpoint.sysml +6 -5
  206. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
  207. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
  208. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
  209. package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
  210. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
  211. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
  212. package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
  213. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
  214. package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
  215. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
  216. package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
  217. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
  218. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
  219. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  220. package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
  221. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
  222. package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
  223. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
  224. package/src/viewpoints/software/software_viewpoint.sysml +5 -4
  225. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
  226. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
  227. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  228. package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
  229. package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
  230. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
  231. package/templates/connected-device/memo.package.yaml +2 -0
  232. package/templates/connected-device/model/catalog/project.sysml +3 -1
  233. package/templates/default/memo.package.yaml +2 -0
  234. package/templates/default/model/catalog/project.sysml +3 -1
  235. package/templates/infusion-pump/memo.package.yaml +2 -0
  236. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  237. package/templates/monitoring-device/memo.package.yaml +2 -0
  238. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  239. package/templates/samd/memo.package.yaml +2 -0
  240. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -9,159 +9,160 @@ package memo_viewpoints_catalog {
9
9
  private import memo_core_enumerations::*;
10
10
  private import memo_viewpoints_definitions::*;
11
11
 
12
+ private import memo_core_common::MemoIdentity;
12
13
  // A cataloged viewpoint: the Viewpoint descriptor plus its default
13
14
  // resolution to a standard SysML v2 view kind.
14
15
 
15
16
  // ── Content and context ─────────────────────────────────────
16
- part vpModelContent : Viewpoint {
17
- attribute :>> id = "VP-CAT-001"; attribute :>> name = "ModelContentViewpoint";
17
+ viewpoint vpModelContent : MemoViewpoint {
18
+ @MemoIdentity { :>> providedId = "VP-CAT-001"; } attribute :>> name = "ModelContentViewpoint";
18
19
  attribute :>> purpose = "Browse the model tree and package structure.";
19
20
  attribute :>> defaultViewKind = DiagramViewKind::browser;
20
21
  }
21
- part vpSystemContext : Viewpoint {
22
- attribute :>> id = "VP-CAT-002"; attribute :>> name = "SystemContextViewpoint";
22
+ viewpoint vpSystemContext : MemoViewpoint {
23
+ @MemoIdentity { :>> providedId = "VP-CAT-002"; } attribute :>> name = "SystemContextViewpoint";
23
24
  attribute :>> purpose = "System of interest, actors, external systems, and context exchanges.";
24
25
  attribute :>> defaultViewKind = DiagramViewKind::general;
25
26
  }
26
27
  // ── Operational world ───────────────────────────────────────
27
- part vpUseCase : Viewpoint {
28
- attribute :>> id = "VP-CAT-003"; attribute :>> name = "UseCaseViewpoint";
28
+ viewpoint vpUseCase : MemoViewpoint {
29
+ @MemoIdentity { :>> providedId = "VP-CAT-003"; } attribute :>> name = "UseCaseViewpoint";
29
30
  attribute :>> purpose = "Use cases, initiating users, supporting actors, and motivating needs.";
30
31
  attribute :>> defaultViewKind = DiagramViewKind::general;
31
32
  }
32
- part vpClinicalWorkflow : Viewpoint {
33
- attribute :>> id = "VP-CAT-004"; attribute :>> name = "ClinicalWorkflowViewpoint";
33
+ viewpoint vpClinicalWorkflow : MemoViewpoint {
34
+ @MemoIdentity { :>> providedId = "VP-CAT-004"; } attribute :>> name = "ClinicalWorkflowViewpoint";
34
35
  attribute :>> purpose = "Workflow steps, decisions, parallel work, handoffs, and roles.";
35
36
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
36
37
  }
37
- part vpScenario : Viewpoint {
38
- attribute :>> id = "VP-CAT-005"; attribute :>> name = "ScenarioViewpoint";
38
+ viewpoint vpScenario : MemoViewpoint {
39
+ @MemoIdentity { :>> providedId = "VP-CAT-005"; } attribute :>> name = "ScenarioViewpoint";
39
40
  attribute :>> purpose = "Selected paths through workflows: variants, conditions, variation points.";
40
41
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
41
42
  }
42
43
  // ── Functional ──────────────────────────────────────────────
43
- part vpFunctionalArchitecture : Viewpoint {
44
- attribute :>> id = "VP-CAT-006"; attribute :>> name = "FunctionalArchitectureViewpoint";
44
+ viewpoint vpFunctionalArchitecture : MemoViewpoint {
45
+ @MemoIdentity { :>> providedId = "VP-CAT-006"; } attribute :>> name = "FunctionalArchitectureViewpoint";
45
46
  attribute :>> purpose = "System functions, capabilities, and functional exchanges.";
46
47
  attribute :>> defaultViewKind = DiagramViewKind::general;
47
48
  }
48
- part vpFunctionalFlow : Viewpoint {
49
- attribute :>> id = "VP-CAT-007"; attribute :>> name = "FunctionalFlowViewpoint";
49
+ viewpoint vpFunctionalFlow : MemoViewpoint {
50
+ @MemoIdentity { :>> providedId = "VP-CAT-007"; } attribute :>> name = "FunctionalFlowViewpoint";
50
51
  attribute :>> purpose = "Ordered functional flows and their steps.";
51
52
  attribute :>> defaultViewKind = DiagramViewKind::actionflow;
52
53
  }
53
54
  // ── Logical ─────────────────────────────────────────────────
54
- part vpLogicalArchitecture : Viewpoint {
55
- attribute :>> id = "VP-CAT-008"; attribute :>> name = "LogicalArchitectureViewpoint";
55
+ viewpoint vpLogicalArchitecture : MemoViewpoint {
56
+ @MemoIdentity { :>> providedId = "VP-CAT-008"; } attribute :>> name = "LogicalArchitectureViewpoint";
56
57
  attribute :>> purpose = "Logical components, channels, and allocations.";
57
58
  attribute :>> defaultViewKind = DiagramViewKind::general;
58
59
  }
59
- part vpSystemDecomposition : Viewpoint {
60
- attribute :>> id = "VP-CAT-009"; attribute :>> name = "SystemDecompositionViewpoint";
60
+ viewpoint vpSystemDecomposition : MemoViewpoint {
61
+ @MemoIdentity { :>> providedId = "VP-CAT-009"; } attribute :>> name = "SystemDecompositionViewpoint";
61
62
  attribute :>> purpose = "Composition hierarchy of the system of interest.";
62
63
  attribute :>> defaultViewKind = DiagramViewKind::browser;
63
64
  }
64
- part vpInternalInterconnection : Viewpoint {
65
- attribute :>> id = "VP-CAT-010"; attribute :>> name = "InternalInterconnectionViewpoint";
65
+ viewpoint vpInternalInterconnection : MemoViewpoint {
66
+ @MemoIdentity { :>> providedId = "VP-CAT-010"; } attribute :>> name = "InternalInterconnectionViewpoint";
66
67
  attribute :>> purpose = "Ports, connectors, and exchanges inside a component boundary.";
67
68
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
68
69
  }
69
70
  // ── Implementation ──────────────────────────────────────────
70
- part vpSoftwareModule : Viewpoint {
71
- attribute :>> id = "VP-CAT-011"; attribute :>> name = "SoftwareModuleViewpoint";
71
+ viewpoint vpSoftwareModule : MemoViewpoint {
72
+ @MemoIdentity { :>> providedId = "VP-CAT-011"; } attribute :>> name = "SoftwareModuleViewpoint";
72
73
  attribute :>> purpose = "IEC 62304 module structure: systems, items, units, SOUP.";
73
74
  attribute :>> defaultViewKind = DiagramViewKind::general;
74
75
  }
75
- part vpSoftwareComponents : Viewpoint {
76
- attribute :>> id = "VP-CAT-012"; attribute :>> name = "SoftwareComponentViewpoint";
76
+ viewpoint vpSoftwareComponents : MemoViewpoint {
77
+ @MemoIdentity { :>> providedId = "VP-CAT-012"; } attribute :>> name = "SoftwareComponentViewpoint";
77
78
  attribute :>> purpose = "Runtime component-and-connector structure with concurrency and scheduling.";
78
79
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
79
80
  }
80
- part vpHardwareArchitecture : Viewpoint {
81
- attribute :>> id = "VP-CAT-013"; attribute :>> name = "HardwareArchitectureViewpoint";
81
+ viewpoint vpHardwareArchitecture : MemoViewpoint {
82
+ @MemoIdentity { :>> providedId = "VP-CAT-013"; } attribute :>> name = "HardwareArchitectureViewpoint";
82
83
  attribute :>> purpose = "Electronic/electrical structure and processing platform.";
83
84
  attribute :>> defaultViewKind = DiagramViewKind::general;
84
85
  }
85
- part vpPhysicalArchitecture : Viewpoint {
86
- attribute :>> id = "VP-CAT-014"; attribute :>> name = "PhysicalArchitectureViewpoint";
86
+ viewpoint vpPhysicalArchitecture : MemoViewpoint {
87
+ @MemoIdentity { :>> providedId = "VP-CAT-014"; } attribute :>> name = "PhysicalArchitectureViewpoint";
87
88
  attribute :>> purpose = "Mechanical, fluidic, optical, and other physical realization.";
88
89
  attribute :>> defaultViewKind = DiagramViewKind::general;
89
90
  }
90
- part vpDeviceComposition : Viewpoint {
91
- attribute :>> id = "VP-CAT-015"; attribute :>> name = "DeviceCompositionViewpoint";
91
+ viewpoint vpDeviceComposition : MemoViewpoint {
92
+ @MemoIdentity { :>> providedId = "VP-CAT-015"; } attribute :>> name = "DeviceCompositionViewpoint";
92
93
  attribute :>> purpose = "Device definitions, instances, accessories, and consumables.";
93
94
  attribute :>> defaultViewKind = DiagramViewKind::browser;
94
95
  }
95
- part vpNetworkDeployment : Viewpoint {
96
- attribute :>> id = "VP-CAT-016"; attribute :>> name = "NetworkDeploymentViewpoint";
96
+ viewpoint vpNetworkDeployment : MemoViewpoint {
97
+ @MemoIdentity { :>> providedId = "VP-CAT-016"; } attribute :>> name = "NetworkDeploymentViewpoint";
97
98
  attribute :>> purpose = "Deployment units on processing nodes and network topology.";
98
99
  attribute :>> defaultViewKind = DiagramViewKind::interconnection;
99
100
  }
100
101
  // ── Interaction and behavior ────────────────────────────────
101
- part vpUiFlow : Viewpoint {
102
- attribute :>> id = "VP-CAT-017"; attribute :>> name = "UiFlowViewpoint";
102
+ viewpoint vpUiFlow : MemoViewpoint {
103
+ @MemoIdentity { :>> providedId = "VP-CAT-017"; } attribute :>> name = "UiFlowViewpoint";
103
104
  attribute :>> purpose = "Interaction flows, UI states, and transitions.";
104
105
  attribute :>> defaultViewKind = DiagramViewKind::statetransition;
105
106
  }
106
- part vpStateMode : Viewpoint {
107
- attribute :>> id = "VP-CAT-018"; attribute :>> name = "StateModeViewpoint";
107
+ viewpoint vpStateMode : MemoViewpoint {
108
+ @MemoIdentity { :>> providedId = "VP-CAT-018"; } attribute :>> name = "StateModeViewpoint";
108
109
  attribute :>> purpose = "System states, device modes, and transitions.";
109
110
  attribute :>> defaultViewKind = DiagramViewKind::statetransition;
110
111
  }
111
- part vpSequenceInteraction : Viewpoint {
112
- attribute :>> id = "VP-CAT-019"; attribute :>> name = "SequenceInteractionViewpoint";
112
+ viewpoint vpSequenceInteraction : MemoViewpoint {
113
+ @MemoIdentity { :>> providedId = "VP-CAT-019"; } attribute :>> name = "SequenceInteractionViewpoint";
113
114
  attribute :>> purpose = "Ordered message exchanges between participants in a scenario.";
114
115
  attribute :>> defaultViewKind = DiagramViewKind::sequence;
115
116
  }
116
117
  // ── Assurance ───────────────────────────────────────────────
117
- part vpRequirementsTraceability : Viewpoint {
118
- attribute :>> id = "VP-CAT-020"; attribute :>> name = "RequirementsTraceabilityViewpoint";
118
+ viewpoint vpRequirementsTraceability : MemoViewpoint {
119
+ @MemoIdentity { :>> providedId = "VP-CAT-020"; } attribute :>> name = "RequirementsTraceabilityViewpoint";
119
120
  attribute :>> purpose = "Needs → requirements → architecture → verification trace matrix.";
120
121
  attribute :>> defaultViewKind = DiagramViewKind::grid;
121
122
  }
122
- part vpRiskChain : Viewpoint {
123
- attribute :>> id = "VP-CAT-021"; attribute :>> name = "RiskChainViewpoint";
123
+ viewpoint vpRiskChain : MemoViewpoint {
124
+ @MemoIdentity { :>> providedId = "VP-CAT-021"; } attribute :>> name = "RiskChainViewpoint";
124
125
  attribute :>> purpose = "ISO 14971 chain: hazard → hazardous situation → harm with controls.";
125
126
  attribute :>> defaultViewKind = DiagramViewKind::general;
126
127
  }
127
- part vpCybersecurity : Viewpoint {
128
- attribute :>> id = "VP-CAT-022"; attribute :>> name = "CybersecurityViewpoint";
128
+ viewpoint vpCybersecurity : MemoViewpoint {
129
+ @MemoIdentity { :>> providedId = "VP-CAT-022"; } attribute :>> name = "CybersecurityViewpoint";
129
130
  attribute :>> purpose = "Assets, threats, trust boundaries, and security controls.";
130
131
  attribute :>> defaultViewKind = DiagramViewKind::general;
131
132
  }
132
- part vpHumanFactors : Viewpoint {
133
- attribute :>> id = "VP-CAT-023"; attribute :>> name = "HumanFactorsViewpoint";
133
+ viewpoint vpHumanFactors : MemoViewpoint {
134
+ @MemoIdentity { :>> providedId = "VP-CAT-023"; } attribute :>> name = "HumanFactorsViewpoint";
134
135
  attribute :>> purpose = "Users, tasks, use errors, and hazard-related use scenarios.";
135
136
  attribute :>> defaultViewKind = DiagramViewKind::grid;
136
137
  }
137
- part vpVerificationCoverage : Viewpoint {
138
- attribute :>> id = "VP-CAT-024"; attribute :>> name = "VerificationCoverageViewpoint";
138
+ viewpoint vpVerificationCoverage : MemoViewpoint {
139
+ @MemoIdentity { :>> providedId = "VP-CAT-024"; } attribute :>> name = "VerificationCoverageViewpoint";
139
140
  attribute :>> purpose = "Verification cases against requirements and functions.";
140
141
  attribute :>> defaultViewKind = DiagramViewKind::grid;
141
142
  }
142
- part vpValidationCoverage : Viewpoint {
143
- attribute :>> id = "VP-CAT-025"; attribute :>> name = "ValidationCoverageViewpoint";
143
+ viewpoint vpValidationCoverage : MemoViewpoint {
144
+ @MemoIdentity { :>> providedId = "VP-CAT-025"; } attribute :>> name = "ValidationCoverageViewpoint";
144
145
  attribute :>> purpose = "Validation cases against use cases and critical tasks.";
145
146
  attribute :>> defaultViewKind = DiagramViewKind::grid;
146
147
  }
147
- part vpEvidenceTraceability : Viewpoint {
148
- attribute :>> id = "VP-CAT-026"; attribute :>> name = "EvidenceTraceabilityViewpoint";
148
+ viewpoint vpEvidenceTraceability : MemoViewpoint {
149
+ @MemoIdentity { :>> providedId = "VP-CAT-026"; } attribute :>> name = "EvidenceTraceabilityViewpoint";
149
150
  attribute :>> purpose = "Evidence records back to the cases and elements they support.";
150
151
  attribute :>> defaultViewKind = DiagramViewKind::grid;
151
152
  }
152
153
  // A software sequence diagram is a VIEW conforming to this viewpoint
153
154
  // (ISO/IEC/IEEE 42010): it frames the runtime message ordering between
154
- // SoftwareComponents realizing a functional MemoScenario. The viewpoint is the
155
+ // SoftwareComponents realizing a functional OperativeScenario. The viewpoint is the
155
156
  // reusable spec; the diagram of a specific model is the view.
156
- part vpSoftwareSequence : Viewpoint {
157
- attribute :>> id = "VP-CAT-027"; attribute :>> name = "SoftwareSequenceViewpoint";
157
+ viewpoint vpSoftwareSequence : MemoViewpoint {
158
+ @MemoIdentity { :>> providedId = "VP-CAT-027"; } attribute :>> name = "SoftwareSequenceViewpoint";
158
159
  attribute :>> purpose = "Runtime message ordering between software components along a functional scenario.";
159
160
  attribute :>> defaultViewKind = DiagramViewKind::sequence;
160
161
  }
161
162
  // The first cataloged viewpoint to resolve to `geometry`: screen regions
162
163
  // carry authored RegionBounds, so a geometry view draws modelled facts.
163
- part vpUILayout : Viewpoint {
164
- attribute :>> id = "VP-CAT-028"; attribute :>> name = "UILayoutViewpoint";
164
+ viewpoint vpUILayout : MemoViewpoint {
165
+ @MemoIdentity { :>> providedId = "VP-CAT-028"; } attribute :>> name = "UILayoutViewpoint";
165
166
  attribute :>> purpose = "Captured screens with their marked regions and the UI elements those regions present.";
166
167
  attribute :>> defaultViewKind = DiagramViewKind::geometry;
167
168
  }
@@ -4,11 +4,12 @@ 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 {
8
- attribute :>> id = "VP-CLIN";
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
9
+ viewpoint clinicalViewpoint : MemoViewpoint {
10
+ @MemoIdentity { :>> providedId = "VP-CLIN"; }
9
11
  attribute :>> name = "ClinicalViewpoint";
10
- attribute :>> title = "Clinical Viewpoint";
11
- attribute :>> shortDescription = "Shows clinical context, users, use environment, and clinical evidence.";
12
+ @MemoIdentity { :>> shortDescription = "Shows clinical context, users, use environment, and clinical evidence."; }
12
13
  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
14
  attribute :>> purpose = "Communicate clinical use context and clinical evidence for the device.";
14
15
  attribute :>> audience = (AudienceKind::clinicalEngineer, AudienceKind::regulatoryEngineer);
@@ -4,11 +4,12 @@ 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 {
8
- attribute :>> id = "VP-CTX";
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
9
+ viewpoint contextViewpoint : MemoViewpoint {
10
+ @MemoIdentity { :>> providedId = "VP-CTX"; }
9
11
  attribute :>> name = "ContextViewpoint";
10
- attribute :>> title = "System Context Viewpoint";
11
- attribute :>> shortDescription = "Shows actors, use context, and system boundary.";
12
+ @MemoIdentity { :>> shortDescription = "Shows actors, use context, and system boundary."; }
12
13
  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
14
  attribute :>> purpose = "Communicate operational context and boundaries.";
14
15
  attribute :>> audience = (AudienceKind::systemArchitect);
@@ -29,7 +30,7 @@ package memo_viewpoints_context_context_viewpoint {
29
30
  // boundary picture. Projects derive their own verbs from it and are
30
31
  // picked up through the specialization closure. The three older
31
32
  // relations remain for models authored before it existed.
32
- attribute :>> allowedRelationshipKinds = ("InteractsInContext", "InteractsWith", "flow", "bind", "connect");
33
+ attribute :>> allowedRelationshipKinds = ("InteractsInContext", "connect", "flow", "bind");
33
34
  attribute :>> userExtensible = true;
34
35
  }
35
36
  }
@@ -5,25 +5,26 @@ package memo_viewpoints_context_views_system_context_view {
5
5
  private import memo_core_enumerations::*;
6
6
  private import memo_viewpoints_context_context_viewpoint::*;
7
7
 
8
+ private import memo_core_common::*;
9
+ private import memo_core_common::MemoIdentity;
8
10
  view systemContextView : MemoDiagramView {
9
11
  expose memo_viewpoints_context_views_system_context_view::*;
10
12
  attribute depth = 2;
11
- attribute :>> id = "VIEW-CTX-001";
13
+ @MemoIdentity { :>> providedId = "VIEW-CTX-001"; }
12
14
  attribute :>> name = "SystemContextView";
13
- attribute :>> title = "System Context View";
14
- attribute :>> shortDescription = "Actors, use context, and system boundary.";
15
+ @MemoIdentity { :>> shortDescription = "Actors, use context, and system boundary."; }
15
16
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
17
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
17
18
  attribute :>> diagramType = "bdd";
18
19
  attribute :>> autoPopulate = true;
19
20
  attribute :>> queryDescription = "Include actors, use contexts, and trust boundaries at the system boundary.";
20
21
  part :>> selectionQuery {
21
- attribute :>> id = "QRY-CTX-001";
22
+ @MemoIdentity { :>> providedId = "QRY-CTX-001"; }
22
23
  attribute :>> name = "SystemContextQuery";
23
24
  attribute :>> includeElementKinds = ("Actor", "UseContext", "TrustBoundary");
24
25
  attribute :>> includeLayers = ("context");
25
26
  attribute :>> rationaleText = "Auto-populate the system context view from the context layer.";
26
27
  }
27
- part :>> viewpointDefinition = contextViewpoint;
28
+ ref :>> viewpointDefinition = contextViewpoint;
28
29
  }
29
30
  }
@@ -4,11 +4,12 @@ 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 {
8
- attribute :>> id = "VP-CYB";
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
9
+ viewpoint cybersecurityViewpoint : MemoViewpoint {
10
+ @MemoIdentity { :>> providedId = "VP-CYB"; }
9
11
  attribute :>> name = "CybersecurityViewpoint";
10
- attribute :>> title = "Cybersecurity Viewpoint";
11
- attribute :>> shortDescription = "Shows assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, and mitigations.";
12
+ @MemoIdentity { :>> shortDescription = "Shows assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, and mitigations."; }
12
13
  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
14
  attribute :>> purpose = "Communicate cybersecurity design, threat analysis, and cyber risk posture.";
14
15
  attribute :>> audience = (AudienceKind::securityEngineer);
@@ -20,9 +21,8 @@ package memo_viewpoints_cybersecurity_cybersecurity_viewpoint {
20
21
  attribute :>> includedLayers = ("cybersecurity", "software_structure", "hardware_structure", "interfaces", "risk", "assurance");
21
22
  attribute :>> explorerLane = "assurance";
22
23
  attribute :>> explorerOrder = 3;
23
- attribute :>> allowedElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "MemoScenario[scenarioKind=threat]");
24
+ attribute :>> allowedElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "OperativeScenario[scenarioKind=threat]");
24
25
  attribute :>> allowedRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "Mitigates", "DerivesCyberRequirement", "ImpactsSafety", "CrossesTrustBoundary");
25
- attribute :>> documentUsage = ("Secure Product Development", "Threat Model", "Cybersecurity Risk Assessment", "QMSR");
26
26
  attribute :>> userExtensible = true;
27
27
  }
28
28
  }
@@ -1,12 +1,32 @@
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
- private import Metaobjects::SemanticMetadata;
3
8
  private import ScalarValues::*;
4
9
 
5
10
  private import memo_core_common::*;
6
11
  private import memo_core_enumerations::*;
12
+ private import memo_core_dimensions::*;
13
+ private import memo_core_terminology::*;
7
14
  private import memo_core_relationships::*;
8
15
 
9
- 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. Identity comes from the `@MemoIdentity` metadata carrier
19
+ // rather than a re-declared core: a viewpoint is native requirement-family,
20
+ // not a MemoPart, and metadata crosses metaclasses where inheritance cannot.
21
+ viewpoint def MemoViewpoint :> Views::ViewpointCheck {
22
+ attribute name : String;
23
+ attribute description : String;
24
+ attribute status : ElementStatusKind;
25
+ attribute lifecycleState : LifecycleStateKind;
26
+ attribute realizationStage : RealizationStageKind[0..1];
27
+ attribute crossCuttingConcerns : CrossCuttingConcernKind[0..*];
28
+ attribute applicableStandards : ExternalReference[0..*];
29
+ attribute codes : TerminologyCode[0..*];
10
30
  attribute purpose : String;
11
31
  attribute audience : AudienceKind[*];
12
32
  attribute stage : WorkflowStageKind;
@@ -48,7 +68,19 @@ package memo_viewpoints_definitions {
48
68
  attribute rationaleText : String;
49
69
  }
50
70
 
51
- view def MemoView :> Views::View, DocumentedElement {
71
+ view def MemoView :> Views::View {
72
+ // Identity comes from the `@MemoIdentity` metadata carrier, which
73
+ // annotates any metaclass — so a view stays native SysML without
74
+ // re-declaring the identification core the other bases used to copy.
75
+ attribute name : String;
76
+ attribute description : String;
77
+ attribute status : ElementStatusKind;
78
+ attribute lifecycleState : LifecycleStateKind;
79
+ attribute realizationStage : RealizationStageKind[0..1];
80
+ attribute crossCuttingConcerns : CrossCuttingConcernKind[0..*];
81
+ attribute concerns : ConcernKind[0..*];
82
+ attribute applicableStandards : ExternalReference[0..*];
83
+ attribute codes : TerminologyCode[0..*];
52
84
  attribute outputKind : ViewOutputKind[*];
53
85
  attribute presentationKind : PresentationKind[*];
54
86
  attribute filterExpression : String;
@@ -57,7 +89,7 @@ package memo_viewpoints_definitions {
57
89
  attribute autoPopulate : Boolean;
58
90
  // ISO 42010 conformance is many-to-many: every view has one or more
59
91
  // viewpoints, and a viewpoint may be realized by many reusable views.
60
- part viewpointDefinition : Viewpoint[1..*];
92
+ ref viewpointDefinition : MemoViewpoint[1..*];
61
93
  // Optional grouping within each viewpoint, interpreted by Architect.
62
94
  attribute group : String;
63
95
  ref subjectElement : MemoPart[*];
@@ -4,11 +4,12 @@ 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 {
8
- attribute :>> id = "VP-FUNC";
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
9
+ viewpoint functionalViewpoint : MemoViewpoint {
10
+ @MemoIdentity { :>> providedId = "VP-FUNC"; }
9
11
  attribute :>> name = "FunctionalViewpoint";
10
- attribute :>> title = "Functional Viewpoint";
11
- attribute :>> shortDescription = "Shows system functions, their decomposition, and allocation.";
12
+ @MemoIdentity { :>> shortDescription = "Shows system functions, their decomposition, and allocation."; }
12
13
  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
14
  attribute :>> purpose = "Describe the system's functional decomposition and behavior.";
14
15
  attribute :>> audience = (AudienceKind::systemArchitect);
@@ -20,7 +21,7 @@ package memo_viewpoints_functional_functional_viewpoint {
20
21
  attribute :>> includedLayers = ("functions");
21
22
  attribute :>> explorerLane = "architecture";
22
23
  attribute :>> explorerOrder = 2;
23
- attribute :>> allowedElementKinds = ("SystemFunction", "ComponentFunction", "FunctionalFlow", "FunctionalFlowStep", "MemoScenario[scenarioKind=functional]", "FunctionalExchange");
24
+ attribute :>> allowedElementKinds = ("SystemFunction", "ComponentFunction", "FunctionalFlow", "FunctionalFlowStep", "OperativeScenario[scenarioKind=functional]", "FunctionalExchange");
24
25
  attribute :>> userExtensible = true;
25
26
  }
26
27
  }
@@ -5,25 +5,26 @@ package memo_viewpoints_functional_views_function_allocation_view {
5
5
  private import memo_core_enumerations::*;
6
6
  private import memo_viewpoints_functional_functional_viewpoint::*;
7
7
 
8
+ private import memo_core_common::*;
9
+ private import memo_core_common::MemoIdentity;
8
10
  view functionAllocationView : MemoDiagramView {
9
11
  expose memo_viewpoints_functional_views_function_allocation_view::*;
10
12
  attribute depth = 2;
11
- attribute :>> id = "VIEW-FUNC-002";
13
+ @MemoIdentity { :>> providedId = "VIEW-FUNC-002"; }
12
14
  attribute :>> name = "FunctionAllocationView";
13
- attribute :>> title = "Function Allocation View";
14
- attribute :>> shortDescription = "Functions allocated to logical components.";
15
+ @MemoIdentity { :>> shortDescription = "Functions allocated to logical components."; }
15
16
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
17
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
17
18
  attribute :>> diagramType = "bdd";
18
19
  attribute :>> autoPopulate = true;
19
20
  attribute :>> queryDescription = "Include functions and the logical components they are allocated to.";
20
21
  part :>> selectionQuery {
21
- attribute :>> id = "QRY-FUNC-002";
22
+ @MemoIdentity { :>> providedId = "QRY-FUNC-002"; }
22
23
  attribute :>> name = "FunctionAllocationQuery";
23
24
  attribute :>> includeElementKinds = ("SystemFunction", "ComponentFunction", "LogicalComponent");
24
25
  attribute :>> includeLayers = ("functions", "logical_structure");
25
26
  attribute :>> rationaleText = "Auto-populate function-to-component allocation from the functions and logical structure layers.";
26
27
  }
27
- part :>> viewpointDefinition = functionalViewpoint;
28
+ ref :>> viewpointDefinition = functionalViewpoint;
28
29
  }
29
30
  }
@@ -5,25 +5,26 @@ package memo_viewpoints_functional_views_system_functional_tree_view {
5
5
  private import memo_core_enumerations::*;
6
6
  private import memo_viewpoints_functional_functional_viewpoint::*;
7
7
 
8
+ private import memo_core_common::*;
9
+ private import memo_core_common::MemoIdentity;
8
10
  view systemFunctionalTreeView : MemoDiagramView {
9
11
  expose memo_viewpoints_functional_views_system_functional_tree_view::*;
10
12
  attribute depth = 2;
11
- attribute :>> id = "VIEW-FUNC-001";
13
+ @MemoIdentity { :>> providedId = "VIEW-FUNC-001"; }
12
14
  attribute :>> name = "SystemFunctionalTreeView";
13
- attribute :>> title = "System Functional Tree";
14
- attribute :>> shortDescription = "Hierarchical decomposition of system functions.";
15
+ @MemoIdentity { :>> shortDescription = "Hierarchical decomposition of system functions."; }
15
16
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
17
  attribute :>> presentationKind = (PresentationKind::activityDiagram);
17
18
  attribute :>> diagramType = "act";
18
19
  attribute :>> autoPopulate = true;
19
20
  attribute :>> queryDescription = "Include functions and their decomposition into subfunctions.";
20
21
  part :>> selectionQuery {
21
- attribute :>> id = "QRY-FUNC-001";
22
+ @MemoIdentity { :>> providedId = "QRY-FUNC-001"; }
22
23
  attribute :>> name = "SystemFunctionalTreeQuery";
23
24
  attribute :>> includeElementKinds = ("SystemFunction", "ComponentFunction");
24
25
  attribute :>> includeLayers = ("functions");
25
26
  attribute :>> rationaleText = "Auto-populate the functional tree from the functions layer.";
26
27
  }
27
- part :>> viewpointDefinition = functionalViewpoint;
28
+ ref :>> viewpointDefinition = functionalViewpoint;
28
29
  }
29
30
  }
@@ -4,11 +4,12 @@ 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 {
8
- attribute :>> id = "VP-LOG";
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
9
+ viewpoint logicalArchitectureViewpoint : MemoViewpoint {
10
+ @MemoIdentity { :>> providedId = "VP-LOG"; }
9
11
  attribute :>> name = "LogicalArchitectureViewpoint";
10
- attribute :>> title = "Logical Viewpoint";
11
- attribute :>> shortDescription = "Shows logical decomposition and interfaces.";
12
+ @MemoIdentity { :>> shortDescription = "Shows logical decomposition and interfaces."; }
12
13
  attribute :>> description = "Default viewpoint derived from the logical architecture layer for subsystem structure, responsibilities, and major interactions, independent of physical realization.";
13
14
  attribute :>> purpose = "Describe the system's logical decomposition.";
14
15
  attribute :>> audience = (AudienceKind::systemArchitect);
@@ -5,25 +5,26 @@ package memo_viewpoints_logical_views_logical_architecture_view {
5
5
  private import memo_core_enumerations::*;
6
6
  private import memo_viewpoints_logical_logical_viewpoint::*;
7
7
 
8
+ private import memo_core_common::*;
9
+ private import memo_core_common::MemoIdentity;
8
10
  view logicalArchitectureView : MemoDiagramView {
9
11
  expose memo_viewpoints_logical_views_logical_architecture_view::*;
10
12
  attribute depth = 2;
11
- attribute :>> id = "VIEW-LOG-001";
13
+ @MemoIdentity { :>> providedId = "VIEW-LOG-001"; }
12
14
  attribute :>> name = "LogicalArchitectureView";
13
- attribute :>> title = "Logical Architecture View";
14
- attribute :>> shortDescription = "Logical components and their interfaces.";
15
+ @MemoIdentity { :>> shortDescription = "Logical components and their interfaces."; }
15
16
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
17
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
17
18
  attribute :>> diagramType = "bdd";
18
19
  attribute :>> autoPopulate = true;
19
20
  attribute :>> queryDescription = "Include logical components and the interfaces that connect them.";
20
21
  part :>> selectionQuery {
21
- attribute :>> id = "QRY-LOG-001";
22
+ @MemoIdentity { :>> providedId = "QRY-LOG-001"; }
22
23
  attribute :>> name = "LogicalArchitectureQuery";
23
24
  attribute :>> includeElementKinds = ("LogicalComponent", "Interface");
24
25
  attribute :>> includeLayers = ("logical_structure", "interfaces");
25
26
  attribute :>> rationaleText = "Auto-populate the logical architecture view from the logical structure and interfaces layers.";
26
27
  }
27
- part :>> viewpointDefinition = logicalArchitectureViewpoint;
28
+ ref :>> viewpointDefinition = logicalArchitectureViewpoint;
28
29
  }
29
30
  }
@@ -4,11 +4,12 @@ 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 {
8
- attribute :>> id = "VP-OPS";
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
9
+ viewpoint operationalViewpoint : MemoViewpoint {
10
+ @MemoIdentity { :>> providedId = "VP-OPS"; }
9
11
  attribute :>> name = "OperationalViewpoint";
10
- attribute :>> title = "Operational & Use-Case Viewpoint";
11
- attribute :>> shortDescription = "Shows actors, use contexts, operational scenarios, and system capabilities.";
12
+ @MemoIdentity { :>> shortDescription = "Shows actors, use contexts, operational scenarios, and system capabilities."; }
12
13
  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
14
  attribute :>> purpose = "Communicate how actors interact with the system and which capabilities they invoke.";
14
15
  attribute :>> audience = (AudienceKind::projectLead, AudienceKind::systemArchitect);
@@ -20,7 +21,7 @@ package memo_viewpoints_operational_operational_viewpoint {
20
21
  attribute :>> includedLayers = ("context", "operational", "system");
21
22
  attribute :>> explorerLane = "architecture";
22
23
  attribute :>> explorerOrder = 1;
23
- attribute :>> allowedElementKinds = ("Actor", "UseContext", "OperationalActivity", "MemoScenario[scenarioKind=operative]");
24
+ attribute :>> allowedElementKinds = ("Actor", "UseContext", "OperativeAction", "OperativeScenario[scenarioKind=operative]");
24
25
  attribute :>> userExtensible = true;
25
26
  }
26
27
  }
@@ -5,25 +5,26 @@ package memo_viewpoints_operational_views_use_case_view {
5
5
  private import memo_core_enumerations::*;
6
6
  private import memo_viewpoints_operational_operational_viewpoint::*;
7
7
 
8
+ private import memo_core_common::*;
9
+ private import memo_core_common::MemoIdentity;
8
10
  view useCaseView : MemoDiagramView {
9
11
  expose memo_viewpoints_operational_views_use_case_view::*;
10
12
  attribute depth = 2;
11
- attribute :>> id = "VIEW-OPS-001";
13
+ @MemoIdentity { :>> providedId = "VIEW-OPS-001"; }
12
14
  attribute :>> name = "UseCaseView";
13
- attribute :>> title = "Use Case Overview";
14
- attribute :>> shortDescription = "Actors connected to the operational scenarios and capabilities they invoke.";
15
+ @MemoIdentity { :>> shortDescription = "Actors connected to the operational scenarios and capabilities they invoke."; }
15
16
  attribute :>> outputKind = (ViewOutputKind::diagram);
16
17
  attribute :>> presentationKind = (PresentationKind::custom);
17
18
  attribute :>> diagramType = "ucd";
18
19
  attribute :>> autoPopulate = true;
19
20
  attribute :>> queryDescription = "Include actors, use contexts, and the operational scenarios they participate in.";
20
21
  part :>> selectionQuery {
21
- attribute :>> id = "QRY-OPS-001";
22
+ @MemoIdentity { :>> providedId = "QRY-OPS-001"; }
22
23
  attribute :>> name = "UseCaseQuery";
23
- attribute :>> includeElementKinds = ("Actor", "UseContext", "MemoScenario[scenarioKind=operative]");
24
+ attribute :>> includeElementKinds = ("Actor", "UseContext", "OperativeScenario[scenarioKind=operative]");
24
25
  attribute :>> includeLayers = ("context", "operational");
25
26
  attribute :>> rationaleText = "Auto-populate the use case view from the context and operational layers.";
26
27
  }
27
- part :>> viewpointDefinition = operationalViewpoint;
28
+ ref :>> viewpointDefinition = operationalViewpoint;
28
29
  }
29
30
  }