@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
@@ -8,14 +8,14 @@
8
8
  // ─── A function is a behaviour ───────────────────────────────────────────
9
9
  //
10
10
  // `MemoFunction` and both its specializations are `action def`s. They were
11
- // `part def SystemFunction specializes ArchitectureElement` until Track A0
12
- // removed the reason: relation ends were typed on MemoPart/ArchitectureElement,
11
+ // `part def SystemFunction specializes MemoPart` until Track A0
12
+ // removed the reason: relation ends were typed on part-based types,
13
13
  // KerML forbids a behaviour from specializing a part-based type, and a function
14
14
  // has to be satisfiable, verifiable, and allocatable. So a function was declared
15
- // a part, and a separate `action def SystemAction` carried the behaviour with a
15
+ // a part, and a separate `action def OperativeAction` carried the behaviour with a
16
16
  // `ref performedFunction` stapling the two back together — a reference used in
17
17
  // ZERO example files. The ends are metaclass-neutral now (CR-ONT-060..073), so
18
- // the split has no cause and is gone: SystemAction is merged into the function
18
+ // the split has no cause and is gone: OperativeAction is merged into the function
19
19
  // family, and its `actionKind` moved onto MemoFunction where it was always
20
20
  // describing the function anyway.
21
21
  //
@@ -97,7 +97,7 @@ package memo_architecture_functional_functions {
97
97
  // So this part def is a workaround for a MEMO gap, not a design MEMO is
98
98
  // entitled to. Restoring the two dropped clauses is what would let it
99
99
  // collapse into the flow it stands in for.
100
- part def FunctionalExchange specializes ArchitectureElement {
100
+ part def FunctionalExchange specializes MemoPart {
101
101
  attribute flowKind : FlowKind;
102
102
  attribute latencyBudgetMs : Real;
103
103
  attribute staleAfterMs : Real;
@@ -112,7 +112,7 @@ package memo_architecture_functional_functions {
112
112
 
113
113
  // A reusable functional route through system responsibilities. Functional
114
114
  // flows are part of functional architecture, never logical structure.
115
- part def FunctionalFlow specializes ArchitectureElement {
115
+ part def FunctionalFlow specializes MemoPart {
116
116
  attribute flowCategory : FunctionalFlowKind;
117
117
  attribute endToEndLatencyBudgetMs : String;
118
118
  attribute safetyRelevant : Boolean;
@@ -13,7 +13,17 @@ package memo_architecture_implementation_hardware_common {
13
13
  private import memo_core_enumerations::*;
14
14
  private import memo_core_relationships::*;
15
15
 
16
- part def PhysicalAssembly specializes ArchitectureElement {
16
+ // The shared root of the physical family.
17
+ //
18
+ // `PhysicalAssembly` and `PhysicalComponent` each specialized `MemoPart`
19
+ // directly, so the family had two roots and no single type that means
20
+ // "a physical thing". A containment rule has to name one type, and
21
+ // `conformsTo(MemoPart)` is far too wide — it admits a requirement or a
22
+ // hazard. This is that type, and it carries nothing of its own: the split
23
+ // between an assembly and a component is what the two subtypes are for.
24
+ abstract part def PhysicalElement specializes MemoPart { }
25
+
26
+ part def PhysicalAssembly specializes PhysicalElement {
17
27
  attribute responsibility : String;
18
28
  attribute safetyRole : String;
19
29
  attribute partNumber : String;
@@ -25,7 +35,7 @@ package memo_architecture_implementation_hardware_common {
25
35
  // Retained name from 0.4; an electronics-centred assembly.
26
36
  part def HardwareAssembly specializes PhysicalAssembly;
27
37
 
28
- part def PhysicalComponent specializes ArchitectureElement {
38
+ part def PhysicalComponent specializes PhysicalElement {
29
39
  attribute partNumber : String;
30
40
  attribute materialSummary : String;
31
41
  // ISO 10993-1 contact characterization; required when true.
@@ -78,15 +78,4 @@ package memo_architecture_implementation_software_runtime {
78
78
  // a component belongs to without claiming to describe it.
79
79
  }
80
80
 
81
- connection def ComponentConnects :> MemoRelationship {
82
- attribute protocolSummary : String;
83
- end sourceComponent : SoftwareComponent :>> source;
84
- end targetComponent : SoftwareComponent :>> target;
85
- }
86
- abstract connection componentConnectsLinks : ComponentConnects[*];
87
- metadata def <componentConnects> ComponentConnectsMetadata :> SemanticMetadata {
88
- :> annotatedElement : SysML::ConnectionDefinition;
89
- :> annotatedElement : SysML::ConnectionUsage;
90
- :>> baseType = componentConnectsLinks meta SysML::Usage;
91
- }
92
81
  }
@@ -28,7 +28,7 @@ package memo_architecture_implementation_software_structure {
28
28
  // the term "software item" for this concept, but reserving SoftwareItem
29
29
  // for the native SysML item family keeps structural parts and exchanged
30
30
  // values unambiguous in the model.
31
- abstract part def SoftwareElement specializes ArchitectureElement {
31
+ abstract part def SoftwareElement specializes MemoPart {
32
32
  attribute safetyClass : SafetyClassKind;
33
33
  attribute complexity : ComplexityKind;
34
34
  }
@@ -70,17 +70,17 @@ package memo_architecture_implementation_software_structure {
70
70
  attribute soupClassification : SOUPClassificationKind[0..1];
71
71
  }
72
72
 
73
- part def Algorithm specializes ArchitectureElement {
73
+ part def Algorithm specializes MemoPart {
74
74
  attribute algorithmKind : String;
75
75
  attribute inputSummary : String;
76
76
  attribute outputSummary : String;
77
77
  attribute clinicalPerformanceClaim : String;
78
78
  }
79
- part def DataModel specializes ArchitectureElement {
79
+ part def DataModel specializes MemoPart {
80
80
  attribute schemaReference : String;
81
81
  attribute persistenceScope : String;
82
82
  }
83
- part def ConfigurationArtifact specializes ArchitectureElement {
83
+ part def ConfigurationArtifact specializes MemoPart {
84
84
  attribute configurationScope : String;
85
85
  attribute version : String;
86
86
  }
@@ -89,8 +89,8 @@ package memo_architecture_implementation_software_structure {
89
89
  abstract item def SoftwareItem specializes MemoItem {
90
90
  attribute schemaIdentifier : String;
91
91
  attribute schemaVersion : String;
92
- attribute encoding : String;
93
- attribute timestampRequired : Boolean;
92
+ attribute :>> encoding : String;
93
+ attribute :>> timestampRequired : Boolean;
94
94
  }
95
95
 
96
96
  item def SBOMEntry specializes SoftwareItem {
@@ -108,7 +108,7 @@ package memo_architecture_implementation_software_structure {
108
108
  // Moved out of memo_core_relationships: their ends are typed against
109
109
  // types declared here, and core must not depend on a domain package.
110
110
  connection def DependsOnSoup :> MemoRelationship {
111
- end component : ArchitectureElement :>> source;
111
+ end component : MemoPart :>> source;
112
112
  end soupItem : SoftwareElement :>> target;
113
113
  }
114
114
  abstract connection dependsOnSoupLinks : DependsOnSoup[*];
@@ -110,7 +110,7 @@ package memo_architecture_implementation_ui {
110
110
  enum recovery;
111
111
  }
112
112
 
113
- part def UserInterface specializes ArchitectureElement {
113
+ part def UserInterface specializes MemoPart {
114
114
  attribute modality : String;
115
115
  attribute uiTechnology : String;
116
116
  }
@@ -121,7 +121,7 @@ package memo_architecture_implementation_ui {
121
121
  // "something the user interacts with" rather than against software
122
122
  // specifically. Without it a use error on a knob would be unmodellable,
123
123
  // because ErrorAtElement would only accept a UIElement.
124
- abstract part def InteractionElement specializes ArchitectureElement {
124
+ abstract part def InteractionElement specializes MemoPart {
125
125
  attribute labelText : String;
126
126
  attribute accessibilitySummary : String;
127
127
  // alarm annunciation (optional; IEC 60601-1-8)
@@ -235,7 +235,7 @@ package memo_architecture_implementation_ui {
235
235
  }
236
236
 
237
237
  // ─── Captured evidence ───────────────────────────────────────
238
- // One image of one screen. MemoEvidence, not ArchitectureElement: it
238
+ // One image of one screen. MemoEvidence, not a design element: it
239
239
  // records what a specific build actually displayed at a specific time,
240
240
  // which is the provenance a design review or a usability engineering file
241
241
  // needs before it can rely on the picture. The screen it depicts is an
@@ -258,11 +258,11 @@ package memo_architecture_implementation_ui {
258
258
  }
259
259
 
260
260
  // UI state is presentation state — distinct from system/device state.
261
- part def UIState specializes ArchitectureElement {
261
+ part def UIState specializes MemoPart {
262
262
  attribute displayedInformation : String;
263
263
  attribute availableActions : String;
264
264
  }
265
- part def UIEvent specializes ArchitectureElement {
265
+ part def UIEvent specializes MemoPart {
266
266
  attribute eventSource : String;
267
267
  attribute intent : InteractionIntentKind;
268
268
  }
@@ -274,24 +274,12 @@ package memo_architecture_implementation_ui {
274
274
  }
275
275
 
276
276
  // A reusable dialogue structure through the UI; a selected path through
277
- // it is a MemoScenario with scenarioKind `ui`.
277
+ // it is a OperativeScenario with scenarioKind `ui`.
278
278
  action def InteractionFlow specializes MemoAction {
279
279
  attribute entryPoint : String;
280
280
  attribute exitPoint : String;
281
281
  }
282
282
 
283
- connection def DataBinding :> MemoRelationship {
284
- attribute bindingExpression : String;
285
- attribute refreshPolicy : String;
286
- end boundElement : InteractionElement :>> source;
287
- end dataSource : MemoItem :>> target;
288
- }
289
- abstract connection dataBindingLinks : DataBinding[*];
290
- metadata def <dataBinding> DataBindingMetadata :> SemanticMetadata {
291
- :> annotatedElement : SysML::ConnectionDefinition;
292
- :> annotatedElement : SysML::ConnectionUsage;
293
- :>> baseType = dataBindingLinks meta SysML::Usage;
294
- }
295
283
  // `PresentsState` had zero usages anywhere in the tree (R10-S6). Its
296
284
  // audited native form, `exhibit state`, does not actually fit: `UIState`
297
285
  // is a `part def` with plain string attributes, not a `state def`, and
@@ -320,17 +308,6 @@ package memo_architecture_implementation_ui {
320
308
  // Conflating the two was the mistake that made "clicking takes you to a
321
309
  // child view" look like spatial nesting; it is a separate frame reached
322
310
  // from here, and only this relation says so.
323
- connection def NavigatesTo :> MemoRelationship {
324
- attribute triggerGesture : String;
325
- end sourceElement : UIElement :>> source;
326
- end targetScreen : UIElement :>> target;
327
- }
328
- abstract connection navigatesToLinks : NavigatesTo[*];
329
- metadata def <navigatesTo> NavigatesToMetadata :> SemanticMetadata {
330
- :> annotatedElement : SysML::ConnectionDefinition;
331
- :> annotatedElement : SysML::ConnectionUsage;
332
- :>> baseType = navigatesToLinks meta SysML::Usage;
333
- }
334
311
 
335
312
  // ── §18 traceability ─────────────────────────────────────────
336
313
  connection def ElementTriggersAction :> MemoRelationship {
@@ -356,7 +333,7 @@ package memo_architecture_implementation_ui {
356
333
  :>> baseType = flowServesUseCaseLinks meta SysML::Usage;
357
334
  }
358
335
  // A UI scenario realizes a functional scenario one layer up: each is a
359
- // MemoScenario selected by scenarioKind rather than a separate definition.
336
+ // OperativeScenario selected by scenarioKind rather than a separate definition.
360
337
  connection def ErrorAtElement :> MemoRelationship {
361
338
  end useError : UseError :>> source;
362
339
  end element : InteractionElement :>> target;
@@ -371,7 +348,7 @@ package memo_architecture_implementation_ui {
371
348
  // (confirmation dialog, lockout, guarded control).
372
349
  connection def ControlImplementedBy :> MemoRelationship {
373
350
  end riskControl : RiskControlMeasure :>> source;
374
- end implementingElement : ArchitectureElement :>> target;
351
+ end implementingElement :>> target;
375
352
  }
376
353
  abstract connection controlImplementedByLinks : ControlImplementedBy[*];
377
354
  metadata def <controlImplementedBy> ControlImplementedByMetadata :> SemanticMetadata {
@@ -15,7 +15,9 @@ package memo_architecture_logical_interfaces {
15
15
  // DigitalInterface / SPIInterface / RestInterface … hierarchy: those were
16
16
  // 20+ classes that differed only in the value of `protocol`.
17
17
 
18
- interface def Interface specializes MemoInterface {
18
+ // Specializes the standard library interface as well as MEMO's base,
19
+ // rather than shadowing it — see the note on UseCase.
20
+ interface def Interface specializes MemoInterface, Interfaces::Interface {
19
21
  attribute interfaceKind : InterfaceKind; // semantic + signaling family
20
22
  attribute direction : DirectionKind;
21
23
  attribute protocol : String; // "SPI", "CAN", "Ethernet", "REST", "4-20mA"
@@ -85,7 +87,7 @@ package memo_architecture_logical_interfaces {
85
87
  port def SensorPort specializes DataPort { attribute sensorDomain : String; }
86
88
  port def CommandPort specializes DataPort { attribute commandDomain : String; }
87
89
 
88
- part def ComponentExchange specializes ArchitectureElement {
90
+ part def ComponentExchange specializes MemoPart {
89
91
  attribute exchangeKind : FlowKind;
90
92
  // Metaclass-neutral endpoints. CR-ONT-002 used to read: "Typed
91
93
  // endpoints. A component or a boundary port may terminate an exchange,
@@ -116,7 +116,7 @@ package memo_architecture_logical_structure {
116
116
  // optional so a component carries only the ones its role needs. A channel
117
117
  // claiming independence must still be linked by IndependentOf with its
118
118
  // basis stated.
119
- part def LogicalComponent specializes ArchitectureElement {
119
+ part def LogicalComponent specializes MemoPart {
120
120
  attribute componentRole : ComponentRoleKind;
121
121
  attribute systemType : SystemTypeKind[0..1];
122
122
  attribute responsibility : String;
@@ -163,7 +163,7 @@ package memo_architecture_logical_structure {
163
163
  :>> baseType = logicalConnectorLinks meta SysML::Usage;
164
164
  }
165
165
  // A transfer of a typed item across a connector.
166
- part def LogicalExchange specializes ArchitectureElement {
166
+ part def LogicalExchange specializes MemoPart {
167
167
  attribute contentKind : FlowContentKind;
168
168
  attribute direction : DirectionKind;
169
169
  attribute latencyRequirement : String;
@@ -175,17 +175,17 @@ package memo_architecture_logical_structure {
175
175
  // States and modes of the logical solution (kept distinct from UI state
176
176
  // and from physical device configuration).
177
177
 
178
- part def LogicalBehavior specializes ArchitectureElement {
178
+ part def LogicalBehavior specializes MemoPart {
179
179
  attribute behaviorSummary : String;
180
180
  attribute executionSemantics : String;
181
181
  }
182
182
 
183
183
  // Isolation, fault containment, and trust boundaries (§10).
184
- part def IsolationBoundary specializes ArchitectureElement {
184
+ part def IsolationBoundary specializes MemoPart {
185
185
  attribute boundaryKind : String;
186
186
  attribute isolationMechanism : String;
187
187
  }
188
- part def FaultContainmentRegion specializes ArchitectureElement {
188
+ part def FaultContainmentRegion specializes MemoPart {
189
189
  attribute containmentRationale : String;
190
190
  }
191
191
 
@@ -1,11 +1,11 @@
1
- // Operational activities and user tasks (§7, §17). Activities are behavioral
2
- // concepts (action defs on MemoAction). An OperationalActivity is work
3
- // performed in the operational world; a UserTask is a unit of user work within
4
- // an activity (IEC 62366-1); a critical task is a UserTask whose criticality is
5
- // high/catastrophic — its failure could cause serious harm (FDA HF guidance) and
6
- // it must trace to usability validation.
7
- // Task difficulty belongs to a task performed in a context — never to an
8
- // instrument (TaskDifficultyAssessment).
1
+ // Operational actions (§7, §17). One `OperativeAction` (action def on
2
+ // MemoAction) is a unit of operational work; whether a User or the system
3
+ // performs it is a native `perform` relationship, not a subtype.
4
+ // A critical task is an OperativeAction with high/catastrophic criticality that
5
+ // a User performs — its failure could cause serious harm (IEC 62366-1 / FDA HF
6
+ // guidance) and it must trace to usability validation. Task difficulty belongs
7
+ // to an action performed in a context (TaskDifficultyAssessment), never to an
8
+ // instrument.
9
9
  package memo_architecture_operational_activities {
10
10
  private import Metaobjects::SemanticMetadata;
11
11
  private import ScalarValues::*;
@@ -24,33 +24,25 @@ package memo_architecture_operational_activities {
24
24
  enum extreme;
25
25
  }
26
26
 
27
- action def OperationalActivity specializes MemoAction {
27
+ // One operational action / step. Who performs it — a human actor or the
28
+ // system — is a relationship (native `perform`), not a subtype, so an
29
+ // action can migrate from user- to system-performed (automation, as-is →
30
+ // to-be) without changing type. This one type merges the former
31
+ // OperationalActivity, UserTask, SystemAction and TaskStep: a "user task"
32
+ // is simply an OperativeAction a User performs; finer steps are nested
33
+ // OperativeActions. Human-factors fields (potentialHarm, severityIfFailed,
34
+ // perceptualCue …) are optional, meaningful when a User is the performer.
35
+ action def OperativeAction specializes MemoAction {
28
36
  attribute trigger : String;
29
37
  attribute preCondition : String;
30
38
  attribute postCondition : String;
31
39
  attribute criticality : CriticalityKind;
32
- ref performedBy : OperationalParticipant[0..*];
33
- }
34
-
35
- // A human task. A critical task (IEC 62366-1 / FDA HF guidance §3) is a
36
- // UserTask whose criticality is high or catastrophic — a use error could
37
- // cause serious harm. potentialHarm/severityIfFailed are set only for such
38
- // tasks. Modeled as an attribute, like SystemFunction.criticality.
39
- action def UserTask specializes MemoAction {
40
40
  attribute taskGoal : String;
41
- attribute preCondition : String;
42
- attribute postCondition : String;
43
41
  attribute expectedDuration : String;
44
42
  attribute frequencyOfUse : String;
45
- attribute criticality : CriticalityKind;
46
43
  attribute potentialHarm : String[0..1];
47
44
  attribute severityIfFailed : SeverityKind[0..1];
48
- ref performingUser : User[0..1];
49
- }
50
-
51
- // An elementary perceptual/cognitive/motor step within a user task
52
- // (task analysis granularity: grasp needle, drive needle, tie knot …).
53
- action def TaskStep specializes MemoAction {
45
+ attribute automated : Boolean;
54
46
  attribute perceptualCue : String;
55
47
  attribute feedbackExpected : String;
56
48
  }
@@ -72,7 +64,6 @@ package memo_architecture_operational_activities {
72
64
  attribute assessor : String;
73
65
  attribute assessmentMethod : String;
74
66
 
75
- ref assessedTask : UserTask[0..1];
76
67
  ref userPopulation : User[0..1];
77
68
  ref useEnvironment : UseEnvironment[0..1];
78
69
  ref instrument : MemoPart[0..1];
@@ -81,7 +72,7 @@ package memo_architecture_operational_activities {
81
72
 
82
73
  connection def AssessesDifficulty :> MemoRelationship {
83
74
  end assessment : TaskDifficultyAssessment :>> source;
84
- end task : UserTask :>> target;
75
+ end task : OperativeAction :>> target;
85
76
  }
86
77
  abstract connection assessesDifficultyLinks : AssessesDifficulty[*];
87
78
  metadata def <assessesDifficulty> AssessesDifficultyMetadata :> SemanticMetadata {
@@ -1,7 +1,8 @@
1
- // Operational participants (§4) interact with the system; they are distinct
2
- // from stakeholders (memo_architecture_operational_context_stakeholders), who have concerns about the
3
- // system but need not interact with it. "User" is reserved for a human who
4
- // interacts with the medical device.
1
+ // Operational participants (§4) interact with the system. A stakeholder —
2
+ // someone with a concern about the system who need not interact with it — is
3
+ // a native SysML notion (a Part in a stakeholder membership on a concern or
4
+ // viewpoint), not a separate MEMO type; the same Part may fill both roles.
5
+ // "User" is reserved for a human who interacts with the medical device.
5
6
  package memo_architecture_operational_context_actors {
6
7
  private import ScalarValues::*;
7
8
 
@@ -1,9 +1,9 @@
1
- // ISO/IEC/IEEE 42010 architecture-description core (§4). A stakeholder has
2
- // interests in the system; a Viewpoint frames concerns; a View
3
- // (memo_viewpoints_definitions::MemoView) is governed by a viewpoint within an
4
- // ArchitectureDescription. The same real-world entity may play both the
5
- // Stakeholder and operational-participant concerns stay distinct from the
6
- // architecture-description types below.
1
+ // ISO/IEC/IEEE 42010 architecture-description core (§4): ArchitectureDescription,
2
+ // ModelKind, and CorrespondenceRule below. Stakeholders and concerns — 42010's
3
+ // other cornerstones — are native SysML v2 constructs (stakeholder memberships
4
+ // and `concern def`), used directly rather than reinvented as MEMO types. A
5
+ // View (memo_viewpoints_definitions::MemoView) conforms to a Viewpoint within
6
+ // an ArchitectureDescription.
7
7
  package memo_architecture_operational_context_stakeholders {
8
8
  private import Metaobjects::SemanticMetadata;
9
9
  private import ScalarValues::*;
@@ -12,7 +12,7 @@ package memo_architecture_operational_context_stakeholders {
12
12
  private import memo_core_enumerations::*;
13
13
  private import memo_core_relationships::*;
14
14
  private import memo_architecture_operational_context_actors::*;
15
- part def ArchitectureDescription specializes DocumentedElement {
15
+ part def ArchitectureDescription specializes MemoPart {
16
16
  attribute systemOfInterest : String;
17
17
  attribute version : String;
18
18
  }
@@ -23,7 +23,6 @@ package memo_architecture_operational_context_use_context {
23
23
  attribute environment : String;
24
24
  attribute jurisdiction : String;
25
25
  attribute connectedUse : Boolean;
26
- attribute intendedUseReference : String;
27
26
  }
28
27
 
29
28
  // The physical/organizational environment of use (IEC 62366-1 3.20),
@@ -56,9 +55,9 @@ package memo_architecture_operational_context_use_context {
56
55
  attribute contextSide : ContextSideKind;
57
56
  // The verb, as it should read on the edge ("Directs procedure").
58
57
  attribute interactionLabel : String[0..1];
59
- end contextParticipant : ArchitectureElement :>> source;
58
+ end contextParticipant : MemoPart :>> source;
60
59
  // Untyped: the system of interest may be a part or an operational activity.
61
- end systemOfInterest : ArchitectureElement :>> target;
60
+ end systemOfInterest :>> target;
62
61
  }
63
62
  abstract connection interactsInContextLinks : InteractsInContext[*];
64
63
  metadata def <interactsInContext> InteractsInContextMetadata :> SemanticMetadata {
@@ -67,17 +66,9 @@ package memo_architecture_operational_context_use_context {
67
66
  :>> baseType = interactsInContextLinks meta SysML::Usage;
68
67
  }
69
68
 
70
- connection def InteractsWith :> MemoRelationship {
71
- end contextParticipant : OperationalParticipant :>> source;
72
- // Untyped so operational activities (action def) can be targets as well as parts.
73
- end target;
74
- }
75
- abstract connection interactsWithLinks : InteractsWith[*];
76
- metadata def <interactsWith> InteractsWithMetadata :> SemanticMetadata {
77
- :> annotatedElement : SysML::ConnectionDefinition;
78
- :> annotatedElement : SysML::ConnectionUsage;
79
- :>> baseType = interactsWithLinks meta SysML::Usage;
80
- }
69
+ // `InteractsWith` is native `connect` (2026-08-18): write
70
+ // `connection connect <participant> to <target>;`. It carried no
71
+ // attributes, and the operational-context package already scopes the ends.
81
72
  // `ConnectsPhysically` is native `connect` (R10-S6): write
82
73
  // `connection connect source ::> <a> to target ::> <b>;` — the ordinary
83
74
  // untyped binary connection — instead of a connection def for it.
@@ -16,59 +16,15 @@ package memo_architecture_operational_scenarios {
16
16
  private import memo_architecture_operational_workflows::*;
17
17
  private import memo_architecture_operational_use_cases::*;
18
18
 
19
- enum def ScenarioVariantKind {
19
+ // A scenario is a nominal path or an alternate (exception/recovery) path.
20
+ // Defaults to nominal.
21
+ enum def ScenarioKind {
20
22
  enum nominal;
21
23
  enum alternate;
22
- enum exception;
23
- enum recovery;
24
- }
25
-
26
- enum def OperationalConditionKind {
27
- enum normal;
28
- enum degraded;
29
- enum emergency;
30
- enum maintenance;
31
- enum startup;
32
- enum shutdown;
33
- enum timeout;
34
- enum misuse;
35
- enum foreseeableMisuse;
36
- }
37
-
38
- // `memoAnalysis` and `memoVerification` keep the regulated terms `analysis`
39
- // and `verification` intact but prefixed, because both are SysML v2 reserved
40
- // words and cannot be bare enum names. `validation` is not reserved.
41
- enum def ScenarioPurposeKind {
42
- enum memoAnalysis;
43
- enum design;
44
- enum memoVerification;
45
- enum validation;
46
- enum risk;
47
- enum cybersecurity;
48
- }
49
-
50
- // The architecture/assurance role a scenario plays. These values preserve
51
- // the former named scenario specializations without turning a taxonomy into
52
- // six action definitions.
53
- enum def ScenarioKind {
54
- enum functional;
55
- enum operative;
56
- enum ui;
57
- enum threat;
58
- // `verification` is a SysML v2 reserved word; retain the regulated
59
- // term with the same `memo` prefix used by ScenarioPurposeKind.
60
- enum memoVerification;
61
- enum hazardRelatedUse;
62
24
  }
63
25
 
64
- // Shared scenario foundation. Fields that apply only to one scenario kind
65
- // remain optional here; this keeps the taxonomy queryable without six
66
- // otherwise redundant action definitions.
67
- action def MemoScenario specializes MemoAction {
68
- attribute scenarioKind : ScenarioKind;
69
- attribute variantKind : ScenarioVariantKind;
70
- attribute operationalCondition : OperationalConditionKind;
71
- attribute scenarioPurpose : ScenarioPurposeKind[0..*];
26
+ action def OperativeScenario specializes MemoAction {
27
+ attribute scenarioKind : ScenarioKind default ScenarioKind::nominal;
72
28
  attribute initialState : String;
73
29
  attribute trigger : String;
74
30
  attribute preCondition : String;
@@ -76,21 +32,11 @@ package memo_architecture_operational_scenarios {
76
32
  attribute postCondition : String;
77
33
  attribute pathSummary : String;
78
34
 
79
- ref involvedActors : OperationalParticipant[0..*];
35
+ // The workflow this scenario belongs to is expressed by the workflow
36
+ // (HasScenario); a nominal/alternate pair are scenarios of the same
37
+ // workflow, distinguished by scenarioKind — no baseScenario back-ref.
38
+ // Actors are derived from `perform` on the nested steps, not listed.
80
39
  ref useContext : UseContext[0..1];
81
- // Alternate/exception/recovery scenarios reference their base and the
82
- // point at which behavior diverges — never a copied workflow.
83
- ref baseScenario : MemoScenario[0..1];
84
- attribute variationPoint : String;
85
-
86
- // functional scenario
87
- ref selectedFlow : MemoAction[0..1];
88
- // operative scenario
89
- ref parentWorkflow : OperationalWorkflow[0..1];
90
- ref parentUseCase : UseCase[0..1];
91
- ref activities : OperationalActivity[0..*];
92
- // UI scenario
93
- ref parentFlow : MemoAction[0..1];
94
40
  // threat scenario
95
41
  attribute actorDescription : String;
96
42
  attribute assumptionSummary : String;
@@ -106,45 +52,7 @@ package memo_architecture_operational_scenarios {
106
52
  attribute selectionRationale : String;
107
53
  }
108
54
 
109
- // An actual or hypothetical execution of a scenario (usability test run,
110
- // postmarket incident reconstruction, simulated-use session).
111
- part def ScenarioOccurrence specializes MemoPart {
112
- attribute occurredAt : String;
113
- attribute hypothetical : Boolean;
114
- attribute outcomeSummary : String;
115
- ref executedScenario : MemoScenario[1];
116
- }
117
-
118
- // Ordered selection of a workflow step into a scenario path.
119
- // Selects unifies SelectsStep / SelectsFlow (a scenario selects its path
120
- // element), keyed by selectsKind.
121
- enum def SelectsKind {
122
- enum step;
123
- enum 'flow';
124
- }
125
- connection def Selects :> MemoRelationship {
126
- attribute selectsKind : SelectsKind;
127
- attribute pathOrder : Integer[0..1];
128
- attribute decisionTaken : String[0..1];
129
- end scenario : MemoScenario :>> source;
130
- // A selected path element may be a WorkflowStep action or a flow
131
- // element. Those constructs do not share a MEMO base metaclass.
132
- end selected :>> target;
133
- }
134
- abstract connection selectsLinks : Selects[*];
135
- metadata def <selects> SelectsMetadata :> SemanticMetadata {
136
- :> annotatedElement : SysML::ConnectionDefinition;
137
- :> annotatedElement : SysML::ConnectionUsage;
138
- :>> baseType = selectsLinks meta SysML::Usage;
139
- }
140
- connection def OccursDuring :> MemoRelationship {
141
- end occurrence : ScenarioOccurrence :>> source;
142
- end context : UseContext :>> target;
143
- }
144
- abstract connection occursDuringLinks : OccursDuring[*];
145
- metadata def <occursDuring> OccursDuringMetadata :> SemanticMetadata {
146
- :> annotatedElement : SysML::ConnectionDefinition;
147
- :> annotatedElement : SysML::ConnectionUsage;
148
- :>> baseType = occursDuringLinks meta SysML::Usage;
149
- }
55
+ // A workflow is composed of one or more scenarios (nominal + alternate
56
+ // paths). ScenarioOccurrence/Executes were removed: an actual execution is
57
+ // a native SysML *usage* of the scenario, not a separate def + relation.
150
58
  }