@memoarchitect/ontology 0.13.2 → 0.15.1
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.
- package/README.md +5 -3
- package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
- package/examples/connected-patient-monitor/memo.package.yaml +3 -1
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
- package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
- package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/functional-logical-physical/memo.identity.yaml +28 -0
- package/examples/functional-logical-physical/memo.package.yaml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
- package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
- package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
- package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
- package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
- package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
- package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
- package/examples/gpca-pump/analysis/Samples/README.md +15 -9
- package/examples/gpca-pump/analysis/memo_model.py +243 -0
- package/examples/gpca-pump/memo.identity.yaml +521 -26
- package/examples/gpca-pump/memo.package.yaml +3 -1
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
- package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
- package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/multidimensional-layers/memo.package.yaml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
- package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
- package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/reusable-instrument/memo.package.yaml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
- package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/robot-cell-family/README.md +34 -0
- package/examples/robot-cell-family/memo.identity.yaml +142 -0
- package/examples/robot-cell-family/memo.package.yaml +7 -0
- package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
- package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
- package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
- package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
- package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
- package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
- package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
- package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
- package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
- package/examples/robot-platform/memo.package.yaml +3 -0
- package/examples/robot-platform/model/platform.sysml +15 -0
- package/examples/ros-mobile-robot/README.md +5 -4
- package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
- package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
- package/examples/software-only-medical-device/memo.package.yaml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
- package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
- package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
- package/examples/surgical-robot/memo.package.yaml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
- package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/sysml-diagram-samples/README.md +1 -0
- package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
- package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
- package/examples/temperature-alarm/memo.identity.yaml +6 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
- package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/ui-screen-regions/memo.identity.yaml +33 -0
- package/examples/ui-screen-regions/memo.package.yaml +3 -1
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
- package/extensions/README.md +65 -16
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/aadl_extension.sysml +5 -2
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
- package/extensions/clinical/memo.package.yaml +1 -1
- package/extensions/clinical/src/clinical_extension.sysml +2 -0
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/messaging_extension.sysml +2 -2
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/ros_extension.sysml +25 -24
- package/extensions/template/memo.package.yaml +1 -1
- package/extensions/template/model/extension.sysml +25 -0
- package/memo.manifest.yaml +1 -7
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +6 -4
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +9 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
- package/src/architecture/functional/functions/memo_functions.sysml +45 -31
- package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
- package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
- package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
- package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
- package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
- package/src/architecture/operational/structure/memo_operational.sysml +5 -2
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
- package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
- package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
- package/src/architecture/variability/memo_variability.sysml +87 -0
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
- package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
- package/src/artifacts/standards/cfr_21_820.sysml +12 -24
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
- package/src/artifacts/standards/iec_60601_1.sysml +16 -32
- package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
- package/src/artifacts/standards/iec_60812.sysml +4 -8
- package/src/artifacts/standards/iec_62304.sysml +607 -47
- package/src/artifacts/standards/iec_62366_1.sysml +12 -24
- package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
- package/src/artifacts/standards/iso_13485.sysml +12 -24
- package/src/artifacts/standards/iso_14971.sysml +118 -20
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
- package/src/artifacts/templates/dhf/system/sad.md +1 -1
- package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
- package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
- package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
- package/src/assurance/safety_risk/memo_risk.sysml +39 -1
- package/src/core/common/memo_common.sysml +61 -68
- package/src/core/enumerations/memo_enumerations.sysml +93 -9
- package/src/core/relationships/memo_relationships.sysml +17 -11
- package/src/core/relationships/memo_workspace_membership.sysml +284 -0
- package/src/core/semantics/semantics.sysml +58 -0
- package/src/core/terminology/terminology.sysml +7 -0
- package/src/memo_namespaces.sysml +6 -0
- package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
- package/src/methodology/core/memo_core.sysml +85 -29
- package/src/methodology/profiles/memo_profiles.sysml +217 -61
- package/src/methodology/workflow/memo_workflow.sysml +28 -0
- package/src/rules/closure/closure_rules.sysml +250 -4
- package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
- package/src/rules/ontology/ontology_invariants.sysml +288 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -0
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
- package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
- package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
- package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
- package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
- package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
- package/src/viewpoints/software/software_viewpoint.sysml +2 -3
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
- package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
- package/templates/default/memo.package.yaml +6 -1
- package/templates/default/model/catalog/architecture/system.sysml +7 -3
- package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
- package/extensions/container/src/methodology/container_methodology.sysml +0 -19
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
- package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
- package/extensions/template/src/extension.sysml +0 -39
- package/templates/connected-device/memo.package.yaml +0 -13
- package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/connected-device/model/catalog/project.sysml +0 -30
- package/templates/connected-device/package.json +0 -8
- package/templates/connected-device/syside.toml +0 -13
- package/templates/infusion-pump/memo.package.yaml +0 -13
- package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
- package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/infusion-pump/model/catalog/project.sysml +0 -30
- package/templates/infusion-pump/package.json +0 -8
- package/templates/infusion-pump/syside.toml +0 -13
- package/templates/monitoring-device/memo.package.yaml +0 -13
- package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/monitoring-device/model/catalog/project.sysml +0 -30
- package/templates/monitoring-device/package.json +0 -8
- package/templates/monitoring-device/syside.toml +0 -13
- package/templates/samd/memo.package.yaml +0 -13
- package/templates/samd/model/catalog/architecture/system.sysml +0 -5
- package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/samd/model/catalog/project.sysml +0 -30
- package/templates/samd/package.json +0 -8
- package/templates/samd/syside.toml +0 -13
|
@@ -7,326 +7,331 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
7
7
|
private import memo_architecture_logical_structure::*;
|
|
8
8
|
private import memo_architecture_logical_interfaces::*;
|
|
9
9
|
private import memo_architecture_realization_physical::*;
|
|
10
|
+
private import memo_architecture_realization_deployment::*;
|
|
10
11
|
private import memo_core_relationships::*;
|
|
11
12
|
private import memo_core_enumerations::*;
|
|
12
13
|
private import memo_core_common::*;
|
|
13
14
|
private import memo_core_dimensions::*;
|
|
14
15
|
|
|
15
16
|
private import memo_core_common::MemoIdentity;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
17
|
+
part def GpcaPumpSystem specializes memo_architecture_logical_structure::System {
|
|
18
|
+
attribute :>> systemBoundaryDescription = "The general-purpose infusion pump: its logical decomposition; the device hardware and software realize it.";
|
|
19
|
+
// ── Logical components ──────────────────────────────────────
|
|
20
|
+
part lcTherapyControl : LogicalComponent {
|
|
21
|
+
@MemoIdentity { :>> providedId = "LC-001"; :>> label = "TherapyControlSubsystem"; }
|
|
22
|
+
attribute :>> responsibility = "Owns therapy state, prescription execution, and dose limiting.";
|
|
23
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
24
|
+
attribute :>> safetyPartition = "safety-critical partition";
|
|
25
|
+
}
|
|
26
|
+
part lcSafetyMonitoring : LogicalComponent {
|
|
27
|
+
@MemoIdentity { :>> providedId = "LC-002"; :>> label = "SafetyMonitoringSubsystem"; }
|
|
28
|
+
attribute :>> responsibility = "Detects exceptional conditions and drives the pump to a safe state.";
|
|
29
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
30
|
+
attribute :>> safetyPartition = "safety-critical partition";
|
|
31
|
+
}
|
|
32
|
+
part lcOperatorInterface : LogicalComponent {
|
|
33
|
+
@MemoIdentity { :>> providedId = "LC-003"; :>> label = "OperatorInterfaceSubsystem"; }
|
|
34
|
+
attribute :>> responsibility = "Prescription entry, status display, and alarm annunciation to users.";
|
|
35
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
36
|
+
attribute :>> safetyPartition = "interference-free from therapy control";
|
|
37
|
+
}
|
|
38
|
+
part lcDrugDelivery : LogicalComponent {
|
|
39
|
+
@MemoIdentity { :>> providedId = "LC-004"; :>> label = "DrugDeliverySubsystem"; }
|
|
40
|
+
attribute :>> responsibility = "Fluid path: reservoir, tubing, pump mechanism, and delivery sensors.";
|
|
41
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
42
|
+
attribute :>> safetyPartition = "safety-critical partition";
|
|
43
|
+
}
|
|
44
|
+
part lcPowerSubsystem : LogicalComponent {
|
|
45
|
+
@MemoIdentity { :>> providedId = "LC-005"; :>> label = "PowerSubsystem"; }
|
|
46
|
+
attribute :>> responsibility = "Mains and battery power management with depletion warning.";
|
|
47
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
48
|
+
attribute :>> safetyPartition = "supporting partition";
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Native SysML message: the safety monitor's alarm notification is a flow
|
|
52
|
+
// between the two logical components, not an opaque InteractionMessage.
|
|
53
|
+
message alarmNotification of LogicalExchangeItem from lcSafetyMonitoring to lcOperatorInterface;
|
|
44
54
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
attribute :>> responsibility = "Mains and battery power management with depletion warning.";
|
|
49
|
-
attribute :>> decompositionLevel = "subsystem";
|
|
50
|
-
attribute :>> safetyPartition = "supporting partition";
|
|
55
|
+
|
|
56
|
+
part gpcaPump : GpcaPumpSystem {
|
|
57
|
+
@MemoIdentity { :>> providedId = "SYS-001"; :>> label = "GPCA Infusion Pump"; }
|
|
51
58
|
}
|
|
52
59
|
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
|
|
60
|
+
// The logical architecture is realized by the product architecture, as a whole: the pump is
|
|
61
|
+
// realized by the device boundary (the AADL GPCA_Device) and by the software deployed onto it
|
|
62
|
+
// (GPCA_SW). Logical and product structures stay separate; this allocation joins them.
|
|
63
|
+
allocation deviceRealizesPump : RealizedBy allocate gpcaPump to gpcaDevice;
|
|
64
|
+
allocation softwareRealizesPump : RealizedBy allocate gpcaPump to gpcaSoftware;
|
|
56
65
|
|
|
57
66
|
// ── Device (UMN AADL architectural model) ───────────────────
|
|
58
67
|
// The AADL top-level `GPCA_Device` system. GPCA_Device.Impl declares only
|
|
59
|
-
// GPCA_HW_Sensors, GPCA_SW, and GPCA_HW_Actuators as subcomponents
|
|
68
|
+
// GPCA_HW_Sensors, GPCA_SW, and GPCA_HW_Actuators as subcomponents; the two
|
|
69
|
+
// hardware wrappers are nested here and GPCA_SW is deployed onto it (see
|
|
70
|
+
// gpcaSoftware below).
|
|
60
71
|
part gpcaDevice : PhysicalAssembly {
|
|
61
72
|
@MemoIdentity { :>> providedId = "HW-000"; }
|
|
62
|
-
attribute :>>
|
|
63
|
-
attribute :>> responsibility = "AADL device boundary containing the sensor wrapper, GPCA software, and actuator wrapper.";
|
|
73
|
+
attribute :>> responsibility = "AADL device boundary containing the sensor and actuator wrappers; the GPCA software is deployed onto it.";
|
|
64
74
|
attribute :>> safetyRole = "device boundary carrying the intended use and the risk-control architecture";
|
|
65
75
|
attribute :>> partNumber = "GPCA-DEV-001";
|
|
66
76
|
|
|
67
|
-
in port devOpCmdIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-01";
|
|
68
|
-
in port devDbIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-02";
|
|
69
|
-
in port devPresIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-03";
|
|
70
|
-
in port devPatientIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-04";
|
|
71
|
-
out port devGpcaOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-05";
|
|
77
|
+
in port devOpCmdIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-01"; :>> label = "OP_CMD_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
78
|
+
in port devDbIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-02"; :>> label = "DB_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
79
|
+
in port devPresIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-03"; :>> label = "PRES_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
80
|
+
in port devPatientIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-04"; :>> label = "PATIENT_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
81
|
+
out port devGpcaOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-DEV-05"; :>> label = "GPCA_OUT"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_Device.aadl"; } }
|
|
72
82
|
|
|
73
83
|
part gpcaDeviceSensors : HardwareAssembly {
|
|
74
|
-
@MemoIdentity { :>> providedId = "HW-001"; }
|
|
75
|
-
attribute :>> name = "GPCA_HW_Sensors";
|
|
84
|
+
@MemoIdentity { :>> providedId = "HW-001"; :>> label = "GPCA_HW_Sensors"; }
|
|
76
85
|
attribute :>> responsibility = "Map inputs to software-visible signals.";
|
|
77
86
|
attribute :>> safetyRole = "input acquisition";
|
|
78
87
|
|
|
79
|
-
in port snsOpCmdIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-01";
|
|
80
|
-
in port snsDbIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-02";
|
|
81
|
-
in port snsPresIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-03";
|
|
82
|
-
in port snsPatientIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-04";
|
|
83
|
-
out port snsOpCmdOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-05";
|
|
84
|
-
out port snsPresOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-06";
|
|
85
|
-
out port snsPatientOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-07";
|
|
86
|
-
out port snsSensorOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-08";
|
|
87
|
-
out port snsConstOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-09";
|
|
88
|
-
out port snsDbOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-10";
|
|
88
|
+
in port snsOpCmdIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-01"; :>> label = "OP_CMD_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
89
|
+
in port snsDbIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-02"; :>> label = "DB_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
90
|
+
in port snsPresIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-03"; :>> label = "PRES_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
91
|
+
in port snsPatientIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-04"; :>> label = "PATIENT_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
92
|
+
out port snsOpCmdOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-05"; :>> label = "OP_CMD_OUT"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
93
|
+
out port snsPresOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-06"; :>> label = "PRES_OUT"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
94
|
+
out port snsPatientOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-07"; :>> label = "PATIENT_OUT"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
95
|
+
out port snsSensorOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-08"; :>> label = "SENSOR_OUT"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
96
|
+
out port snsConstOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-09"; :>> label = "CONST_OUT"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
97
|
+
out port snsDbOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-SNS-10"; :>> label = "DB_OUT"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; } }
|
|
89
98
|
}
|
|
90
99
|
|
|
91
100
|
part gpcaActuators : HardwareAssembly {
|
|
92
|
-
@MemoIdentity { :>> providedId = "HW-002"; }
|
|
93
|
-
attribute :>> name = "GPCA_HW_Actuators";
|
|
101
|
+
@MemoIdentity { :>> providedId = "HW-002"; :>> label = "GPCA_HW_Actuators"; }
|
|
94
102
|
attribute :>> responsibility = "Expose software outputs to physical outputs.";
|
|
95
103
|
attribute :>> safetyRole = "actuation and operator output";
|
|
96
104
|
|
|
97
|
-
in port actGpcaSwIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-ACT-01";
|
|
98
|
-
out port actGpcaOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-ACT-02";
|
|
105
|
+
in port actGpcaSwIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-ACT-01"; :>> label = "GPCA_SW_IN"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; } }
|
|
106
|
+
out port actGpcaOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-ACT-02"; :>> label = "GPCA_OUT"; } @MemoIdentity { :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; } }
|
|
99
107
|
}
|
|
108
|
+
}
|
|
100
109
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
@MemoIdentity { :>> providedId = "PORT-02"; } attribute :>> name = "PRES_IN";
|
|
119
|
-
attribute :>> description = "Prescription data entry fields (I 1, 13 fields PatientID_prog..NumberMax_pbolus_prog).";
|
|
120
|
-
attribute :>> portKind = InterfaceKind::data;
|
|
121
|
-
attribute :>> dataTypeName = "DATATYPES::Prescription_Inputs.Impl";
|
|
122
|
-
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
123
|
-
}
|
|
124
|
-
in port portPatientIn : SoftwarePort {
|
|
125
|
-
@MemoIdentity { :>> providedId = "PORT-03"; } attribute :>> name = "PATIENT_IN";
|
|
126
|
-
attribute :>> description = "Patient bolus request (I 4, BolusRequest_prog).";
|
|
127
|
-
attribute :>> portKind = InterfaceKind::userInteraction;
|
|
128
|
-
attribute :>> dataTypeName = "DATATYPES::Patient_Inputs.Impl";
|
|
129
|
-
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
130
|
-
}
|
|
131
|
-
in port portSensorIn : SoftwarePort {
|
|
132
|
-
@MemoIdentity { :>> providedId = "PORT-04"; } attribute :>> name = "SENSOR_IN";
|
|
133
|
-
attribute :>> description = "Device sensor inputs (air-in-line, occlusion, door, reservoir, flow).";
|
|
134
|
-
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
135
|
-
attribute :>> dataTypeName = "DATATYPES::Device_Sensor_Inputs.Impl";
|
|
136
|
-
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
137
|
-
}
|
|
138
|
-
in port portConstIn : SoftwarePort {
|
|
139
|
-
@MemoIdentity { :>> providedId = "PORT-05"; } attribute :>> name = "CONST_IN";
|
|
140
|
-
attribute :>> description = "Device configuration constants (App. A.4 values such as Empty_Reservoir, tolerances).";
|
|
141
|
-
attribute :>> portKind = InterfaceKind::data;
|
|
142
|
-
attribute :>> dataTypeName = "DATATYPES::Device_Configuration_Inputs.Impl";
|
|
143
|
-
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
144
|
-
}
|
|
145
|
-
in port portDbIn : SoftwarePort {
|
|
146
|
-
@MemoIdentity { :>> providedId = "PORT-06"; } attribute :>> name = "DB_IN";
|
|
147
|
-
attribute :>> description = "Hospital pharmacy database safe values (I 9-I 11); realizes SI-005 HospitalPharmacyDatabaseInterface.";
|
|
148
|
-
attribute :>> portKind = InterfaceKind::data;
|
|
149
|
-
attribute :>> dataTypeName = "DATATYPES::Drug_Database_Inputs.Impl";
|
|
150
|
-
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
151
|
-
}
|
|
152
|
-
out port portGpcaSwOut : SoftwarePort {
|
|
153
|
-
@MemoIdentity { :>> providedId = "PORT-07"; } attribute :>> name = "GPCA_SW_OUT";
|
|
154
|
-
attribute :>> description = "Aggregated software output vector (Current_System_Mode, Commanded_Flow_Rate, notifications, prescription echo, status).";
|
|
155
|
-
attribute :>> portKind = InterfaceKind::data;
|
|
156
|
-
attribute :>> dataTypeName = "DATATYPES::GPCA_SW_Outputs.Impl";
|
|
157
|
-
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
part tlm : SoftwareModule {
|
|
161
|
-
@MemoIdentity { :>> providedId = "SW-001"; }
|
|
162
|
-
attribute :>> name = "Top_Level_Mode";
|
|
163
|
-
attribute :>> responsibility = "Ensure system ON/OFF behavior and startup/shutdown checks.";
|
|
164
|
-
attribute :>> safetyClass = SafetyClassKind::C;
|
|
165
|
-
attribute :>> complexity = ComplexityKind::medium;
|
|
166
|
-
|
|
167
|
-
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)"; } }
|
|
168
|
-
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)"; } }
|
|
169
|
-
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
|
-
}
|
|
110
|
+
// ── Software (UMN AADL architectural model) ─────────────────
|
|
111
|
+
// AADL's GPCA_Device.Impl lists GPCA_SW as a subcomponent beside the
|
|
112
|
+
// sensor and actuator wrappers. MEMO does not nest it there: gpcaDevice is
|
|
113
|
+
// a PhysicalAssembly, and software on hardware is DEPLOYMENT, which
|
|
114
|
+
// gpcaSoftwareDeployment (gpca_trace) records: the firmware image deploys
|
|
115
|
+
// to mainController, which controllerBoard hosts. A
|
|
116
|
+
// physical assembly containing the software system says the same thing a
|
|
117
|
+
// second time as containment, which CR-ONT-079 rejects. The AADL port
|
|
118
|
+
// wiring is unchanged: the sensor-to-software and software-to-actuator
|
|
119
|
+
// flows were always written at package level.
|
|
120
|
+
part gpcaSoftware : SoftwareSystem {
|
|
121
|
+
@MemoIdentity { :>> providedId = "SWS-001"; }
|
|
122
|
+
attribute :>> version = "2.0";
|
|
123
|
+
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
124
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
125
|
+
attribute :>> complexity = ComplexityKind::high;
|
|
126
|
+
attribute :>> operatingSystem = "synchronous data-flow execution; AADL immediate port semantics (source specifies no timing)";
|
|
171
127
|
|
|
172
|
-
|
|
173
|
-
@MemoIdentity { :>> providedId = "
|
|
174
|
-
|
|
175
|
-
attribute :>>
|
|
176
|
-
attribute :>>
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
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)"; } }
|
|
180
|
-
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)"; } }
|
|
181
|
-
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)"; } }
|
|
182
|
-
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)"; } }
|
|
183
|
-
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)"; } }
|
|
184
|
-
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)"; } }
|
|
185
|
-
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)"; } }
|
|
128
|
+
in port portOpCmdIn : SoftwarePort {
|
|
129
|
+
@MemoIdentity { :>> providedId = "PORT-01"; :>> label = "OP_CMD_IN"; }
|
|
130
|
+
doc /* Operator commands (System_Start/Stop, Infusion_Initiate/Inhibit, Notification_Cancel, Disable/Enable_Audio, DataConfig) from the data entry interface (I 2). */
|
|
131
|
+
attribute :>> portKind = InterfaceKind::control;
|
|
132
|
+
attribute :>> dataTypeName = "DATATYPES::Operator_Commands.Impl";
|
|
133
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
186
134
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
attribute :>>
|
|
191
|
-
attribute :>>
|
|
192
|
-
|
|
193
|
-
attribute :>> complexity = ComplexityKind::high;
|
|
194
|
-
|
|
195
|
-
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)"; } }
|
|
196
|
-
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)"; } }
|
|
197
|
-
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)"; } }
|
|
198
|
-
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)"; } }
|
|
199
|
-
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)"; } }
|
|
200
|
-
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)"; } }
|
|
201
|
-
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)"; } }
|
|
202
|
-
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)"; } }
|
|
203
|
-
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)"; } }
|
|
204
|
-
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)"; } }
|
|
135
|
+
in port portPresIn : SoftwarePort {
|
|
136
|
+
@MemoIdentity { :>> providedId = "PORT-02"; :>> label = "PRES_IN"; }
|
|
137
|
+
doc /* Prescription data entry fields (I 1, 13 fields PatientID_prog..NumberMax_pbolus_prog). */
|
|
138
|
+
attribute :>> portKind = InterfaceKind::data;
|
|
139
|
+
attribute :>> dataTypeName = "DATATYPES::Prescription_Inputs.Impl";
|
|
140
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
205
141
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
attribute :>>
|
|
210
|
-
attribute :>>
|
|
211
|
-
|
|
212
|
-
attribute :>> complexity = ComplexityKind::medium;
|
|
213
|
-
|
|
214
|
-
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)"; } }
|
|
215
|
-
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)"; } }
|
|
216
|
-
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)"; } }
|
|
217
|
-
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)"; } }
|
|
218
|
-
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)"; } }
|
|
219
|
-
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)"; } }
|
|
142
|
+
in port portPatientIn : SoftwarePort {
|
|
143
|
+
@MemoIdentity { :>> providedId = "PORT-03"; :>> label = "PATIENT_IN"; }
|
|
144
|
+
doc /* Patient bolus request (I 4, BolusRequest_prog). */
|
|
145
|
+
attribute :>> portKind = InterfaceKind::userInteraction;
|
|
146
|
+
attribute :>> dataTypeName = "DATATYPES::Patient_Inputs.Impl";
|
|
147
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
220
148
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
attribute :>>
|
|
225
|
-
attribute :>>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
149
|
+
in port portSensorIn : SoftwarePort {
|
|
150
|
+
@MemoIdentity { :>> providedId = "PORT-04"; :>> label = "SENSOR_IN"; }
|
|
151
|
+
doc /* Device sensor inputs (air-in-line, occlusion, door, reservoir, flow). */
|
|
152
|
+
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
153
|
+
attribute :>> dataTypeName = "DATATYPES::Device_Sensor_Inputs.Impl";
|
|
154
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
155
|
+
}
|
|
156
|
+
in port portConstIn : SoftwarePort {
|
|
157
|
+
@MemoIdentity { :>> providedId = "PORT-05"; :>> label = "CONST_IN"; }
|
|
158
|
+
doc /* Device configuration constants (App. A.4 values such as Empty_Reservoir, tolerances). */
|
|
159
|
+
attribute :>> portKind = InterfaceKind::data;
|
|
160
|
+
attribute :>> dataTypeName = "DATATYPES::Device_Configuration_Inputs.Impl";
|
|
161
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
162
|
+
}
|
|
163
|
+
in port portDbIn : SoftwarePort {
|
|
164
|
+
@MemoIdentity { :>> providedId = "PORT-06"; :>> label = "DB_IN"; }
|
|
165
|
+
doc /* Hospital pharmacy database safe values (I 9-I 11); realizes SI-005 HospitalPharmacyDatabaseInterface. */
|
|
166
|
+
attribute :>> portKind = InterfaceKind::data;
|
|
167
|
+
attribute :>> dataTypeName = "DATATYPES::Drug_Database_Inputs.Impl";
|
|
168
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
169
|
+
}
|
|
170
|
+
out port portGpcaSwOut : SoftwarePort {
|
|
171
|
+
@MemoIdentity { :>> providedId = "PORT-07"; :>> label = "GPCA_SW_OUT"; }
|
|
172
|
+
doc /* Aggregated software output vector (Current_System_Mode, Commanded_Flow_Rate, notifications, prescription echo, status). */
|
|
173
|
+
attribute :>> portKind = InterfaceKind::data;
|
|
174
|
+
attribute :>> dataTypeName = "DATATYPES::GPCA_SW_Outputs.Impl";
|
|
175
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
|
|
236
176
|
}
|
|
237
177
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
attribute :>> complexity = ComplexityKind::medium;
|
|
178
|
+
part tlm : SoftwareModule {
|
|
179
|
+
@MemoIdentity { :>> providedId = "SW-001"; :>> label = "Top_Level_Mode"; }
|
|
180
|
+
attribute :>> responsibility = "Ensure system ON/OFF behavior and startup/shutdown checks.";
|
|
181
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
182
|
+
attribute :>> complexity = ComplexityKind::medium;
|
|
244
183
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
184
|
+
in port portTlmConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-01"; :>> label = "CONST_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
|
|
185
|
+
in port portTlmOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-02"; :>> label = "OP_CMD_IN"; } attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
|
|
186
|
+
out port portTlmTlmModeOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-TLM-03"; :>> label = "TLM_MODE_OUT"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (TLM)"; } }
|
|
187
|
+
}
|
|
248
188
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
attribute :>> complexity = ComplexityKind::medium;
|
|
255
|
-
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/System_Status.aadl"; }
|
|
256
|
-
|
|
257
|
-
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)"; } }
|
|
258
|
-
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)"; } }
|
|
259
|
-
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)"; } }
|
|
260
|
-
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)"; } }
|
|
261
|
-
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)"; } }
|
|
262
|
-
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
|
-
}
|
|
189
|
+
part config : SoftwareModule {
|
|
190
|
+
@MemoIdentity { :>> providedId = "SW-002"; }
|
|
191
|
+
attribute :>> responsibility = "Prescription entry, drug-library limit checking, confirmation, and persistent storage.";
|
|
192
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
193
|
+
attribute :>> complexity = ComplexityKind::high;
|
|
264
194
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
}
|
|
282
|
-
}
|
|
195
|
+
out port portConfigConfigOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-01"; :>> label = "CONFIG_OUT"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
196
|
+
in port portConfigConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-02"; :>> label = "CONST_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
197
|
+
in port portConfigDbIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-03"; :>> label = "DB_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
198
|
+
in port portConfigOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-04"; :>> label = "OP_CMD_IN"; } attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
199
|
+
in port portConfigPresIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-05"; :>> label = "PRES_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
200
|
+
in port portConfigSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-06"; :>> label = "SYS_STAT_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
201
|
+
in port portConfigTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-CFG-07"; :>> label = "TLM_MODE_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (CONFIG)"; } }
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
part alarm : SoftwareModule {
|
|
205
|
+
@MemoIdentity { :>> providedId = "SW-003"; }
|
|
206
|
+
attribute :>> responsibility = "Monitor and notify exceptional conditions.";
|
|
207
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
208
|
+
attribute :>> complexity = ComplexityKind::high;
|
|
209
|
+
|
|
210
|
+
out port portAlarmAlarmOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-01"; :>> label = "ALARM_OUT"; } attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
211
|
+
in port portAlarmConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-02"; :>> label = "CONFIG_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
212
|
+
in port portAlarmConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-03"; :>> label = "CONST_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
213
|
+
in port portAlarmDbIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-04"; :>> label = "DB_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
214
|
+
in port portAlarmImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-05"; :>> label = "IM_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
215
|
+
in port portAlarmOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-06"; :>> label = "OP_CMD_IN"; } attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
216
|
+
in port portAlarmSensorIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-07"; :>> label = "SENSOR_IN"; } attribute :>> portKind = InterfaceKind::digitalSignal; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
217
|
+
in port portAlarmSysMonIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-08"; :>> label = "SYS_MON_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
218
|
+
in port portAlarmSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-09"; :>> label = "SYS_STAT_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
219
|
+
in port portAlarmTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-ALM-10"; :>> label = "TLM_MODE_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (ALARM)"; } }
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
part logging : SoftwareModule {
|
|
223
|
+
@MemoIdentity { :>> providedId = "SW-004"; }
|
|
224
|
+
attribute :>> responsibility = "Append-only event log of doses, mode changes, alarms, and configuration changes.";
|
|
225
|
+
attribute :>> safetyClass = SafetyClassKind::B;
|
|
226
|
+
attribute :>> complexity = ComplexityKind::medium;
|
|
227
|
+
|
|
228
|
+
in port portLogAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-01"; :>> label = "ALARM_IN"; } attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
229
|
+
in port portLogConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-02"; :>> label = "CONFIG_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
230
|
+
in port portLogImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-03"; :>> label = "IM_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
231
|
+
out port portLogLogOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-04"; :>> label = "LOG_OUT"; } attribute :>> portKind = InterfaceKind::logging; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
232
|
+
in port portLogSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-05"; :>> label = "SYS_STAT_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
233
|
+
in port portLogTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-LOG-06"; :>> label = "TLM_MODE_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (LOG)"; } }
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
part infusionMgr : SoftwareModule {
|
|
237
|
+
@MemoIdentity { :>> providedId = "SW-005"; :>> label = "Infusion_Manager"; }
|
|
238
|
+
attribute :>> responsibility = "Handle drug infusion commands and therapy parameters.";
|
|
239
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
240
|
+
attribute :>> complexity = ComplexityKind::high;
|
|
241
|
+
|
|
242
|
+
in port portImAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-01"; :>> label = "ALARM_IN"; } attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
243
|
+
in port portImConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-02"; :>> label = "CONFIG_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
244
|
+
out port portImImOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-03"; :>> label = "IM_OUT"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
245
|
+
in port portImOpCmdIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-04"; :>> label = "OP_CMD_IN"; } attribute :>> portKind = InterfaceKind::control; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
246
|
+
in port portImPatientIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-05"; :>> label = "PATIENT_IN"; } attribute :>> portKind = InterfaceKind::userInteraction; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
247
|
+
in port portImSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-06"; :>> label = "SYS_STAT_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
248
|
+
in port portImTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-IM-07"; :>> label = "TLM_MODE_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (IM)"; } }
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
part systemMonitor : SoftwareModule {
|
|
252
|
+
@MemoIdentity { :>> providedId = "SW-006"; }
|
|
253
|
+
attribute :>> responsibility = "POST, periodic CPU/RAM/ROM checks, watchdog kicking, and battery supervision.";
|
|
254
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
255
|
+
attribute :>> complexity = ComplexityKind::medium;
|
|
256
|
+
|
|
257
|
+
out port portSysMonSysMonOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-MON-01"; :>> label = "SYS_MON_OUT"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_MON)"; } }
|
|
258
|
+
in port portSysMonTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-MON-02"; :>> label = "TLM_MODE_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_MON)"; } }
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
part systemStatus : SoftwareModule {
|
|
262
|
+
@MemoIdentity { :>> providedId = "SW-007"; }
|
|
263
|
+
attribute :>> responsibility = "Maintain the shared system status vector (Reservoir_Volume, Volume_Infused, Reservoir_Empty, In_Therapy) consumed by Alarm, Config, and Infusion_Manager.";
|
|
264
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
265
|
+
attribute :>> complexity = ComplexityKind::medium;
|
|
266
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/System_Status.aadl"; }
|
|
267
|
+
|
|
268
|
+
in port portSysStatConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-01"; :>> label = "CONFIG_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
269
|
+
in port portSysStatConstIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-02"; :>> label = "CONST_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
270
|
+
in port portSysStatImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-03"; :>> label = "IM_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
271
|
+
in port portSysStatSensorIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-04"; :>> label = "SENSOR_IN"; } attribute :>> portKind = InterfaceKind::digitalSignal; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
272
|
+
out port portSysStatSysStatOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-05"; :>> label = "SYS_STAT_OUT"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
273
|
+
in port portSysStatTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-STAT-06"; :>> label = "TLM_MODE_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (SYS_STAT)"; } }
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
part outputBus : SoftwareModule {
|
|
277
|
+
@MemoIdentity { :>> providedId = "SW-008"; }
|
|
278
|
+
attribute :>> responsibility = "Aggregate all subsystem outputs into the single GPCA_SW_OUT output vector (mode, commanded flow rate, notifications, prescription echo, status).";
|
|
279
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
280
|
+
attribute :>> complexity = ComplexityKind::low;
|
|
281
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/OutputBus.aadl"; }
|
|
282
|
+
|
|
283
|
+
in port portOutputAlarmIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-01"; :>> label = "ALARM_IN"; } attribute :>> portKind = InterfaceKind::notification; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
284
|
+
in port portOutputConfigIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-02"; :>> label = "CONFIG_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
285
|
+
out port portOutputGpcaSwOut : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-03"; :>> label = "GPCA_SW_OUT"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
286
|
+
in port portOutputImIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-04"; :>> label = "IM_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
287
|
+
in port portOutputLogIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-05"; :>> label = "LOG_IN"; } attribute :>> portKind = InterfaceKind::logging; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
288
|
+
in port portOutputSysMonIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-06"; :>> label = "SYS_MON_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
289
|
+
in port portOutputSysStatIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-07"; :>> label = "SYS_STAT_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
290
|
+
in port portOutputTlmModeIn : SoftwarePort { @MemoIdentity { :>> providedId = "PORT-OUT-08"; :>> label = "TLM_MODE_IN"; } attribute :>> portKind = InterfaceKind::data; @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (OUTPUT)"; } }
|
|
291
|
+
}
|
|
283
292
|
}
|
|
284
293
|
|
|
285
294
|
// ── Hardware: aggregates (UMN AADL architectural model) ─────
|
|
286
295
|
// ── Hardware: sensor suite ──────────────────────────────────
|
|
287
296
|
part airInLineSensor : HardwareAssembly {
|
|
288
297
|
@MemoIdentity { :>> providedId = "HW-006"; }
|
|
289
|
-
attribute :>> name = "AirInLineSensor";
|
|
290
298
|
attribute :>> responsibility = "Ultrasonic detection of air bubbles in the delivery tubing.";
|
|
291
299
|
attribute :>> safetyRole = "detects air embolism precursor; feeds High-priority Air embolism notification";
|
|
292
300
|
attribute :>> partNumber = "GPCA-SNS-AIR";
|
|
293
301
|
attribute :>> mtbfHours = "150000";
|
|
294
302
|
}
|
|
295
303
|
part occlusionSensor : HardwareAssembly {
|
|
296
|
-
@MemoIdentity { :>> providedId = "HW-007"; }
|
|
297
|
-
|
|
304
|
+
@MemoIdentity { :>> providedId = "HW-007"; :>> label = "OcclusionPressureSensor"; }
|
|
305
|
+
out port portOcclusionOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-OCC-01"; :>> label = "OCCLUSION_PRESSURE_OUT"; } }
|
|
298
306
|
attribute :>> responsibility = "Measures downstream line pressure to detect occlusion.";
|
|
299
307
|
attribute :>> safetyRole = "detects blocked line (under-infusion, post-occlusion bolus)";
|
|
300
308
|
attribute :>> partNumber = "GPCA-SNS-OCC";
|
|
301
309
|
attribute :>> mtbfHours = "150000";
|
|
302
310
|
}
|
|
303
311
|
part reservoirSensor : HardwareAssembly {
|
|
304
|
-
@MemoIdentity { :>> providedId = "HW-008"; }
|
|
305
|
-
attribute :>> name = "ReservoirVolumeSensor";
|
|
312
|
+
@MemoIdentity { :>> providedId = "HW-008"; :>> label = "ReservoirVolumeSensor"; }
|
|
306
313
|
attribute :>> responsibility = "Reports remaining reservoir volume and empty condition.";
|
|
307
314
|
attribute :>> safetyRole = "prevents dry pumping and undetected therapy interruption";
|
|
308
315
|
attribute :>> partNumber = "GPCA-SNS-RSV";
|
|
309
316
|
attribute :>> mtbfHours = "120000";
|
|
310
317
|
}
|
|
311
318
|
part doorSensor : HardwareAssembly {
|
|
312
|
-
@MemoIdentity { :>> providedId = "HW-009"; }
|
|
313
|
-
attribute :>> name = "DoorLatchSensor";
|
|
319
|
+
@MemoIdentity { :>> providedId = "HW-009"; :>> label = "DoorLatchSensor"; }
|
|
314
320
|
attribute :>> responsibility = "Detects open reservoir door / unlatched pumping chamber.";
|
|
315
321
|
attribute :>> safetyRole = "prevents free flow and tampering with the fluid path";
|
|
316
322
|
attribute :>> partNumber = "GPCA-SNS-DOR";
|
|
317
323
|
attribute :>> mtbfHours = "200000";
|
|
318
324
|
}
|
|
319
325
|
part flowSensor : HardwareAssembly {
|
|
320
|
-
@MemoIdentity { :>> providedId = "HW-010"; }
|
|
321
|
-
attribute :>> name = "DeliveryFlowSensor";
|
|
326
|
+
@MemoIdentity { :>> providedId = "HW-010"; :>> label = "DeliveryFlowSensor"; }
|
|
322
327
|
attribute :>> responsibility = "Independent measurement of delivered flow for cross-check against commanded flow.";
|
|
323
328
|
attribute :>> safetyRole = "detects over/under-infusion independent of motor control";
|
|
324
329
|
attribute :>> partNumber = "GPCA-SNS-FLW";
|
|
325
330
|
attribute :>> mtbfHours = "100000";
|
|
326
331
|
}
|
|
327
332
|
part bolusButton : HardwareAssembly {
|
|
328
|
-
@MemoIdentity { :>> providedId = "HW-011"; }
|
|
329
|
-
|
|
333
|
+
@MemoIdentity { :>> providedId = "HW-011"; :>> label = "PatientBolusButton"; }
|
|
334
|
+
out port portPendantOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-BOL-01"; :>> label = "PENDANT_OUT"; } }
|
|
330
335
|
attribute :>> responsibility = "Debounced patient pendant switch for bolus requests.";
|
|
331
336
|
attribute :>> safetyRole = "sole patient input; stuck-button detection required";
|
|
332
337
|
attribute :>> partNumber = "GPCA-INP-BOL";
|
|
@@ -334,7 +339,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
334
339
|
}
|
|
335
340
|
part operatorKeypad : HardwareAssembly {
|
|
336
341
|
@MemoIdentity { :>> providedId = "HW-012"; }
|
|
337
|
-
|
|
342
|
+
out port portPrescriptionOut : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-KEY-01"; :>> label = "PRESCRIPTION_OUT"; } @MemoIdentity { :>> sourceReference = "MEMO design extension; not a GPCA_Device.aadl feature: the boundary CE-004 (PrescriptionEntryExchange) leaves the keypad by"; } }
|
|
338
343
|
attribute :>> responsibility = "Clinician input for prescription programming and alarm handling.";
|
|
339
344
|
attribute :>> safetyRole = "prescription entry path; key-lock guarded";
|
|
340
345
|
attribute :>> partNumber = "GPCA-INP-KEY";
|
|
@@ -343,7 +348,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
343
348
|
// ── Hardware: actuator and output suite ─────────────────────
|
|
344
349
|
part pumpMotorAssembly : HardwareAssembly {
|
|
345
350
|
@MemoIdentity { :>> providedId = "HW-003"; }
|
|
346
|
-
|
|
351
|
+
in port portFlowCommandIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-PMP-01"; :>> label = "FLOW_CMD_IN"; } @MemoIdentity { :>> sourceReference = "MEMO design extension; not a GPCA_Device.aadl feature: the boundary CE-002 (FlowCommandExchange) reaches the pump motor by"; } }
|
|
347
352
|
attribute :>> responsibility = "Peristaltic pump mechanism and stepper motor driving drug delivery.";
|
|
348
353
|
attribute :>> safetyRole = "single point of drug delivery; rotation monitored by flow sensor";
|
|
349
354
|
attribute :>> partNumber = "GPCA-ACT-PMP";
|
|
@@ -351,21 +356,19 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
351
356
|
}
|
|
352
357
|
part antiFreeFlowValve : HardwareAssembly {
|
|
353
358
|
@MemoIdentity { :>> providedId = "HW-013"; }
|
|
354
|
-
attribute :>> name = "AntiFreeFlowValve";
|
|
355
359
|
attribute :>> responsibility = "Mechanical valve that blocks gravity free flow whenever the pumping chamber is disengaged.";
|
|
356
360
|
attribute :>> safetyRole = "inherent safe design against free-flow overdose";
|
|
357
361
|
attribute :>> partNumber = "GPCA-ACT-AFF";
|
|
358
362
|
}
|
|
359
363
|
part audibleAlarm : HardwareAssembly {
|
|
360
|
-
@MemoIdentity { :>> providedId = "HW-004"; }
|
|
361
|
-
|
|
364
|
+
@MemoIdentity { :>> providedId = "HW-004"; :>> label = "AudibleAlarmAnnunciator"; }
|
|
365
|
+
in port portAlarmIn : PhysicalPort { @MemoIdentity { :>> providedId = "PORT-BZR-01"; :>> label = "ALARM_IN"; } @MemoIdentity { :>> sourceReference = "MEMO design extension; not a GPCA_Device.aadl feature: the boundary CE-003 (AlarmAnnunciationExchange) reaches the buzzer by"; } }
|
|
362
366
|
attribute :>> responsibility = "Buzzer producing multi-priority alarm tones at or above 45 dB(A) at 1 m.";
|
|
363
367
|
attribute :>> safetyRole = "primary alarm annunciation path";
|
|
364
368
|
attribute :>> partNumber = "GPCA-ACT-BZR";
|
|
365
369
|
}
|
|
366
370
|
part operatorDisplay : HardwareAssembly {
|
|
367
371
|
@MemoIdentity { :>> providedId = "HW-005"; }
|
|
368
|
-
attribute :>> name = "OperatorDisplay";
|
|
369
372
|
attribute :>> responsibility = "Displays mode, prescription, delivered dose, and alarm messages.";
|
|
370
373
|
attribute :>> safetyRole = "visual alarm annunciation and prescription confirmation readback";
|
|
371
374
|
attribute :>> partNumber = "GPCA-ACT-DSP";
|
|
@@ -373,8 +376,7 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
373
376
|
|
|
374
377
|
// ── Hardware: platform ──────────────────────────────────────
|
|
375
378
|
part controllerBoard : HardwareAssembly {
|
|
376
|
-
@MemoIdentity { :>> providedId = "HW-014"; }
|
|
377
|
-
attribute :>> name = "MainControllerBoard";
|
|
379
|
+
@MemoIdentity { :>> providedId = "HW-014"; :>> label = "MainControllerBoard"; }
|
|
378
380
|
attribute :>> responsibility = "Hosts the microcontroller, memory, and hardware watchdog executing the GPCA software.";
|
|
379
381
|
attribute :>> safetyRole = "computing platform; watchdog forces safe state on CPU hang";
|
|
380
382
|
attribute :>> partNumber = "GPCA-PCB-MAIN";
|
|
@@ -382,15 +384,13 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
382
384
|
}
|
|
383
385
|
part batteryPack : HardwareAssembly {
|
|
384
386
|
@MemoIdentity { :>> providedId = "HW-015"; }
|
|
385
|
-
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";
|
|
388
389
|
attribute :>> partNumber = "GPCA-PWR-BAT";
|
|
389
390
|
attribute :>> mtbfHours = "20000";
|
|
390
391
|
}
|
|
391
392
|
part powerSupply : HardwareAssembly {
|
|
392
|
-
@MemoIdentity { :>> providedId = "HW-016"; }
|
|
393
|
-
attribute :>> name = "MainsPowerSupply";
|
|
393
|
+
@MemoIdentity { :>> providedId = "HW-016"; :>> label = "MainsPowerSupply"; }
|
|
394
394
|
attribute :>> responsibility = "Medical-grade AC/DC supply with charger and mains-loss signal.";
|
|
395
395
|
attribute :>> safetyRole = "isolation per IEC 60601-1; signals switchover to battery";
|
|
396
396
|
attribute :>> partNumber = "GPCA-PWR-PSU";
|
|
@@ -398,125 +398,127 @@ package memo_examples_gpca_pump_gpca_architecture {
|
|
|
398
398
|
attribute :>> ipRating = "IPX2";
|
|
399
399
|
}
|
|
400
400
|
part enclosure : HardwareAssembly {
|
|
401
|
-
@MemoIdentity { :>> providedId = "HW-017"; }
|
|
402
|
-
attribute :>> name = "DeviceEnclosure";
|
|
401
|
+
@MemoIdentity { :>> providedId = "HW-017"; :>> label = "DeviceEnclosure"; }
|
|
403
402
|
attribute :>> responsibility = "Impact-resistant, liquid-ingress-protected housing for the pump.";
|
|
404
403
|
attribute :>> safetyRole = "carries the drop and liquid-ingress requirements REQ-CS-83/84";
|
|
405
404
|
attribute :>> partNumber = "GPCA-MECH-ENC";
|
|
406
405
|
}
|
|
407
406
|
|
|
408
407
|
// ── Structural composition ──────────────────────────────────
|
|
409
|
-
// Device level (GPCA_Device.aadl): the assemblies
|
|
410
|
-
//
|
|
411
|
-
//
|
|
408
|
+
// Device level (GPCA_Device.aadl): the two assemblies are nested directly
|
|
409
|
+
// in gpcaDevice's body above, native containment instead of a Composes
|
|
410
|
+
// edge; the software system is a package-level part deployed onto the
|
|
411
|
+
// controller board. The software modules (MEMO design
|
|
412
412
|
// extensions derived from system requirements and hazard analysis, not
|
|
413
413
|
// subcomponents in the published AADL packages) are nested the same way,
|
|
414
414
|
// inside gpcaSoftware's own body.
|
|
415
|
-
|
|
416
|
-
satisfy reqCs01 by
|
|
417
|
-
satisfy
|
|
418
|
-
satisfy
|
|
419
|
-
satisfy
|
|
420
|
-
|
|
421
|
-
satisfy
|
|
422
|
-
satisfy
|
|
423
|
-
satisfy
|
|
424
|
-
satisfy
|
|
425
|
-
satisfy
|
|
415
|
+
// --8<-- [start:satisfy]
|
|
416
|
+
satisfy reqCs01 by gpcaSoftware.tlm;
|
|
417
|
+
satisfy reqCs01 by gpcaSoftware.outputBus;
|
|
418
|
+
satisfy reqCs18 by gpcaSoftware.systemStatus;
|
|
419
|
+
satisfy reqCs23 by gpcaSoftware.systemStatus;
|
|
420
|
+
// --8<-- [end:satisfy]
|
|
421
|
+
satisfy reqCs25 by gpcaSoftware.infusionMgr;
|
|
422
|
+
satisfy reqCs19 by gpcaSoftware.alarm;
|
|
423
|
+
satisfy reqDrugLibraryLimits by gpcaSoftware.config;
|
|
424
|
+
satisfy reqCs09 by gpcaSoftware.config;
|
|
425
|
+
satisfy reqPowerLossRetention by gpcaSoftware.config;
|
|
426
|
+
satisfy reqPost by gpcaSoftware.systemMonitor;
|
|
427
|
+
satisfy reqWatchdogSafeState by gpcaSoftware.systemMonitor;
|
|
426
428
|
satisfy reqWatchdogSafeState by controllerBoard;
|
|
427
|
-
satisfy reqCs59 by
|
|
429
|
+
satisfy reqCs59 by gpcaSoftware.alarm;
|
|
428
430
|
satisfy reqCs72 by audibleAlarm;
|
|
429
|
-
satisfy reqCs73 by
|
|
430
|
-
satisfy reqCs75 by
|
|
431
|
+
satisfy reqCs73 by gpcaSoftware.alarm;
|
|
432
|
+
satisfy reqCs75 by gpcaSoftware.alarm;
|
|
431
433
|
satisfy reqCs21 by airInLineSensor;
|
|
432
|
-
satisfy reqCs21 by
|
|
434
|
+
satisfy reqCs21 by gpcaSoftware.alarm;
|
|
433
435
|
satisfy reqOcclusion by occlusionSensor;
|
|
434
|
-
satisfy reqOcclusion by
|
|
436
|
+
satisfy reqOcclusion by gpcaSoftware.alarm;
|
|
435
437
|
satisfy reqCs23 by reservoirSensor;
|
|
436
|
-
satisfy reqCs23 by
|
|
438
|
+
satisfy reqCs23 by gpcaSoftware.infusionMgr;
|
|
437
439
|
satisfy reqDoorOpen by doorSensor;
|
|
438
|
-
satisfy reqDoorOpen by
|
|
439
|
-
satisfy reqMaxHourlyDose by
|
|
440
|
-
satisfy reqStuckButton by
|
|
440
|
+
satisfy reqDoorOpen by gpcaSoftware.infusionMgr;
|
|
441
|
+
satisfy reqMaxHourlyDose by gpcaSoftware.infusionMgr;
|
|
442
|
+
satisfy reqStuckButton by gpcaSoftware.infusionMgr;
|
|
441
443
|
satisfy reqFlowCrossCheck by flowSensor;
|
|
442
|
-
satisfy reqFlowCrossCheck by
|
|
443
|
-
satisfy reqCs77 by
|
|
444
|
-
satisfy reqCs78 by
|
|
445
|
-
satisfy reqEventLogging by
|
|
446
|
-
satisfy reqCs02 by
|
|
447
|
-
satisfy reqCs03 by
|
|
448
|
-
satisfy reqCs04 by
|
|
449
|
-
satisfy reqCs05 by
|
|
450
|
-
satisfy reqCs06 by
|
|
451
|
-
satisfy reqCs07 by
|
|
452
|
-
satisfy reqCs08 by
|
|
453
|
-
satisfy reqCs10 by
|
|
454
|
-
satisfy reqCs11 by
|
|
455
|
-
satisfy reqCs12 by
|
|
456
|
-
satisfy reqCs13 by
|
|
457
|
-
satisfy reqCs14 by
|
|
458
|
-
satisfy reqCs15 by
|
|
459
|
-
satisfy reqCs16 by
|
|
460
|
-
satisfy reqCs17 by
|
|
461
|
-
satisfy reqCs18 by
|
|
462
|
-
satisfy reqCs20 by
|
|
463
|
-
satisfy reqCs22 by
|
|
464
|
-
satisfy reqCs24 by
|
|
465
|
-
satisfy reqCs26 by
|
|
466
|
-
satisfy reqCs27 by
|
|
467
|
-
satisfy reqCs28 by
|
|
468
|
-
satisfy reqCs29 by
|
|
469
|
-
satisfy reqCs30 by
|
|
470
|
-
satisfy reqCs31 by
|
|
471
|
-
satisfy reqCs32 by
|
|
472
|
-
satisfy reqCs33 by
|
|
473
|
-
satisfy reqCs34 by
|
|
474
|
-
satisfy reqCs35 by
|
|
475
|
-
satisfy reqCs36 by
|
|
476
|
-
satisfy reqCs37 by
|
|
477
|
-
satisfy reqCs38 by
|
|
478
|
-
satisfy reqCs39 by
|
|
479
|
-
satisfy reqCs40 by
|
|
480
|
-
satisfy reqCs41 by
|
|
481
|
-
satisfy reqCs42 by
|
|
482
|
-
satisfy reqCs43 by
|
|
483
|
-
satisfy reqCs44 by
|
|
484
|
-
satisfy reqCs45 by
|
|
485
|
-
satisfy reqCs46 by
|
|
486
|
-
satisfy reqCs47 by
|
|
487
|
-
satisfy reqCs48 by
|
|
488
|
-
satisfy reqCs49 by
|
|
489
|
-
satisfy reqCs50 by
|
|
490
|
-
satisfy reqCs51 by
|
|
491
|
-
satisfy reqCs52 by
|
|
492
|
-
satisfy reqCs53 by
|
|
493
|
-
satisfy reqCs54 by
|
|
494
|
-
satisfy reqCs55 by
|
|
495
|
-
satisfy reqCs56 by
|
|
496
|
-
satisfy reqCs57 by
|
|
497
|
-
satisfy reqCs58 by
|
|
498
|
-
satisfy reqCs60 by
|
|
499
|
-
satisfy reqCs61 by
|
|
500
|
-
satisfy reqCs62 by
|
|
501
|
-
satisfy reqCs63 by
|
|
502
|
-
satisfy reqCs64 by
|
|
503
|
-
satisfy reqCs65 by
|
|
504
|
-
satisfy reqCs66 by
|
|
505
|
-
satisfy reqCs67 by
|
|
506
|
-
satisfy reqCs68 by
|
|
507
|
-
satisfy reqCs69 by
|
|
508
|
-
satisfy reqCs70 by
|
|
509
|
-
satisfy reqCs71 by
|
|
510
|
-
satisfy reqCs74 by
|
|
511
|
-
satisfy reqCs76 by
|
|
512
|
-
satisfy reqCs79 by
|
|
513
|
-
satisfy reqCs80 by
|
|
514
|
-
satisfy reqCs81 by
|
|
515
|
-
satisfy reqCs82 by
|
|
444
|
+
satisfy reqFlowCrossCheck by gpcaSoftware.alarm;
|
|
445
|
+
satisfy reqCs77 by gpcaSoftware.logging;
|
|
446
|
+
satisfy reqCs78 by gpcaSoftware.logging;
|
|
447
|
+
satisfy reqEventLogging by gpcaSoftware.logging;
|
|
448
|
+
satisfy reqCs02 by gpcaSoftware.tlm;
|
|
449
|
+
satisfy reqCs03 by gpcaSoftware.infusionMgr;
|
|
450
|
+
satisfy reqCs04 by gpcaSoftware.tlm;
|
|
451
|
+
satisfy reqCs05 by gpcaSoftware.tlm;
|
|
452
|
+
satisfy reqCs06 by gpcaSoftware.infusionMgr;
|
|
453
|
+
satisfy reqCs07 by gpcaSoftware.tlm;
|
|
454
|
+
satisfy reqCs08 by gpcaSoftware.config;
|
|
455
|
+
satisfy reqCs10 by gpcaSoftware.alarm;
|
|
456
|
+
satisfy reqCs11 by gpcaSoftware.logging;
|
|
457
|
+
satisfy reqCs12 by gpcaSoftware.tlm;
|
|
458
|
+
satisfy reqCs13 by gpcaSoftware.tlm;
|
|
459
|
+
satisfy reqCs14 by gpcaSoftware.infusionMgr;
|
|
460
|
+
satisfy reqCs15 by gpcaSoftware.alarm;
|
|
461
|
+
satisfy reqCs16 by gpcaSoftware.infusionMgr;
|
|
462
|
+
satisfy reqCs17 by gpcaSoftware.alarm;
|
|
463
|
+
satisfy reqCs18 by gpcaSoftware.alarm;
|
|
464
|
+
satisfy reqCs20 by gpcaSoftware.alarm;
|
|
465
|
+
satisfy reqCs22 by gpcaSoftware.alarm;
|
|
466
|
+
satisfy reqCs24 by gpcaSoftware.infusionMgr;
|
|
467
|
+
satisfy reqCs26 by gpcaSoftware.alarm;
|
|
468
|
+
satisfy reqCs27 by gpcaSoftware.alarm;
|
|
469
|
+
satisfy reqCs28 by gpcaSoftware.tlm;
|
|
470
|
+
satisfy reqCs29 by gpcaSoftware.tlm;
|
|
471
|
+
satisfy reqCs30 by gpcaSoftware.tlm;
|
|
472
|
+
satisfy reqCs31 by gpcaSoftware.tlm;
|
|
473
|
+
satisfy reqCs32 by gpcaSoftware.tlm;
|
|
474
|
+
satisfy reqCs33 by gpcaSoftware.tlm;
|
|
475
|
+
satisfy reqCs34 by gpcaSoftware.tlm;
|
|
476
|
+
satisfy reqCs35 by gpcaSoftware.tlm;
|
|
477
|
+
satisfy reqCs36 by gpcaSoftware.tlm;
|
|
478
|
+
satisfy reqCs37 by gpcaSoftware.tlm;
|
|
479
|
+
satisfy reqCs38 by gpcaSoftware.tlm;
|
|
480
|
+
satisfy reqCs39 by gpcaSoftware.tlm;
|
|
481
|
+
satisfy reqCs40 by gpcaSoftware.infusionMgr;
|
|
482
|
+
satisfy reqCs41 by gpcaSoftware.infusionMgr;
|
|
483
|
+
satisfy reqCs42 by gpcaSoftware.infusionMgr;
|
|
484
|
+
satisfy reqCs43 by gpcaSoftware.infusionMgr;
|
|
485
|
+
satisfy reqCs44 by gpcaSoftware.alarm;
|
|
486
|
+
satisfy reqCs45 by gpcaSoftware.tlm;
|
|
487
|
+
satisfy reqCs46 by gpcaSoftware.tlm;
|
|
488
|
+
satisfy reqCs47 by gpcaSoftware.tlm;
|
|
489
|
+
satisfy reqCs48 by gpcaSoftware.config;
|
|
490
|
+
satisfy reqCs49 by gpcaSoftware.config;
|
|
491
|
+
satisfy reqCs50 by gpcaSoftware.config;
|
|
492
|
+
satisfy reqCs51 by gpcaSoftware.config;
|
|
493
|
+
satisfy reqCs52 by gpcaSoftware.config;
|
|
494
|
+
satisfy reqCs53 by gpcaSoftware.config;
|
|
495
|
+
satisfy reqCs54 by gpcaSoftware.config;
|
|
496
|
+
satisfy reqCs55 by gpcaSoftware.config;
|
|
497
|
+
satisfy reqCs56 by gpcaSoftware.config;
|
|
498
|
+
satisfy reqCs57 by gpcaSoftware.config;
|
|
499
|
+
satisfy reqCs58 by gpcaSoftware.config;
|
|
500
|
+
satisfy reqCs60 by gpcaSoftware.alarm;
|
|
501
|
+
satisfy reqCs61 by gpcaSoftware.alarm;
|
|
502
|
+
satisfy reqCs62 by gpcaSoftware.alarm;
|
|
503
|
+
satisfy reqCs63 by gpcaSoftware.alarm;
|
|
504
|
+
satisfy reqCs64 by gpcaSoftware.alarm;
|
|
505
|
+
satisfy reqCs65 by gpcaSoftware.alarm;
|
|
506
|
+
satisfy reqCs66 by gpcaSoftware.alarm;
|
|
507
|
+
satisfy reqCs67 by gpcaSoftware.alarm;
|
|
508
|
+
satisfy reqCs68 by gpcaSoftware.alarm;
|
|
509
|
+
satisfy reqCs69 by gpcaSoftware.alarm;
|
|
510
|
+
satisfy reqCs70 by gpcaSoftware.alarm;
|
|
511
|
+
satisfy reqCs71 by gpcaSoftware.alarm;
|
|
512
|
+
satisfy reqCs74 by gpcaSoftware.alarm;
|
|
513
|
+
satisfy reqCs76 by gpcaSoftware.alarm;
|
|
514
|
+
satisfy reqCs79 by gpcaSoftware.logging;
|
|
515
|
+
satisfy reqCs80 by gpcaSoftware.logging;
|
|
516
|
+
satisfy reqCs81 by gpcaSoftware.logging;
|
|
517
|
+
satisfy reqCs82 by gpcaSoftware.config;
|
|
516
518
|
satisfy reqCs83 by enclosure;
|
|
517
519
|
satisfy reqCs84 by enclosure;
|
|
518
|
-
satisfy reqCs85 by
|
|
519
|
-
satisfy reqCs86 by
|
|
520
|
+
satisfy reqCs85 by gpcaSoftware.logging;
|
|
521
|
+
satisfy reqCs86 by gpcaSoftware.config;
|
|
520
522
|
satisfy reqPumpAccuracy by pumpMotorAssembly;
|
|
521
523
|
satisfy reqAlarmLoudness by audibleAlarm;
|
|
522
524
|
satisfy reqBatteryBackup by batteryPack;
|