@memoarchitect/ontology 0.4.5 → 0.6.0

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 (255) hide show
  1. package/README.md +5 -4
  2. package/examples/connected-patient-monitor/README.md +7 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
  4. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
  5. package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
  6. package/examples/embedded-infusion-pump/README.md +7 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
  8. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
  9. package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
  10. package/examples/extensions/README.md +16 -0
  11. package/examples/extensions/clinical/memo.package.yaml +9 -0
  12. package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
  13. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
  14. package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
  15. package/examples/extensions/template/memo.package.yaml +9 -0
  16. package/examples/extensions/template/src/extension.sysml +15 -0
  17. package/examples/functional-logical-physical/README.md +7 -0
  18. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
  19. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
  20. package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
  21. package/examples/gpca-pump/README.md +26 -0
  22. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
  23. package/examples/gpca-pump/memo.config.yaml +2 -2
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
  25. package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
  30. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
  31. package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
  32. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  33. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
  34. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
  35. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +139 -21
  36. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
  38. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
  42. package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
  43. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
  44. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
  45. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
  46. package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
  47. package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
  48. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
  49. package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
  50. package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
  51. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
  52. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
  53. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
  54. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
  55. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
  56. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
  57. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
  58. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
  59. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
  60. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
  61. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
  62. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
  63. package/examples/ivd-laboratory-system/README.md +7 -0
  64. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
  65. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
  66. package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
  67. package/examples/manual-surgical-instrument/README.md +7 -0
  68. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
  69. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
  70. package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
  71. package/examples/multidimensional-layers/README.md +7 -0
  72. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
  73. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
  74. package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
  75. package/examples/reusable-instrument/README.md +7 -0
  76. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
  77. package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
  78. package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
  79. package/examples/software-only-medical-device/README.md +7 -0
  80. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
  81. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
  82. package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
  83. package/examples/surgical-closure-workflow/README.md +8 -0
  84. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
  85. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
  86. package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
  87. package/examples/surgical-robot/README.md +7 -0
  88. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
  89. package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
  90. package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
  91. package/examples/sysml-diagram-samples/README.md +32 -0
  92. package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
  93. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
  94. package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
  95. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
  96. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
  97. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
  98. package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
  99. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
  100. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
  101. package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
  102. package/examples/temperature-alarm/README.md +7 -0
  103. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
  104. package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
  105. package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
  106. package/memo.manifest.yaml +4 -1
  107. package/methodologies/default/memo.package.yaml +1 -1
  108. package/methodologies/gpca/memo.package.yaml +4 -4
  109. package/ontology/memo.package.yaml +1 -1
  110. package/ontology/memo.rendering.yaml +37 -0
  111. package/package.json +17 -7
  112. package/profile/memo.package.yaml +1 -1
  113. package/profile/templates/connected-device/starter.sysml +3 -3
  114. package/profile/templates/infusion-pump/starter.sysml +3 -3
  115. package/profile/templates/monitoring-device/starter.sysml +3 -3
  116. package/profile/templates/samd/starter.sysml +3 -3
  117. package/src/architecture/decisions/memo_decisions.sysml +1 -1
  118. package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
  119. package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
  120. package/src/architecture/functional/functions/memo_functions.sysml +81 -0
  121. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
  122. package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
  123. package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
  124. package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
  125. package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
  126. package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
  127. package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
  128. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
  129. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
  130. package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
  131. package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
  132. package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
  133. package/src/architecture/operational/activities/memo_activities.sysml +86 -0
  134. package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
  135. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
  136. package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
  137. package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
  138. package/src/architecture/operational/structure/memo_operational.sysml +26 -0
  139. package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
  140. package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
  141. package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
  142. package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
  143. package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
  144. package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
  145. package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
  146. package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
  147. package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
  148. package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
  149. package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
  150. package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
  151. package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
  152. package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
  153. package/src/compliance/change/memo_change.sysml +2 -2
  154. package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
  155. package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
  156. package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
  157. package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
  158. package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
  159. package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
  160. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
  161. package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
  162. package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
  163. package/src/compliance/iso14971/risk_management_file.sysml +1 -1
  164. package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
  165. package/src/core/common/memo_common.sysml +123 -14
  166. package/src/core/consistency_rules/consistency_rules.sysml +2 -2
  167. package/src/core/dimensions/dimensions.sysml +45 -24
  168. package/src/core/enumerations/memo_enumerations.sysml +11 -16
  169. package/src/core/methodology_scope/methodology_scope.sysml +10 -28
  170. package/src/core/relationships/memo_relationships.sysml +178 -146
  171. package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
  172. package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
  173. package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
  174. package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
  175. package/src/core/terminology/terminology.sysml +35 -0
  176. package/src/memo_namespaces.sysml +247 -302
  177. package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
  178. package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
  179. package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
  180. package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
  181. package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
  182. package/src/rules/closure/closure_rules.sysml +11 -11
  183. package/src/rules/coverage/coverage_rules.sysml +8 -8
  184. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  185. package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
  186. package/src/rules/ontology/ontology_invariants.sysml +133 -0
  187. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  188. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
  189. package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
  190. package/src/viewpoints/context/context_viewpoint.sysml +1 -2
  191. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
  192. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
  193. package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
  194. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  195. package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
  196. package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
  197. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
  198. package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
  199. package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
  200. package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
  201. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  202. package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
  203. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  204. package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
  205. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  206. package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
  207. package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
  208. package/template/memo.package.yaml +1 -1
  209. package/template/src/catalog/starter.sysml +3 -3
  210. package/examples/gpca-pump/model/samples/README.md +0 -24
  211. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
  212. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
  213. package/src/architecture/assurance/memo_assurance.sysml +0 -29
  214. package/src/architecture/context/memo_context.sysml +0 -58
  215. package/src/architecture/functions/memo_functions.sysml +0 -30
  216. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
  217. package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
  218. package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
  219. package/src/architecture/operational/memo_operational.sysml +0 -51
  220. package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
  221. package/src/architecture/system/memo_system_analysis.sysml +0 -54
  222. package/src/artifacts/clinical_safety_report.sysml +0 -12
  223. package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
  224. package/src/artifacts/design_change_log.sysml +0 -12
  225. package/src/artifacts/design_history_file_index.sysml +0 -12
  226. package/src/artifacts/design_input_plan.sysml +0 -12
  227. package/src/artifacts/design_output_plan.sysml +0 -12
  228. package/src/artifacts/evidence_record.sysml +0 -12
  229. package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
  230. package/src/artifacts/hazard_analysis_report.sysml +0 -12
  231. package/src/artifacts/labeling_specification.sysml +0 -12
  232. package/src/artifacts/requirements_specification.sysml +0 -12
  233. package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
  234. package/src/artifacts/risk_management_plan.sysml +0 -12
  235. package/src/artifacts/software_design_description.sysml +0 -12
  236. package/src/artifacts/software_development_plan.sysml +0 -12
  237. package/src/artifacts/soup_list.sysml +0 -12
  238. package/src/artifacts/system_architecture_description.sysml +0 -12
  239. package/src/artifacts/test_protocol.sysml +0 -12
  240. package/src/artifacts/test_report.sysml +0 -12
  241. package/src/artifacts/threat_model_report.sysml +0 -12
  242. package/src/artifacts/usability_engineering_report.sysml +0 -12
  243. package/src/medical_device_library.sysml +0 -100
  244. /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
  245. /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
  246. /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
  247. /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
  248. /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
  249. /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
  250. /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
  251. /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
  252. /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
  253. /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
  254. /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
  255. /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
