@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
package/README.md CHANGED
@@ -23,7 +23,7 @@ pin an exact release; the package has no repository or runtime dependency on Mem
23
23
  Tools or Memo Architect.
24
24
 
25
25
  ```bash
26
- pnpm add @memoarchitect/ontology@0.8.22
26
+ pnpm add @memoarchitect/ontology@0.8.24
27
27
  ```
28
28
 
29
29
  > **Pre-1.0 notice:** ontology names, relationships, and package layout may
@@ -0,0 +1,3 @@
1
+ name: connected-patient-monitor
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -2,5 +2,5 @@ package memo_examples_connected_patient_monitor_viewpoints_unassigned_views_conn
2
2
  private import memo_examples_connected_patient_monitor::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
5
- view connectedPatientMonitorOverview : MemoDiagramView { expose memo_examples_connected_patient_monitor::*; attribute depth = 2; attribute :>> title = "Connected Patient Monitor Overview"; attribute :>> viewKind = DiagramViewKind::interconnection; attribute :>> diagramType = "ibd"; }
5
+ view connectedPatientMonitorOverview : MemoDiagramView { expose memo_examples_connected_patient_monitor::*; attribute depth = 2; attribute :>> viewKind = DiagramViewKind::interconnection; attribute :>> diagramType = "ibd"; }
6
6
  }
@@ -0,0 +1,3 @@
1
+ name: embedded-infusion-pump
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -1,6 +1,6 @@
1
1
  // Focused example: embedded programmable device — the three software views
2
2
  // (module / runtime / deployment) on a minimal infusion pump.
3
- // SoftwareElement buildsInto DeploymentUnit deploysTo ProcessingNode;
3
+ // SoftwareElement buildsInto SoftwareDeploymentUnit deploysTo ProcessingNode;
4
4
  // SoftwareComponent hostedBy ProcessingNode with scheduling properties.
