@memoarchitect/ontology 0.8.22 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  4. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  5. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
  8. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  9. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
  12. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  13. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  15. package/examples/gpca-pump/memo.package.yaml +3 -0
  16. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  17. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  18. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  33. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
  35. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
  37. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
  38. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
  39. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
  40. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
  41. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
  42. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
  47. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
  50. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
  51. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
  52. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
  53. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
  54. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
  55. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
  56. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
  57. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
  58. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
  59. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
  60. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  61. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
  62. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  63. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  64. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  65. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
  66. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  67. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  68. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  69. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  70. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  71. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  72. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  73. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  74. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  75. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  76. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  77. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  78. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  79. package/examples/reusable-instrument/memo.package.yaml +3 -0
  80. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  81. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
  82. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  83. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  84. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  85. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  86. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  87. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  88. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  89. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
  90. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  91. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  92. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  93. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
  94. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  95. package/examples/surgical-robot/memo.package.yaml +3 -0
  96. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  97. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  98. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  99. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  100. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  101. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
  102. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
  103. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
  104. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
  105. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
  106. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
  107. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
  108. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
  109. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
  110. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
  111. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  112. package/examples/temperature-alarm/memo.package.yaml +3 -0
  113. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  114. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
  115. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  116. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  117. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  118. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  119. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  120. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  121. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  122. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  123. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  124. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  125. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  126. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  127. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  128. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  129. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  130. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  131. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
  132. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
  133. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
  134. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
  135. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
  136. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
  137. package/extensions/aadl/memo.package.yaml +1 -1
  138. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  139. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  140. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  141. package/extensions/cloud/memo.package.yaml +1 -1
  142. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  143. package/extensions/container/memo.package.yaml +1 -1
  144. package/extensions/container/src/container_extension.sysml +2 -2
  145. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  146. package/extensions/messaging/memo.package.yaml +1 -1
  147. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  148. package/extensions/ros/memo.package.yaml +1 -1
  149. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  150. package/extensions/template/src/extension.sysml +3 -1
  151. package/methodologies/default/memo.package.yaml +1 -1
  152. package/methodologies/gpca/memo.package.yaml +1 -1
  153. package/ontology/memo.package.yaml +1 -1
  154. package/package.json +2 -2
  155. package/profile/memo.package.yaml +1 -1
  156. package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
  157. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  158. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  159. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  160. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  161. package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
  162. package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
  163. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  164. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  165. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  166. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  167. package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
  168. package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
  169. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  170. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
  171. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
  172. package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
  173. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  174. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  175. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  176. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  177. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  178. package/src/artifacts/standards/iec_60812.sysml +21 -22
  179. package/src/artifacts/standards/iec_62304.sysml +150 -169
  180. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  181. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  182. package/src/artifacts/standards/iso_13485.sysml +80 -89
  183. package/src/artifacts/standards/iso_14971.sysml +66 -73
  184. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  185. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  186. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  187. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  188. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  189. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  190. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  191. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  192. package/src/core/common/memo_common.sysml +59 -55
  193. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  194. package/src/core/relationships/memo_relationships.sysml +29 -56
  195. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  196. package/src/methodology/core/memo_core.sysml +0 -10
  197. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  198. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  199. package/src/rules/closure/closure_rules.sysml +22 -20
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  201. package/src/rules/ontology/ontology_invariants.sysml +121 -48
  202. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  203. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
  204. package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
  205. package/src/viewpoints/context/context_viewpoint.sysml +6 -5
  206. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
  207. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
  208. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
  209. package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
  210. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
  211. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
  212. package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
  213. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
  214. package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
  215. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
  216. package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
  217. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
  218. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
  219. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  220. package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
  221. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
  222. package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
  223. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
  224. package/src/viewpoints/software/software_viewpoint.sysml +5 -4
  225. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
  226. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
  227. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  228. package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
  229. package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
  230. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
  231. package/templates/connected-device/memo.package.yaml +2 -0
  232. package/templates/connected-device/model/catalog/project.sysml +3 -1
  233. package/templates/default/memo.package.yaml +2 -0
  234. package/templates/default/model/catalog/project.sysml +3 -1
  235. package/templates/infusion-pump/memo.package.yaml +2 -0
  236. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  237. package/templates/monitoring-device/memo.package.yaml +2 -0
  238. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  239. package/templates/samd/memo.package.yaml +2 -0
  240. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -13,37 +13,38 @@ package memo_examples_gpca_pump_gpca_architecture {
13
13
  private import memo_core_common::*;
14
14
  private import memo_core_dimensions::*;
15
15
 
16
+ private import memo_core_common::MemoIdentity;
16
17
  // ── Logical components ──────────────────────────────────────
17
18
  part lcTherapyControl : LogicalComponent {
18
- attribute :>> id = "LC-001";
19
+ @MemoIdentity { :>> providedId = "LC-001"; }
19
20
  attribute :>> name = "TherapyControlSubsystem";
20
21
  attribute :>> responsibility = "Owns therapy state, prescription execution, and dose limiting.";
21
22
  attribute :>> decompositionLevel = "subsystem";
22
23
  attribute :>> safetyPartition = "safety-critical partition";
23
24
  }
24
25
  part lcSafetyMonitoring : LogicalComponent {
25
- attribute :>> id = "LC-002";
26
+ @MemoIdentity { :>> providedId = "LC-002"; }
26
27
  attribute :>> name = "SafetyMonitoringSubsystem";
27
28
  attribute :>> responsibility = "Detects exceptional conditions and drives the pump to a safe state.";
28
29
  attribute :>> decompositionLevel = "subsystem";
29
30
  attribute :>> safetyPartition = "safety-critical partition";
30
31
  }
31
32
  part lcOperatorInterface : LogicalComponent {
32
- attribute :>> id = "LC-003";
33
+ @MemoIdentity { :>> providedId = "LC-003"; }
33
34
  attribute :>> name = "OperatorInterfaceSubsystem";
34
35
  attribute :>> responsibility = "Prescription entry, status display, and alarm annunciation to users.";
35
36
  attribute :>> decompositionLevel = "subsystem";
36
37
  attribute :>> safetyPartition = "interference-free from therapy control";
37
38
  }
38
39
  part lcDrugDelivery : LogicalComponent {
39
- attribute :>> id = "LC-004";
40
+ @MemoIdentity { :>> providedId = "LC-004"; }
40
41
  attribute :>> name = "DrugDeliverySubsystem";
41
42
  attribute :>> responsibility = "Fluid path: reservoir, tubing, pump mechanism, and delivery sensors.";
42
43
  attribute :>> decompositionLevel = "subsystem";
43
44
  attribute :>> safetyPartition = "safety-critical partition";
44
45
  }
45
46
  part lcPowerSubsystem : LogicalComponent {
46
- attribute :>> id = "LC-005";
47
+ @MemoIdentity { :>> providedId = "LC-005"; }
47
48
  attribute :>> name = "PowerSubsystem";
48
49
  attribute :>> responsibility = "Mains and battery power management with depletion warning.";
49
50
  attribute :>> decompositionLevel = "subsystem";
@@ -58,48 +59,48 @@ package memo_examples_gpca_pump_gpca_architecture {
58
59
  // The AADL top-level `GPCA_Device` system. GPCA_Device.Impl declares only
59
60
  // GPCA_HW_Sensors, GPCA_SW, and GPCA_HW_Actuators as subcomponents.
60
61
  part gpcaDevice : PhysicalAssembly {
61
- attribute :>> id = "HW-000";
62
+ @MemoIdentity { :>> providedId = "HW-000"; }
62
63
  attribute :>> name = "GPCA_Device";
63
64
  attribute :>> responsibility = "AADL device boundary containing the sensor wrapper, GPCA software, and actuator wrapper.";
64
65
  attribute :>> safetyRole = "device boundary carrying the intended use and the risk-control architecture";
65
66
  attribute :>> partNumber = "GPCA-DEV-001";
66
67
 
67
- in port devOpCmdIn : PhysicalPort { attribute :>> id = "PORT-DEV-01"; attribute :>> name = "OP_CMD_IN"; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
68
- in port devDbIn : PhysicalPort { attribute :>> id = "PORT-DEV-02"; attribute :>> name = "DB_IN"; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
69
- in port devPresIn : PhysicalPort { attribute :>> id = "PORT-DEV-03"; attribute :>> name = "PRES_IN"; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
70
- in port devPatientIn : PhysicalPort { attribute :>> id = "PORT-DEV-04"; attribute :>> name = "PATIENT_IN"; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
71
- out port devGpcaOut : PhysicalPort { attribute :>> id = "PORT-DEV-05"; attribute :>> name = "GPCA_OUT"; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
68
+ in port devOpCmdIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-01"; } attribute :>> name = "OP_CMD_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
69
+ in port devDbIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-02"; } attribute :>> name = "DB_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
70
+ in port devPresIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-03"; } attribute :>> name = "PRES_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
71
+ in port devPatientIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-04"; } attribute :>> name = "PATIENT_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
72
+ out port devGpcaOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-05"; } attribute :>> name = "GPCA_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
72
73
 
73
74
  part gpcaDeviceSensors : HardwareAssembly {
74
- attribute :>> id = "HW-001";
75
+ @MemoIdentity { :>> providedId = "HW-001"; }
75
76
  attribute :>> name = "GPCA_HW_Sensors";
76
77
  attribute :>> responsibility = "Map inputs to software-visible signals.";
77
78
  attribute :>> safetyRole = "input acquisition";
78
79
 
79
- in port snsOpCmdIn : PhysicalPort { attribute :>> id = "PORT-SNS-01"; attribute :>> name = "OP_CMD_IN"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
80
- in port snsDbIn : PhysicalPort { attribute :>> id = "PORT-SNS-02"; attribute :>> name = "DB_IN"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
81
- in port snsPresIn : PhysicalPort { attribute :>> id = "PORT-SNS-03"; attribute :>> name = "PRES_IN"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
82
- in port snsPatientIn : PhysicalPort { attribute :>> id = "PORT-SNS-04"; attribute :>> name = "PATIENT_IN"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
83
- out port snsOpCmdOut : PhysicalPort { attribute :>> id = "PORT-SNS-05"; attribute :>> name = "OP_CMD_OUT"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
84
- out port snsPresOut : PhysicalPort { attribute :>> id = "PORT-SNS-06"; attribute :>> name = "PRES_OUT"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
85
- out port snsPatientOut : PhysicalPort { attribute :>> id = "PORT-SNS-07"; attribute :>> name = "PATIENT_OUT"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
86
- out port snsSensorOut : PhysicalPort { attribute :>> id = "PORT-SNS-08"; attribute :>> name = "SENSOR_OUT"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
87
- out port snsConstOut : PhysicalPort { attribute :>> id = "PORT-SNS-09"; attribute :>> name = "CONST_OUT"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
88
- out port snsDbOut : PhysicalPort { attribute :>> id = "PORT-SNS-10"; attribute :>> name = "DB_OUT"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
80
+ in port snsOpCmdIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-01"; } attribute :>> name = "OP_CMD_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
81
+ in port snsDbIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-02"; } attribute :>> name = "DB_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
82
+ in port snsPresIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-03"; } attribute :>> name = "PRES_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
83
+ in port snsPatientIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-04"; } attribute :>> name = "PATIENT_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
84
+ out port snsOpCmdOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-05"; } attribute :>> name = "OP_CMD_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
85
+ out port snsPresOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-06"; } attribute :>> name = "PRES_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
86
+ out port snsPatientOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-07"; } attribute :>> name = "PATIENT_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
87
+ out port snsSensorOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-08"; } attribute :>> name = "SENSOR_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
88
+ out port snsConstOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-09"; } attribute :>> name = "CONST_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
89
+ out port snsDbOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-10"; } attribute :>> name = "DB_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
89
90
  }
90
91
 
91
92
  part gpcaActuators : HardwareAssembly {
92
- attribute :>> id = "HW-002";
93
+ @MemoIdentity { :>> providedId = "HW-002"; }
93
94
  attribute :>> name = "GPCA_HW_Actuators";
94
95
  attribute :>> responsibility = "Expose software outputs to physical outputs.";
95
96
  attribute :>> safetyRole = "actuation and operator output";
96
97
 
97
- in port actGpcaSwIn : PhysicalPort { attribute :>> id = "PORT-ACT-01"; attribute :>> name = "GPCA_SW_IN"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; }
98
- out port actGpcaOut : PhysicalPort { attribute :>> id = "PORT-ACT-02"; attribute :>> name = "GPCA_OUT"; attribute :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; }
98
+ in port actGpcaSwIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-ACT-01"; } attribute :>> name = "GPCA_SW_IN"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; } }
99
+ out port actGpcaOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-ACT-02"; } attribute :>> name = "GPCA_OUT"; @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; } }
99
100
  }
100
101
 
101
102
  part gpcaSoftware : SoftwareSystem {
102
- attribute :>> id = "SWS-001";
103
+ @MemoIdentity { :>> providedId = "SWS-001"; }
103
104
  attribute :>> name = "GPCA_Software";
104
105
  attribute :>> version = "2.0";
105
106
  attribute :>> lifecycleState = LifecycleStateKind::development;
@@ -108,176 +109,176 @@ package memo_examples_gpca_pump_gpca_architecture {
108
109
  attribute :>> operatingSystem = "synchronous data-flow execution; AADL immediate port semantics (source specifies no timing)";
109
110
 
110
111
  in port portOpCmdIn : SoftwarePort {
111
- attribute :>> id = "PORT-01"; attribute :>> name = "OP_CMD_IN";
112
+ @MemoIdentity { :>> providedId = "PORT-01"; } attribute :>> name = "OP_CMD_IN";
112
113
  attribute :>> description = "Operator commands (System_Start/Stop, Infusion_Initiate/Inhibit, Notification_Cancel, Disable/Enable_Audio, DataConfig) from the data entry interface (I 2).";
113
114
  attribute :>> portKind = InterfaceKind::control;
114
115
  attribute :>> dataTypeName = "DATATYPES::Operator_Commands.Impl";
115
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
116
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
116
117
  }
117
118
  in port portPresIn : SoftwarePort {
118
- attribute :>> id = "PORT-02"; attribute :>> name = "PRES_IN";
119
+ @MemoIdentity { :>> providedId = "PORT-02"; } attribute :>> name = "PRES_IN";
119
120
  attribute :>> description = "Prescription data entry fields (I 1, 13 fields PatientID_prog..NumberMax_pbolus_prog).";
120
121
  attribute :>> portKind = InterfaceKind::data;
121
122
  attribute :>> dataTypeName = "DATATYPES::Prescription_Inputs.Impl";
122
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
123
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
123
124
  }
124
125
  in port portPatientIn : SoftwarePort {
125
- attribute :>> id = "PORT-03"; attribute :>> name = "PATIENT_IN";
126
+ @MemoIdentity { :>> providedId = "PORT-03"; } attribute :>> name = "PATIENT_IN";
126
127
  attribute :>> description = "Patient bolus request (I 4, BolusRequest_prog).";
127
128
  attribute :>> portKind = InterfaceKind::userInteraction;
128
129
  attribute :>> dataTypeName = "DATATYPES::Patient_Inputs.Impl";
129
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
130
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
130
131
  }
131
132
  in port portSensorIn : SoftwarePort {
132
- attribute :>> id = "PORT-04"; attribute :>> name = "SENSOR_IN";
133
+ @MemoIdentity { :>> providedId = "PORT-04"; } attribute :>> name = "SENSOR_IN";
133
134
  attribute :>> description = "Device sensor inputs (air-in-line, occlusion, door, reservoir, flow).";
134
135
  attribute :>> portKind = InterfaceKind::digitalSignal;
135
136
  attribute :>> dataTypeName = "DATATYPES::Device_Sensor_Inputs.Impl";
136
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
137
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
137
138
  }
138
139
  in port portConstIn : SoftwarePort {
139
- attribute :>> id = "PORT-05"; attribute :>> name = "CONST_IN";
140
+ @MemoIdentity { :>> providedId = "PORT-05"; } attribute :>> name = "CONST_IN";
140
141
  attribute :>> description = "Device configuration constants (App. A.4 values such as Empty_Reservoir, tolerances).";
141
142
  attribute :>> portKind = InterfaceKind::data;
142
143
  attribute :>> dataTypeName = "DATATYPES::Device_Configuration_Inputs.Impl";
143
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
144
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
144
145
  }
145
146
  in port portDbIn : SoftwarePort {
146
- attribute :>> id = "PORT-06"; attribute :>> name = "DB_IN";
147
+ @MemoIdentity { :>> providedId = "PORT-06"; } attribute :>> name = "DB_IN";
147
148
  attribute :>> description = "Hospital pharmacy database safe values (I 9-I 11); realizes SI-005 HospitalPharmacyDatabaseInterface.";
148
149
  attribute :>> portKind = InterfaceKind::data;
149
150
  attribute :>> dataTypeName = "DATATYPES::Drug_Database_Inputs.Impl";
150
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
151
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
151
152
  }
152
153
  out port portGpcaSwOut : SoftwarePort {
153
- attribute :>> id = "PORT-07"; attribute :>> name = "GPCA_SW_OUT";
154
+ @MemoIdentity { :>> providedId = "PORT-07"; } attribute :>> name = "GPCA_SW_OUT";
154
155
  attribute :>> description = "Aggregated software output vector (Current_System_Mode, Commanded_Flow_Rate, notifications, prescription echo, status).";
155
156
  attribute :>> portKind = InterfaceKind::data;
156
157
  attribute :>> dataTypeName = "DATATYPES::GPCA_SW_Outputs.Impl";
157
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
158
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
158
159
  }
159
160
 
160
161
  part tlm : SoftwareModule {
161
- attribute :>> id = "SW-001";
162
+ @MemoIdentity { :>> providedId = "SW-001"; }
162
163
  attribute :>> name = "Top_Level_Mode";
163
164
  attribute :>> responsibility = "Ensure system ON/OFF behavior and startup/shutdown checks.";
164
165
  attribute :>> safetyClass = SafetyClassKind::C;
165
166
  attribute :>> complexity = ComplexityKind::medium;
166
167
 
167
- in port portTlmConstIn : SoftwarePort { attribute :>> id = "PORT-TLM-01"; attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; }
168
- in port portTlmOpCmdIn : SoftwarePort { attribute :>> id = "PORT-TLM-02"; attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; }
169
- out port portTlmTlmModeOut : SoftwarePort { attribute :>> id = "PORT-TLM-03"; attribute :>> name = "TLM_MODE_OUT"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; }
168
+ in port portTlmConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-01"; } attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
169
+ in port portTlmOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-02"; } attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
170
+ out port portTlmTlmModeOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-03"; } attribute :>> name = "TLM_MODE_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
170
171
  }
171
172
 
172
173
  part config : SoftwareModule {
173
- attribute :>> id = "SW-002";
174
+ @MemoIdentity { :>> providedId = "SW-002"; }
174
175
  attribute :>> name = "Config";
175
176
  attribute :>> responsibility = "Prescription entry, drug-library limit checking, confirmation, and persistent storage.";
176
177
  attribute :>> safetyClass = SafetyClassKind::C;
177
178
  attribute :>> complexity = ComplexityKind::high;
178
179
 
179
- out port portConfigConfigOut : SoftwarePort { attribute :>> id = "PORT-CFG-01"; attribute :>> name = "CONFIG_OUT"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; }
180
- in port portConfigConstIn : SoftwarePort { attribute :>> id = "PORT-CFG-02"; attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; }
181
- in port portConfigDbIn : SoftwarePort { attribute :>> id = "PORT-CFG-03"; attribute :>> name = "DB_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; }
182
- in port portConfigOpCmdIn : SoftwarePort { attribute :>> id = "PORT-CFG-04"; attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; }
183
- in port portConfigPresIn : SoftwarePort { attribute :>> id = "PORT-CFG-05"; attribute :>> name = "PRES_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; }
184
- in port portConfigSysStatIn : SoftwarePort { attribute :>> id = "PORT-CFG-06"; attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; }
185
- in port portConfigTlmModeIn : SoftwarePort { attribute :>> id = "PORT-CFG-07"; attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; }
180
+ out port portConfigConfigOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-01"; } attribute :>> name = "CONFIG_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
181
+ in port portConfigConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-02"; } attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
182
+ in port portConfigDbIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-03"; } attribute :>> name = "DB_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
183
+ in port portConfigOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-04"; } attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
184
+ in port portConfigPresIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-05"; } attribute :>> name = "PRES_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
185
+ in port portConfigSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-06"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
186
+ in port portConfigTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-07"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
186
187
  }
187
188
 
188
189
  part alarm : SoftwareModule {
189
- attribute :>> id = "SW-003";
190
+ @MemoIdentity { :>> providedId = "SW-003"; }
190
191
  attribute :>> name = "Alarm";
191
192
  attribute :>> responsibility = "Monitor and notify exceptional conditions.";
192
193
  attribute :>> safetyClass = SafetyClassKind::C;
193
194
  attribute :>> complexity = ComplexityKind::high;
194
195
 
195
- out port portAlarmAlarmOut : SoftwarePort { attribute :>> id = "PORT-ALM-01"; attribute :>> name = "ALARM_OUT"; attribute :>> portKind = InterfaceKind::notification; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
196
- in port portAlarmConfigIn : SoftwarePort { attribute :>> id = "PORT-ALM-02"; attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
197
- in port portAlarmConstIn : SoftwarePort { attribute :>> id = "PORT-ALM-03"; attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
198
- in port portAlarmDbIn : SoftwarePort { attribute :>> id = "PORT-ALM-04"; attribute :>> name = "DB_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
199
- in port portAlarmImIn : SoftwarePort { attribute :>> id = "PORT-ALM-05"; attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
200
- in port portAlarmOpCmdIn : SoftwarePort { attribute :>> id = "PORT-ALM-06"; attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
201
- in port portAlarmSensorIn : SoftwarePort { attribute :>> id = "PORT-ALM-07"; attribute :>> name = "SENSOR_IN"; attribute :>> portKind = InterfaceKind::digitalSignal; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
202
- in port portAlarmSysMonIn : SoftwarePort { attribute :>> id = "PORT-ALM-08"; attribute :>> name = "SYS_MON_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
203
- in port portAlarmSysStatIn : SoftwarePort { attribute :>> id = "PORT-ALM-09"; attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
204
- in port portAlarmTlmModeIn : SoftwarePort { attribute :>> id = "PORT-ALM-10"; attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; }
196
+ out port portAlarmAlarmOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-01"; } attribute :>> name = "ALARM_OUT"; attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
197
+ in port portAlarmConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-02"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
198
+ in port portAlarmConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-03"; } attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
199
+ in port portAlarmDbIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-04"; } attribute :>> name = "DB_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
200
+ in port portAlarmImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-05"; } attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
201
+ in port portAlarmOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-06"; } attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
202
+ in port portAlarmSensorIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-07"; } attribute :>> name = "SENSOR_IN"; attribute :>> portKind = InterfaceKind::digitalSignal; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
203
+ in port portAlarmSysMonIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-08"; } attribute :>> name = "SYS_MON_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
204
+ in port portAlarmSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-09"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
205
+ in port portAlarmTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-10"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
205
206
  }
206
207
 
207
208
  part logging : SoftwareModule {
208
- attribute :>> id = "SW-004";
209
+ @MemoIdentity { :>> providedId = "SW-004"; }
209
210
  attribute :>> name = "Logging";
210
211
  attribute :>> responsibility = "Append-only event log of doses, mode changes, alarms, and configuration changes.";
211
212
  attribute :>> safetyClass = SafetyClassKind::B;
212
213
  attribute :>> complexity = ComplexityKind::medium;
213
214
 
214
- in port portLogAlarmIn : SoftwarePort { attribute :>> id = "PORT-LOG-01"; attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; }
215
- in port portLogConfigIn : SoftwarePort { attribute :>> id = "PORT-LOG-02"; attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; }
216
- in port portLogImIn : SoftwarePort { attribute :>> id = "PORT-LOG-03"; attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; }
217
- out port portLogLogOut : SoftwarePort { attribute :>> id = "PORT-LOG-04"; attribute :>> name = "LOG_OUT"; attribute :>> portKind = InterfaceKind::logging; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; }
218
- in port portLogSysStatIn : SoftwarePort { attribute :>> id = "PORT-LOG-05"; attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; }
219
- in port portLogTlmModeIn : SoftwarePort { attribute :>> id = "PORT-LOG-06"; attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; }
215
+ in port portLogAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-01"; } attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
216
+ in port portLogConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-02"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
217
+ in port portLogImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-03"; } attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
218
+ out port portLogLogOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-04"; } attribute :>> name = "LOG_OUT"; attribute :>> portKind = InterfaceKind::logging; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
219
+ in port portLogSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-05"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
220
+ in port portLogTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-06"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
220
221
  }
221
222
 
222
223
  part infusionMgr : SoftwareModule {
223
- attribute :>> id = "SW-005";
224
+ @MemoIdentity { :>> providedId = "SW-005"; }
224
225
  attribute :>> name = "Infusion_Manager";
225
226
  attribute :>> responsibility = "Handle drug infusion commands and therapy parameters.";
226
227
  attribute :>> safetyClass = SafetyClassKind::C;
227
228
  attribute :>> complexity = ComplexityKind::high;
228
229
 
229
- in port portImAlarmIn : SoftwarePort { attribute :>> id = "PORT-IM-01"; attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; }
230
- in port portImConfigIn : SoftwarePort { attribute :>> id = "PORT-IM-02"; attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; }
231
- out port portImImOut : SoftwarePort { attribute :>> id = "PORT-IM-03"; attribute :>> name = "IM_OUT"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; }
232
- in port portImOpCmdIn : SoftwarePort { attribute :>> id = "PORT-IM-04"; attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; }
233
- in port portImPatientIn : SoftwarePort { attribute :>> id = "PORT-IM-05"; attribute :>> name = "PATIENT_IN"; attribute :>> portKind = InterfaceKind::userInteraction; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; }
234
- in port portImSysStatIn : SoftwarePort { attribute :>> id = "PORT-IM-06"; attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; }
235
- in port portImTlmModeIn : SoftwarePort { attribute :>> id = "PORT-IM-07"; attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; }
230
+ in port portImAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-01"; } attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
231
+ in port portImConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-02"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
232
+ out port portImImOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-03"; } attribute :>> name = "IM_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
233
+ in port portImOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-04"; } attribute :>> name = "OP_CMD_IN"; attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
234
+ in port portImPatientIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-05"; } attribute :>> name = "PATIENT_IN"; attribute :>> portKind = InterfaceKind::userInteraction; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
235
+ in port portImSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-06"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
236
+ in port portImTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-07"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
236
237
  }
237
238
 
238
239
  part systemMonitor : SoftwareModule {
239
- attribute :>> id = "SW-006";
240
+ @MemoIdentity { :>> providedId = "SW-006"; }
240
241
  attribute :>> name = "System_Monitor";
241
242
  attribute :>> responsibility = "POST, periodic CPU/RAM/ROM checks, watchdog kicking, and battery supervision.";
242
243
  attribute :>> safetyClass = SafetyClassKind::C;
243
244
  attribute :>> complexity = ComplexityKind::medium;
244
245
 
245
- out port portSysMonSysMonOut : SoftwarePort { attribute :>> id = "PORT-MON-01"; attribute :>> name = "SYS_MON_OUT"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_MON)"; }
246
- in port portSysMonTlmModeIn : SoftwarePort { attribute :>> id = "PORT-MON-02"; attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_MON)"; }
246
+ out port portSysMonSysMonOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-MON-01"; } attribute :>> name = "SYS_MON_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_MON)"; } }
247
+ in port portSysMonTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-MON-02"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_MON)"; } }
247
248
  }
248
249
 
249
250
  part systemStatus : SoftwareModule {
250
- attribute :>> id = "SW-007";
251
+ @MemoIdentity { :>> providedId = "SW-007"; }
251
252
  attribute :>> name = "System_Status";
252
253
  attribute :>> responsibility = "Maintain the shared system status vector (Reservoir_Volume, Volume_Infused, Reservoir_Empty, In_Therapy) consumed by Alarm, Config, and Infusion_Manager.";
253
254
  attribute :>> safetyClass = SafetyClassKind::C;
254
255
  attribute :>> complexity = ComplexityKind::medium;
255
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/System_Status.aadl";
256
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/System_Status.aadl"; }
256
257
 
257
- in port portSysStatConfigIn : SoftwarePort { attribute :>> id = "PORT-STAT-01"; attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; }
258
- in port portSysStatConstIn : SoftwarePort { attribute :>> id = "PORT-STAT-02"; attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; }
259
- in port portSysStatImIn : SoftwarePort { attribute :>> id = "PORT-STAT-03"; attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; }
260
- in port portSysStatSensorIn : SoftwarePort { attribute :>> id = "PORT-STAT-04"; attribute :>> name = "SENSOR_IN"; attribute :>> portKind = InterfaceKind::digitalSignal; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; }
261
- out port portSysStatSysStatOut : SoftwarePort { attribute :>> id = "PORT-STAT-05"; attribute :>> name = "SYS_STAT_OUT"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; }
262
- in port portSysStatTlmModeIn : SoftwarePort { attribute :>> id = "PORT-STAT-06"; attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; }
258
+ in port portSysStatConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-01"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
259
+ in port portSysStatConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-02"; } attribute :>> name = "CONST_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
260
+ in port portSysStatImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-03"; } attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
261
+ in port portSysStatSensorIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-04"; } attribute :>> name = "SENSOR_IN"; attribute :>> portKind = InterfaceKind::digitalSignal; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
262
+ out port portSysStatSysStatOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-05"; } attribute :>> name = "SYS_STAT_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
263
+ in port portSysStatTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-06"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
263
264
  }
264
265
 
265
266
  part outputBus : SoftwareModule {
266
- attribute :>> id = "SW-008";
267
+ @MemoIdentity { :>> providedId = "SW-008"; }
267
268
  attribute :>> name = "OutputBus";
268
269
  attribute :>> responsibility = "Aggregate all subsystem outputs into the single GPCA_SW_OUT output vector (mode, commanded flow rate, notifications, prescription echo, status).";
269
270
  attribute :>> safetyClass = SafetyClassKind::C;
270
271
  attribute :>> complexity = ComplexityKind::low;
271
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/OutputBus.aadl";
272
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/OutputBus.aadl"; }
272
273
 
273
- in port portOutputAlarmIn : SoftwarePort { attribute :>> id = "PORT-OUT-01"; attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; }
274
- in port portOutputConfigIn : SoftwarePort { attribute :>> id = "PORT-OUT-02"; attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; }
275
- out port portOutputGpcaSwOut : SoftwarePort { attribute :>> id = "PORT-OUT-03"; attribute :>> name = "GPCA_SW_OUT"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; }
276
- in port portOutputImIn : SoftwarePort { attribute :>> id = "PORT-OUT-04"; attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; }
277
- in port portOutputLogIn : SoftwarePort { attribute :>> id = "PORT-OUT-05"; attribute :>> name = "LOG_IN"; attribute :>> portKind = InterfaceKind::logging; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; }
278
- in port portOutputSysMonIn : SoftwarePort { attribute :>> id = "PORT-OUT-06"; attribute :>> name = "SYS_MON_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; }
279
- in port portOutputSysStatIn : SoftwarePort { attribute :>> id = "PORT-OUT-07"; attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; }
280
- in port portOutputTlmModeIn : SoftwarePort { attribute :>> id = "PORT-OUT-08"; attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; }
274
+ in port portOutputAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-01"; } attribute :>> name = "ALARM_IN"; attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
275
+ in port portOutputConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-02"; } attribute :>> name = "CONFIG_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
276
+ out port portOutputGpcaSwOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-03"; } attribute :>> name = "GPCA_SW_OUT"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
277
+ in port portOutputImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-04"; } attribute :>> name = "IM_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
278
+ in port portOutputLogIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-05"; } attribute :>> name = "LOG_IN"; attribute :>> portKind = InterfaceKind::logging; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
279
+ in port portOutputSysMonIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-06"; } attribute :>> name = "SYS_MON_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
280
+ in port portOutputSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-07"; } attribute :>> name = "SYS_STAT_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
281
+ in port portOutputTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-08"; } attribute :>> name = "TLM_MODE_IN"; attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
281
282
  }
282
283
  }
283
284
  }
@@ -285,7 +286,7 @@ package memo_examples_gpca_pump_gpca_architecture {
285
286
  // ── Hardware: aggregates (UMN AADL architectural model) ─────
286
287
  // ── Hardware: sensor suite ──────────────────────────────────
287
288
  part airInLineSensor : HardwareAssembly {
288
- attribute :>> id = "HW-006";
289
+ @MemoIdentity { :>> providedId = "HW-006"; }
289
290
  attribute :>> name = "AirInLineSensor";
290
291
  attribute :>> responsibility = "Ultrasonic detection of air bubbles in the delivery tubing.";
291
292
  attribute :>> safetyRole = "detects air embolism precursor; feeds High-priority Air embolism notification";
@@ -293,7 +294,7 @@ package memo_examples_gpca_pump_gpca_architecture {
293
294
  attribute :>> mtbfHours = "150000";
294
295
  }
295
296
  part occlusionSensor : HardwareAssembly {
296
- attribute :>> id = "HW-007";
297
+ @MemoIdentity { :>> providedId = "HW-007"; }
297
298
  attribute :>> name = "OcclusionPressureSensor";
298
299
  attribute :>> responsibility = "Measures downstream line pressure to detect occlusion.";
299
300
  attribute :>> safetyRole = "detects blocked line (under-infusion, post-occlusion bolus)";
@@ -301,7 +302,7 @@ package memo_examples_gpca_pump_gpca_architecture {
301
302
  attribute :>> mtbfHours = "150000";
302
303
  }
303
304
  part reservoirSensor : HardwareAssembly {
304
- attribute :>> id = "HW-008";
305
+ @MemoIdentity { :>> providedId = "HW-008"; }
305
306
  attribute :>> name = "ReservoirVolumeSensor";
306
307
  attribute :>> responsibility = "Reports remaining reservoir volume and empty condition.";
307
308
  attribute :>> safetyRole = "prevents dry pumping and undetected therapy interruption";
@@ -309,7 +310,7 @@ package memo_examples_gpca_pump_gpca_architecture {
309
310
  attribute :>> mtbfHours = "120000";
310
311
  }
311
312
  part doorSensor : HardwareAssembly {
312
- attribute :>> id = "HW-009";
313
+ @MemoIdentity { :>> providedId = "HW-009"; }
313
314
  attribute :>> name = "DoorLatchSensor";
314
315
  attribute :>> responsibility = "Detects open reservoir door / unlatched pumping chamber.";
315
316
  attribute :>> safetyRole = "prevents free flow and tampering with the fluid path";
@@ -317,7 +318,7 @@ package memo_examples_gpca_pump_gpca_architecture {
317
318
  attribute :>> mtbfHours = "200000";
318
319
  }
319
320
  part flowSensor : HardwareAssembly {
320
- attribute :>> id = "HW-010";
321
+ @MemoIdentity { :>> providedId = "HW-010"; }
321
322
  attribute :>> name = "DeliveryFlowSensor";
322
323
  attribute :>> responsibility = "Independent measurement of delivered flow for cross-check against commanded flow.";
323
324
  attribute :>> safetyRole = "detects over/under-infusion independent of motor control";
@@ -325,7 +326,7 @@ package memo_examples_gpca_pump_gpca_architecture {
325
326
  attribute :>> mtbfHours = "100000";
326
327
  }
327
328
  part bolusButton : HardwareAssembly {
328
- attribute :>> id = "HW-011";
329
+ @MemoIdentity { :>> providedId = "HW-011"; }
329
330
  attribute :>> name = "PatientBolusButton";
330
331
  attribute :>> responsibility = "Debounced patient pendant switch for bolus requests.";
331
332
  attribute :>> safetyRole = "sole patient input; stuck-button detection required";
@@ -333,7 +334,7 @@ package memo_examples_gpca_pump_gpca_architecture {
333
334
  attribute :>> mtbfHours = "80000";
334
335
  }
335
336
  part operatorKeypad : HardwareAssembly {
336
- attribute :>> id = "HW-012";
337
+ @MemoIdentity { :>> providedId = "HW-012"; }
337
338
  attribute :>> name = "OperatorKeypad";
338
339
  attribute :>> responsibility = "Clinician input for prescription programming and alarm handling.";
339
340
  attribute :>> safetyRole = "prescription entry path; key-lock guarded";
@@ -342,7 +343,7 @@ package memo_examples_gpca_pump_gpca_architecture {
342
343
 
343
344
  // ── Hardware: actuator and output suite ─────────────────────
344
345
  part pumpMotorAssembly : HardwareAssembly {
345
- attribute :>> id = "HW-003";
346
+ @MemoIdentity { :>> providedId = "HW-003"; }
346
347
  attribute :>> name = "PumpMotorAssembly";
347
348
  attribute :>> responsibility = "Peristaltic pump mechanism and stepper motor driving drug delivery.";
348
349
  attribute :>> safetyRole = "single point of drug delivery; rotation monitored by flow sensor";
@@ -350,21 +351,21 @@ package memo_examples_gpca_pump_gpca_architecture {
350
351
  attribute :>> mtbfHours = "60000";
351
352
  }
352
353
  part antiFreeFlowValve : HardwareAssembly {
353
- attribute :>> id = "HW-013";
354
+ @MemoIdentity { :>> providedId = "HW-013"; }
354
355
  attribute :>> name = "AntiFreeFlowValve";
355
356
  attribute :>> responsibility = "Mechanical valve that blocks gravity free flow whenever the pumping chamber is disengaged.";
356
357
  attribute :>> safetyRole = "inherent safe design against free-flow overdose";
357
358
  attribute :>> partNumber = "GPCA-ACT-AFF";
358
359
  }
359
360
  part audibleAlarm : HardwareAssembly {
360
- attribute :>> id = "HW-004";
361
+ @MemoIdentity { :>> providedId = "HW-004"; }
361
362
  attribute :>> name = "AudibleAlarmAnnunciator";
362
363
  attribute :>> responsibility = "Buzzer producing multi-priority alarm tones at or above 45 dB(A) at 1 m.";
363
364
  attribute :>> safetyRole = "primary alarm annunciation path";
364
365
  attribute :>> partNumber = "GPCA-ACT-BZR";
365
366
  }
366
367
  part operatorDisplay : HardwareAssembly {
367
- attribute :>> id = "HW-005";
368
+ @MemoIdentity { :>> providedId = "HW-005"; }
368
369
  attribute :>> name = "OperatorDisplay";
369
370
  attribute :>> responsibility = "Displays mode, prescription, delivered dose, and alarm messages.";
370
371
  attribute :>> safetyRole = "visual alarm annunciation and prescription confirmation readback";
@@ -373,7 +374,7 @@ package memo_examples_gpca_pump_gpca_architecture {
373
374
 
374
375
  // ── Hardware: platform ──────────────────────────────────────
375
376
  part controllerBoard : HardwareAssembly {
376
- attribute :>> id = "HW-014";
377
+ @MemoIdentity { :>> providedId = "HW-014"; }
377
378
  attribute :>> name = "MainControllerBoard";
378
379
  attribute :>> responsibility = "Hosts the microcontroller, memory, and hardware watchdog executing the GPCA software.";
379
380
  attribute :>> safetyRole = "computing platform; watchdog forces safe state on CPU hang";
@@ -381,7 +382,7 @@ package memo_examples_gpca_pump_gpca_architecture {
381
382
  attribute :>> mtbfHours = "250000";
382
383
  }
383
384
  part batteryPack : HardwareAssembly {
384
- attribute :>> id = "HW-015";
385
+ @MemoIdentity { :>> providedId = "HW-015"; }
385
386
  attribute :>> name = "BatteryPack";
386
387
  attribute :>> responsibility = "Rechargeable backup battery sustaining at least 4 hours of therapy.";
387
388
  attribute :>> safetyRole = "keeps therapy and alarms alive during mains loss";
@@ -389,7 +390,7 @@ package memo_examples_gpca_pump_gpca_architecture {
389
390
  attribute :>> mtbfHours = "20000";
390
391
  }
391
392
  part powerSupply : HardwareAssembly {
392
- attribute :>> id = "HW-016";
393
+ @MemoIdentity { :>> providedId = "HW-016"; }
393
394
  attribute :>> name = "MainsPowerSupply";
394
395
  attribute :>> responsibility = "Medical-grade AC/DC supply with charger and mains-loss signal.";
395
396
  attribute :>> safetyRole = "isolation per IEC 60601-1; signals switchover to battery";
@@ -398,7 +399,7 @@ package memo_examples_gpca_pump_gpca_architecture {
398
399
  attribute :>> ipRating = "IPX2";
399
400
  }
400
401
  part enclosure : HardwareAssembly {
401
- attribute :>> id = "HW-017";
402
+ @MemoIdentity { :>> providedId = "HW-017"; }
402
403
  attribute :>> name = "DeviceEnclosure";
403
404
  attribute :>> responsibility = "Impact-resistant, liquid-ingress-protected housing for the pump.";
404
405
  attribute :>> safetyRole = "carries the drop and liquid-ingress requirements REQ-CS-83/84";