@memoarchitect/ontology 0.6.5 → 0.8.22

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 (394) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  5. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  7. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  8. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  9. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  11. package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
  12. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  13. package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
  15. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  16. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
  17. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
  18. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
  33. package/examples/gpca-pump/model/catalog/project.sysml +26 -0
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
  35. package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
  37. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
  38. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
  39. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
  40. package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  41. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
  42. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
  44. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
  45. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
  47. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
  48. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
  49. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
  50. package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
  51. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
  53. package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
  54. package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
  55. package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  56. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
  57. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
  58. package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  59. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
  61. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
  62. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
  64. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
  66. package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
  67. package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
  68. package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
  69. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
  71. package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
  72. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  73. package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
  74. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
  75. package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
  76. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  77. package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
  78. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  79. package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
  80. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  81. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  82. package/examples/nested-architecture-dsm/README.md +49 -0
  83. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
  84. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  86. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  87. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
  88. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  89. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
  90. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  91. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
  92. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  93. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  94. package/examples/ros-mobile-robot/README.md +40 -0
  95. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  96. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  97. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  98. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  99. package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
  100. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  101. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  102. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  103. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  104. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
  105. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  106. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  107. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  108. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
  109. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  110. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  111. package/examples/sysml-diagram-samples/README.md +7 -0
  112. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  113. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  114. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  115. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  116. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
  118. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  119. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
  120. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  124. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
  128. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
  129. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  130. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  131. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
  132. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  133. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  134. package/examples/ui-screen-regions/README.md +117 -0
  135. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
  136. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
  137. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  138. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  139. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  140. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  141. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  142. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  143. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  144. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  145. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  146. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  147. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  148. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
  149. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  150. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  151. package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -0
  152. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  153. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
  154. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  155. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
  159. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
  160. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
  161. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
  162. package/extensions/LICENSES/MIT.txt +19 -0
  163. package/extensions/README.md +94 -0
  164. package/extensions/aadl/memo.package.yaml +18 -0
  165. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  166. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  167. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  168. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  169. package/extensions/clinical/memo.package.yaml +18 -0
  170. package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -0
  171. package/extensions/cloud/memo.package.yaml +18 -0
  172. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  173. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  174. package/extensions/container/memo.package.yaml +18 -0
  175. package/extensions/container/src/container_extension.sysml +37 -0
  176. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  177. package/extensions/messaging/memo.package.yaml +18 -0
  178. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  179. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  180. package/extensions/ros/memo.package.yaml +18 -0
  181. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  182. package/extensions/ros/src/ros_extension.sysml +200 -0
  183. package/extensions/template/memo.package.yaml +17 -0
  184. package/extensions/template/src/extension.sysml +37 -0
  185. package/memo.manifest.yaml +15 -2
  186. package/methodologies/default/memo.package.yaml +19 -9
  187. package/methodologies/gpca/memo.package.yaml +18 -9
  188. package/ontology/memo.package.yaml +23 -8
  189. package/package.json +6 -6
  190. package/profile/memo.package.yaml +18 -9
  191. package/src/architecture/decisions/memo_decisions.sysml +28 -0
  192. package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
  193. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  194. package/src/architecture/functional/functions/memo_functions.sysml +93 -43
  195. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
  196. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
  197. package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
  198. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
  199. package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
  200. package/src/architecture/operational/activities/memo_activities.sysml +10 -4
  201. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  202. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  203. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  204. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  205. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  206. package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
  207. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  208. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  209. package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
  210. package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
  211. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  212. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  213. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  214. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  215. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  216. package/src/artifacts/standards/iec_60812.sysml +51 -0
  217. package/src/artifacts/standards/iec_62304.sysml +210 -0
  218. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  219. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  220. package/src/artifacts/standards/iso_13485.sysml +113 -0
  221. package/src/artifacts/standards/iso_14971.sysml +94 -0
  222. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  223. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  224. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
  225. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
  226. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
  227. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
  228. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
  229. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
  230. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
  231. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
  232. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
  233. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
  234. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
  235. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
  236. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
  237. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
  238. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
  239. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  240. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
  241. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
  242. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
  243. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
  244. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
  245. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
  246. package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
  247. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
  248. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
  249. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
  250. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
  251. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
  252. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
  253. package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
  254. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
  255. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +2 -2
  256. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  257. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  258. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  259. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  260. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  261. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  262. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  263. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  264. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  265. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  266. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
  267. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  268. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  269. package/src/core/annotations/memo_annotations.sysml +96 -0
  270. package/src/core/common/memo_common.sysml +140 -18
  271. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  272. package/src/core/dimensions/dimensions.sysml +17 -1
  273. package/src/core/enumerations/memo_enumerations.sysml +101 -20
  274. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  275. package/src/core/relationships/memo_relationships.sysml +199 -194
  276. package/src/memo_namespaces.sysml +127 -67
  277. package/src/methodology/core/memo_core.sysml +69 -2
  278. package/src/methodology/profiles/memo_profiles.sysml +31 -41
  279. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  280. package/src/rules/closure/closure_rules.sysml +104 -31
  281. package/src/rules/coverage/coverage_rules.sysml +4 -256
  282. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  283. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  284. package/src/rules/ontology/ontology_invariants.sysml +243 -74
  285. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  286. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
  287. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  288. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  289. package/src/viewpoints/context/context_viewpoint.sysml +4 -2
  290. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  291. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  292. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  293. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  294. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
  295. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  296. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
  297. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
  298. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  299. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  300. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  301. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
  302. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  303. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  304. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  305. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  306. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  307. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  308. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  309. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  310. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  311. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  312. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  313. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  314. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  315. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  316. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  317. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
  318. package/templates/connected-device/memo.package.yaml +11 -5
  319. package/templates/connected-device/model/catalog/project.sysml +28 -0
  320. package/templates/connected-device/syside.toml +1 -1
  321. package/templates/default/memo.package.yaml +11 -5
  322. package/templates/default/model/catalog/project.sysml +28 -0
  323. package/templates/default/syside.toml +1 -1
  324. package/templates/infusion-pump/memo.package.yaml +11 -5
  325. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  326. package/templates/infusion-pump/syside.toml +1 -1
  327. package/templates/monitoring-device/memo.package.yaml +11 -5
  328. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  329. package/templates/monitoring-device/syside.toml +1 -1
  330. package/templates/samd/memo.package.yaml +11 -5
  331. package/templates/samd/model/catalog/project.sysml +28 -0
  332. package/templates/samd/syside.toml +1 -1
  333. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  334. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  335. package/examples/extensions/README.md +0 -16
  336. package/examples/extensions/clinical/memo.package.yaml +0 -9
  337. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
  338. package/examples/extensions/template/memo.package.yaml +0 -9
  339. package/examples/extensions/template/src/extension.sysml +0 -15
  340. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  341. package/examples/gpca-pump/memo.config.yaml +0 -9
  342. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  343. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  344. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  345. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  346. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  347. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  348. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  349. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  350. package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
  351. package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
  352. package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
  353. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
  354. package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
  355. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  356. package/ontology/memo.rendering.yaml +0 -84
  357. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  358. package/src/compliance/change/memo_change.sysml +0 -17
  359. package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
  360. package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
  361. package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
  362. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  363. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  364. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  365. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  366. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  367. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  368. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  369. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  370. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  371. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  372. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  373. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  374. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  375. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  376. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  377. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  378. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  379. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  380. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  381. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  382. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  383. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  384. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  385. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  386. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  387. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  388. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  389. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  390. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  391. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  392. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  393. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  394. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -1,11 +1,12 @@
