@memoarchitect/ontology 0.8.22 → 0.8.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) 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/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  4. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  5. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +2 -2
  6. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  7. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  8. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +1 -1
  9. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  10. package/examples/gpca-pump/memo.package.yaml +3 -0
  11. package/examples/gpca-pump/model/catalog/gpca_context.sysml +5 -3
  12. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +1 -2
  13. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +52 -82
  14. package/examples/gpca-pump/model/catalog/gpca_system.sysml +6 -19
  15. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +0 -3
  16. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -3
  17. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
  18. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
  19. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
  20. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
  21. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
  22. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
  23. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +3 -6
  24. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +1 -3
  25. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
  26. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -3
  27. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
  28. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
  29. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -3
  30. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
  31. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -6
  32. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +1 -4
  34. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +1 -4
  35. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -3
  36. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
  37. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -4
  38. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +1 -3
  39. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +2 -5
  40. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +1 -4
  41. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -3
  42. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  43. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
  44. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  45. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  46. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +1 -1
  47. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  48. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  49. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  50. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  51. package/examples/reusable-instrument/memo.package.yaml +3 -0
  52. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +15 -24
  53. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  54. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  55. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  56. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  57. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +1 -1
  58. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  59. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  60. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +36 -49
  61. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  62. package/examples/surgical-robot/memo.package.yaml +3 -0
  63. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  64. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  65. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +2 -3
  66. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +1 -2
  67. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +1 -2
  68. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +1 -2
  69. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +14 -15
  70. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +1 -2
  71. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -2
  72. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +1 -2
  73. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +1 -2
  74. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +1 -2
  75. package/examples/temperature-alarm/memo.package.yaml +3 -0
  76. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +4 -8
  77. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  78. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  79. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  80. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  81. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  82. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
  83. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
  84. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
  85. package/extensions/aadl/memo.package.yaml +1 -1
  86. package/extensions/cloud/memo.package.yaml +1 -1
  87. package/extensions/container/memo.package.yaml +1 -1
  88. package/extensions/container/src/container_extension.sysml +2 -2
  89. package/extensions/messaging/memo.package.yaml +1 -1
  90. package/extensions/ros/memo.package.yaml +1 -1
  91. package/methodologies/default/memo.package.yaml +1 -1
  92. package/methodologies/gpca/memo.package.yaml +1 -1
  93. package/ontology/memo.package.yaml +1 -1
  94. package/package.json +1 -1
  95. package/profile/memo.package.yaml +1 -1
  96. package/src/architecture/functional/behavior/memo_behavior.sysml +4 -4
  97. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  98. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
  99. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  100. package/src/architecture/implementation/ui/memo_ui.sysml +8 -8
  101. package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -1
  102. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  103. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  104. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  105. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  106. package/src/architecture/operational/context/use_context/memo_use_context.sysml +2 -3
  107. package/src/architecture/operational/scenarios/memo_scenarios.sysml +18 -100
  108. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  109. package/src/architecture/operational/use_cases/memo_use_cases.sysml +0 -1
  110. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -22
  111. package/src/architecture/realization/deployment/memo_deployment.sysml +10 -10
  112. package/src/architecture/realization/physical/memo_physical_architecture.sysml +2 -2
  113. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  114. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  115. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  116. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  117. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  118. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  119. package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
  120. package/src/core/common/memo_common.sysml +9 -5
  121. package/src/core/relationships/memo_relationships.sysml +8 -8
  122. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  123. package/src/rules/closure/closure_rules.sysml +20 -20
  124. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  125. package/src/rules/ontology/ontology_invariants.sysml +40 -40
  126. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  127. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -29
  128. package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -2
  129. package/src/viewpoints/context/context_viewpoint.sysml +1 -2
  130. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
  131. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
  132. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -4
  133. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  134. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -2
  135. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -2
  136. package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
  137. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
  138. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  139. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
  140. package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
  141. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
  142. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
  143. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  144. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
  145. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  146. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
  147. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  148. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
  149. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -2
  150. package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
  151. package/src/viewpoints/verification/verification_viewpoint.sysml +1 -2
  152. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -2
  153. package/templates/connected-device/memo.package.yaml +2 -0
  154. package/templates/default/memo.package.yaml +2 -0
  155. package/templates/infusion-pump/memo.package.yaml +2 -0
  156. package/templates/monitoring-device/memo.package.yaml +2 -0
  157. package/templates/samd/memo.package.yaml +2 -0
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-aadl'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: AADL (SAE AS5506) correspondence profile and runtime component families
12
12
  license: MIT