@@ -1,7 +1,7 @@
1
1
  package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
2
2
  private import ScalarValues::*;
3
3
 
4
- private import memo_architecture_behavior::*;
4
+ private import memo_architecture_functional_behavior::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
7
  // ═════════════════════════════════════════════════════════════
@@ -14,7 +14,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
14
14
  // external trigger. Mode-tree containment edges (Composes)
15
15
  // live in gpca_trace.sysml.
16
16
  // ═════════════════════════════════════════════════════════════
17
- part topLevelModeMachine : BehaviorMachine {
17
+ state topLevelModeMachine : StateMachine {
18
18
  attribute :>> id = "BM-001";
19
19
  attribute :>> name = "TopLevelModeMachine";
20
20
  attribute :>> machineKind = "hierarchical state machine";
@@ -23,7 +23,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
23
23
  }
24
24
 
25
25
  // ── Mode states (Fig 4.1) ───────────────────────────────────
26
- part modeOFF : ModeState {
26
+ state modeOFF : ModeState {
27
27
  attribute :>> id = "MODE-000";
28
28
  attribute :>> name = "OFF";
29
29
  attribute :>> modeKind = "top (default)";
@@ -32,7 +32,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
32
32
  attribute :>> exitCondition = "System_start_prog commanded (REQ 4)";
33
33
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.2";
34
34
  }
35
- part modeON : ModeState {
35
+ state modeON : ModeState {
36
36
  attribute :>> id = "MODE-001";
37
37
  attribute :>> name = "ON";
38
38
  attribute :>> modeKind = "operational parent";
@@ -41,7 +41,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
41
41
  attribute :>> exitCondition = "System_stop_prog: stop infusion, cancel all notifications (REQ 5)";
42
42
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3";
43
43
  }
44
- part modeIDLE : ModeState {
44
+ state modeIDLE : ModeState {
45
45
  attribute :>> id = "MODE-002";
46
46
  attribute :>> name = "ON.IDLE";
47
47
  attribute :>> modeKind = "idle";
@@ -50,7 +50,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
50
50
  attribute :>> exitCondition = "confirmed second Infusion_initiate_prog (REQ 12/13)";
51
51
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4";
52
52
  }
53
- part modeTHERAPY : ModeState {
53
+ state modeTHERAPY : ModeState {
54
54
  attribute :>> id = "MODE-003";
55
55
  attribute :>> name = "ON.THERAPY";
56
56
  attribute :>> modeKind = "therapy parent";
@@ -59,7 +59,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
59
59
  attribute :>> exitCondition = "infusion complete to IDLE (REQ 28); manual stop from PAUSED (REQ 47); system stop (REQ 5)";
60
60
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5";
61
61
  }
62
- part modePAUSED : ModeState {
62
+ state modePAUSED : ModeState {
63
63
  attribute :>> id = "MODE-004";
64
64
  attribute :>> name = "ON.THERAPY.PAUSED";
65
65
  attribute :>> modeKind = "paused (KVO delivery)";
@@ -68,7 +68,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
68
68
  attribute :>> exitCondition = "Infusion_initiate_prog with Inhibited_Infusion_macro = FALSE (REQ 46); Infusion_inhibit_prog to IDLE (REQ 47)";
69
69
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10 (REQ 43-47)";
70
70
  }
71
- part modeACTIVE : ModeState {
71
+ state modeACTIVE : ModeState {
72
72
  attribute :>> id = "MODE-005";
73
73
  attribute :>> name = "ON.THERAPY.ACTIVE";
74
74
  attribute :>> modeKind = "active parent";
@@ -77,7 +77,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
77
77
  attribute :>> exitCondition = "infusion complete (REQ 28); PAUSED via REQ 29/30/37-39";
78
78
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6";
79
79
  }
80
- part modeBASAL : ModeState {
80
+ state modeBASAL : ModeState {
81
81
  attribute :>> id = "MODE-006";
82
82
  attribute :>> name = "ON.THERAPY.ACTIVE.BASAL";
83
83
  attribute :>> modeKind = "active-basal";
@@ -86,7 +86,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
86
86
  attribute :>> exitCondition = "scheduled square bolus (REQ 31); patient bolus granted (REQ 32); Inhibited_Infusion_macro (REQ 37)";
87
87
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.7";
88
88
  }
89
- part modeSQUARE : ModeState {
89
+ state modeSQUARE : ModeState {
90
90
  attribute :>> id = "MODE-007";
91
91
  attribute :>> name = "ON.THERAPY.ACTIVE.SQUARE_BOLUS";
92
92
  attribute :>> modeKind = "active-square-bolus (auto-scheduled)";
@@ -95,7 +95,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
95
95
  attribute :>> exitCondition = "scheduled end or Inhibited_Bolus_macro (REQ 34); patient bolus granted (REQ 33); inhibits (REQ 39)";
96
96
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.8";
97
97
  }
98
- part modePBOLUS : ModeState {
98
+ state modePBOLUS : ModeState {
99
99
  attribute :>> id = "MODE-008";
100
100
  attribute :>> name = "ON.THERAPY.ACTIVE.PATIENT_BOLUS";
101
101
  attribute :>> modeKind = "active-patient-bolus";
@@ -1,11 +1,11 @@
1
1
  package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
2
2
  private import ScalarValues::*;
3
3
 
4
- private import memo_architecture_functions::*;
4
+ private import memo_architecture_functional_functions::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
7
  // ── Logical functions ───────────────────────────────────────
8
- part fnAcquireSensors : LogicalFunction {
8
+ part fnAcquireSensors : SystemFunction {
9
9
  attribute :>> id = "FUNC-001";
10
10
  attribute :>> name = "AcquireSensorData";
11
11
  attribute :>> functionCategory = "sensing";
@@ -14,7 +14,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
14
14
  attribute :>> concernKind = ConcernKind::safety;
15
15
  attribute :>> criticality = CriticalityKind::catastrophic;
16
16
  }
17
- part fnValidatePrescription : LogicalFunction {
17
+ part fnValidatePrescription : SystemFunction {
18
18
  attribute :>> id = "FUNC-002";
19
19
  attribute :>> name = "ValidatePrescription";
20
20
  attribute :>> functionCategory = "configuration";
@@ -23,7 +23,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
23
23
  attribute :>> concernKind = ConcernKind::safety;
24
24
  attribute :>> criticality = CriticalityKind::catastrophic;
25
25
  }
26
- part fnMonitorAlarm : LogicalFunction {
26
+ part fnMonitorAlarm : SystemFunction {
27
27
  attribute :>> id = "FUNC-003";
28
28
  attribute :>> name = "MonitorExceptionalConditions";
29
29
  attribute :>> functionCategory = "alarm";
@@ -32,7 +32,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
32
32
  attribute :>> concernKind = ConcernKind::safety;
33
33
  attribute :>> criticality = CriticalityKind::catastrophic;
34
34
  }
35
- part fnAnnunciate : LogicalFunction {
35
+ part fnAnnunciate : SystemFunction {
36
36
  attribute :>> id = "FUNC-004";
37
37
  attribute :>> name = "AnnunciateAlarms";
38
38
  attribute :>> functionCategory = "alarm";
@@ -41,7 +41,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
41
41
  attribute :>> concernKind = ConcernKind::safety;
42
42
  attribute :>> criticality = CriticalityKind::high;
43
43
  }
44
- part fnManageInfusion : LogicalFunction {
44
+ part fnManageInfusion : SystemFunction {
45
45
  attribute :>> id = "FUNC-005";
46
46
  attribute :>> name = "ManageInfusion";
47
47
  attribute :>> functionCategory = "infusion";
@@ -50,7 +50,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
50
50
  attribute :>> concernKind = ConcernKind::safety;
51
51
  attribute :>> criticality = CriticalityKind::catastrophic;
52
52
  }
53
- part fnEnforceLimits : LogicalFunction {
53
+ part fnEnforceLimits : SystemFunction {
54
54
  attribute :>> id = "FUNC-006";
55
55
  attribute :>> name = "EnforceDoseLimits";
56
56
  attribute :>> functionCategory = "infusion";
@@ -59,7 +59,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
59
59
  attribute :>> concernKind = ConcernKind::safety;
60
60
  attribute :>> criticality = CriticalityKind::catastrophic;
61
61
  }
62
- part fnCommandPump : LogicalFunction {
62
+ part fnCommandPump : SystemFunction {
63
63
  attribute :>> id = "FUNC-007";
64
64
  attribute :>> name = "CommandPumpMotor";
65
65
  attribute :>> functionCategory = "actuation";
@@ -68,7 +68,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
68
68
  attribute :>> concernKind = ConcernKind::safety;
69
69
  attribute :>> criticality = CriticalityKind::catastrophic;
70
70
  }
71
- part fnLogEvents : LogicalFunction {
71
+ part fnLogEvents : SystemFunction {
72
72
  attribute :>> id = "FUNC-008";
73
73
  attribute :>> name = "LogTherapyEvents";
74
74
  attribute :>> functionCategory = "logging";
@@ -77,7 +77,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
77
77
  attribute :>> concernKind = ConcernKind::regulatory;
78
78
  attribute :>> criticality = CriticalityKind::medium;
79
79
  }
80
- part fnManagePower : LogicalFunction {
80
+ part fnManagePower : SystemFunction {
81
81
  attribute :>> id = "FUNC-009";
82
82
  attribute :>> name = "ManagePower";
83
83
  attribute :>> functionCategory = "platform";
@@ -86,7 +86,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
86
86
  attribute :>> concernKind = ConcernKind::reliability;
87
87
  attribute :>> criticality = CriticalityKind::high;
88
88
  }
89
- part fnPresentStatus : LogicalFunction {
89
+ part fnPresentStatus : SystemFunction {
90
90
  attribute :>> id = "FUNC-010";
91
91
  attribute :>> name = "PresentStatus";
92
92
  attribute :>> functionCategory = "user-interface";
@@ -95,7 +95,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
95
95
  attribute :>> concernKind = ConcernKind::usability;
96
96
  attribute :>> criticality = CriticalityKind::high;
97
97
  }
98
- part fnSelfTest : LogicalFunction {
98
+ part fnSelfTest : SystemFunction {
99
99
  attribute :>> id = "FUNC-011";
100
100
  attribute :>> name = "ExecuteSelfTest";
101
101
  attribute :>> functionCategory = "platform";
@@ -106,7 +106,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
106
106
  }
107
107
 
108
108
  // ── Logical flows ───────────────────────────────────────────
109
- part lfSensorAcquisition : LogicalFlow {
109
+ part lfSensorAcquisition : FunctionalExchange {
110
110
  attribute :>> id = "LF-001";
111
111
  attribute :>> name = "SensorAcquisitionFlow";
112
112
  attribute :>> flowKind = FlowKind::measurement;
@@ -114,8 +114,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
114
114
  attribute :>> latencyBudgetMs = 20.0;
115
115
  attribute :>> staleAfterMs = 40.0;
116
116
  attribute :>> integrityLevel = "class C data path";
117
+ ref :>> sourceFunction = fnAcquireSensors;
118
+ ref :>> targetFunction = fnMonitorAlarm;
117
119
  }
118
- part lfFlowCommand : LogicalFlow {
120
+ part lfFlowCommand : FunctionalExchange {
119
121
  attribute :>> id = "LF-002";
120
122
  attribute :>> name = "FlowCommandFlow";
121
123
  attribute :>> flowKind = FlowKind::command;
@@ -123,8 +125,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
123
125
  attribute :>> latencyBudgetMs = 20.0;
124
126
  attribute :>> staleAfterMs = 20.0;
125
127
  attribute :>> integrityLevel = "class C command path";
128
+ ref :>> sourceFunction = fnManageInfusion;
129
+ ref :>> targetFunction = fnCommandPump;
126
130
  }
127
- part lfAlarmSignal : LogicalFlow {
131
+ part lfAlarmSignal : FunctionalExchange {
128
132
  attribute :>> id = "LF-003";
129
133
  attribute :>> name = "AlarmSignalFlow";
130
134
  attribute :>> flowKind = FlowKind::alarm;
@@ -132,8 +136,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
132
136
  attribute :>> latencyBudgetMs = 20.0;
133
137
  attribute :>> staleAfterMs = 20.0;
134
138
  attribute :>> integrityLevel = "class C alarm path; same-step delivery to infusion manager";
139
+ ref :>> sourceFunction = fnMonitorAlarm;
140
+ ref :>> targetFunction = fnAnnunciate;
135
141
  }
136
- part lfPrescriptionEntry : LogicalFlow {
142
+ part lfPrescriptionEntry : FunctionalExchange {
137
143
  attribute :>> id = "LF-004";
138
144
  attribute :>> name = "PrescriptionEntryFlow";
139
145
  attribute :>> flowKind = FlowKind::configuration;
@@ -141,10 +147,12 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
141
147
  attribute :>> latencyBudgetMs = 500.0;
142
148
  attribute :>> staleAfterMs = 0.0;
143
149
  attribute :>> integrityLevel = "confirmed double-entry path";
150
+ ref :>> targetFunction = fnValidatePrescription;
144
151
  }
145
152
 
146
153
  // ── Exchange item definitions ───────────────────────────────
147
- part ddPrescription : DataDefinition {
154
+ item ddPrescription : InterfaceItem {
155
+ attribute :>> itemKind = InterfaceItemKind::data;
148
156
  attribute :>> id = "DD-001";
149
157
  attribute :>> name = "PrescriptionRecord";
150
158
  attribute :>> semantics = "patient id, drug name, concentration, VTBI total, duration total, basal flow rate, square bolus rate/duration/interval, patient bolus rate/duration/lockout period, max boluses per hour (DD-005..DD-017)";
@@ -158,7 +166,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
158
166
  attribute :>> availabilityClass = "must survive power loss";
159
167
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
160
168
  }
161
- part ddBolusRequest : DataDefinition {
169
+ item ddBolusRequest : InterfaceItem {
170
+ attribute :>> itemKind = InterfaceItemKind::data;
162
171
  attribute :>> id = "DD-002";
163
172
  attribute :>> name = "BolusRequestSignal";
164
173
  attribute :>> semantics = "debounced patient pendant press event";
@@ -168,7 +177,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
168
177
  attribute :>> confidentialityClass = "none";
169
178
  attribute :>> availabilityClass = "sampled every step";
170
179
  }
171
- part ddSensorVector : DataDefinition {
180
+ item ddSensorVector : InterfaceItem {
181
+ attribute :>> itemKind = InterfaceItemKind::data;
172
182
  attribute :>> id = "DD-003";
173
183
  attribute :>> name = "SensorStatusVector";
174
184
  attribute :>> semantics = "air-in-line, occlusion pressure, reservoir volume, door state, flow measurement, battery level, CPU/memory status";
@@ -178,7 +188,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
178
188
  attribute :>> confidentialityClass = "none";
179
189
  attribute :>> availabilityClass = "stale after two missed steps";
180
190
  }
181
- part ddEventRecord : DataDefinition {
191
+ item ddEventRecord : InterfaceItem {
192
+ attribute :>> itemKind = InterfaceItemKind::data;
182
193
  attribute :>> id = "DD-004";
183
194
  attribute :>> name = "TherapyEventRecord";
184
195
  attribute :>> semantics = "timestamped dose, alarm, mode, and configuration events";
@@ -188,14 +199,16 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
188
199
  attribute :>> confidentialityClass = "patient-identifiable";
189
200
  attribute :>> availabilityClass = "retained 90 days";
190
201
  }
191
- part cdFlowCommand : ControlDefinition {
202
+ item cdFlowCommand : InterfaceItem {
203
+ attribute :>> itemKind = InterfaceItemKind::command;
192
204
  attribute :>> id = "CD-001";
193
205
  attribute :>> name = "FlowCommand";
194
206
  attribute :>> controlType = "commanded flow rate with enable interlock";
195
207
  attribute :>> timeoutMs = 40.0;
196
208
  attribute :>> retryPolicy = "no retry; missing command forces zero flow";
197
209
  }
198
- part cdAlarmSignal : ControlDefinition {
210
+ item cdAlarmSignal : InterfaceItem {
211
+ attribute :>> itemKind = InterfaceItemKind::command;
199
212
  attribute :>> id = "CD-002";
200
213
  attribute :>> name = "AlarmSignal";
201
214
  attribute :>> controlType = "priority-coded alarm assertion (level 1 stops infusion, level 2 warns)";
@@ -1,7 +1,10 @@
1
1
  package memo_examples_gpca_pump_model_catalog_gpca_context {
2
2
  private import ScalarValues::*;
3
3
 
4
- private import memo_architecture_context::*;
4
+ private import memo_architecture_operational_context_actors::*;
5
+ private import memo_architecture_operational_context_use_context::*;
6
+ private import memo_assurance_requirements::*;
7
+ private import memo_assurance_human_factors::*;
5
8
  private import memo_core_enumerations::*;
6
9
 
7
10
  // ── Intended use (ISO 14971 §5.2, IEC 62366-1) ──────────────
@@ -18,6 +21,17 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
18
21
  attribute :>> regulatoryClassification = "FDA Class II infusion pump (21 CFR 880.5725); IEC 62304 software safety class C.";
19
22
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1-2.3 (GPCA overview, system functions, user characteristics)";
20
23
  }
24
+ part bolusByProxyMisuse : ReasonablyForeseeableMisuse {
25
+ attribute :>> id = "RFM-001";
26
+ attribute :>> name = "BolusRequestBySomeoneOtherThanPatient";
27
+ attribute :>> title = "Bolus by proxy";
28
+ attribute :>> shortDescription = "A caregiver or visitor presses the patient bolus control.";
29
+ attribute :>> longDescription = "A person other than the patient activates the bolus request control, bypassing the intended patient self-limiting behavior.";
30
+ attribute :>> misuseContext = "Patient-controlled analgesia in a supervised hospital setting.";
31
+ attribute :>> foreseeableBasis = "Known PCA use pattern represented in the GPCA hazard analysis.";
32
+ attribute :>> affectedUseContext = "UC-001";
33
+ attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.8; CITE-005: Open PCA ISO 14971 risk analysis, bolus-by-proxy event";
34
+ }
21
35
 
22
36
  // ── Use contexts ────────────────────────────────────────────
23
37
  part hospitalWardContext : UseContext {
@@ -33,35 +47,40 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
33
47
  // system is used in a fixed location and is not ambulatory.
34
48
 
35
49
  // ── Actors ──────────────────────────────────────────────────
36
- part actorPatient : Actor {
50
+ part actorPatient : User {
51
+ attribute :>> actorKind = ActorKind::patient;
37
52
  attribute :>> id = "ACT-001";
38
53
  attribute :>> name = "Patient";
39
54
  attribute :>> actorKind = ActorKind::patient;
40
55
  attribute :>> trainingLevel = "instructed by clinician on bolus request button only";
41
56
  attribute :>> description = "Receives the infusion and requests bolus doses via the patient pendant.";
42
57
  }
43
- part actorNurse : Actor {
58
+ part actorNurse : User {
59
+ attribute :>> actorKind = ActorKind::clinician;
44
60
  attribute :>> id = "ACT-002";
45
61
  attribute :>> name = "ClinicianNurse";
46
62
  attribute :>> actorKind = ActorKind::clinician;
47
63
  attribute :>> trainingLevel = "trained clinical user; programs prescriptions and responds to alarms";
48
64
  attribute :>> description = "Loads the drug reservoir, programs and confirms the prescription, starts/stops therapy, and responds to alarms.";
49
65
  }
50
- part actorPrescriber : Actor {
66
+ part actorPrescriber : User {
67
+ attribute :>> actorKind = ActorKind::clinician;
51
68
  attribute :>> id = "ACT-003";
52
69
  attribute :>> name = "PrescribingPhysician";
53
70
  attribute :>> actorKind = ActorKind::clinician;
54
71
  attribute :>> trainingLevel = "licensed prescriber";
55
72
  attribute :>> description = "Prescribes drug, concentration, basal rate, bolus volume, lockout interval, and maximum dose limits.";
56
73
  }
57
- part actorPharmacist : Actor {
74
+ part actorPharmacist : User {
75
+ attribute :>> actorKind = ActorKind::clinician;
58
76
  attribute :>> id = "ACT-004";
59
77
  attribute :>> name = "Pharmacist";
60
78
  attribute :>> actorKind = ActorKind::clinician;
61
79
  attribute :>> trainingLevel = "licensed pharmacist";
62
80
  attribute :>> description = "Prepares the drug reservoir and verifies drug and concentration against the prescription.";
63
81
  }
64
- part actorTechnician : Actor {
82
+ part actorTechnician : User {
83
+ attribute :>> actorKind = ActorKind::technician;
65
84
  attribute :>> id = "ACT-005";
66
85
  attribute :>> name = "BiomedicalTechnician";
67
86
  attribute :>> actorKind = ActorKind::technician;
@@ -1,10 +1,10 @@
1
1
  package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
2
2
  private import ScalarValues::*;
3
3
 
4
- private import memo_architecture_cybersecurity::*;
5
- private import memo_architecture_requirements::*;
6
- private import memo_architecture_risk_risk::*;
7
- private import memo_architecture_assurance::*;
4
+ private import memo_assurance_cybersecurity::*;
5
+ private import memo_assurance_requirements::*;
6
+ private import memo_assurance_safety_risk::*;
7
+ private import memo_assurance_verification_validation::*;
8
8
  private import memo_core_enumerations::*;
9
9
  private import memo_core_relationships::*;
10
10
  private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
@@ -140,7 +140,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
140
140
  attribute :>> safetyClass = SafetyClassKind::C;
141
141
  }
142
142
 
143
- part vcAuthenticatedServiceAccess : VerificationCase {
143
+ verification vcAuthenticatedServiceAccess : VerificationCase {
144
144
  attribute :>> id = "CVER-001";
145
145
  attribute :>> name = "VerifyAuthenticatedServiceAccess";
146
146
  attribute :>> methodKind = VerificationMethodKind::test;
@@ -156,7 +156,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
156
156
 
157
157
  connection : RealizedByScenario connect realizedThreat ::> unauthorizedConfigChangeThreat to scenario ::> tamperedConfigurationScenario;
158
158
 
159
- connection : MitigatesVulnerability connect enablingVulnerability ::> weakServiceAuthentication to mitigation ::> strongServiceAuthentication;
159
+ connection : Mitigates { attribute :>> mitigationKind = MitigationKind::vulnerability; connect control ::> strongServiceAuthentication to mitigatedElement ::> weakServiceAuthentication; }
160
160
 
161
161
  connection : DerivesCyberRequirement connect sourceThreatOrRisk ::> unauthorizedConfigChangeThreat to targetRequirement ::> reqAuthenticatedServiceAccess;
162
162
 
@@ -1,7 +1,7 @@
1
1
  package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
2
2
  private import ScalarValues::*;
3
3
 
4
- private import memo_architecture_behavior::*;
4
+ private import memo_architecture_functional_behavior::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
7
  // ═════════════════════════════════════════════════════════════
@@ -38,7 +38,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
38
38
  }
39
39
 
40
40
  // ── Assumptions (GPCA_SW.aadl) ──────────────────────────────
41
- part assumeVtbiHighPositive : AssumeProperty {
41
+ part assumeVtbiHighPositive : BehaviorProperty {
42
+ attribute :>> propertyKind = BehaviorPropertyKind::assumption;
42
43
  attribute :>> id = "AP-002";
43
44
  attribute :>> name = "VtbiHighPositive";
44
45
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
@@ -46,7 +47,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
46
47
  attribute :>> formalExpression = "assume DB_IN.VTBI_High > 0";
47
48
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
48
49
  }
49
- part assumeEmptyReservoirPositive : AssumeProperty {
50
+ part assumeEmptyReservoirPositive : BehaviorProperty {
51
+ attribute :>> propertyKind = BehaviorPropertyKind::assumption;
50
52
  attribute :>> id = "AP-003";
51
53
  attribute :>> name = "EmptyReservoirConstPositive";
52
54
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
@@ -54,7 +56,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
54
56
  attribute :>> formalExpression = "assume CONST_IN.Empty_Reservoir > 0";
55
57
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
56
58
  }
57
- part assumeValidPrescriptionSaved : AssumeProperty {
59
+ part assumeValidPrescriptionSaved : BehaviorProperty {
60
+ attribute :>> propertyKind = BehaviorPropertyKind::assumption;
58
61
  attribute :>> id = "AP-001";
59
62
  attribute :>> name = "ValidPrescriptionSavedBeforeTherapy";
60
63
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
@@ -64,7 +67,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
64
67
  }
65
68
 
66
69
  // ── Guarantees (GPCA_SW.aadl AGREE annex, 1:1) ──────────────
67
- part guaranteeExclusiveMode : GuaranteeProperty {
70
+ part guaranteeExclusiveMode : BehaviorProperty {
71
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
68
72
  attribute :>> id = "GP-001";
69
73
  attribute :>> name = "ModeRange";
70
74
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -72,7 +76,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
72
76
  attribute :>> formalExpression = "guarantee mode_range: GPCA_SW_OUT.Current_System_Mode in {0, 1, 2, 3, 4, 6, 7, 8} (source enumeration omits 5)";
73
77
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 1)";
74
78
  }
75
- part guaranteeOffMode : GuaranteeProperty {
79
+ part guaranteeOffMode : BehaviorProperty {
80
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
76
81
  attribute :>> id = "GP-004";
77
82
  attribute :>> name = "NotStartImpliesModeZero";
78
83
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -80,7 +85,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
80
85
  attribute :>> formalExpression = "guarantee not(OP_CMD_IN.System_Start) => GPCA_SW_OUT.Current_System_Mode = 0";
81
86
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
82
87
  }
83
- part guaranteeInitialStart : GuaranteeProperty {
88
+ part guaranteeInitialStart : BehaviorProperty {
89
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
84
90
  attribute :>> id = "GP-005";
85
91
  attribute :>> name = "InitialSystemStartImpliesModeOne";
86
92
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -88,7 +94,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
88
94
  attribute :>> formalExpression = "guarantee sys_initial and OP_CMD_IN.System_Start => GPCA_SW_OUT.Current_System_Mode = 1";
89
95
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4 allocation: TLM System_Start -> System_On; IM System_On -> mode 1)";
90
96
  }
91
- part guaranteeOffToOn : GuaranteeProperty {
97
+ part guaranteeOffToOn : BehaviorProperty {
98
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
92
99
  attribute :>> id = "GP-006";
93
100
  attribute :>> name = "OffToOnImpliesModeOne";
94
101
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -96,7 +103,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
96
103
  attribute :>> formalExpression = "guarantee not(sys_initial) and pre(GPCA_SW_OUT.Current_System_Mode) = 0 and OP_CMD_IN.System_Start => GPCA_SW_OUT.Current_System_Mode = 1";
97
104
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4)";
98
105
  }
99
- part guaranteeEmptyReservoirNoFlow : GuaranteeProperty {
106
+ part guaranteeEmptyReservoirNoFlow : BehaviorProperty {
107
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
100
108
  attribute :>> id = "GP-007";
101
109
  attribute :>> name = "EmptyReservoirImpliesNoFlow";
102
110
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -104,7 +112,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
104
112
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and pre(Current_System_Mode) > 1 and GPCA_SW_OUT.Reservoir_Volume < CONST_IN.Empty_Reservoir) => GPCA_SW_OUT.Commanded_Flow_Rate = 0";
105
113
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 59 'Empty Reservoir')";
106
114
  }
107
- part guaranteeVtbiKvo : GuaranteeProperty {
115
+ part guaranteeVtbiKvo : BehaviorProperty {
116
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
108
117
  attribute :>> id = "GP-008";
109
118
  attribute :>> name = "OverVtbiImpliesFlowAtMostKvo";
110
119
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -112,7 +121,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
112
121
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and pre(Current_System_Mode) > 1 and GPCA_SW_OUT.Volume_Infused > DB_IN.VTBI_High) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
113
122
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (over-infusion => keep-vein-open, not zero)";
114
123
  }
115
- part guaranteeAirInLineKvo : GuaranteeProperty {
124
+ part guaranteeAirInLineKvo : BehaviorProperty {
125
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
116
126
  attribute :>> id = "GP-009";
117
127
  attribute :>> name = "AirInLineImpliesFlowAtMostKvo";
118
128
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -120,7 +130,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
120
130
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Air_In_Line) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
121
131
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 21 'Air embolism')";
122
132
  }
123
- part guaranteeOcclusionKvo : GuaranteeProperty {
133
+ part guaranteeOcclusionKvo : BehaviorProperty {
134
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
124
135
  attribute :>> id = "GP-010";
125
136
  attribute :>> name = "OcclusionImpliesFlowAtMostKvo";
126
137
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -128,7 +139,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
128
139
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Occlusion) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
129
140
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
130
141
  }
131
- part guaranteeDoorOpenKvo : GuaranteeProperty {
142
+ part guaranteeDoorOpenKvo : BehaviorProperty {
143
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
132
144
  attribute :>> id = "GP-011";
133
145
  attribute :>> name = "DoorOpenImpliesFlowAtMostKvo";
134
146
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -136,7 +148,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
136
148
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Door_Open) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
137
149
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
138
150
  }
139
- part guaranteeAlarmStopsSameStep : GuaranteeProperty {
151
+ part guaranteeAlarmStopsSameStep : BehaviorProperty {
152
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
140
153
  attribute :>> id = "GP-003";
141
154
  attribute :>> name = "SameStepAlarmKvoGuarantee";
142
155
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
@@ -144,7 +157,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
144
157
  attribute :>> formalExpression = "guarantee an infusion-inhibiting notification in a step implies Commanded_Flow_Rate <= Flow_Rate_KVO in the same step (ALARM_OUT -> IM.ALARM_IN is an immediate connection)";
145
158
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl (ALARM_to_IM immediate) with the flow <= KVO guarantees above";
146
159
  }
147
- part guaranteeLockoutPreventsBolus : GuaranteeProperty {
160
+ part guaranteeLockoutPreventsBolus : BehaviorProperty {
161
+ attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
148
162
  attribute :>> id = "GP-002";
149
163
  attribute :>> name = "LockoutGuarantee";
150
164
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;