5
5
  package memo_examples_embedded_infusion_pump {
6
6
  private import ScalarValues::*;
@@ -43,7 +43,7 @@ package memo_examples_embedded_infusion_pump {
43
43
  #refinement dependency rtControlLoop to swInfusionControl;
44
44
 
45
45
  // Deployment view.
46
- part duControlImage : DeploymentUnit {
46
+ part duControlImage : SoftwareDeploymentUnit {
47
47
  attribute :>> id = "EIP-DU-001"; attribute :>> name = "ControlFirmwareImage";
48
48
  attribute :>> unitKind = "signed firmware image";
49
49
  attribute :>> version = "3.1.0";
@@ -2,5 +2,5 @@ package memo_examples_embedded_infusion_pump_viewpoints_unassigned_views_embedde
2
2
  private import memo_examples_embedded_infusion_pump::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
5
- view embeddedInfusionPumpOverview : MemoDiagramView { expose memo_examples_embedded_infusion_pump::*; attribute depth = 2; attribute :>> title = "Embedded Infusion Pump Overview"; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
5
+ view embeddedInfusionPumpOverview : MemoDiagramView { expose memo_examples_embedded_infusion_pump::*; attribute depth = 2; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
6
6
  }
@@ -0,0 +1,3 @@
1
+ name: functional-logical-physical
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -15,7 +15,7 @@ package memo_examples_functional_logical_physical {
15
15
  private import memo_architecture_implementation_hardware_structure::*;
16
16
 
17
17
  // Operational world: what the clinician does.
18
- action actOcclusionResponse : OperationalActivity {
18
+ action actOcclusionResponse : OperativeAction {
19
19
  attribute :>> id = "FLP-ACT-001"; attribute :>> name = "RespondToLineOcclusion";
20
20
  attribute :>> criticality = CriticalityKind::high;
21
21
  }
@@ -2,5 +2,5 @@ package memo_examples_functional_logical_physical_viewpoints_unassigned_views_fu
2
2
  private import memo_examples_functional_logical_physical::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
5
- view functionalLogicalPhysicalOverview : MemoDiagramView { expose memo_examples_functional_logical_physical::*; attribute depth = 2; attribute :>> title = "Function to Physical Realization"; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
5
+ view functionalLogicalPhysicalOverview : MemoDiagramView { expose memo_examples_functional_logical_physical::*; attribute depth = 2; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
6
6
  }
@@ -0,0 +1,3 @@
1
+ name: gpca-pump
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -3,7 +3,9 @@ package memo_examples_gpca_pump_gpca_context {
3
3
 
4
4
  private import memo_architecture_operational_context_actors::*;
5
5
  private import memo_architecture_operational_context_use_context::*;
6
+ private import memo_architecture_operational_structure::*;
6
7
  private import memo_assurance_requirements::*;
8
+ private import memo_assurance_safety_risk::*;
7
9
  private import memo_assurance_human_factors::*;
8
10
  private import memo_core_enumerations::*;
9
11
  private import memo_examples_gpca_pump_gpca_operational::*;
@@ -12,7 +14,6 @@ package memo_examples_gpca_pump_gpca_context {
12
14
  part gpcaIntendedUse : IntendedUse {
13
15
  attribute :>> id = "IU-001";
14
16
  attribute :>> name = "GPCA_IntendedUse";
15
- attribute :>> title = "GPCA Pump Intended Use";
16
17
  attribute :>> shortDescription = "Patient-controlled analgesia infusion of prescribed opioid analgesics.";
17
18
  attribute :>> description = "The GPCA pump delivers a prescribed analgesic drug intravenously at a programmed basal rate, supplemented by square boluses delivered automatically at programmed intervals and by patient-requested bolus doses, subject to lockout intervals and maximum-dose limits.";
18
19
  attribute :>> indication = "Management of acute post-operative or chronic pain requiring titrated intravenous opioid analgesia.";
@@ -20,12 +21,14 @@ package memo_examples_gpca_pump_gpca_context {
20
21
  attribute :>> patientPopulation = "Adult in-patients under clinical supervision.";
21
22
  attribute :>> clinicalBenefit = "Timely, patient-titrated analgesia with lower total opioid consumption than fixed-schedule dosing.";
22
23
  attribute :>> regulatoryClassification = "FDA Class II infusion pump (21 CFR 880.5725); IEC 62304 software safety class C.";
24
+ attribute :>> missionKind = "therapeutic device mission";
25
+ attribute :>> successCriteria = "Drug delivered per prescription; no overdose or undetected under-infusion; every hazardous condition annunciated within its alarm latency budget.";
26
+ attribute :>> operationalContext = "Acute-care hospital ward, fixed (non-ambulatory) location (UC-001).";
23
27
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1-2.3 (GPCA overview, system functions, user characteristics)";
24
28
  }
25
29
  part bolusByProxyMisuse : ReasonablyForeseeableMisuse {
26
30
  attribute :>> id = "RFM-001";
27
31
  attribute :>> name = "BolusRequestBySomeoneOtherThanPatient";
28
- attribute :>> title = "Bolus by proxy";
29
32
  attribute :>> shortDescription = "A caregiver or visitor presses the patient bolus control.";
30
33
  attribute :>> description = "A person other than the patient activates the bolus request control, bypassing the intended patient self-limiting behavior.";
31
34
  attribute :>> misuseContext = "Patient-controlled analgesia in a supervised hospital setting.";
@@ -42,7 +45,6 @@ package memo_examples_gpca_pump_gpca_context {
42
45
  attribute :>> environment = "indoor clinical environment, mains power with battery backup, pole or bed-rail mounted";
43
46
  attribute :>> jurisdiction = "generic (FDA/EU reference model)";
44
47
  attribute :>> connectedUse = true;
45
- attribute :>> intendedUseReference = "IU-001";
46
48
  }
47
49
  // UC-002 (intra-hospital transport) removed: CriSys §2.4 states the
48
50
  // system is used in a fixed location and is not ambulatory.
@@ -81,10 +81,9 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
81
81
  attribute :>> cweReference = "CWE-798";
82
82
  }
83
83
 
84
- action tamperedConfigurationScenario : MemoScenario {
84
+ action tamperedConfigurationScenario : OperativeScenario {
85
85
  attribute :>> id = "SCN-001";
86
86
  attribute :>> name = "TamperedTherapyConfigurationScenario";
87
- attribute :>> scenarioKind = ScenarioKind::threat;
88
87
  attribute :>> description = "An attacker with local access to the maintenance port alters lockout or dose parameters, aiming to bypass safety limits; may enable unsafe therapy delivery or bypass safeguards.";
89
88
  attribute :>> actorDescription = "unauthorized actor with local access to the maintenance port";
90
89
  attribute :>> defaultCategory = ThreatCategoryKind::tampering;
@@ -78,7 +78,7 @@ package memo_examples_gpca_pump_gpca_operational {
78
78
  }
79
79
 
80
80
  // ── Operational activities (therapy lifecycle) ──────────────
81
- action oaPrescribe : OperationalActivity {
81
+ action oaPrescribe : OperativeAction {
82
82
  attribute :>> id = "OA-001";
83
83
  attribute :>> name = "PrescribeTherapy";
84
84
  attribute :>> trigger = "patient requires titrated analgesia";
@@ -86,7 +86,7 @@ package memo_examples_gpca_pump_gpca_operational {
86
86
  attribute :>> postCondition = "prescription with basal rate, bolus volume, lockout, and max dose limits exists";
87
87
  attribute :>> criticality = CriticalityKind::high;
88
88
  }
89
- action oaLoadReservoir : OperationalActivity {
89
+ action oaLoadReservoir : OperativeAction {
90
90
  attribute :>> id = "OA-002";
91
91
  attribute :>> name = "LoadDrugReservoir";
92
92
  attribute :>> trigger = "prescription issued or reservoir empty";
@@ -94,7 +94,7 @@ package memo_examples_gpca_pump_gpca_operational {
94
94
  attribute :>> postCondition = "reservoir mounted, door closed and latched";
95
95
  attribute :>> criticality = CriticalityKind::high;
96
96
  }
97
- action oaProgram : OperationalActivity {
97
+ action oaProgram : OperativeAction {
98
98
  attribute :>> id = "OA-003";
99
99
  attribute :>> name = "ProgramPrescription";
100
100
  attribute :>> trigger = "reservoir loaded";
@@ -102,7 +102,7 @@ package memo_examples_gpca_pump_gpca_operational {
102
102
  attribute :>> postCondition = "prescription entered, checked against pharmacy-database safe values (I 9-I 11), and confirmed by second review";
103
103
  attribute :>> criticality = CriticalityKind::catastrophic;
104
104
  }
105
- action oaStartTherapy : OperationalActivity {
105
+ action oaStartTherapy : OperativeAction {
106
106
  attribute :>> id = "OA-004";
107
107
  attribute :>> name = "StartInfusion";
108
108
  attribute :>> trigger = "prescription confirmed";
@@ -110,7 +110,7 @@ package memo_examples_gpca_pump_gpca_operational {
110
110
  attribute :>> postCondition = "basal infusion running";
111
111
  attribute :>> criticality = CriticalityKind::catastrophic;
112
112
  }
113
- action oaRequestBolus : OperationalActivity {
113
+ action oaRequestBolus : OperativeAction {
114
114
  attribute :>> id = "OA-005";
115
115
  attribute :>> name = "RequestPatientBolus";
116
116
  attribute :>> trigger = "patient presses bolus request button";
@@ -118,7 +118,7 @@ package memo_examples_gpca_pump_gpca_operational {
118
118
  attribute :>> postCondition = "bolus delivered, or request ignored when lockout or max-dose limits apply";
119
119
  attribute :>> criticality = CriticalityKind::catastrophic;
120
120
  }
121
- action oaRespondAlarm : OperationalActivity {
121
+ action oaRespondAlarm : OperativeAction {
122
122
  attribute :>> id = "OA-006";
123
123
  attribute :>> name = "RespondToAlarm";
124
124
  attribute :>> trigger = "audible or visual alarm annunciated";
@@ -126,7 +126,7 @@ package memo_examples_gpca_pump_gpca_operational {
126
126
  attribute :>> postCondition = "cause resolved and therapy resumed, or therapy stopped";
127
127
  attribute :>> criticality = CriticalityKind::catastrophic;
128
128
  }
129
- action oaReviewLog : OperationalActivity {
129
+ action oaReviewLog : OperativeAction {
130
130
  attribute :>> id = "OA-007";
131
131
  attribute :>> name = "ReviewEventLog";
132
132
  attribute :>> trigger = "shift change, incident review, or dose audit";
@@ -134,7 +134,7 @@ package memo_examples_gpca_pump_gpca_operational {
134
134
  attribute :>> postCondition = "delivered doses and alarm history reviewed";
135
135
  attribute :>> criticality = CriticalityKind::medium;
136
136
  }
137
- action oaMaintain : OperationalActivity {
137
+ action oaMaintain : OperativeAction {
138
138
  attribute :>> id = "OA-008";
139
139
  attribute :>> name = "MaintainDevice";
140
140
  attribute :>> trigger = "scheduled maintenance or fault";
@@ -169,8 +169,6 @@ package memo_examples_gpca_pump_gpca_operational {
169
169
  attribute :>> entryCondition = "A valid prescription and prepared reservoir are available.";
170
170
  attribute :>> completionCondition = "Therapy is started with confirmed prescription limits.";
171
171
 
172
- action wsProgram : WorkflowStep { ref :>> performedActivity = oaProgram; }
173
- action wsStart : WorkflowStep { ref :>> performedActivity = oaStartTherapy; }
174
172
  }
175
173
  action wfManageActiveTherapy : OperationalWorkflow {
176
174
  attribute :>> name = "ManageActiveTherapy";
@@ -178,16 +176,15 @@ package memo_examples_gpca_pump_gpca_operational {
178
176
  attribute :>> entryCondition = "Basal therapy is active.";
179
177
  attribute :>> completionCondition = "A bolus is handled or active therapy continues safely.";
180
178
 
181
- action wsRequestBolus : WorkflowStep { ref :>> performedActivity = oaRequestBolus; }
182
179
  // Refinement targets a nested step by its local name — the shorthand's
183
180
  // `to` end does not accept a qualified path — so this is written
184
181
  // inside wsRequestBolus's own owning scope rather than at package
185
182
  // level.
186
- #refinement dependency fcsBolusSense to wsRequestBolus;
187
- #refinement dependency fcsBolusValidate to wsRequestBolus;
188
- #refinement dependency fcsBolusCommand to wsRequestBolus;
189
- #refinement dependency fcsBolusActuate to wsRequestBolus;
190
- #refinement dependency fcsBolusLog to wsRequestBolus;
183
+ #refinement dependency fcsBolusSense to oaRequestBolus;
184
+ #refinement dependency fcsBolusValidate to oaRequestBolus;
185
+ #refinement dependency fcsBolusCommand to oaRequestBolus;
186
+ #refinement dependency fcsBolusActuate to oaRequestBolus;
187
+ #refinement dependency fcsBolusLog to oaRequestBolus;
191
188
  }
192
189
  action wfRespondToTherapyAlarm : OperationalWorkflow {
193
190
  attribute :>> name = "RespondToTherapyAlarm";
@@ -195,15 +192,11 @@ package memo_examples_gpca_pump_gpca_operational {
195
192
  attribute :>> entryCondition = "A therapy alarm or degraded condition is detected.";
196
193
  attribute :>> completionCondition = "The pump is safe and the clinician has resolved or escalated the condition.";
197
194
 
198
- action wsRespondAlarm : WorkflowStep { ref :>> performedActivity = oaRespondAlarm; }
199
- #refinement dependency fcsAlarmSense to wsRespondAlarm;
200
- #refinement dependency fcsAlarmEvaluate to wsRespondAlarm;
201
- #refinement dependency fcsAlarmStopInfusion to wsRespondAlarm;
202
- #refinement dependency fcsAlarmAnnunciate to wsRespondAlarm;
195
+ #refinement dependency fcsAlarmSense to oaRespondAlarm;
196
+ #refinement dependency fcsAlarmEvaluate to oaRespondAlarm;
197
+ #refinement dependency fcsAlarmStopInfusion to oaRespondAlarm;
198
+ #refinement dependency fcsAlarmAnnunciate to oaRespondAlarm;
203
199
  }
204
- connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfPrepareAndStartTherapy to supported ::> ucDeliverPcaTherapy; }
205
- connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfManageActiveTherapy to supported ::> ucDeliverPcaTherapy; }
206
- connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfRespondToTherapyAlarm to supported ::> ucDeliverPcaTherapy; }
207
200
 
208
201
 
209
202
  // ── Operational capabilities ────────────────────────────────
@@ -223,131 +216,90 @@ package memo_examples_gpca_pump_gpca_operational {
223
216
  }
224
217
 
225
218
  // ── Operational scenarios ───────────────────────────────────
226
- action osNominalTherapy : MemoScenario {
219
+ action osNominalTherapy : OperativeScenario {
227
220
  attribute :>> id = "OS-001";
228
221
  attribute :>> name = "NominalTherapySession";
229
- attribute :>> scenarioKind = ScenarioKind::operative;
230
- attribute :>> variantKind = ScenarioVariantKind::nominal;
231
- attribute :>> operationalCondition = OperationalConditionKind::normal;
232
222
  attribute :>> preCondition = "prescription issued, reservoir loaded";
233
223
  attribute :>> postCondition = "therapy completed and stopped by clinician";
234
224
  attribute :>> pathSummary = "Prescribe > load reservoir > program and confirm > start basal > patient boluses within limits > stop therapy > review log.";
235
225
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.2 Main GPCA System Functions";
236
- ref :>> parentWorkflow = wfManageActiveTherapy;
237
- ref :>> parentUseCase = ucDeliverPcaTherapy;
238
- ref :>> activities = oaCompleteNominalTherapy;
239
226
 
240
- action oaCompleteNominalTherapy : OperationalActivity {
227
+ action oaCompleteNominalTherapy : OperativeAction {
241
228
  attribute :>> name = "CompleteNominalTherapy";
242
229
  action deliverWithinLimits; action recordTherapyEvent;
243
230
  first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
244
231
  }
245
232
  }
246
- action osLockoutBolus : MemoScenario {
233
+ action osLockoutBolus : OperativeScenario {
234
+ attribute :>> scenarioKind = ScenarioKind::alternate;
247
235
  attribute :>> id = "OS-002";
248
236
  attribute :>> name = "BolusRequestDuringLockout";
249
- attribute :>> scenarioKind = ScenarioKind::operative;
250
- attribute :>> variantKind = ScenarioVariantKind::alternate;
251
- attribute :>> variationPoint = "patient bolus request during the nominal therapy lockout interval";
252
- attribute :>> operationalCondition = OperationalConditionKind::foreseeableMisuse;
253
237
  attribute :>> preCondition = "basal infusion active; lockout interval running";
254
238
  attribute :>> postCondition = "request ignored, logged; basal continues unchanged";
255
239
  attribute :>> pathSummary = "Patient presses bolus button during lockout > infusion manager rejects request > event logged > no additional drug delivered.";
256
240
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (lockout requirements)";
257
- ref :>> parentWorkflow = wfManageActiveTherapy;
258
- ref :>> parentUseCase = ucDeliverPcaTherapy;
259
- ref :>> baseScenario = osNominalTherapy;
260
- ref :>> activities = oaRejectBolusDuringLockout;
261
241
 
262
- action oaRejectBolusDuringLockout : OperationalActivity {
242
+ action oaRejectBolusDuringLockout : OperativeAction {
263
243
  attribute :>> name = "RejectBolusDuringLockout";
264
244
  action checkLockout; action rejectAndLog;
265
245
  first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
266
246
  }
267
247
  }
268
- action osOcclusionAlarm : MemoScenario {
248
+ action osOcclusionAlarm : OperativeScenario {
249
+ attribute :>> scenarioKind = ScenarioKind::alternate;
269
250
  attribute :>> id = "OS-003";
270
251
  attribute :>> name = "OcclusionDetectedDuringInfusion";
271
- attribute :>> scenarioKind = ScenarioKind::operative;
272
- attribute :>> variantKind = ScenarioVariantKind::exception;
273
- attribute :>> variationPoint = "occlusion detected while nominal infusion is active";
274
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
275
252
  attribute :>> preCondition = "therapy active; downstream line becomes blocked";
276
253
  attribute :>> postCondition = "infusion paused, alarm annunciated, clinician clears occlusion and resumes";
277
254
  attribute :>> pathSummary = "Occlusion sensor exceeds pressure threshold > alarm raised same step > infusion paused > audible and visual annunciation > clinician resolves and resumes.";
278
255
  attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms and Alerts (occlusion)";
279
- ref :>> parentWorkflow = wfRespondToTherapyAlarm;
280
- ref :>> parentUseCase = ucDeliverPcaTherapy;
281
- ref :>> baseScenario = osNominalTherapy;
282
- ref :>> activities = oaRespondToOcclusion;
283
256
 
284
- action oaRespondToOcclusion : OperationalActivity {
257
+ action oaRespondToOcclusion : OperativeAction {
285
258
  attribute :>> name = "RespondToOcclusion";
286
259
  action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
287
260
  first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
288
261
  }
289
262
  }
290
- action osAirInLine : MemoScenario {
263
+ action osAirInLine : OperativeScenario {
264
+ attribute :>> scenarioKind = ScenarioKind::alternate;
291
265
  attribute :>> id = "OS-004";
292
266
  attribute :>> name = "AirInLineDetected";
293
- attribute :>> scenarioKind = ScenarioKind::operative;
294
- attribute :>> variantKind = ScenarioVariantKind::exception;
295
- attribute :>> variationPoint = "air-in-line detected while nominal infusion is active";
296
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
297
267
  attribute :>> preCondition = "therapy active; air bubble enters tubing";
298
268
  attribute :>> postCondition = "infusion stopped before air reaches patient; alarm annunciated";
299
269
  attribute :>> pathSummary = "Air-in-line sensor detects bubble above threshold > transition to PAUSED (KVO flow) > High-priority Air embolism notification > clinician re-primes line and restarts.";
300
270
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Air embolism)";
301
- ref :>> parentWorkflow = wfRespondToTherapyAlarm;
302
- ref :>> parentUseCase = ucDeliverPcaTherapy;
303
- ref :>> baseScenario = osNominalTherapy;
304
- ref :>> activities = oaRespondToAirInLine;
305
271
 
306
- action oaRespondToAirInLine : OperationalActivity {
272
+ action oaRespondToAirInLine : OperativeAction {
307
273
  attribute :>> name = "RespondToAirInLine";
308
274
  action stopOrKvo; action annunciateAir; action reprimeAndRestart;
309
275
  first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
310
276
  }
311
277
  }
312
- action osEmptyReservoir : MemoScenario {
278
+ action osEmptyReservoir : OperativeScenario {
279
+ attribute :>> scenarioKind = ScenarioKind::alternate;
313
280
  attribute :>> id = "OS-005";
314
281
  attribute :>> name = "ReservoirEmptyDuringTherapy";
315
- attribute :>> scenarioKind = ScenarioKind::operative;
316
- attribute :>> variantKind = ScenarioVariantKind::exception;
317
- attribute :>> variationPoint = "reservoir-empty threshold reached during nominal therapy";
318
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
319
282
  attribute :>> preCondition = "therapy active; reservoir volume reaches empty threshold";
320
283
  attribute :>> postCondition = "infusion stopped, alarm raised, reservoir replaced";
321
284
  attribute :>> pathSummary = "Reservoir-empty condition detected > transition to PAUSED (KVO flow) > High-priority Empty Reservoir notification > clinician loads new reservoir > therapy resumed with saved prescription.";
322
285
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Empty Reservoir)";
323
- ref :>> parentWorkflow = wfRespondToTherapyAlarm;
324
- ref :>> parentUseCase = ucDeliverPcaTherapy;
325
- ref :>> baseScenario = osNominalTherapy;
326
- ref :>> activities = oaReplaceEmptyReservoir;
327
286
 
328
- action oaReplaceEmptyReservoir : OperationalActivity {
287
+ action oaReplaceEmptyReservoir : OperativeAction {
329
288
  attribute :>> name = "ReplaceEmptyReservoir";
330
289
  action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
331
290
  first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
332
291
  }
333
292
  }
334
- action osPowerLoss : MemoScenario {
293
+ action osPowerLoss : OperativeScenario {
294
+ attribute :>> scenarioKind = ScenarioKind::alternate;
335
295
  attribute :>> id = "OS-006";
336
296
  attribute :>> name = "MainsPowerLossAndRecovery";
337
- attribute :>> scenarioKind = ScenarioKind::operative;
338
- attribute :>> variantKind = ScenarioVariantKind::recovery;
339
- attribute :>> variationPoint = "mains supply lost during nominal therapy";
340
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
341
297
  attribute :>> preCondition = "therapy active on mains power";
342
298
  attribute :>> postCondition = "therapy continues on battery; prescription preserved across full power loss";
343
299
  attribute :>> pathSummary = "Mains lost > battery takes over with notification > if battery depletes, pump stops safely > on power restore, saved prescription recovered and therapy resumed only after clinician confirmation.";
344
300
  attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.3 Electrical Hazards (battery failure)";
345
- ref :>> parentWorkflow = wfRespondToTherapyAlarm;
346
- ref :>> parentUseCase = ucDeliverPcaTherapy;
347
- ref :>> baseScenario = osNominalTherapy;
348
- ref :>> activities = oaRecoverAfterPowerLoss;
349
301
 
350
- action oaRecoverAfterPowerLoss : OperationalActivity {
302
+ action oaRecoverAfterPowerLoss : OperativeAction {
351
303
  attribute :>> name = "RecoverAfterPowerLoss";
352
304
  action switchToBattery; action restorePrescription; action confirmRestart;
353
305
  first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
@@ -359,4 +311,22 @@ package memo_examples_gpca_pump_gpca_operational {
359
311
  #refinement dependency osAirInLine to ucDeliverPcaTherapy;
360
312
  #refinement dependency osEmptyReservoir to ucDeliverPcaTherapy;
361
313
  #refinement dependency osPowerLoss to ucDeliverPcaTherapy;
314
+
315
+ // ── Operational trace relations ─────────────────────────────
316
+ connection : RealizesUseCase connect realizingWorkflow ::> wfPrepareAndStartTherapy to realizedUseCase ::> ucDeliverPcaTherapy;
317
+ connection : RealizesUseCase connect realizingWorkflow ::> wfManageActiveTherapy to realizedUseCase ::> ucDeliverPcaTherapy;
318
+ connection : RealizesUseCase connect realizingWorkflow ::> wfRespondToTherapyAlarm to realizedUseCase ::> ucDeliverPcaTherapy;
319
+ connection : EnablesUseCase connect enablingCapability ::> ocTitratedAnalgesia to enabledUseCase ::> ucDeliverPcaTherapy;
320
+ connection : EnablesUseCase connect enablingCapability ::> ocFailSafeTherapy to enabledUseCase ::> ucDeliverPcaTherapy;
321
+ connection : RequiresCapability connect requiringIntendedUse ::> gpcaIntendedUse to requiredCapability ::> ocTitratedAnalgesia;
322
+ connection : RequiresCapability connect requiringIntendedUse ::> gpcaIntendedUse to requiredCapability ::> ocFailSafeTherapy;
323
+
324
+
325
+ connection : HasScenario connect owningWorkflow ::> wfManageActiveTherapy to pathScenario ::> osNominalTherapy;
326
+ connection : HasScenario connect owningWorkflow ::> wfManageActiveTherapy to pathScenario ::> osLockoutBolus;
327
+ connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osOcclusionAlarm;
328
+ connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osAirInLine;
329
+ connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osEmptyReservoir;
330
+ connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osPowerLoss;
331
+
362
332
  }
@@ -9,15 +9,9 @@ package memo_examples_gpca_pump_gpca_system {
9
9
  private import memo_architecture_operational_use_cases::*;
10
10
  private import memo_core_common::*;
11
11
 
12
- part gpcaMission : Mission {
13
- attribute :>> id = "MSN-001";
14
- attribute :>> name = "GPCA_Mission";
15
- attribute :>> title = "Safe Patient-Controlled Analgesia";
16
- attribute :>> shortDescription = "Deliver prescribed analgesia with patient-controlled boluses, never exceeding safe dose limits.";
17
- attribute :>> missionKind = "therapeutic device mission";
18
- attribute :>> successCriteria = "Drug delivered per prescription; no overdose or undetected under-infusion; every hazardous condition annunciated within its alarm latency budget.";
19
- attribute :>> operationalContext = "Acute-care hospital ward, fixed (non-ambulatory) location (UC-001).";
20
- }
12
+ // The device's top-level goal is its IntendedUse (gpcaIntendedUse in
13
+ // gpca_context) — a MemoMission. The former separate gpcaMission was
14
+ // retired: "mission" duplicated the regulated intended-use statement.
21
15
 
22
16
  // ── Functional chains ───────────────────────────────────────
23
17
  part fcPatientBolus : FunctionalFlow {
@@ -105,24 +99,17 @@ package memo_examples_gpca_pump_gpca_system {
105
99
  }
106
100
 
107
101
  // ── System scenarios ────────────────────────────────────────
108
- action ssBolusDuringBasal : MemoScenario {
102
+ action ssBolusDuringBasal : OperativeScenario {
109
103
  attribute :>> id = "SS-001";
110
104
  attribute :>> name = "PatientBolusDuringBasal";
111
- attribute :>> scenarioKind = ScenarioKind::functional;
112
- attribute :>> variantKind = ScenarioVariantKind::nominal;
113
- attribute :>> operationalCondition = OperationalConditionKind::normal;
114
105
  attribute :>> preCondition = "BASAL mode active; no REQ 25 ignore condition holds";
115
106
  attribute :>> postCondition = "PATIENT_BOLUS mode entered, bolus delivered, return to BASAL";
116
107
  }
117
- action ssAlarmPause : MemoScenario {
108
+ action ssAlarmPause : OperativeScenario {
109
+ attribute :>> scenarioKind = ScenarioKind::alternate;
118
110
  attribute :>> id = "SS-002";
119
111
  attribute :>> name = "InhibitingNotificationPausesInfusion";
120
- attribute :>> scenarioKind = ScenarioKind::functional;
121
- attribute :>> variantKind = ScenarioVariantKind::exception;
122
- attribute :>> variationPoint = "an infusion-inhibiting notification interrupts active therapy";
123
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
124
112
  attribute :>> preCondition = "any ACTIVE therapy mode; infusion-inhibiting notification detected (REQ 59)";
125
113
  attribute :>> postCondition = "PAUSED mode entered in same execution step at FlowRate_kvo_hd keep-vein-open flow; notification annunciated per REQ 59";
126
- ref :>> baseScenario = ssBolusDuringBasal;
127
114
  }
128
115
  }
@@ -72,9 +72,6 @@ package memo_examples_gpca_pump_gpca_trace {
72
72
  first oaLoadReservoir then oaProgram;
73
73
  first oaProgram then oaStartTherapy;
74
74
  first oaStartTherapy then oaRequestBolus;
75
- connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaStartTherapy to supported ::> ocTitratedAnalgesia; }
76
- connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaRequestBolus to supported ::> ocTitratedAnalgesia; }
77
- connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaRespondAlarm to supported ::> ocFailSafeTherapy; }
78
75
  connection : DerivesFrom connect sourceDriver ::> oaProgram to targetRequirement ::> reqDrugLibraryLimits;
79
76
  connection : DerivesFrom connect sourceDriver ::> oaRequestBolus to targetRequirement ::> reqCs25;
80
77
  connection : DerivesFrom connect sourceDriver ::> oaRespondAlarm to targetRequirement ::> reqCs59;
@@ -18,7 +18,6 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
18
18
  attribute depth = 2;
19
19
  attribute :>> id = "VIEW-CTX-101";
20
20
  attribute :>> name = "GPCA_SystemContextView";
21
- attribute :>> title = "GPCA System Context View";
22
21
  attribute :>> shortDescription = "Actors, use contexts, and external entities at the GPCA system boundary.";
23
22
  attribute :>> description = "Shows the CriSys Fig 2.1 boundary: patient, clinician, prescription, drug reservoir, needle, hospital pharmacy database, and hospital environment around the pump, with directional data flows, physical drug-path connections, and the intended use anchoring the boundary.";
24
23
  attribute :>> outputKind = (ViewOutputKind::diagram);
@@ -28,7 +27,6 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
28
27
  attribute :>> dataSourceDescription = "GPCA context layer: actors, use contexts, intended use, operational entities";
29
28
  attribute :>> autoPopulate = true;
30
29
  attribute :>> queryDescription = "Include actors, use contexts, intended use, and external operational entities.";
31
- attribute :>> documentUsage = ("Architecture Description", "Usability Engineering File");
32
30
  part :>> selectionQuery {
33
31
  attribute :>> id = "QRY-CTX-101";
34
32
  attribute :>> name = "GPCA_SystemContextQuery";
@@ -38,6 +36,6 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
38
36
  attribute :>> selectionExpression = "product == 'GPCA'";
39
37
  attribute :>> rationaleText = "Auto-populate the GPCA context view from the context layer.";
40
38
  }
41
- part :>> viewpointDefinition = contextViewpoint;
39
+ ref :>> viewpointDefinition = contextViewpoint;
42
40
  }
43
41
  }
@@ -19,7 +19,6 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
19
19
  attribute depth = 2;
20
20
  attribute :>> id = "VIEW-CYB-001";
21
21
  attribute :>> name = "GPCA_CybersecurityView";
22
- attribute :>> title = "GPCA Cybersecurity View";
23
22
  attribute :>> shortDescription = "Shows GPCA assets, trust boundaries, threats, vulnerabilities, and mitigations.";
24
23
  attribute :>> description = "Product-specific cybersecurity view intended for secure product development and cross-reference into cybersecurity risk documentation.";
25
24
  attribute :>> outputKind = (ViewOutputKind::diagram);
@@ -29,16 +28,15 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
29
28
  attribute :>> dataSourceDescription = "GPCA cyber assets, threat scenarios, and trace links";
30
29
  attribute :>> autoPopulate = true;
31
30
  attribute :>> queryDescription = "Include cyber assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, mitigations, security requirements, and verification.";
32
- attribute :>> documentUsage = ("Threat Model", "Cybersecurity Risk Assessment", "QMSR");
33
31
  part :>> selectionQuery {
34
32
  attribute :>> id = "QRY-CYB-001";
35
33
  attribute :>> name = "GPCA_CybersecurityQuery";
36
- attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "MemoScenario[scenarioKind=threat]");
34
+ attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "OperativeScenario[scenarioKind=threat]");
37
35
  attribute :>> includeLayers = ("cybersecurity", "risk", "assurance");
38
36
  attribute :>> includeConcerns = (ConcernKind::cybersecurity, ConcernKind::privacy, ConcernKind::safety);
39
37
  attribute :>> selectionExpression = "product == 'GPCA'";
40
38
  attribute :>> rationaleText = "Auto-populate the GPCA cybersecurity view from the cyber layer and cross-layer trace model.";
41
39
  }
42
- part :>> viewpointDefinition = cybersecurityViewpoint;
40
+ ref :>> viewpointDefinition = cybersecurityViewpoint;
43
41
  }
44
42
  }
@@ -10,15 +10,12 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_cyber_as
10
10
  expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_cyber_assessment_view::*;
11
11
  attribute :>> id = "DOC-003";
12
12
  attribute :>> name = "GPCAMemoCybersecurityAssessmentView";
13
- attribute :>> title = "GPCA Cybersecurity Assessment View";
14
13
  attribute :>> shortDescription = "Cybersecurity risk-assessment-oriented document view for GPCA.";
15
14
  attribute :>> description = "Captures GPCA cyber risks, mitigations, security requirements, verification, and safety/privacy traceability for cybersecurity assessment records.";
16
15
  attribute :>> version = "0.1";
17
16
  attribute :>> lifecycleState = LifecycleStateKind::development;
18
17
  attribute :>> marketScope = "generic";
19
- attribute :>> documentUsage = ("Cybersecurity Risk Assessment", "RMF", "QMSR");
20
- attribute :>> sectionIdentifier = "CYB-RA";
21
- part :>> viewpointDefinition = cybersecurityViewpoint;
18
+ ref :>> viewpointDefinition = cybersecurityViewpoint;
22
19
  part :>> selectionQuery {
23
20
  attribute :>> id = "QRY-DOC-009";
24
21
  attribute :>> name = "cyberAssessmentViewQuery";
@@ -10,19 +10,16 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_m
10
10
  expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_model_view::*;
11
11
  attribute :>> id = "DOC-002";
12
12
  attribute :>> name = "GPCACyberThreatModelView";
13
- attribute :>> title = "GPCA Cybersecurity Threat Model View";
14
13
  attribute :>> shortDescription = "Threat-model-oriented document view for GPCA.";
15
14
  attribute :>> description = "Captures GPCA cyber assets, trust boundaries, threats, threat scenarios, vulnerabilities, and mitigations for secure product development records.";
16
15
  attribute :>> version = "0.1";
17
16
  attribute :>> lifecycleState = LifecycleStateKind::development;
18
17
  attribute :>> marketScope = "generic";
19
- attribute :>> documentUsage = ("Threat Model", "QMSR");
20
- attribute :>> sectionIdentifier = "CYB-TM";
21
- part :>> viewpointDefinition = cybersecurityViewpoint;
18
+ ref :>> viewpointDefinition = cybersecurityViewpoint;
22
19
  part :>> selectionQuery {
23
20
  attribute :>> id = "QRY-DOC-008";
24
21
  attribute :>> name = "threatModelViewQuery";
25
- attribute :>> includeElementKinds = ("Threat", "MemoScenario[scenarioKind=threat]", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
22
+ attribute :>> includeElementKinds = ("Threat", "OperativeScenario[scenarioKind=threat]", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
26
23
  attribute :>> includeRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "CrossesTrustBoundary", "Mitigates", "DerivesCyberRequirement");
27
24
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
28
25
  }
@@ -18,7 +18,6 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
18
18
  attribute depth = 2;
19
19
  attribute :>> id = "VIEW-FUN-102";
20
20
  attribute :>> name = "GPCA_FunctionAllocationView";
21
- attribute :>> title = "GPCA Function Allocation View";
22
21
  attribute :>> shortDescription = "Allocation of logical functions to software components and hardware assemblies.";
23
22
  attribute :>> outputKind = (ViewOutputKind::matrix);
24
23
  attribute :>> presentationKind = (PresentationKind::traceMatrix);
@@ -27,7 +26,6 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
27
26
  attribute :>> dataSourceDescription = "AllocatedTo links between functions and architecture elements";
28
27
  attribute :>> autoPopulate = true;
29
28
  attribute :>> queryDescription = "Include logical functions with their AllocatedTo targets.";
30
- attribute :>> documentUsage = ("SDD", "Architecture Description");
31
29
  part :>> selectionQuery {
32
30
  attribute :>> id = "QRY-FUN-102";
33
31
  attribute :>> name = "GPCA_FunctionAllocationQuery";
@@ -37,6 +35,6 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
37
35
  attribute :>> selectionExpression = "product == 'GPCA'";
38
36
  attribute :>> rationaleText = "Show complete function-to-component allocation coverage.";
39
37
  }
40
- part :>> viewpointDefinition = functionalViewpoint;
38
+ ref :>> viewpointDefinition = functionalViewpoint;
41
39
  }
42
40
  }