13
13
  tags:
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-cloud'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: Networked services and managed data stores
12
12
  license: MIT
13
13
  tags:
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-container'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: OCI container images and container runtimes as deployment content
12
12
  license: MIT
13
13
  tags:
@@ -12,11 +12,11 @@ package memo_extension_container {
12
12
 
13
13
  private import memo_architecture_realization_deployment::*;
14
14
 
15
- // The built artifact. `BuildsInto` (SoftwareModule -> DeploymentUnit)
15
+ // The built artifact. `BuildsInto` (SoftwareModule -> SoftwareDeploymentUnit)
16
16
  // reaches it unchanged, which is the test that the base is factored
17
17
  // correctly: a whole packaging technology lands without touching a base
18
18
  // relation.
19
- part def ContainerImage specializes DeploymentUnit {
19
+ part def ContainerImage specializes SoftwareDeploymentUnit {
20
20
  // The pullable reference, e.g. "registry.example.com/screening:1.4.0".
21
21
  attribute imageReference : String;
22
22
  attribute registry : String;
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-messaging'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: Publish/subscribe messaging — topics, brokers, and delivery semantics
12
12
  license: MIT
13
13
  tags:
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/extension-ros'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: ROS 2 nodes, messages, topic/service/action interfaces, QoS, and containerized deployment
12
12
  license: MIT
13
13
  tags:
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/methodology-default'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: "MEMO default medical-device methodology \u2014 selects viewpoints/views/DHF documents from @memoarchitect/ontology and adds rules, gates, patterns, profiles, and workflow."
12
12
  license: MIT
13
13
  tags:
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/methodology-gpca'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: "GPCA infusion pump methodology \u2014 subtraction-based tailoring of @memoarchitect/methodology-default for the non-networked prototype variant. Excludes cybersecurity and SOUP."
12
12
  license: MIT
13
13
  tags:
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/ontology'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: "MEMO \u2014 the single canonical medical-device ontology: core semantics, the Arcadia-inspired architecture layers (context, requirements, behavior, structure, interfaces, risk, cybersecurity,\
12
12
  \ assurance, \u2026), compliance, viewpoints, views, and invariant rules. One namespace (memo::), one src/ tree."
13
13
  license: MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memoarchitect/ontology",
3
- "version": "0.8.22",
3
+ "version": "0.8.24",
4
4
  "packageManager": "pnpm@9.15.0",
5
5
  "description": "MEMO \u2014 Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
6
6
  "scripts": {
@@ -7,7 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: '@memoarchitect/medical-modeling-profile'
10
- version: 0.8.22
10
+ version: 0.8.24
11
11
  description: Closure rules and viewpoints for medical device modeling
12
12
  license: MIT
13
13
  tags:
@@ -10,7 +10,7 @@ package memo_architecture_functional_behavior {
10
10
  abstract action def FunctionalAction specializes MemoAction;
11
11
  // State machines and their mode states are SysML v2 states (behaviours), so
12
12
  // they derive from the MemoState foundation, not the part-based
13
- // ArchitectureElement. Transitions stay part-based (below) to keep their
13
+ // MemoPart family. Transitions stay part-based (below) to keep their
14
14
  // traceable safety attributes.
15
15
  // State machines retain their own execution semantics; individual modes
16
16
  // are MemoState usages selected by stateKind.
@@ -23,7 +23,7 @@ package memo_architecture_functional_behavior {
23
23
  // elements are active in one selectable arrangement.
24
24
  // The reference is typed to the shared native state family so a consumer
25
25
  // can navigate from the selected configuration to its governing mode.
26
- part def ModeConfiguration specializes ArchitectureElement {
26
+ part def ModeConfiguration specializes MemoPart {
27
27
  ref activeMode : MemoState[1];
28
28
  ref activeElement : MemoPart[0..*];
29
29
  }
@@ -70,7 +70,7 @@ package memo_architecture_functional_behavior {
70
70
  // annotate a BASE element rather than declare its own type, the SysML-
71
71
  // native answer is `metadata def` + `Metaobjects::SemanticMetadata`, which
72
72
  // is what every MEMO relation already carries since A4.
73
- part def ActivityAction specializes ArchitectureElement {
73
+ part def ActivityAction specializes MemoPart {
74
74
  attribute actionKind : ActionKind;
75
75
  attribute inputSummary : String;
76
76
  attribute outputSummary : String;
@@ -82,7 +82,7 @@ package memo_architecture_functional_behavior {
82
82
  attribute guardCondition : String;
83
83
  attribute weight : String;
84
84
  }
85
- // UI scenarios are MemoScenario usages with scenarioKind `ui`.
85
+ // UI scenarios are OperativeScenario usages with scenarioKind `ui`.
86
86
 
87
87
  part def TimingConstraint specializes VerifiableElement {
88
88
  attribute constraintKind : TimingConstraintKind;
@@ -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,7 @@ 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
+ part def PhysicalAssembly specializes MemoPart {
17
17
  attribute responsibility : String;
18
18
  attribute safetyRole : String;
19
19
  attribute partNumber : String;
@@ -25,7 +25,7 @@ package memo_architecture_implementation_hardware_common {
25
25
  // Retained name from 0.4; an electronics-centred assembly.
26
26
  part def HardwareAssembly specializes PhysicalAssembly;
27
27
 
28
- part def PhysicalComponent specializes ArchitectureElement {
28
+ part def PhysicalComponent specializes MemoPart {
29
29
  attribute partNumber : String;
30
30
  attribute materialSummary : String;
31
31
  // ISO 10993-1 contact characterization; required when true.
@@ -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,7 +274,7 @@ 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;
@@ -356,7 +356,7 @@ package memo_architecture_implementation_ui {
356
356
  :>> baseType = flowServesUseCaseLinks meta SysML::Usage;
357
357
  }
358
358
  // A UI scenario realizes a functional scenario one layer up: each is a
359
- // MemoScenario selected by scenarioKind rather than a separate definition.
359
+ // OperativeScenario selected by scenarioKind rather than a separate definition.
360
360
  connection def ErrorAtElement :> MemoRelationship {
361
361
  end useError : UseError :>> source;
362
362
  end element : InteractionElement :>> target;
@@ -371,7 +371,7 @@ package memo_architecture_implementation_ui {
371
371
  // (confirmation dialog, lockout, guarded control).
372
372
  connection def ControlImplementedBy :> MemoRelationship {
373
373
  end riskControl : RiskControlMeasure :>> source;
374
- end implementingElement : ArchitectureElement :>> target;
374
+ end implementingElement :>> target;
375
375
  }
376
376
  abstract connection controlImplementedByLinks : ControlImplementedBy[*];
377
377
  metadata def <controlImplementedBy> ControlImplementedByMetadata :> SemanticMetadata {
@@ -85,7 +85,7 @@ package memo_architecture_logical_interfaces {
85
85
  port def SensorPort specializes DataPort { attribute sensorDomain : String; }
86
86
  port def CommandPort specializes DataPort { attribute commandDomain : String; }
87
87
 
88
- part def ComponentExchange specializes ArchitectureElement {
88
+ part def ComponentExchange specializes MemoPart {
89
89
  attribute exchangeKind : FlowKind;
90
90
  // Metaclass-neutral endpoints. CR-ONT-002 used to read: "Typed
91
91
  // 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 {