@memoarchitect/ontology 0.13.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +51 -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
|
@@ -70,11 +70,11 @@ package memo_examples_gpca_pump_gpca_behavior_actions {
|
|
|
70
70
|
action actuateMotor : ActuatePumpMotor;
|
|
71
71
|
action logEvent : LogTherapyEvent;
|
|
72
72
|
|
|
73
|
-
flow of SensorStatusVector from acquireSensors.sensorStatus to evaluateAlarms.sensorStatus;
|
|
74
|
-
flow of AlarmSignal from evaluateAlarms.alarmSignal to computeFlow.alarmSignal;
|
|
75
|
-
flow of BolusRequestSignal from enforceLimits.authorizedBolus to computeFlow.authorizedBolus;
|
|
76
|
-
flow of FlowCommand from computeFlow.flowCommand to actuateMotor.flowCommand;
|
|
77
|
-
flow of FlowCommand from actuateMotor.actuation to logEvent.actuation;
|
|
73
|
+
flow sensorStatusVectorFlow of SensorStatusVector from acquireSensors.sensorStatus to evaluateAlarms.sensorStatus;
|
|
74
|
+
flow alarmSignalFlow of AlarmSignal from evaluateAlarms.alarmSignal to computeFlow.alarmSignal;
|
|
75
|
+
flow bolusRequestSignalFlow of BolusRequestSignal from enforceLimits.authorizedBolus to computeFlow.authorizedBolus;
|
|
76
|
+
flow flowCommandToActuateMotor of FlowCommand from computeFlow.flowCommand to actuateMotor.flowCommand;
|
|
77
|
+
flow flowCommandToLogEvent of FlowCommand from actuateMotor.actuation to logEvent.actuation;
|
|
78
78
|
|
|
79
79
|
first start then acquireSensors;
|
|
80
80
|
first acquireSensors then evaluateAlarms;
|
|
@@ -87,11 +87,11 @@ package memo_examples_gpca_pump_gpca_behavior_actions {
|
|
|
87
87
|
|
|
88
88
|
// ── Swimlane allocation to the logical architecture ─────────
|
|
89
89
|
allocate infusionDeliveryFlow.acquireSensors to gpcaDevice.gpcaDeviceSensors;
|
|
90
|
-
allocate infusionDeliveryFlow.evaluateAlarms to
|
|
91
|
-
allocate infusionDeliveryFlow.enforceLimits to
|
|
92
|
-
allocate infusionDeliveryFlow.computeFlow to
|
|
90
|
+
allocate infusionDeliveryFlow.evaluateAlarms to gpcaSoftware.alarm;
|
|
91
|
+
allocate infusionDeliveryFlow.enforceLimits to gpcaSoftware.infusionMgr;
|
|
92
|
+
allocate infusionDeliveryFlow.computeFlow to gpcaSoftware.infusionMgr;
|
|
93
93
|
allocate infusionDeliveryFlow.actuateMotor to pumpMotorAssembly;
|
|
94
|
-
allocate infusionDeliveryFlow.logEvent to
|
|
94
|
+
allocate infusionDeliveryFlow.logEvent to gpcaSoftware.logging;
|
|
95
95
|
|
|
96
96
|
// ── Functional decomposition and component allocation ───────
|
|
97
97
|
// FUNC-001 "AcquireSensorData" is what the SYSTEM is answerable for.
|
|
@@ -25,7 +25,6 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
25
25
|
// ═════════════════════════════════════════════════════════════
|
|
26
26
|
state topLevelModeMachine : StateMachine {
|
|
27
27
|
@MemoIdentity { :>> providedId = "BM-001"; }
|
|
28
|
-
attribute :>> name = "TopLevelModeMachine";
|
|
29
28
|
attribute :>> machineKind = "hierarchical state machine";
|
|
30
29
|
attribute :>> executionSemantics = "single-step synchronous; sub-modes inherit all parent-mode requirements";
|
|
31
30
|
attribute fidelityScope = "Requirements-derived therapy mode hierarchy; partial abstraction of CITE-009, not a state-for-state Stateflow transcription";
|
|
@@ -35,9 +34,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
35
34
|
state modeOFF : MemoState {
|
|
36
35
|
@MemoIdentity { :>> providedId = "MODE-000"; }
|
|
37
36
|
attribute :>> stateKind = StateKind::mode;
|
|
38
|
-
|
|
37
|
+
@MemoIdentity { :>> label = "OFF"; }
|
|
39
38
|
attribute :>> modeKind = "top (default)";
|
|
40
|
-
|
|
39
|
+
doc /* No functionality; the GPCA is turned off. FlowRate_output = 0 (REQ 6). */
|
|
41
40
|
attribute :>> entryCondition = "System_stop_prog commanded while ON (REQ 5); default mode";
|
|
42
41
|
attribute :>> exitCondition = "System_start_prog commanded (REQ 4)";
|
|
43
42
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.2"; }
|
|
@@ -46,9 +45,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
46
45
|
state modeON : MemoState {
|
|
47
46
|
@MemoIdentity { :>> providedId = "MODE-001"; }
|
|
48
47
|
attribute :>> stateKind = StateKind::mode;
|
|
49
|
-
|
|
48
|
+
@MemoIdentity { :>> label = "ON"; }
|
|
50
49
|
attribute :>> modeKind = "operational parent";
|
|
51
|
-
|
|
50
|
+
doc /* Topmost operational mode: prescription configuration (REQ 8), infusion initiation gating (REQ 7, 9), notification (REQ 10) and logging (REQ 11) are available. */
|
|
52
51
|
attribute :>> entryCondition = "System_start_prog from OFF; A.4 variables set to defaults (REQ 4)";
|
|
53
52
|
attribute :>> exitCondition = "System_stop_prog: stop infusion, cancel all notifications (REQ 5)";
|
|
54
53
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3"; }
|
|
@@ -56,9 +55,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
56
55
|
state modeIDLE : MemoState {
|
|
57
56
|
@MemoIdentity { :>> providedId = "MODE-002"; }
|
|
58
57
|
attribute :>> stateKind = StateKind::mode;
|
|
59
|
-
|
|
58
|
+
@MemoIdentity { :>> label = "ON.IDLE"; }
|
|
60
59
|
attribute :>> modeKind = "idle";
|
|
61
|
-
|
|
60
|
+
doc /* Default sub-mode on entry to ON; no infusion, FlowRate_output = 0 (REQ 14); prescription set-up happens here. 'IDLE Time' actions after Max_IDLE_Duration_const (REQ 15). */
|
|
62
61
|
attribute :>> entryCondition = "OFF -> ON transition (REQ 4); infusion complete (REQ 28); PAUSED inhibit (REQ 47)";
|
|
63
62
|
attribute :>> exitCondition = "confirmed second Infusion_initiate_prog (REQ 12/13)";
|
|
64
63
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4"; }
|
|
@@ -67,9 +66,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
67
66
|
state modeTHERAPY : MemoState {
|
|
68
67
|
@MemoIdentity { :>> providedId = "MODE-003"; }
|
|
69
68
|
attribute :>> stateKind = StateKind::mode;
|
|
70
|
-
|
|
69
|
+
@MemoIdentity { :>> label = "ON.THERAPY"; }
|
|
71
70
|
attribute :>> modeKind = "therapy parent";
|
|
72
|
-
|
|
71
|
+
doc /* Parent of all drug-delivering sub-modes. Delivers FlowRate_Mode_macro within Tolerance_Max_const (REQ 16); monitors under-infusion (REQ 17), low reservoir (REQ 18), over-infusion, VTBI, air, reverse delivery, empty reservoir (REQ 19-23). */
|
|
73
72
|
attribute :>> entryCondition = "infusion initiated (REQ 12/13)";
|
|
74
73
|
attribute :>> exitCondition = "infusion complete to IDLE (REQ 28); manual stop from PAUSED (REQ 47); system stop (REQ 5)";
|
|
75
74
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5"; }
|
|
@@ -77,9 +76,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
77
76
|
state modePAUSED : MemoState {
|
|
78
77
|
@MemoIdentity { :>> providedId = "MODE-004"; }
|
|
79
78
|
attribute :>> stateKind = StateKind::mode;
|
|
80
|
-
|
|
79
|
+
@MemoIdentity { :>> label = "ON.THERAPY.PAUSED"; }
|
|
81
80
|
attribute :>> modeKind = "paused (KVO delivery)";
|
|
82
|
-
|
|
81
|
+
doc /* Infusion paused by notification actions or manual inhibit. FlowRate_Mode_macro = FlowRate_kvo_hd — keep-vein-open flow within Tolerance_Max_const, NOT zero (REQ 43). 'PAUSED Time' actions after Max_PAUSED_Duration_const (REQ 44). Infusion_initiate_prog while Inhibited_Infusion_macro = TRUE causes no transition (REQ 45). */
|
|
83
82
|
attribute :>> entryCondition = "REQ 19-23 alarm transitions, REQ 29 manual inhibit, REQ 30 all-inhibited, REQ 37-39 sub-mode inhibits, REQ 13 initiate-while-inhibited";
|
|
84
83
|
attribute :>> exitCondition = "Infusion_initiate_prog with Inhibited_Infusion_macro = FALSE (REQ 46); Infusion_inhibit_prog to IDLE (REQ 47)";
|
|
85
84
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10 (REQ 43-47)"; }
|
|
@@ -88,9 +87,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
88
87
|
state modeACTIVE : MemoState {
|
|
89
88
|
@MemoIdentity { :>> providedId = "MODE-005"; }
|
|
90
89
|
attribute :>> stateKind = StateKind::mode;
|
|
91
|
-
|
|
90
|
+
@MemoIdentity { :>> label = "ON.THERAPY.ACTIVE"; }
|
|
92
91
|
attribute :>> modeKind = "active parent";
|
|
93
|
-
|
|
92
|
+
doc /* Actual infusion through BASAL, SQUARE BOLUS or PATIENT BOLUS. Only mode where a patient bolus may be requested (REQ 25). Square boluses are scheduled automatically every Interval_sbolus_prog for Duration_sbolus_prog (REQ 24). Actual_Infusion_Duration_macro accumulates here. */
|
|
94
93
|
attribute :>> entryCondition = "infusion initiated (REQ 12) or resumed (REQ 46)";
|
|
95
94
|
attribute :>> exitCondition = "infusion complete (REQ 28); PAUSED via REQ 29/30/37-39";
|
|
96
95
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6"; }
|
|
@@ -98,9 +97,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
98
97
|
state modeBASAL : MemoState {
|
|
99
98
|
@MemoIdentity { :>> providedId = "MODE-006"; }
|
|
100
99
|
attribute :>> stateKind = StateKind::mode;
|
|
101
|
-
|
|
100
|
+
@MemoIdentity { :>> label = "ON.THERAPY.ACTIVE.BASAL"; }
|
|
102
101
|
attribute :>> modeKind = "active-basal";
|
|
103
|
-
|
|
102
|
+
doc /* Constant-rate delivery at FlowRate_basal_prog within Tolerance_Max_const (REQ 40). FlowRate_Mode_macro = FlowRate_basal_prog. */
|
|
104
103
|
attribute :>> entryCondition = "infusion initiated/resumed (REQ 12/46); square bolus ended (REQ 34); patient bolus ended (REQ 35)";
|
|
105
104
|
attribute :>> exitCondition = "scheduled square bolus (REQ 31); patient bolus granted (REQ 32); Inhibited_Infusion_macro (REQ 37)";
|
|
106
105
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.7"; }
|
|
@@ -109,9 +108,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
109
108
|
state modeSQUARE : MemoState {
|
|
110
109
|
@MemoIdentity { :>> providedId = "MODE-007"; }
|
|
111
110
|
attribute :>> stateKind = StateKind::mode;
|
|
112
|
-
|
|
111
|
+
@MemoIdentity { :>> label = "ON.THERAPY.ACTIVE.SQUARE_BOLUS"; }
|
|
113
112
|
attribute :>> modeKind = "active-square-bolus (auto-scheduled)";
|
|
114
|
-
|
|
113
|
+
doc /* Prescribed extra delivery at FlowRate_sbolus_prog within Tolerance_Max_const (REQ 41). Auto-initiates at the prescribed frequency and ends after the prescribed duration — no external trigger (§4.1.8, REQ 24). FlowRate_Mode_macro = FlowRate_sbolus_prog. */
|
|
115
114
|
attribute :>> entryCondition = "scheduled start per REQ 24 with REQ 31 guards; patient bolus end with square scheduled (REQ 36)";
|
|
116
115
|
attribute :>> exitCondition = "scheduled end or Inhibited_Bolus_macro (REQ 34); patient bolus granted (REQ 33); inhibits (REQ 39)";
|
|
117
116
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.8"; }
|
|
@@ -120,9 +119,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
120
119
|
state modePBOLUS : MemoState {
|
|
121
120
|
@MemoIdentity { :>> providedId = "MODE-008"; }
|
|
122
121
|
attribute :>> stateKind = StateKind::mode;
|
|
123
|
-
|
|
122
|
+
@MemoIdentity { :>> label = "ON.THERAPY.ACTIVE.PATIENT_BOLUS"; }
|
|
124
123
|
attribute :>> modeKind = "active-patient-bolus";
|
|
125
|
-
|
|
124
|
+
doc /* Patient-requested delivery at FlowRate_pbolus_prog within Tolerance_Max_const (REQ 42). Granted only when no REQ 25 ignore condition holds. FlowRate_Mode_macro = FlowRate_pbolus_prog. */
|
|
126
125
|
attribute :>> entryCondition = "BolusRequest_prog with no REQ 25 ignore condition (REQ 32/33)";
|
|
127
126
|
attribute :>> exitCondition = "Inhibited_PatientBolus_macro or duration >= Duration_pbolus_prog (REQ 35/36); inhibits (REQ 38)";
|
|
128
127
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9"; }
|
|
@@ -133,9 +132,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
133
132
|
|
|
134
133
|
// ── Mode transitions (CriSys §4.1, 1:1 with source REQs) ──
|
|
135
134
|
transition trSystemStart first modeOFF then modeON.modeIDLE {
|
|
135
|
+
@MemoIdentity { :>> label = "SystemStartToIdle"; }
|
|
136
136
|
@TransitionRecord {
|
|
137
137
|
:>> id = "TR-001";
|
|
138
|
-
:>> name = "SystemStartToIdle";
|
|
139
138
|
:>> trigger = "System_start_prog commanded";
|
|
140
139
|
:>> guardSummary = "none in source (MEMO extension REQ-X-02 additionally gates therapy on POST)";
|
|
141
140
|
:>> effectSummary = "A.4 variables set to default values (REQ 4)";
|
|
@@ -143,9 +142,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
143
142
|
}
|
|
144
143
|
}
|
|
145
144
|
transition trSystemStop first modeON then modeOFF {
|
|
145
|
+
@MemoIdentity { :>> label = "SystemStopToOff"; }
|
|
146
146
|
@TransitionRecord {
|
|
147
147
|
:>> id = "TR-002";
|
|
148
|
-
:>> name = "SystemStopToOff";
|
|
149
148
|
:>> trigger = "System_stop_prog commanded";
|
|
150
149
|
:>> guardSummary = "none — allowed from any ON sub-mode";
|
|
151
150
|
:>> effectSummary = "stop infusion, cancel all notifications (REQ 5)";
|
|
@@ -153,9 +152,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
153
152
|
}
|
|
154
153
|
}
|
|
155
154
|
transition trStartTherapy first modeON.modeIDLE then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
|
|
155
|
+
@MemoIdentity { :>> label = "ConfirmedInitiateToBasal"; }
|
|
156
156
|
@TransitionRecord {
|
|
157
157
|
:>> id = "TR-003";
|
|
158
|
-
:>> name = "ConfirmedInitiateToBasal";
|
|
159
158
|
:>> trigger = "second Infusion_initiate_prog (confirmation per REQ 9)";
|
|
160
159
|
:>> guardSummary = "Inhibited_Infusion_macro = FALSE; saved prescription available (REQ 7)";
|
|
161
160
|
:>> effectSummary = "Actual_Infusion_Duration_macro = 0; Actual_Volume_Infused_macro = 0 (REQ 12)";
|
|
@@ -163,9 +162,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
163
162
|
}
|
|
164
163
|
}
|
|
165
164
|
transition trInitiateWhileInhibited first modeON.modeIDLE then modeON.modeTHERAPY.modePAUSED {
|
|
165
|
+
@MemoIdentity { :>> label = "ConfirmedInitiateWhileInhibitedToPaused"; }
|
|
166
166
|
@TransitionRecord {
|
|
167
167
|
:>> id = "TR-004";
|
|
168
|
-
:>> name = "ConfirmedInitiateWhileInhibitedToPaused";
|
|
169
168
|
:>> trigger = "second Infusion_initiate_prog (confirmation per REQ 9)";
|
|
170
169
|
:>> guardSummary = "Inhibited_Infusion_macro = TRUE";
|
|
171
170
|
:>> effectSummary = "macros reset; 'Infusion Inhibited' actions per REQ 59 (REQ 13)";
|
|
@@ -173,9 +172,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
173
172
|
}
|
|
174
173
|
}
|
|
175
174
|
transition trAlarmPause first modeON.modeTHERAPY then modeON.modeTHERAPY.modePAUSED {
|
|
175
|
+
@MemoIdentity { :>> label = "TherapyAlarmToPausedKvo"; }
|
|
176
176
|
@TransitionRecord {
|
|
177
177
|
:>> id = "TR-005";
|
|
178
|
-
:>> name = "TherapyAlarmToPausedKvo";
|
|
179
178
|
:>> trigger = "over-infusion flow rate (REQ 19), over-infusion VTBI (REQ 20), air embolism (REQ 21), reverse delivery (REQ 22), or empty reservoir (REQ 23) condition";
|
|
180
179
|
:>> guardSummary = "none — unconditional from any THERAPY sub-mode";
|
|
181
180
|
:>> effectSummary = "REQ 59 actions for the notification; PAUSED delivers FlowRate_kvo_hd keep-vein-open flow (REQ 43), not zero";
|
|
@@ -183,9 +182,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
183
182
|
}
|
|
184
183
|
}
|
|
185
184
|
transition trInfusionComplete first modeON.modeTHERAPY.modeACTIVE then modeON.modeIDLE {
|
|
185
|
+
@MemoIdentity { :>> label = "InfusionCompleteToIdle"; }
|
|
186
186
|
@TransitionRecord {
|
|
187
187
|
:>> id = "TR-006";
|
|
188
|
-
:>> name = "InfusionCompleteToIdle";
|
|
189
188
|
:>> trigger = "Actual_Infusion_Duration_macro >= Duration_total_prog OR Actual_Volume_Infused_macro >= VTBI_total_prog";
|
|
190
189
|
:>> guardSummary = "none";
|
|
191
190
|
:>> effectSummary = "'Infusion Complete' actions per REQ 59; completion record in operational log (REQ 79)";
|
|
@@ -193,9 +192,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
193
192
|
}
|
|
194
193
|
}
|
|
195
194
|
transition trManualInhibit first modeON.modeTHERAPY.modeACTIVE then modeON.modeTHERAPY.modePAUSED {
|
|
195
|
+
@MemoIdentity { :>> label = "ManualInhibitToPaused"; }
|
|
196
196
|
@TransitionRecord {
|
|
197
197
|
:>> id = "TR-007";
|
|
198
|
-
:>> name = "ManualInhibitToPaused";
|
|
199
198
|
:>> trigger = "Infusion_inhibit_prog commanded";
|
|
200
199
|
:>> guardSummary = "none";
|
|
201
200
|
:>> effectSummary = "'Infusion Manually Inhibited' actions per REQ 59";
|
|
@@ -203,9 +202,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
203
202
|
}
|
|
204
203
|
}
|
|
205
204
|
transition trAllInhibited first modeON.modeTHERAPY.modeACTIVE then modeON.modeTHERAPY.modePAUSED {
|
|
205
|
+
@MemoIdentity { :>> label = "AllInhibitedToPaused"; }
|
|
206
206
|
@TransitionRecord {
|
|
207
207
|
:>> id = "TR-008";
|
|
208
|
-
:>> name = "AllInhibitedToPaused";
|
|
209
208
|
:>> trigger = "Inhibited_Infusion_macro AND Inhibited_Bolus_macro AND Inhibited_PatientBolus_macro all TRUE";
|
|
210
209
|
:>> guardSummary = "none";
|
|
211
210
|
:>> effectSummary = "therapy paused at KVO flow";
|
|
@@ -213,9 +212,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
213
212
|
}
|
|
214
213
|
}
|
|
215
214
|
transition trSquareBolus first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modeACTIVE.modeSQUARE {
|
|
215
|
+
@MemoIdentity { :>> label = "ScheduledSquareBolusStart"; }
|
|
216
216
|
@TransitionRecord {
|
|
217
217
|
:>> id = "TR-009";
|
|
218
|
-
:>> name = "ScheduledSquareBolusStart";
|
|
219
218
|
:>> trigger = "scheduled SQUARE BOLUS start — auto-initiates every Interval_sbolus_prog for Duration_sbolus_prog during Duration_total_prog (REQ 24); no external trigger";
|
|
220
219
|
:>> guardSummary = "Inhibited_Bolus_macro = FALSE AND Inhibited_Infusion_macro = FALSE AND (no BolusRequest_prog OR a REQ 25 ignore condition holds)";
|
|
221
220
|
:>> effectSummary = "FlowRate_Mode_macro = FlowRate_sbolus_prog";
|
|
@@ -223,9 +222,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
223
222
|
}
|
|
224
223
|
}
|
|
225
224
|
transition trPatientBolus first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modeACTIVE.modePBOLUS {
|
|
225
|
+
@MemoIdentity { :>> label = "BasalToPatientBolus"; }
|
|
226
226
|
@TransitionRecord {
|
|
227
227
|
:>> id = "TR-010";
|
|
228
|
-
:>> name = "BasalToPatientBolus";
|
|
229
228
|
:>> trigger = "BolusRequest_prog";
|
|
230
229
|
:>> guardSummary = "none of the REQ 25 ignore conditions hold (inhibits, lockout, bolus count, already in PATIENT BOLUS)";
|
|
231
230
|
:>> effectSummary = "FlowRate_Mode_macro = FlowRate_pbolus_prog";
|
|
@@ -233,9 +232,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
233
232
|
}
|
|
234
233
|
}
|
|
235
234
|
transition trSquareToPatientBolus first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modeACTIVE.modePBOLUS {
|
|
235
|
+
@MemoIdentity { :>> label = "SquareBolusToPatientBolus"; }
|
|
236
236
|
@TransitionRecord {
|
|
237
237
|
:>> id = "TR-011";
|
|
238
|
-
:>> name = "SquareBolusToPatientBolus";
|
|
239
238
|
:>> trigger = "BolusRequest_prog";
|
|
240
239
|
:>> guardSummary = "none of the REQ 25 ignore conditions hold";
|
|
241
240
|
:>> effectSummary = "patient bolus interrupts the square bolus; FlowRate_Mode_macro = FlowRate_pbolus_prog";
|
|
@@ -243,9 +242,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
243
242
|
}
|
|
244
243
|
}
|
|
245
244
|
transition trSquareToBasal first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
|
|
245
|
+
@MemoIdentity { :>> label = "SquareBolusEndToBasal"; }
|
|
246
246
|
@TransitionRecord {
|
|
247
247
|
:>> id = "TR-012";
|
|
248
|
-
:>> name = "SquareBolusEndToBasal";
|
|
249
248
|
:>> trigger = "Inhibited_Bolus_macro = TRUE or scheduled square bolus end (REQ 24)";
|
|
250
249
|
:>> guardSummary = "Inhibited_Infusion_macro = FALSE AND (no BolusRequest_prog OR a REQ 25 ignore condition holds)";
|
|
251
250
|
:>> effectSummary = "FlowRate_Mode_macro = FlowRate_basal_prog";
|
|
@@ -253,9 +252,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
253
252
|
}
|
|
254
253
|
}
|
|
255
254
|
transition trPatientBolusToBasal first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
|
|
255
|
+
@MemoIdentity { :>> label = "PatientBolusEndToBasal"; }
|
|
256
256
|
@TransitionRecord {
|
|
257
257
|
:>> id = "TR-013";
|
|
258
|
-
:>> name = "PatientBolusEndToBasal";
|
|
259
258
|
:>> trigger = "Inhibited_PatientBolus_macro = TRUE or patient-bolus duration >= Duration_pbolus_prog";
|
|
260
259
|
:>> guardSummary = "Inhibited_Infusion_macro = FALSE AND (no square bolus scheduled in progress OR (square bolus scheduled AND Inhibited_Bolus_macro = TRUE))";
|
|
261
260
|
:>> effectSummary = "patient bolus delivery stopped; FlowRate_Mode_macro = FlowRate_basal_prog";
|
|
@@ -263,9 +262,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
263
262
|
}
|
|
264
263
|
}
|
|
265
264
|
transition trPatientBolusToSquare first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modeACTIVE.modeSQUARE {
|
|
265
|
+
@MemoIdentity { :>> label = "PatientBolusEndToSquareBolus"; }
|
|
266
266
|
@TransitionRecord {
|
|
267
267
|
:>> id = "TR-014";
|
|
268
|
-
:>> name = "PatientBolusEndToSquareBolus";
|
|
269
268
|
:>> trigger = "Inhibited_PatientBolus_macro = TRUE or patient-bolus duration >= Duration_pbolus_prog";
|
|
270
269
|
:>> guardSummary = "Inhibited_Infusion_macro = FALSE AND a square bolus is scheduled to be in progress AND Inhibited_Bolus_macro = FALSE";
|
|
271
270
|
:>> effectSummary = "patient bolus delivery stopped; scheduled square bolus resumes";
|
|
@@ -273,9 +272,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
273
272
|
}
|
|
274
273
|
}
|
|
275
274
|
transition trBasalInhibit first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modePAUSED {
|
|
275
|
+
@MemoIdentity { :>> label = "BasalInhibitToPaused"; }
|
|
276
276
|
@TransitionRecord {
|
|
277
277
|
:>> id = "TR-015";
|
|
278
|
-
:>> name = "BasalInhibitToPaused";
|
|
279
278
|
:>> trigger = "Inhibited_Infusion_macro = TRUE";
|
|
280
279
|
:>> guardSummary = "none";
|
|
281
280
|
:>> effectSummary = "therapy paused at KVO flow";
|
|
@@ -283,9 +282,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
283
282
|
}
|
|
284
283
|
}
|
|
285
284
|
transition trPatientBolusInhibit first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modePAUSED {
|
|
285
|
+
@MemoIdentity { :>> label = "PatientBolusInhibitToPaused"; }
|
|
286
286
|
@TransitionRecord {
|
|
287
287
|
:>> id = "TR-016";
|
|
288
|
-
:>> name = "PatientBolusInhibitToPaused";
|
|
289
288
|
:>> trigger = "Inhibited_PatientBolus_macro = TRUE AND Inhibited_Infusion_macro = TRUE";
|
|
290
289
|
:>> guardSummary = "none";
|
|
291
290
|
:>> effectSummary = "therapy paused at KVO flow";
|
|
@@ -293,9 +292,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
293
292
|
}
|
|
294
293
|
}
|
|
295
294
|
transition trSquareInhibit first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modePAUSED {
|
|
295
|
+
@MemoIdentity { :>> label = "SquareBolusInhibitToPaused"; }
|
|
296
296
|
@TransitionRecord {
|
|
297
297
|
:>> id = "TR-017";
|
|
298
|
-
:>> name = "SquareBolusInhibitToPaused";
|
|
299
298
|
:>> trigger = "Inhibited_Bolus_macro = TRUE AND Inhibited_Infusion_macro = TRUE";
|
|
300
299
|
:>> guardSummary = "none";
|
|
301
300
|
:>> effectSummary = "therapy paused at KVO flow";
|
|
@@ -303,9 +302,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
303
302
|
}
|
|
304
303
|
}
|
|
305
304
|
transition trResume first modeON.modeTHERAPY.modePAUSED then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
|
|
305
|
+
@MemoIdentity { :>> label = "PausedResumeToBasal"; }
|
|
306
306
|
@TransitionRecord {
|
|
307
307
|
:>> id = "TR-018";
|
|
308
|
-
:>> name = "PausedResumeToBasal";
|
|
309
308
|
:>> trigger = "Infusion_initiate_prog";
|
|
310
309
|
:>> guardSummary = "Inhibited_Infusion_macro = FALSE (while TRUE, no transition occurs — REQ 45)";
|
|
311
310
|
:>> effectSummary = "basal flow re-established";
|
|
@@ -313,9 +312,9 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
313
312
|
}
|
|
314
313
|
}
|
|
315
314
|
transition trPausedStop first modeON.modeTHERAPY.modePAUSED then modeON.modeIDLE {
|
|
315
|
+
@MemoIdentity { :>> label = "PausedInhibitToIdle"; }
|
|
316
316
|
@TransitionRecord {
|
|
317
317
|
:>> id = "TR-019";
|
|
318
|
-
:>> name = "PausedInhibitToIdle";
|
|
319
318
|
:>> trigger = "Infusion_inhibit_prog commanded";
|
|
320
319
|
:>> guardSummary = "none";
|
|
321
320
|
:>> effectSummary = "'Infusion Stopped Manually' actions per REQ 59";
|
|
@@ -331,23 +330,19 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
331
330
|
// The individual configurations remain ordinary model elements, so their
|
|
332
331
|
// active mode is navigable as well as visible in the choice-point edge.
|
|
333
332
|
part basalConfiguration : ModeConfiguration {
|
|
334
|
-
@MemoIdentity { :>> providedId = "CFG-001"; }
|
|
335
|
-
attribute :>> name = "BasalTherapyConfiguration";
|
|
333
|
+
@MemoIdentity { :>> providedId = "CFG-001"; :>> label = "BasalTherapyConfiguration"; }
|
|
336
334
|
ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modeBASAL;
|
|
337
335
|
}
|
|
338
336
|
part squareBolusConfiguration : ModeConfiguration {
|
|
339
337
|
@MemoIdentity { :>> providedId = "CFG-002"; }
|
|
340
|
-
attribute :>> name = "SquareBolusConfiguration";
|
|
341
338
|
ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modeSQUARE;
|
|
342
339
|
}
|
|
343
340
|
part patientBolusConfiguration : ModeConfiguration {
|
|
344
341
|
@MemoIdentity { :>> providedId = "CFG-003"; }
|
|
345
|
-
attribute :>> name = "PatientBolusConfiguration";
|
|
346
342
|
ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modePBOLUS;
|
|
347
343
|
}
|
|
348
344
|
part pausedConfiguration : ModeConfiguration {
|
|
349
|
-
@MemoIdentity { :>> providedId = "CFG-004"; }
|
|
350
|
-
attribute :>> name = "PausedKvoConfiguration";
|
|
345
|
+
@MemoIdentity { :>> providedId = "CFG-004"; :>> label = "PausedKvoConfiguration"; }
|
|
351
346
|
ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modePAUSED;
|
|
352
347
|
}
|
|
353
348
|
variation part activeTherapyConfiguration : ModeConfiguration[1] {
|
|
@@ -358,41 +353,36 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
358
353
|
}
|
|
359
354
|
|
|
360
355
|
// ── Behavior properties and timing constraints ──────────────
|
|
361
|
-
|
|
362
|
-
@MemoIdentity { :>> providedId = "BP-002"; }
|
|
363
|
-
attribute :>> name = "AlarmResponseSameStepKvo";
|
|
356
|
+
requirement propAlarmStopsSameStep : BehaviorProperty {
|
|
357
|
+
@MemoIdentity { :>> providedId = "BP-002"; :>> label = "AlarmResponseSameStepKvo"; }
|
|
364
358
|
attribute :>> propertyKind = BehaviorPropertyKind::safetyProperty;
|
|
365
359
|
attribute :>> languageKind = PropertyLanguageKind::pseudoFormal;
|
|
366
360
|
attribute :>> formalExpression = "ALARM.ALARM_OUT -> IM.ALARM_IN is an AADL immediate connection: when an infusion-inhibiting notification asserts, Infusion_Manager limits Commanded_Flow_Rate <= FlowRate_kvo_hd in the same execution step";
|
|
367
361
|
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl (ALARM_to_IM immediate) and AGREE flow <= KVO guarantees"; }
|
|
368
362
|
}
|
|
369
|
-
|
|
370
|
-
@MemoIdentity { :>> providedId = "BP-004"; }
|
|
371
|
-
attribute :>> name = "PausedNoTransitionWhileInhibited";
|
|
363
|
+
requirement propPausedNoResumeWhileInhibited : BehaviorProperty {
|
|
364
|
+
@MemoIdentity { :>> providedId = "BP-004"; :>> label = "PausedNoTransitionWhileInhibited"; }
|
|
372
365
|
attribute :>> propertyKind = BehaviorPropertyKind::stateInvariant;
|
|
373
366
|
attribute :>> languageKind = PropertyLanguageKind::pseudoFormal;
|
|
374
367
|
attribute :>> formalExpression = "in PAUSED: Infusion_initiate_prog AND Inhibited_Infusion_macro = TRUE => mode unchanged";
|
|
375
368
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.1 (REQ 45)"; }
|
|
376
369
|
}
|
|
377
|
-
|
|
378
|
-
@MemoIdentity { :>> providedId = "BP-005"; }
|
|
379
|
-
attribute :>> name = "IdleAndPausedTimeoutActions";
|
|
370
|
+
requirement propModeTimeoutActions : BehaviorProperty {
|
|
371
|
+
@MemoIdentity { :>> providedId = "BP-005"; :>> label = "IdleAndPausedTimeoutActions"; }
|
|
380
372
|
attribute :>> propertyKind = BehaviorPropertyKind::transitionRule;
|
|
381
373
|
attribute :>> languageKind = PropertyLanguageKind::pseudoFormal;
|
|
382
374
|
attribute :>> formalExpression = "time in IDLE > Max_IDLE_Duration_const => REQ 59 'IDLE Time' actions; time in PAUSED > Max_PAUSED_Duration_const => REQ 59 'PAUSED Time' actions (notification actions, not mode transitions)";
|
|
383
375
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4.1 (REQ 15) and §4.1.10.1 (REQ 44)"; }
|
|
384
376
|
}
|
|
385
|
-
|
|
386
|
-
@MemoIdentity { :>> providedId = "BP-003"; }
|
|
387
|
-
attribute :>> name = "LockoutTimerNeverShortened";
|
|
377
|
+
requirement propLockoutTimerMonotonic : BehaviorProperty {
|
|
378
|
+
@MemoIdentity { :>> providedId = "BP-003"; :>> label = "LockoutTimerNeverShortened"; }
|
|
388
379
|
attribute :>> propertyKind = BehaviorPropertyKind::stateInvariant;
|
|
389
380
|
attribute :>> languageKind = PropertyLanguageKind::pseudoFormal;
|
|
390
381
|
attribute :>> formalExpression = "lockout_remaining decreases only with elapsed time; no input path resets it early";
|
|
391
382
|
@MemoIdentity { :>> sourceReference = "MEMO extension — supports the REQ 25.3 lockout ignore condition; invariant not stated by the source"; }
|
|
392
383
|
}
|
|
393
|
-
|
|
394
|
-
@MemoIdentity { :>> providedId = "TC-001"; }
|
|
395
|
-
attribute :>> name = "AlarmToSafeStateLatency";
|
|
384
|
+
requirement tcAlarmLatency : TimingConstraint {
|
|
385
|
+
@MemoIdentity { :>> providedId = "TC-001"; :>> label = "AlarmToSafeStateLatency"; }
|
|
396
386
|
attribute :>> constraintKind = TimingConstraintKind::latency;
|
|
397
387
|
attribute :>> minMs = "0";
|
|
398
388
|
attribute :>> maxMs = "20";
|
|
@@ -400,9 +390,8 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
400
390
|
attribute :>> verificationMethod = MemoVerificationMethodKind::modelChecking;
|
|
401
391
|
@MemoIdentity { :>> sourceReference = "MEMO extension — illustrative wall-clock budget; the source specifies synchronous same-step (immediate) semantics with no timing figures"; }
|
|
402
392
|
}
|
|
403
|
-
|
|
404
|
-
@MemoIdentity { :>> providedId = "TC-002"; }
|
|
405
|
-
attribute :>> name = "BolusRequestResponseLatency";
|
|
393
|
+
requirement tcBolusResponse : TimingConstraint {
|
|
394
|
+
@MemoIdentity { :>> providedId = "TC-002"; :>> label = "BolusRequestResponseLatency"; }
|
|
406
395
|
attribute :>> constraintKind = TimingConstraintKind::latency;
|
|
407
396
|
attribute :>> minMs = "0";
|
|
408
397
|
attribute :>> maxMs = "100";
|
|
@@ -410,17 +399,15 @@ package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
|
410
399
|
attribute :>> verificationMethod = MemoVerificationMethodKind::test;
|
|
411
400
|
@MemoIdentity { :>> sourceReference = "MEMO extension — illustrative wall-clock budget; not specified by the source"; }
|
|
412
401
|
}
|
|
413
|
-
|
|
414
|
-
@MemoIdentity { :>> providedId = "TC-003"; }
|
|
415
|
-
attribute :>> name = "WatchdogTimeout";
|
|
402
|
+
requirement tcWatchdogTimeout : TimingConstraint {
|
|
403
|
+
@MemoIdentity { :>> providedId = "TC-003"; :>> label = "WatchdogTimeout"; }
|
|
416
404
|
attribute :>> constraintKind = TimingConstraintKind::deadline;
|
|
417
405
|
attribute :>> minMs = "40";
|
|
418
406
|
attribute :>> maxMs = "60";
|
|
419
407
|
// The deadline is a claim about the element that kicks the watchdog, so
|
|
420
|
-
// the reference is the software module, not the requirement it supports
|
|
421
|
-
//
|
|
422
|
-
|
|
423
|
-
ref :>> referenceElement = gpcaDevice.gpcaSoftware.systemMonitor;
|
|
408
|
+
// the reference is the software module, not the requirement it supports;
|
|
409
|
+
// that link is REQ-X-08's own trace.
|
|
410
|
+
ref :>> referenceElement = gpcaSoftware.systemMonitor;
|
|
424
411
|
attribute :>> verificationMethod = MemoVerificationMethodKind::test;
|
|
425
412
|
@MemoIdentity { :>> sourceReference = "MEMO extension — supports extension requirement REQ-X-08; watchdog not specified by the source"; }
|
|
426
413
|
}
|