1
- package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1
+ package memo_examples_gpca_pump_gpca_interfaces {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_architecture_logical_interfaces::*;
5
5
  private import memo_architecture_realization_physical::*;
6
6
  private import memo_architecture_functional_functions::*;
7
- private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
8
- private import memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems::*;
7
+ private import memo_core_common::*;
8
+ private import memo_examples_gpca_pump_gpca_architecture::*;
9
+ private import memo_examples_gpca_pump_gpca_behavior_subsystems::*;
9
10
  private import memo_core_enumerations::*;
10
11
  private import memo_core_dimensions::*;
11
12
  abstract interface def SensorDataInterface :> DataInterface {
@@ -13,7 +14,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
13
14
  attribute :>> protocolSemantics = "flow, air, occlusion, door, battery, cpu, memory, pump state";
14
15
  }
15
16
  port def SensorInputPort :> SensorPort {
16
- attribute :>> direction = DirectionKind::input;
17
+ in item sensorData : MemoItem;
17
18
  attribute :>> interfaceType = "SensorDataInterface";
18
19
  attribute :>> sensorDomain = "physiological and device state";
19
20
  }
@@ -54,7 +55,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
54
55
  attribute :>> name = "HW_SW_DataBus";
55
56
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
56
57
  attribute :>> protocol = "immediate data port mapping";
57
- attribute :>> directionality = DirectionKind::bidirectional;
58
+ attribute :>> directionality = DirectionKind::inputOutput;
58
59
  attribute :>> bandwidth = "implementation-defined";
59
60
  attribute :>> timingConstraint = "same execution step where required";
60
61
  attribute :>> electricalStandard = "logical/AADL";
@@ -150,7 +151,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
150
151
  attribute :>> id = "SI-005";
151
152
  attribute :>> name = "HospitalPharmacyDatabaseInterface";
152
153
  attribute :>> interfaceKind = InterfaceKind::data;
153
- attribute :>> direction = DirectionKind::bidirectional;
154
+ attribute :>> direction = DirectionKind::inputOutput;
154
155
  attribute :>> protocol = "CriSys I 9, I 10, I 11";
155
156
  attribute :>> protocolSemantics = "Retrieves the safe-value set (concentration, VTBI, flow rate, bolus interval/count, KVO rate) where DrugName_hd = DrugName_prog; resets to defaults when no record matches";
156
157
  attribute :>> interactionPattern = "query/response safe-value lookup";
@@ -581,10 +582,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
581
582
  attribute :>> id = "CE-001";
582
583
  attribute :>> name = "SensorStatusVectorExchange";
583
584
  attribute :>> exchangeKind = FlowKind::measurement;
584
- ref :>> sourceEndpoint = gpcaDeviceSensors;
585
- attribute :>> sourcePortPath = "HW-001: GPCA_HW_Sensors";
586
- ref :>> targetEndpoint = portSensorIn;
587
- attribute :>> targetPortPath = "GPCA_SW.SENSOR_IN (PORT-04)";
585
+ ref :>> sourceEndpoint = gpcaDevice.gpcaDeviceSensors;
586
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
588
587
  ref :>> allocatedExchanges = lfSensorAcquisition;
589
588
  attribute :>> direction = DirectionKind::input;
590
589
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
@@ -594,10 +593,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
594
593
  attribute :>> id = "CE-002";
595
594
  attribute :>> name = "FlowCommandExchange";
596
595
  attribute :>> exchangeKind = FlowKind::command;
597
- ref :>> sourceEndpoint = portGpcaSwOut;
598
- attribute :>> sourcePortPath = "GPCA_SW.GPCA_SW_OUT (Commanded_Flow_Rate)";
596
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
599
597
  ref :>> targetEndpoint = pumpMotorAssembly;
600
- attribute :>> targetPortPath = "HW-003: PumpMotorAssembly";
601
598
  ref :>> allocatedExchanges = lfFlowCommand;
602
599
  attribute :>> direction = DirectionKind::output;
603
600
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
@@ -607,10 +604,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
607
604
  attribute :>> id = "CE-003";
608
605
  attribute :>> name = "AlarmAnnunciationExchange";
609
606
  attribute :>> exchangeKind = FlowKind::alarm;
610
- ref :>> sourceEndpoint = portGpcaSwOut;
611
- attribute :>> sourcePortPath = "GPCA_SW.GPCA_SW_OUT (Notification_Message, Is_Audio_Disabled)";
607
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
612
608
  ref :>> targetEndpoint = audibleAlarm;
613
- attribute :>> targetPortPath = "HW-004: AudibleAlarmAnnunciator / HW-005: OperatorDisplay";
614
609
  ref :>> allocatedExchanges = lfAlarmSignal;
615
610
  attribute :>> direction = DirectionKind::output;
616
611
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
@@ -621,9 +616,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
621
616
  attribute :>> name = "PrescriptionEntryExchange";
622
617
  attribute :>> exchangeKind = FlowKind::configuration;
623
618
  ref :>> sourceEndpoint = operatorKeypad;
624
- attribute :>> sourcePortPath = "HW-012: OperatorKeypad";
625
- ref :>> targetEndpoint = portPresIn;
626
- attribute :>> targetPortPath = "GPCA_SW.PRES_IN / GPCA_SW.OP_CMD_IN (PORT-02, PORT-01)";
619
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portPresIn;
627
620
  ref :>> allocatedExchanges = lfPrescriptionEntry;
628
621
  attribute :>> direction = DirectionKind::input;
629
622
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
@@ -635,94 +628,31 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
635
628
  // not decompose into the individual physical parts modelled elsewhere in
636
629
  // this MEMO example. These features and their connections are therefore
637
630
  // kept exact and separate from that extended physical design content.
638
- part devOpCmdIn : PhysicalPort { attribute :>> id = "PORT-DEV-01"; attribute :>> name = "OP_CMD_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
639
- part devDbIn : PhysicalPort { attribute :>> id = "PORT-DEV-02"; attribute :>> name = "DB_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
640
- part devPresIn : PhysicalPort { attribute :>> id = "PORT-DEV-03"; attribute :>> name = "PRES_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
641
- part devPatientIn : PhysicalPort { attribute :>> id = "PORT-DEV-04"; attribute :>> name = "PATIENT_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
642
- part devGpcaOut : PhysicalPort { attribute :>> id = "PORT-DEV-05"; attribute :>> name = "GPCA_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
643
-
644
- part snsOpCmdIn : PhysicalPort { attribute :>> id = "PORT-SNS-01"; attribute :>> name = "OP_CMD_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
645
- part snsDbIn : PhysicalPort { attribute :>> id = "PORT-SNS-02"; attribute :>> name = "DB_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
646
- part snsPresIn : PhysicalPort { attribute :>> id = "PORT-SNS-03"; attribute :>> name = "PRES_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
647
- part snsPatientIn : PhysicalPort { attribute :>> id = "PORT-SNS-04"; attribute :>> name = "PATIENT_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
648
- part snsOpCmdOut : PhysicalPort { attribute :>> id = "PORT-SNS-05"; attribute :>> name = "OP_CMD_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
649
- part snsPresOut : PhysicalPort { attribute :>> id = "PORT-SNS-06"; attribute :>> name = "PRES_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
650
- part snsPatientOut : PhysicalPort { attribute :>> id = "PORT-SNS-07"; attribute :>> name = "PATIENT_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
651
- part snsSensorOut : PhysicalPort { attribute :>> id = "PORT-SNS-08"; attribute :>> name = "SENSOR_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
652
- part snsConstOut : PhysicalPort { attribute :>> id = "PORT-SNS-09"; attribute :>> name = "CONST_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
653
- part snsDbOut : PhysicalPort { attribute :>> id = "PORT-SNS-10"; attribute :>> name = "DB_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
654
-
655
- part actGpcaSwIn : PhysicalPort { attribute :>> id = "PORT-ACT-01"; attribute :>> name = "GPCA_SW_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; }
656
- part actGpcaOut : PhysicalPort { attribute :>> id = "PORT-ACT-02"; attribute :>> name = "GPCA_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; }
657
-
658
631
  // ── GPCA_SW top-level ports (AADL GPCA_SW.aadl features) ────
659
- part portOpCmdIn : SoftwarePort {
660
- attribute :>> id = "PORT-01"; attribute :>> name = "OP_CMD_IN";
661
- attribute :>> description = "Operator commands (System_Start/Stop, Infusion_Initiate/Inhibit, Notification_Cancel, Disable/Enable_Audio, DataConfig) from the data entry interface (I 2).";
662
- attribute :>> portKind = InterfaceKind::control;
663
- attribute :>> direction = DirectionKind::input;
664
- attribute :>> dataTypeName = "DATATYPES::Operator_Commands.Impl";
665
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
666
- }
667
- part portPresIn : SoftwarePort {
668
- attribute :>> id = "PORT-02"; attribute :>> name = "PRES_IN";
669
- attribute :>> description = "Prescription data entry fields (I 1, 13 fields PatientID_prog..NumberMax_pbolus_prog).";
670
- attribute :>> portKind = InterfaceKind::data;
671
- attribute :>> direction = DirectionKind::input;
672
- attribute :>> dataTypeName = "DATATYPES::Prescription_Inputs.Impl";
673
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
674
- }
675
- part portPatientIn : SoftwarePort {
676
- attribute :>> id = "PORT-03"; attribute :>> name = "PATIENT_IN";
677
- attribute :>> description = "Patient bolus request (I 4, BolusRequest_prog).";
678
- attribute :>> portKind = InterfaceKind::userInteraction;
679
- attribute :>> direction = DirectionKind::input;
680
- attribute :>> dataTypeName = "DATATYPES::Patient_Inputs.Impl";
681
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
682
- }
683
- part portSensorIn : SoftwarePort {
684
- attribute :>> id = "PORT-04"; attribute :>> name = "SENSOR_IN";
685
- attribute :>> description = "Device sensor inputs (air-in-line, occlusion, door, reservoir, flow).";
686
- attribute :>> portKind = InterfaceKind::digitalSignal;
687
- attribute :>> direction = DirectionKind::input;
688
- attribute :>> dataTypeName = "DATATYPES::Device_Sensor_Inputs.Impl";
689
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
690
- }
691
- part portConstIn : SoftwarePort {
692
- attribute :>> id = "PORT-05"; attribute :>> name = "CONST_IN";
693
- attribute :>> description = "Device configuration constants (App. A.4 values such as Empty_Reservoir, tolerances).";
694
- attribute :>> portKind = InterfaceKind::data;
695
- attribute :>> direction = DirectionKind::input;
696
- attribute :>> dataTypeName = "DATATYPES::Device_Configuration_Inputs.Impl";
697
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
698
- }
699
- part portDbIn : SoftwarePort {
700
- attribute :>> id = "PORT-06"; attribute :>> name = "DB_IN";
701
- attribute :>> description = "Hospital pharmacy database safe values (I 9-I 11); realizes SI-005 HospitalPharmacyDatabaseInterface.";
702
- attribute :>> portKind = InterfaceKind::data;
703
- attribute :>> direction = DirectionKind::input;
704
- attribute :>> dataTypeName = "DATATYPES::Drug_Database_Inputs.Impl";
705
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
706
- }
707
- part portGpcaSwOut : SoftwarePort {
708
- attribute :>> id = "PORT-07"; attribute :>> name = "GPCA_SW_OUT";
709
- attribute :>> description = "Aggregated software output vector (Current_System_Mode, Commanded_Flow_Rate, notifications, prescription echo, status).";
710
- attribute :>> portKind = InterfaceKind::data;
711
- attribute :>> direction = DirectionKind::output;
712
- attribute :>> dataTypeName = "DATATYPES::GPCA_SW_Outputs.Impl";
713
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
714
- }
715
-
632
+ // ── Software-module ports (AADL GPCA_SW.Impl subcomponent features) ──
633
+ // These 49 were `sourcePortPath` / `targetPortPath` STRINGS until now
634
+ // (§13.3): "TLM.OP_CMD_IN" and the like, which nothing could follow to an
635
+ // element. The AADL packages declare them as real features, so they are
636
+ // declared as real ports here and the exchanges below reference them
637
+ // directly. `portKind` follows the seven top-level GPCA_SW ports wherever
638
+ // the feature name matches one of them, and otherwise the single FlowKind
639
+ // every exchange across that feature carries — no path carried two.
640
+ // TLM
641
+ // CONFIG
642
+ // ALARM
643
+ // LOG
644
+ // IM
645
+ // OUTPUT
646
+ // SYS_MON
647
+ // SYS_STAT
716
648
  // ── GPCA_SW.Impl inter-component connections (AADL, 1:1) ────
717
649
  // ALARM_to_IM immediate is the same-step alarm-response
718
650
  // mechanism the formal properties rely on.
719
651
  part ceOpCmdToTlm : ComponentExchange {
720
652
  attribute :>> id = "CE-101"; attribute :>> name = "OP_CMDtoTLM";
721
653
  attribute :>> exchangeKind = FlowKind::command;
722
- ref :>> sourceEndpoint = portOpCmdIn;
723
- attribute :>> sourcePortPath = "OP_CMD_IN";
724
- ref :>> targetEndpoint = tlm;
725
- attribute :>> targetPortPath = "TLM.OP_CMD_IN";
654
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
655
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmOpCmdIn;
726
656
  attribute :>> direction = DirectionKind::input;
727
657
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
728
658
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -730,10 +660,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
730
660
  part ceConstToTlm : ComponentExchange {
731
661
  attribute :>> id = "CE-102"; attribute :>> name = "CONSTtoTLM";
732
662
  attribute :>> exchangeKind = FlowKind::configuration;
733
- ref :>> sourceEndpoint = portConstIn;
734
- attribute :>> sourcePortPath = "CONST_IN";
735
- ref :>> targetEndpoint = tlm;
736
- attribute :>> targetPortPath = "TLM.CONST_IN";
663
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
664
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmConstIn;
737
665
  attribute :>> direction = DirectionKind::input;
738
666
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
739
667
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -741,40 +669,32 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
741
669
  part ceTlmOutToOutput : ComponentExchange {
742
670
  attribute :>> id = "CE-103"; attribute :>> name = "TLM_OUT_toOUTPUT";
743
671
  attribute :>> exchangeKind = FlowKind::status;
744
- ref :>> sourceEndpoint = tlm;
745
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
746
- ref :>> targetEndpoint = outputBus;
747
- attribute :>> targetPortPath = "OUTPUT.TLM_MODE_IN";
672
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
673
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputTlmModeIn;
748
674
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
749
675
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
750
676
  }
751
677
  part ceImToSysStat : ComponentExchange {
752
678
  attribute :>> id = "CE-104"; attribute :>> name = "IM_to_SYS_STAT";
753
679
  attribute :>> exchangeKind = FlowKind::status;
754
- ref :>> sourceEndpoint = infusionMgr;
755
- attribute :>> sourcePortPath = "IM.IM_OUT";
756
- ref :>> targetEndpoint = systemStatus;
757
- attribute :>> targetPortPath = "SYS_STAT.IM_IN";
680
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
681
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatImIn;
758
682
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
759
683
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
760
684
  }
761
685
  part ceTlmToSysStat : ComponentExchange {
762
686
  attribute :>> id = "CE-105"; attribute :>> name = "TLM_to_SYS_STAT";
763
687
  attribute :>> exchangeKind = FlowKind::status;
764
- ref :>> sourceEndpoint = tlm;
765
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
766
- ref :>> targetEndpoint = systemStatus;
767
- attribute :>> targetPortPath = "SYS_STAT.TLM_MODE_IN";
688
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
689
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatTlmModeIn;
768
690
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
769
691
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
770
692
  }
771
693
  part ceSensorToSysStat : ComponentExchange {
772
694
  attribute :>> id = "CE-106"; attribute :>> name = "SENSOR_to_SYS_STAT";
773
695
  attribute :>> exchangeKind = FlowKind::measurement;
774
- ref :>> sourceEndpoint = portSensorIn;
775
- attribute :>> sourcePortPath = "SENSOR_IN";
776
- ref :>> targetEndpoint = systemStatus;
777
- attribute :>> targetPortPath = "SYS_STAT.SENSOR_IN";
696
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
697
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSensorIn;
778
698
  attribute :>> direction = DirectionKind::input;
779
699
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
780
700
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -782,10 +702,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
782
702
  part ceConstToSysStat : ComponentExchange {
783
703
  attribute :>> id = "CE-107"; attribute :>> name = "CONST_to_SYS_STAT";
784
704
  attribute :>> exchangeKind = FlowKind::configuration;
785
- ref :>> sourceEndpoint = portConstIn;
786
- attribute :>> sourcePortPath = "CONST_IN";
787
- ref :>> targetEndpoint = systemStatus;
788
- attribute :>> targetPortPath = "SYS_STAT.CONST_IN";
705
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
706
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConstIn;
789
707
  attribute :>> direction = DirectionKind::input;
790
708
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
791
709
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -793,60 +711,48 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
793
711
  part ceConfigToSysStat : ComponentExchange {
794
712
  attribute :>> id = "CE-108"; attribute :>> name = "CONFIG_to_SYS_STAT";
795
713
  attribute :>> exchangeKind = FlowKind::configuration;
796
- ref :>> sourceEndpoint = config;
797
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
798
- ref :>> targetEndpoint = systemStatus;
799
- attribute :>> targetPortPath = "SYS_STAT.CONFIG_IN";
714
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
715
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConfigIn;
800
716
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
801
717
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
802
718
  }
803
719
  part ceSysStatOutToOutput : ComponentExchange {
804
720
  attribute :>> id = "CE-109"; attribute :>> name = "SYS_STAT_OUT_toOUTPUT";
805
721
  attribute :>> exchangeKind = FlowKind::status;
806
- ref :>> sourceEndpoint = systemStatus;
807
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
808
- ref :>> targetEndpoint = outputBus;
809
- attribute :>> targetPortPath = "OUTPUT.SYS_STAT_IN";
722
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
723
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputSysStatIn;
810
724
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
811
725
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
812
726
  }
813
727
  part ceImToAlarm : ComponentExchange {
814
728
  attribute :>> id = "CE-110"; attribute :>> name = "IM_to_ALARM";
815
729
  attribute :>> exchangeKind = FlowKind::status;
816
- ref :>> sourceEndpoint = infusionMgr;
817
- attribute :>> sourcePortPath = "IM.IM_OUT";
818
- ref :>> targetEndpoint = alarm;
819
- attribute :>> targetPortPath = "ALARM.IM_IN";
730
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
731
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmImIn;
820
732
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
821
733
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
822
734
  }
823
735
  part ceTlmToAlarm : ComponentExchange {
824
736
  attribute :>> id = "CE-111"; attribute :>> name = "TLM_to_ALARM";
825
737
  attribute :>> exchangeKind = FlowKind::status;
826
- ref :>> sourceEndpoint = tlm;
827
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
828
- ref :>> targetEndpoint = alarm;
829
- attribute :>> targetPortPath = "ALARM.TLM_MODE_IN";
738
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
739
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmTlmModeIn;
830
740
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
831
741
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
832
742
  }
833
743
  part ceSysMonToAlarm : ComponentExchange {
834
744
  attribute :>> id = "CE-112"; attribute :>> name = "SYS_MON_to_ALARM";
835
745
  attribute :>> exchangeKind = FlowKind::status;
836
- ref :>> sourceEndpoint = systemMonitor;
837
- attribute :>> sourcePortPath = "SYS_MON.SYS_MON_OUT";
838
- ref :>> targetEndpoint = alarm;
839
- attribute :>> targetPortPath = "ALARM.SYS_MON_IN";
746
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut;
747
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSysMonIn;
840
748
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
841
749
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
842
750
  }
843
751
  part ceOpCmdToAlarm : ComponentExchange {
844
752
  attribute :>> id = "CE-113"; attribute :>> name = "OP_CMD_to_ALARM";
845
753
  attribute :>> exchangeKind = FlowKind::command;
846
- ref :>> sourceEndpoint = portOpCmdIn;
847
- attribute :>> sourcePortPath = "OP_CMD_IN";
848
- ref :>> targetEndpoint = alarm;
849
- attribute :>> targetPortPath = "ALARM.OP_CMD_IN";
754
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
755
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmOpCmdIn;
850
756
  attribute :>> direction = DirectionKind::input;
851
757
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
852
758
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -854,10 +760,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
854
760
  part ceDbToAlarm : ComponentExchange {
855
761
  attribute :>> id = "CE-114"; attribute :>> name = "DB_to_ALARM";
856
762
  attribute :>> exchangeKind = FlowKind::configuration;
857
- ref :>> sourceEndpoint = portDbIn;
858
- attribute :>> sourcePortPath = "DB_IN";
859
- ref :>> targetEndpoint = alarm;
860
- attribute :>> targetPortPath = "ALARM.DB_IN";
763
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portDbIn;
764
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmDbIn;
861
765
  attribute :>> direction = DirectionKind::input;
862
766
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
863
767
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -865,10 +769,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
865
769
  part ceSensorToAlarm : ComponentExchange {
866
770
  attribute :>> id = "CE-115"; attribute :>> name = "SENSOR_to_ALARM";
867
771
  attribute :>> exchangeKind = FlowKind::measurement;
868
- ref :>> sourceEndpoint = portSensorIn;
869
- attribute :>> sourcePortPath = "SENSOR_IN";
870
- ref :>> targetEndpoint = alarm;
871
- attribute :>> targetPortPath = "ALARM.SENSOR_IN";
772
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
773
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSensorIn;
872
774
  attribute :>> direction = DirectionKind::input;
873
775
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
874
776
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -876,10 +778,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
876
778
  part ceConstToAlarm : ComponentExchange {
877
779
  attribute :>> id = "CE-116"; attribute :>> name = "CONST_to_ALARM";
878
780
  attribute :>> exchangeKind = FlowKind::configuration;
879
- ref :>> sourceEndpoint = portConstIn;
880
- attribute :>> sourcePortPath = "CONST_IN";
881
- ref :>> targetEndpoint = alarm;
882
- attribute :>> targetPortPath = "ALARM.CONST_IN";
781
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
782
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmConstIn;
883
783
  attribute :>> direction = DirectionKind::input;
884
784
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
885
785
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -887,50 +787,40 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
887
787
  part ceSysStatToAlarm : ComponentExchange {
888
788
  attribute :>> id = "CE-117"; attribute :>> name = "SYS_STAT_to_ALARM";
889
789
  attribute :>> exchangeKind = FlowKind::status;
890
- ref :>> sourceEndpoint = systemStatus;
891
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
892
- ref :>> targetEndpoint = alarm;
893
- attribute :>> targetPortPath = "ALARM.SYS_STAT_IN";
790
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
791
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSysStatIn;
894
792
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
895
793
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
896
794
  }
897
795
  part ceConfigToAlarm : ComponentExchange {
898
796
  attribute :>> id = "CE-118"; attribute :>> name = "CONFIG_to_ALARM";
899
797
  attribute :>> exchangeKind = FlowKind::configuration;
900
- ref :>> sourceEndpoint = config;
901
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
902
- ref :>> targetEndpoint = alarm;
903
- attribute :>> targetPortPath = "ALARM.CONFIG_IN";
798
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
799
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmConfigIn;
904
800
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
905
801
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
906
802
  }
907
803
  part ceAlarmOutToOutput : ComponentExchange {
908
804
  attribute :>> id = "CE-119"; attribute :>> name = "ALARM_OUT_toOUTPUT";
909
805
  attribute :>> exchangeKind = FlowKind::alarm;
910
- ref :>> sourceEndpoint = alarm;
911
- attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
912
- ref :>> targetEndpoint = outputBus;
913
- attribute :>> targetPortPath = "OUTPUT.ALARM_IN";
806
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
807
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputAlarmIn;
914
808
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
915
809
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
916
810
  }
917
811
  part ceTlmToConfig : ComponentExchange {
918
812
  attribute :>> id = "CE-120"; attribute :>> name = "TLM_to_CONFIG";
919
813
  attribute :>> exchangeKind = FlowKind::status;
920
- ref :>> sourceEndpoint = tlm;
921
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
922
- ref :>> targetEndpoint = config;
923
- attribute :>> targetPortPath = "CONFIG.TLM_MODE_IN";
814
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
815
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigTlmModeIn;
924
816
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
925
817
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
926
818
  }
927
819
  part cePresToConfig : ComponentExchange {
928
820
  attribute :>> id = "CE-121"; attribute :>> name = "PRES_to_CONFIG";
929
821
  attribute :>> exchangeKind = FlowKind::configuration;
930
- ref :>> sourceEndpoint = portPresIn;
931
- attribute :>> sourcePortPath = "PRES_IN";
932
- ref :>> targetEndpoint = config;
933
- attribute :>> targetPortPath = "CONFIG.PRES_IN";
822
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portPresIn;
823
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigPresIn;
934
824
  attribute :>> direction = DirectionKind::input;
935
825
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
936
826
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -938,10 +828,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
938
828
  part ceOpCmdToConfig : ComponentExchange {
939
829
  attribute :>> id = "CE-122"; attribute :>> name = "OP_CMD_to_CONFIG";
940
830
  attribute :>> exchangeKind = FlowKind::command;
941
- ref :>> sourceEndpoint = portOpCmdIn;
942
- attribute :>> sourcePortPath = "OP_CMD_IN";
943
- ref :>> targetEndpoint = config;
944
- attribute :>> targetPortPath = "CONFIG.OP_CMD_IN";
831
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
832
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigOpCmdIn;
945
833
  attribute :>> direction = DirectionKind::input;
946
834
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
947
835
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -949,10 +837,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
949
837
  part ceDbToConfig : ComponentExchange {
950
838
  attribute :>> id = "CE-123"; attribute :>> name = "DB_to_CONFIG";
951
839
  attribute :>> exchangeKind = FlowKind::configuration;
952
- ref :>> sourceEndpoint = portDbIn;
953
- attribute :>> sourcePortPath = "DB_IN";
954
- ref :>> targetEndpoint = config;
955
- attribute :>> targetPortPath = "CONFIG.DB_IN";
840
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portDbIn;
841
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigDbIn;
956
842
  attribute :>> direction = DirectionKind::input;
957
843
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
958
844
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -960,10 +846,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
960
846
  part ceConsToConfig : ComponentExchange {
961
847
  attribute :>> id = "CE-124"; attribute :>> name = "CONS_to_CONFIG";
962
848
  attribute :>> exchangeKind = FlowKind::configuration;
963
- ref :>> sourceEndpoint = portConstIn;
964
- attribute :>> sourcePortPath = "CONST_IN";
965
- ref :>> targetEndpoint = config;
966
- attribute :>> targetPortPath = "CONFIG.CONST_IN";
849
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
850
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConstIn;
967
851
  attribute :>> direction = DirectionKind::input;
968
852
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
969
853
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -971,40 +855,32 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
971
855
  part ceSysStatToConfig : ComponentExchange {
972
856
  attribute :>> id = "CE-125"; attribute :>> name = "SYS_STAT_to_CONFIG";
973
857
  attribute :>> exchangeKind = FlowKind::status;
974
- ref :>> sourceEndpoint = systemStatus;
975
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
976
- ref :>> targetEndpoint = config;
977
- attribute :>> targetPortPath = "CONFIG.SYS_STAT_IN";
858
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
859
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigSysStatIn;
978
860
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
979
861
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
980
862
  }
981
863
  part ceConfigToOutput : ComponentExchange {
982
864
  attribute :>> id = "CE-126"; attribute :>> name = "CONFIG_toOUTPUT";
983
865
  attribute :>> exchangeKind = FlowKind::configuration;
984
- ref :>> sourceEndpoint = config;
985
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
986
- ref :>> targetEndpoint = outputBus;
987
- attribute :>> targetPortPath = "OUTPUT.CONFIG_IN";
866
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
867
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputConfigIn;
988
868
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
989
869
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
990
870
  }
991
871
  part ceTlmToIm : ComponentExchange {
992
872
  attribute :>> id = "CE-127"; attribute :>> name = "TLM_to_IM";
993
873
  attribute :>> exchangeKind = FlowKind::status;
994
- ref :>> sourceEndpoint = tlm;
995
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
996
- ref :>> targetEndpoint = infusionMgr;
997
- attribute :>> targetPortPath = "IM.TLM_MODE_IN";
874
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
875
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImTlmModeIn;
998
876
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
999
877
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1000
878
  }
1001
879
  part ceOpCmdToIm : ComponentExchange {
1002
880
  attribute :>> id = "CE-128"; attribute :>> name = "OP_CMD_to_IM";
1003
881
  attribute :>> exchangeKind = FlowKind::command;
1004
- ref :>> sourceEndpoint = portOpCmdIn;
1005
- attribute :>> sourcePortPath = "OP_CMD_IN";
1006
- ref :>> targetEndpoint = infusionMgr;
1007
- attribute :>> targetPortPath = "IM.OP_CMD_IN";
882
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
883
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImOpCmdIn;
1008
884
  attribute :>> direction = DirectionKind::input;
1009
885
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1010
886
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -1012,10 +888,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1012
888
  part cePatientToIm : ComponentExchange {
1013
889
  attribute :>> id = "CE-129"; attribute :>> name = "PATIENT_to_IM";
1014
890
  attribute :>> exchangeKind = FlowKind::command;
1015
- ref :>> sourceEndpoint = portPatientIn;
1016
- attribute :>> sourcePortPath = "PATIENT_IN";
1017
- ref :>> targetEndpoint = infusionMgr;
1018
- attribute :>> targetPortPath = "IM.PATIENT_IN";
891
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portPatientIn;
892
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImPatientIn;
1019
893
  attribute :>> direction = DirectionKind::input;
1020
894
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1021
895
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -1023,130 +897,104 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1023
897
  part ceConfigToIm : ComponentExchange {
1024
898
  attribute :>> id = "CE-130"; attribute :>> name = "CONFIG_to_IM";
1025
899
  attribute :>> exchangeKind = FlowKind::configuration;
1026
- ref :>> sourceEndpoint = config;
1027
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
1028
- ref :>> targetEndpoint = infusionMgr;
1029
- attribute :>> targetPortPath = "IM.CONFIG_IN";
900
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
901
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImConfigIn;
1030
902
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1031
903
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1032
904
  }
1033
905
  part ceAlarmToIm : ComponentExchange {
1034
906
  attribute :>> id = "CE-131"; attribute :>> name = "ALARM_to_IM";
1035
907
  attribute :>> exchangeKind = FlowKind::alarm;
1036
- ref :>> sourceEndpoint = alarm;
1037
- attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
1038
- ref :>> targetEndpoint = infusionMgr;
1039
- attribute :>> targetPortPath = "IM.ALARM_IN";
908
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
909
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImAlarmIn;
1040
910
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1041
911
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1042
912
  }
1043
913
  part ceSysStatToIm : ComponentExchange {
1044
914
  attribute :>> id = "CE-132"; attribute :>> name = "SYS_STAT_to_IM";
1045
915
  attribute :>> exchangeKind = FlowKind::status;
1046
- ref :>> sourceEndpoint = systemStatus;
1047
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
1048
- ref :>> targetEndpoint = infusionMgr;
1049
- attribute :>> targetPortPath = "IM.SYS_STAT_IN";
916
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
917
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImSysStatIn;
1050
918
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1051
919
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1052
920
  }
1053
921
  part ceImToOutput : ComponentExchange {
1054
922
  attribute :>> id = "CE-133"; attribute :>> name = "IM_toOUTPUT";
1055
923
  attribute :>> exchangeKind = FlowKind::status;
1056
- ref :>> sourceEndpoint = infusionMgr;
1057
- attribute :>> sourcePortPath = "IM.IM_OUT";
1058
- ref :>> targetEndpoint = outputBus;
1059
- attribute :>> targetPortPath = "OUTPUT.IM_IN";
924
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
925
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputImIn;
1060
926
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1061
927
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1062
928
  }
1063
929
  part ceTlmToSysMon : ComponentExchange {
1064
930
  attribute :>> id = "CE-134"; attribute :>> name = "TLM_to_SYS_MON";
1065
931
  attribute :>> exchangeKind = FlowKind::status;
1066
- ref :>> sourceEndpoint = tlm;
1067
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
1068
- ref :>> targetEndpoint = systemMonitor;
1069
- attribute :>> targetPortPath = "SYS_MON.TLM_MODE_IN";
932
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
933
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonTlmModeIn;
1070
934
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1071
935
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1072
936
  }
1073
937
  part ceSysMonToOutput : ComponentExchange {
1074
938
  attribute :>> id = "CE-135"; attribute :>> name = "SYS_MON_toOUTPUT";
1075
939
  attribute :>> exchangeKind = FlowKind::status;
1076
- ref :>> sourceEndpoint = systemMonitor;
1077
- attribute :>> sourcePortPath = "SYS_MON.SYS_MON_OUT";
1078
- ref :>> targetEndpoint = outputBus;
1079
- attribute :>> targetPortPath = "OUTPUT.SYS_MON_IN";
940
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut;
941
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputSysMonIn;
1080
942
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1081
943
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1082
944
  }
1083
945
  part ceTlmToLog : ComponentExchange {
1084
946
  attribute :>> id = "CE-136"; attribute :>> name = "TLM_to_LOG";
1085
947
  attribute :>> exchangeKind = FlowKind::status;
1086
- ref :>> sourceEndpoint = tlm;
1087
- attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
1088
- ref :>> targetEndpoint = logging;
1089
- attribute :>> targetPortPath = "LOG.TLM_MODE_IN";
948
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
949
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogTlmModeIn;
1090
950
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1091
951
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1092
952
  }
1093
953
  part ceConfigToLog : ComponentExchange {
1094
954
  attribute :>> id = "CE-137"; attribute :>> name = "CONFIG_to_LOG";
1095
955
  attribute :>> exchangeKind = FlowKind::configuration;
1096
- ref :>> sourceEndpoint = config;
1097
- attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
1098
- ref :>> targetEndpoint = logging;
1099
- attribute :>> targetPortPath = "LOG.CONFIG_IN";
956
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
957
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogConfigIn;
1100
958
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1101
959
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1102
960
  }
1103
961
  part ceAlarmToLog : ComponentExchange {
1104
962
  attribute :>> id = "CE-138"; attribute :>> name = "ALARM_to_LOG";
1105
963
  attribute :>> exchangeKind = FlowKind::alarm;
1106
- ref :>> sourceEndpoint = alarm;
1107
- attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
1108
- ref :>> targetEndpoint = logging;
1109
- attribute :>> targetPortPath = "LOG.ALARM_IN";
964
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
965
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogAlarmIn;
1110
966
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1111
967
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1112
968
  }
1113
969
  part ceSysStatToLog : ComponentExchange {
1114
970
  attribute :>> id = "CE-139"; attribute :>> name = "SYS_STAT_to_LOG";
1115
971
  attribute :>> exchangeKind = FlowKind::status;
1116
- ref :>> sourceEndpoint = systemStatus;
1117
- attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
1118
- ref :>> targetEndpoint = logging;
1119
- attribute :>> targetPortPath = "LOG.SYS_STAT_IN";
972
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
973
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogSysStatIn;
1120
974
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1121
975
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1122
976
  }
1123
977
  part ceImToLog : ComponentExchange {
1124
978
  attribute :>> id = "CE-140"; attribute :>> name = "IM_to_LOG";
1125
979
  attribute :>> exchangeKind = FlowKind::status;
1126
- ref :>> sourceEndpoint = infusionMgr;
1127
- attribute :>> sourcePortPath = "IM.IM_OUT";
1128
- ref :>> targetEndpoint = logging;
1129
- attribute :>> targetPortPath = "LOG.IM_IN";
980
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
981
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogImIn;
1130
982
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1131
983
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1132
984
  }
1133
985
  part ceLogToOutput : ComponentExchange {
1134
986
  attribute :>> id = "CE-141"; attribute :>> name = "LOG_toOUTPUT";
1135
987
  attribute :>> exchangeKind = FlowKind::audit;
1136
- ref :>> sourceEndpoint = logging;
1137
- attribute :>> sourcePortPath = "LOG.LOG_OUT";
1138
- ref :>> targetEndpoint = outputBus;
1139
- attribute :>> targetPortPath = "OUTPUT.LOG_IN";
988
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.logging.portLogLogOut;
989
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputLogIn;
1140
990
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1141
991
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1142
992
  }
1143
993
  part ceOutputToGpcaOut : ComponentExchange {
1144
994
  attribute :>> id = "CE-142"; attribute :>> name = "OUTPUT_to_GPCA_OUT";
1145
995
  attribute :>> exchangeKind = FlowKind::status;
1146
- ref :>> sourceEndpoint = outputBus;
1147
- attribute :>> sourcePortPath = "OUTPUT.GPCA_SW_OUT";
1148
- ref :>> targetEndpoint = portGpcaSwOut;
1149
- attribute :>> targetPortPath = "GPCA_SW_OUT";
996
+ ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputGpcaSwOut;
997
+ ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
1150
998
  attribute :>> direction = DirectionKind::output;
1151
999
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1152
1000
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -1212,4 +1060,73 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1212
1060
  attribute :>> encoding = "Boolean";
1213
1061
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1214
1062
  }
1063
+
1064
+ // ── The exchanges as FLOWS (Track A3) ────────────────────────────
1065
+ // The flow is the edge; the ComponentExchange part above it carries the
1066
+ // budget and assurance attributes. Each flow is NAMED with its exchange,
1067
+ // and that shared identifier IS the binding between the two halves —
1068
+ // `relationships["ceOpCmdToTlm"]` and `elements["ceOpCmdToTlm"]` are one
1069
+ // statement, checked by CR-ONT-076. A named flow needs the grammar to
1070
+ // accept a name at all, which is why this could not land before the
1071
+ // productions did.
1072
+ //
1073
+ // The ends are the PORTS, not the components — the port-level topology the
1074
+ // *PortPath strings used to approximate. gpca_trace.sysml keeps the
1075
+ // component-level dependencies; AADL distinguishes the two granularities
1076
+ // and so does this.
1077
+ //
1078
+ // Two spellings, because AADL's two connection kinds are two different
1079
+ // things. A `flow` transports an item between components and runs `out` to
1080
+ // `in`. A `bind` is a DELEGATION between a boundary port and the interior
1081
+ // it stands for: `in` to `in`, or `out` to `out`, because nothing travels —
1082
+ // the two features are the same feature. SysML v2 keeps them apart the same
1083
+ // way (training ch. 13 and ch. 12), and the 15 delegations recorded below
1084
+ // are the ones gpca_trace.sysml therefore cannot restate at component
1085
+ // granularity.
1086
+ flow of InterfaceItem from gpcaDevice.gpcaDeviceSensors to gpcaDevice.gpcaSoftware.portSensorIn;
1087
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.portGpcaSwOut to pumpMotorAssembly;
1088
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.portGpcaSwOut to audibleAlarm;
1089
+ flow of InterfaceItem from operatorKeypad to gpcaDevice.gpcaSoftware.portPresIn;
1090
+ bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.tlm.portTlmOpCmdIn;
1091
+ bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.tlm.portTlmConstIn;
1092
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.outputBus.portOutputTlmModeIn;
1093
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatImIn;
1094
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatTlmModeIn;
1095
+ bind gpcaDevice.gpcaSoftware.portSensorIn = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSensorIn;
1096
+ bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConstIn;
1097
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatConfigIn;
1098
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.outputBus.portOutputSysStatIn;
1099
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.alarm.portAlarmImIn;
1100
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.alarm.portAlarmTlmModeIn;
1101
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaDevice.gpcaSoftware.alarm.portAlarmSysMonIn;
1102
+ bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.alarm.portAlarmOpCmdIn;
1103
+ bind gpcaDevice.gpcaSoftware.portDbIn = gpcaDevice.gpcaSoftware.alarm.portAlarmDbIn;
1104
+ bind gpcaDevice.gpcaSoftware.portSensorIn = gpcaDevice.gpcaSoftware.alarm.portAlarmSensorIn;
1105
+ bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.alarm.portAlarmConstIn;
1106
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.alarm.portAlarmSysStatIn;
1107
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.alarm.portAlarmConfigIn;
1108
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.outputBus.portOutputAlarmIn;
1109
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.config.portConfigTlmModeIn;
1110
+ bind gpcaDevice.gpcaSoftware.portPresIn = gpcaDevice.gpcaSoftware.config.portConfigPresIn;
1111
+ bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.config.portConfigOpCmdIn;
1112
+ bind gpcaDevice.gpcaSoftware.portDbIn = gpcaDevice.gpcaSoftware.config.portConfigDbIn;
1113
+ bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.config.portConfigConstIn;
1114
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.config.portConfigSysStatIn;
1115
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.outputBus.portOutputConfigIn;
1116
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.infusionMgr.portImTlmModeIn;
1117
+ bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.infusionMgr.portImOpCmdIn;
1118
+ bind gpcaDevice.gpcaSoftware.portPatientIn = gpcaDevice.gpcaSoftware.infusionMgr.portImPatientIn;
1119
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.infusionMgr.portImConfigIn;
1120
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.infusionMgr.portImAlarmIn;
1121
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.infusionMgr.portImSysStatIn;
1122
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.outputBus.portOutputImIn;
1123
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.systemMonitor.portSysMonTlmModeIn;
1124
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaDevice.gpcaSoftware.outputBus.portOutputSysMonIn;
1125
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.logging.portLogTlmModeIn;
1126
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.logging.portLogConfigIn;
1127
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.logging.portLogAlarmIn;
1128
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.logging.portLogSysStatIn;
1129
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.logging.portLogImIn;
1130
+ flow of InterfaceItem from gpcaDevice.gpcaSoftware.logging.portLogLogOut to gpcaDevice.gpcaSoftware.outputBus.portOutputLogIn;
1131
+ bind gpcaDevice.gpcaSoftware.outputBus.portOutputGpcaSwOut = gpcaDevice.gpcaSoftware.portGpcaSwOut;
1215
1132
  }