@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
|
@@ -2,6 +2,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
2
2
|
private import memo_examples_gpca_pump_gpca_requirements::*;
|
|
3
3
|
private import memo_examples_gpca_pump_gpca_formal_behavior::*;
|
|
4
4
|
private import memo_examples_gpca_pump_gpca_architecture::*;
|
|
5
|
+
private import memo_examples_gpca_pump_gpca_behavior_subsystems::*;
|
|
5
6
|
private import memo_examples_gpca_pump_gpca_risk::*;
|
|
6
7
|
private import memo_examples_gpca_pump_gpca_behavior_modes::*;
|
|
7
8
|
private import ScalarValues::*;
|
|
@@ -13,59 +14,60 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
13
14
|
|
|
14
15
|
private import memo_core_common::MemoIdentity;
|
|
15
16
|
// ── Verification cases ──────────────────────────────────────
|
|
17
|
+
// A safety-critical function is verified when a test traces to it
|
|
18
|
+
// (CR-ONT-040), which is not the same as the requirement it satisfies being
|
|
19
|
+
// verified or the module it is allocated to being tested. Each function is
|
|
20
|
+
// named as a subject of the case whose acceptance criteria exercise the
|
|
21
|
+
// output its `outputSummary` describes. AcquireSensorData and
|
|
22
|
+
// AggregateSensorStatus are not: no case here tests the debounced,
|
|
23
|
+
// range-checked status vector, and naming one would claim a test that
|
|
24
|
+
// does not exist.
|
|
16
25
|
verification vcModeRange : VerificationCase {
|
|
17
|
-
@MemoIdentity { :>> providedId = "VER-001"; }
|
|
18
|
-
attribute :>> name = "VerifyModeRange";
|
|
26
|
+
@MemoIdentity { :>> providedId = "VER-001"; :>> label = "VerifyModeRange"; }
|
|
19
27
|
attribute :>> methodKind = MemoVerificationMethodKind::formalProof;
|
|
20
28
|
attribute :>> acceptanceCriteria = "Current_System_mode only takes valid exclusive values";
|
|
21
29
|
attribute :>> status = ElementStatusKind::approved;
|
|
22
30
|
|
|
23
|
-
objective { verify reqCs01; }
|
|
24
|
-
subject verified : Base::Anything[*] = (
|
|
31
|
+
objective { verify reqCs01; verify guaranteeExclusiveMode; }
|
|
32
|
+
subject verified : Base::Anything[*] = (gpcaSoftware.tlm, gpcaSoftware.outputBus, fnManageInfusion);
|
|
25
33
|
}
|
|
26
34
|
verification vcLockout : VerificationCase {
|
|
27
|
-
@MemoIdentity { :>> providedId = "VER-002"; }
|
|
28
|
-
attribute :>> name = "VerifyBolusLockout";
|
|
35
|
+
@MemoIdentity { :>> providedId = "VER-002"; :>> label = "VerifyBolusLockout"; }
|
|
29
36
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
30
37
|
attribute :>> acceptanceCriteria = "No patient bolus initiated when lockout or max bolus constraints active";
|
|
31
38
|
attribute :>> status = ElementStatusKind::approved;
|
|
32
39
|
|
|
33
|
-
objective { verify reqCs25; }
|
|
34
|
-
subject verified : Base::Anything[*] = (lockoutControl,
|
|
40
|
+
objective { verify reqCs25; verify guaranteeLockoutPreventsBolus; verify tcBolusResponse; }
|
|
41
|
+
subject verified : Base::Anything[*] = (lockoutControl, gpcaSoftware.infusionMgr, fnEnforceLimits);
|
|
35
42
|
}
|
|
36
43
|
verification vcSameStepAlarm : VerificationCase {
|
|
37
|
-
@MemoIdentity { :>> providedId = "VER-003"; }
|
|
38
|
-
attribute :>> name = "VerifySameStepAlarmStop";
|
|
44
|
+
@MemoIdentity { :>> providedId = "VER-003"; :>> label = "VerifySameStepAlarmStop"; }
|
|
39
45
|
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
40
46
|
attribute :>> acceptanceCriteria = "Alarm output affects infusion in same execution step";
|
|
41
47
|
attribute :>> status = ElementStatusKind::approved;
|
|
42
48
|
|
|
43
|
-
objective { verify reqCs19; }
|
|
44
|
-
subject verified : Base::Anything[*] = (
|
|
49
|
+
objective { verify reqCs19; verify propAlarmStopsSameStep; verify guaranteeAlarmStopsSameStep; verify tcAlarmLatency; }
|
|
50
|
+
subject verified : Base::Anything[*] = (gpcaSoftware.alarm, fnMonitorAlarm);
|
|
45
51
|
}
|
|
46
52
|
verification vcTemporalModeSafety : VerificationCase {
|
|
47
|
-
@MemoIdentity { :>> providedId = "VER-004"; }
|
|
48
|
-
attribute :>> name = "VerifyTemporalModeSafety";
|
|
53
|
+
@MemoIdentity { :>> providedId = "VER-004"; :>> label = "VerifyTemporalModeSafety"; }
|
|
49
54
|
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
50
55
|
attribute :>> acceptanceCriteria = "No invalid transitions and pause on critical alarms";
|
|
51
56
|
attribute :>> status = ElementStatusKind::approved;
|
|
52
57
|
|
|
53
|
-
objective { verify reqCs75; verify reqDoorOpen; }
|
|
54
|
-
subject verified : Base::Anything[*] = (propLockoutTimerMonotonic, temporalNoInvalidTransition);
|
|
58
|
+
objective { verify reqCs75; verify reqDoorOpen; verify propLockoutTimerMonotonic; verify temporalNoInvalidTransition; }
|
|
55
59
|
}
|
|
56
60
|
verification vcAirInLine : VerificationCase {
|
|
57
|
-
@MemoIdentity { :>> providedId = "VER-005"; }
|
|
58
|
-
attribute :>> name = "VerifyAirInLineStop";
|
|
61
|
+
@MemoIdentity { :>> providedId = "VER-005"; :>> label = "VerifyAirInLineStop"; }
|
|
59
62
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
60
63
|
attribute :>> acceptanceCriteria = "Injected air above threshold pauses infusion and annunciates per the REQ 59 High-priority actions (REQ-CS-21)";
|
|
61
64
|
attribute :>> status = ElementStatusKind::approved;
|
|
62
65
|
|
|
63
66
|
objective { verify reqCs21; }
|
|
64
|
-
subject verified : Base::Anything[*] = (airDetectionControl);
|
|
67
|
+
subject verified : Base::Anything[*] = (airDetectionControl, fnAcquireSensors.cfnDetectAirInLine);
|
|
65
68
|
}
|
|
66
69
|
verification vcOcclusion : VerificationCase {
|
|
67
|
-
@MemoIdentity { :>> providedId = "VER-006"; }
|
|
68
|
-
attribute :>> name = "VerifyOcclusionDetection";
|
|
70
|
+
@MemoIdentity { :>> providedId = "VER-006"; :>> label = "VerifyOcclusionDetection"; }
|
|
69
71
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
70
72
|
attribute :>> acceptanceCriteria = "Clamped line above pressure threshold pauses infusion and annunciates (REQ-X-04)";
|
|
71
73
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -74,47 +76,43 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
74
76
|
subject verified : Base::Anything[*] = (occlusionAlarmControl);
|
|
75
77
|
}
|
|
76
78
|
verification vcEmptyReservoir : VerificationCase {
|
|
77
|
-
@MemoIdentity { :>> providedId = "VER-007"; }
|
|
78
|
-
attribute :>> name = "VerifyEmptyReservoirStop";
|
|
79
|
+
@MemoIdentity { :>> providedId = "VER-007"; :>> label = "VerifyEmptyReservoirStop"; }
|
|
79
80
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
80
81
|
attribute :>> acceptanceCriteria = "Reservoir-empty assertion transitions to PAUSED (KVO flow) and annunciates per the REQ 59 High-priority actions (REQ-CS-23)";
|
|
81
82
|
attribute :>> status = ElementStatusKind::approved;
|
|
82
83
|
|
|
83
84
|
objective { verify reqCs23; }
|
|
84
|
-
subject verified : Base::Anything[*] = (reservoirMonitorControl,
|
|
85
|
+
subject verified : Base::Anything[*] = (reservoirMonitorControl, gpcaSoftware.systemStatus);
|
|
85
86
|
}
|
|
86
87
|
verification vcPost : VerificationCase {
|
|
87
|
-
@MemoIdentity { :>> providedId = "VER-008"; }
|
|
88
|
-
attribute :>> name = "VerifyPowerOnSelfTest";
|
|
88
|
+
@MemoIdentity { :>> providedId = "VER-008"; :>> label = "VerifyPowerOnSelfTest"; }
|
|
89
89
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
90
90
|
attribute :>> acceptanceCriteria = "Each injected POST fault (CPU, RAM, ROM, watchdog, sensors) blocks therapy and alarms (REQ-X-02)";
|
|
91
91
|
attribute :>> status = ElementStatusKind::approved;
|
|
92
92
|
|
|
93
93
|
objective { verify reqPost; }
|
|
94
|
-
subject verified : Base::Anything[*] = (
|
|
94
|
+
subject verified : Base::Anything[*] = (gpcaSoftware.systemMonitor, fnSelfTest);
|
|
95
95
|
}
|
|
96
96
|
verification vcPowerLoss : VerificationCase {
|
|
97
|
-
@MemoIdentity { :>> providedId = "VER-009"; }
|
|
98
|
-
attribute :>> name = "VerifyPowerLossRetentionAndResume";
|
|
97
|
+
@MemoIdentity { :>> providedId = "VER-009"; :>> label = "VerifyPowerLossRetentionAndResume"; }
|
|
99
98
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
100
99
|
attribute :>> acceptanceCriteria = "Prescription and log intact after power cycle; therapy resumes only after confirmation (REQ-X-03)";
|
|
101
100
|
attribute :>> status = ElementStatusKind::approved;
|
|
102
101
|
|
|
103
102
|
objective { verify reqPowerLossRetention; verify reqBatteryBackup; }
|
|
103
|
+
subject verified : Base::Anything[*] = (fnManagePower);
|
|
104
104
|
}
|
|
105
105
|
verification vcWatchdog : VerificationCase {
|
|
106
|
-
@MemoIdentity { :>> providedId = "VER-010"; }
|
|
107
|
-
attribute :>> name = "VerifyWatchdogSafeState";
|
|
106
|
+
@MemoIdentity { :>> providedId = "VER-010"; :>> label = "VerifyWatchdogSafeState"; }
|
|
108
107
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
109
108
|
attribute :>> acceptanceCriteria = "Induced CPU hang forces zero flow and continuous alarm within 60 ms (REQ-X-08, TC-003)";
|
|
110
109
|
attribute :>> status = ElementStatusKind::approved;
|
|
111
110
|
|
|
112
|
-
objective { verify reqWatchdogSafeState; }
|
|
113
|
-
subject verified : Base::Anything[*] =
|
|
111
|
+
objective { verify reqWatchdogSafeState; verify tcWatchdogTimeout; }
|
|
112
|
+
subject verified : Base::Anything[*] = watchdogControl;
|
|
114
113
|
}
|
|
115
114
|
verification vcHourlyMax : VerificationCase {
|
|
116
|
-
@MemoIdentity { :>> providedId = "VER-011"; }
|
|
117
|
-
attribute :>> name = "VerifyHourlyDoseCeiling";
|
|
115
|
+
@MemoIdentity { :>> providedId = "VER-011"; :>> label = "VerifyHourlyDoseCeiling"; }
|
|
118
116
|
attribute :>> methodKind = MemoVerificationMethodKind::simulation;
|
|
119
117
|
attribute :>> acceptanceCriteria = "Randomized bolus/basal schedules never exceed hourly maximum in sliding window (REQ-X-06)";
|
|
120
118
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -122,26 +120,25 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
122
120
|
objective { verify reqMaxHourlyDose; }
|
|
123
121
|
}
|
|
124
122
|
verification vcPumpAccuracy : VerificationCase {
|
|
125
|
-
@MemoIdentity { :>> providedId = "VER-012"; }
|
|
126
|
-
attribute :>> name = "VerifyDeliveryAccuracy";
|
|
123
|
+
@MemoIdentity { :>> providedId = "VER-012"; :>> label = "VerifyDeliveryAccuracy"; }
|
|
127
124
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
128
125
|
attribute :>> acceptanceCriteria = "Gravimetric bench measurement within ±5% (Tolerance_Min_const) across rate range (REQ-X-11)";
|
|
129
126
|
attribute :>> status = ElementStatusKind::approved;
|
|
130
127
|
|
|
131
128
|
objective { verify reqPumpAccuracy; }
|
|
129
|
+
subject verified : Base::Anything[*] = (fnCommandPump);
|
|
132
130
|
}
|
|
133
131
|
verification vcAlarmLoudness : VerificationCase {
|
|
134
|
-
@MemoIdentity { :>> providedId = "VER-013"; }
|
|
135
|
-
attribute :>> name = "VerifyAlarmSoundPressure";
|
|
132
|
+
@MemoIdentity { :>> providedId = "VER-013"; :>> label = "VerifyAlarmSoundPressure"; }
|
|
136
133
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
137
134
|
attribute :>> acceptanceCriteria = "Each priority tone meets Audio_level_const, 50 db for 2 s per I 8 (REQ-X-12)";
|
|
138
135
|
attribute :>> status = ElementStatusKind::approved;
|
|
139
136
|
|
|
140
137
|
objective { verify reqCs72; verify reqAlarmLoudness; }
|
|
138
|
+
subject verified : Base::Anything[*] = (fnAnnunciate);
|
|
141
139
|
}
|
|
142
140
|
verification vcFreeFlow : VerificationCase {
|
|
143
|
-
@MemoIdentity { :>> providedId = "VER-014"; }
|
|
144
|
-
attribute :>> name = "VerifyAntiFreeFlowValve";
|
|
141
|
+
@MemoIdentity { :>> providedId = "VER-014"; :>> label = "VerifyAntiFreeFlowValve"; }
|
|
145
142
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
146
143
|
attribute :>> acceptanceCriteria = "No gravity flow with set disengaged under worst-case head height (REQ-X-14)";
|
|
147
144
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -150,8 +147,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
150
147
|
subject verified : Base::Anything[*] = (freeFlowValveControl);
|
|
151
148
|
}
|
|
152
149
|
verification vcStuckButton : VerificationCase {
|
|
153
|
-
@MemoIdentity { :>> providedId = "VER-015"; }
|
|
154
|
-
attribute :>> name = "VerifyStuckButtonDetection";
|
|
150
|
+
@MemoIdentity { :>> providedId = "VER-015"; :>> label = "VerifyStuckButtonDetection"; }
|
|
155
151
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
156
152
|
attribute :>> acceptanceCriteria = "Shorted pendant input yields no bolus and Medium-priority notification after 60 s (REQ-X-09)";
|
|
157
153
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -159,48 +155,44 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
159
155
|
objective { verify reqStuckButton; }
|
|
160
156
|
}
|
|
161
157
|
verification vcFlowCrossCheck : VerificationCase {
|
|
162
|
-
@MemoIdentity { :>> providedId = "VER-016"; }
|
|
163
|
-
attribute :>> name = "VerifyFlowCrossCheck";
|
|
158
|
+
@MemoIdentity { :>> providedId = "VER-016"; :>> label = "VerifyFlowCrossCheck"; }
|
|
164
159
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
165
160
|
attribute :>> acceptanceCriteria = "Injected deviation beyond Tolerance_Min_const sustained past Max_Duration_OverInfusion_const pauses therapy and annunciates (REQ-X-10)";
|
|
166
161
|
attribute :>> status = ElementStatusKind::approved;
|
|
167
162
|
|
|
168
163
|
objective { verify reqFlowCrossCheck; }
|
|
169
|
-
subject verified : Base::Anything[*] = (flowCrossCheckControl);
|
|
164
|
+
subject verified : Base::Anything[*] = (flowCrossCheckControl, fnAcquireSensors.cfnMeasureFlowRate);
|
|
170
165
|
}
|
|
171
166
|
|
|
172
167
|
verification vcDrugLibrary : VerificationCase {
|
|
173
|
-
@MemoIdentity { :>> providedId = "VER-017"; }
|
|
174
|
-
attribute :>> name = "VerifyDrugLibraryEnforcement";
|
|
168
|
+
@MemoIdentity { :>> providedId = "VER-017"; :>> label = "VerifyDrugLibraryEnforcement"; }
|
|
175
169
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
176
170
|
attribute :>> acceptanceCriteria = "Hard-limit entries rejected, soft-limit entries require confirmation, both logged (REQ-X-01)";
|
|
177
171
|
attribute :>> status = ElementStatusKind::approved;
|
|
178
172
|
|
|
179
173
|
objective { verify reqDrugLibraryLimits; }
|
|
180
|
-
subject verified : Base::Anything[*] = (drugLibraryControl,
|
|
174
|
+
subject verified : Base::Anything[*] = (drugLibraryControl, gpcaSoftware.config, fnValidatePrescription);
|
|
181
175
|
}
|
|
182
176
|
verification vcPrescriptionConfirm : VerificationCase {
|
|
183
|
-
@MemoIdentity { :>> providedId = "VER-018"; }
|
|
184
|
-
attribute :>> name = "VerifyPrescriptionConfirmation";
|
|
177
|
+
@MemoIdentity { :>> providedId = "VER-018"; :>> label = "VerifyPrescriptionConfirmation"; }
|
|
185
178
|
attribute :>> methodKind = MemoVerificationMethodKind::demonstration;
|
|
186
179
|
attribute :>> acceptanceCriteria = "Therapy cannot start without distinct confirmation; displayed values equal stored values (REQ-CS-09)";
|
|
187
180
|
attribute :>> status = ElementStatusKind::approved;
|
|
188
181
|
|
|
189
182
|
objective { verify reqCs09; }
|
|
183
|
+
subject verified : Base::Anything[*] = (fnPresentStatus);
|
|
190
184
|
}
|
|
191
185
|
verification vcEventLog : VerificationCase {
|
|
192
|
-
@MemoIdentity { :>> providedId = "VER-019"; }
|
|
193
|
-
attribute :>> name = "VerifyEventLogIntegrity";
|
|
186
|
+
@MemoIdentity { :>> providedId = "VER-019"; :>> label = "VerifyEventLogIntegrity"; }
|
|
194
187
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
195
188
|
attribute :>> acceptanceCriteria = "Operational/error log entries per REQ-CS-78..81; tampering detectable (REQ-X-07)";
|
|
196
189
|
attribute :>> status = ElementStatusKind::approved;
|
|
197
190
|
|
|
198
191
|
objective { verify reqCs78; verify reqEventLogging; }
|
|
199
|
-
subject verified : Base::Anything[*] = (
|
|
192
|
+
subject verified : Base::Anything[*] = (gpcaSoftware.logging);
|
|
200
193
|
}
|
|
201
194
|
verification vcReverseDeliveryPause : VerificationCase {
|
|
202
|
-
@MemoIdentity { :>> providedId = "VER-020"; }
|
|
203
|
-
attribute :>> name = "VerifyReverseDeliveryPause";
|
|
195
|
+
@MemoIdentity { :>> providedId = "VER-020"; :>> label = "VerifyReverseDeliveryPause"; }
|
|
204
196
|
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
205
197
|
attribute :>> acceptanceCriteria = "Continuous or cumulative reverse delivery beyond the REQ-CS-22 duration limits transitions to PAUSED and raises the Reverse Delivery notification (NOTIF-04)";
|
|
206
198
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -208,8 +200,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
208
200
|
subject verified : Base::Anything[*] = (reverseDeliveryPauseControl);
|
|
209
201
|
}
|
|
210
202
|
verification vcAntiRefluxMechanism : VerificationCase {
|
|
211
|
-
@MemoIdentity { :>> providedId = "VER-021"; }
|
|
212
|
-
attribute :>> name = "VerifyContinuousReverseDeliveryPrevention";
|
|
203
|
+
@MemoIdentity { :>> providedId = "VER-021"; :>> label = "VerifyContinuousReverseDeliveryPrevention"; }
|
|
213
204
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
214
205
|
attribute :>> acceptanceCriteria = "During normal use and single fault condition, continuous reverse delivery is not possible (IEC 601-2-24 basis per GPCA safety requirements)";
|
|
215
206
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -217,8 +208,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
217
208
|
subject verified : Base::Anything[*] = (antiRefluxDesignControl);
|
|
218
209
|
}
|
|
219
210
|
verification vcVtbiCeiling : VerificationCase {
|
|
220
|
-
@MemoIdentity { :>> providedId = "VER-022"; }
|
|
221
|
-
attribute :>> name = "VerifyVtbiCeilingPause";
|
|
211
|
+
@MemoIdentity { :>> providedId = "VER-022"; :>> label = "VerifyVtbiCeilingPause"; }
|
|
222
212
|
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
223
213
|
attribute :>> acceptanceCriteria = "Actual volume infused above the drug-database maximum VTBI transitions to PAUSED with flow at most KVO (REQ-CS-20, AGREE GP-008) and raises NOTIF-06";
|
|
224
214
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -226,8 +216,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
226
216
|
subject verified : Base::Anything[*] = (vtbiLimitPauseControl);
|
|
227
217
|
}
|
|
228
218
|
verification vcInfusionComplete : VerificationCase {
|
|
229
|
-
@MemoIdentity { :>> providedId = "VER-023"; }
|
|
230
|
-
attribute :>> name = "VerifyInfusionCompleteStop";
|
|
219
|
+
@MemoIdentity { :>> providedId = "VER-023"; :>> label = "VerifyInfusionCompleteStop"; }
|
|
231
220
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
232
221
|
attribute :>> acceptanceCriteria = "Reaching prescribed total duration or maximum VTBI transitions ACTIVE to IDLE with Infusion Complete actions (REQ-CS-28)";
|
|
233
222
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -235,8 +224,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
235
224
|
subject verified : Base::Anything[*] = (infusionCompleteControl);
|
|
236
225
|
}
|
|
237
226
|
verification vcDoorInterlock : VerificationCase {
|
|
238
|
-
@MemoIdentity { :>> providedId = "VER-024"; }
|
|
239
|
-
attribute :>> name = "VerifyDoorOpenDeliveryInhibit";
|
|
227
|
+
@MemoIdentity { :>> providedId = "VER-024"; :>> label = "VerifyDoorOpenDeliveryInhibit"; }
|
|
240
228
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
241
229
|
attribute :>> acceptanceCriteria = "Door open during THERAPY limits flow to at most KVO and raises a notification (AGREE GP-011; REQ-X-05)";
|
|
242
230
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -246,16 +234,14 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
246
234
|
|
|
247
235
|
// ── Validation cases (design validation / IEC 62366) ────────
|
|
248
236
|
verification valSimulatedWard : ValidationCase {
|
|
249
|
-
@MemoIdentity { :>> providedId = "VAL-001"; }
|
|
250
|
-
attribute :>> name = "SimulatedWardTherapyValidation";
|
|
237
|
+
@MemoIdentity { :>> providedId = "VAL-001"; :>> label = "SimulatedWardTherapyValidation"; }
|
|
251
238
|
attribute :>> validationMethod = ValidationMethodKind::simulatedUse;
|
|
252
239
|
attribute :>> userParticipation = "nurses and physicians on a simulated ward";
|
|
253
240
|
attribute :>> acceptanceCriteria = "Complete therapy scenarios OS-001..OS-006 executed without unresolved use difficulty";
|
|
254
241
|
attribute :>> clinicalContext = "post-operative PCA therapy in acute care";
|
|
255
242
|
}
|
|
256
243
|
verification valSummativeUsability : ValidationCase {
|
|
257
|
-
@MemoIdentity { :>> providedId = "VAL-002"; }
|
|
258
|
-
attribute :>> name = "SummativeUsabilityTest";
|
|
244
|
+
@MemoIdentity { :>> providedId = "VAL-002"; :>> label = "SummativeUsabilityTest"; }
|
|
259
245
|
attribute :>> validationMethod = ValidationMethodKind::summativeUsabilityTest;
|
|
260
246
|
attribute :>> userParticipation = "15 representative clinical users per user group";
|
|
261
247
|
attribute :>> acceptanceCriteria = "No critical use errors (UE-001..UE-004) observed on safety-related tasks; residual difficulty acceptable per IEC 62366-1";
|
|
@@ -265,8 +251,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
265
251
|
// ── Test artifacts and evidence ─────────────────────────────
|
|
266
252
|
part testReportLockout : MemoEvidence {
|
|
267
253
|
attribute :>> evidenceKind = EvidenceKind::testArtifact;
|
|
268
|
-
@MemoIdentity { :>> providedId = "TEST-001"; }
|
|
269
|
-
attribute :>> name = "BolusLockoutTestReport";
|
|
254
|
+
@MemoIdentity { :>> providedId = "TEST-001"; :>> label = "BolusLockoutTestReport"; }
|
|
270
255
|
attribute :>> version = "0.1";
|
|
271
256
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
272
257
|
attribute :>> artifactKind = ArtifactKind::testReport;
|
|
@@ -274,8 +259,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
274
259
|
}
|
|
275
260
|
part testProtocolSafetySuite : MemoEvidence {
|
|
276
261
|
attribute :>> evidenceKind = EvidenceKind::testArtifact;
|
|
277
|
-
@MemoIdentity { :>> providedId = "TEST-002"; }
|
|
278
|
-
attribute :>> name = "SafetyAlarmTestProtocol";
|
|
262
|
+
@MemoIdentity { :>> providedId = "TEST-002"; :>> label = "SafetyAlarmTestProtocol"; }
|
|
279
263
|
attribute :>> version = "0.1";
|
|
280
264
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
281
265
|
attribute :>> artifactKind = ArtifactKind::testProtocol;
|
|
@@ -283,8 +267,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
283
267
|
}
|
|
284
268
|
part evidenceLockout : MemoEvidence {
|
|
285
269
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
286
|
-
@MemoIdentity { :>> providedId = "EVD-001"; }
|
|
287
|
-
attribute :>> name = "BolusLockoutEvidence";
|
|
270
|
+
@MemoIdentity { :>> providedId = "EVD-001"; :>> label = "BolusLockoutEvidence"; }
|
|
288
271
|
attribute :>> version = "0.1";
|
|
289
272
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
290
273
|
attribute :>> evidenceType = "verification evidence";
|
|
@@ -292,8 +275,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
292
275
|
}
|
|
293
276
|
part evidenceModeRange : MemoEvidence {
|
|
294
277
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
295
|
-
@MemoIdentity { :>> providedId = "EVD-002"; }
|
|
296
|
-
attribute :>> name = "ModeRangeEvidence";
|
|
278
|
+
@MemoIdentity { :>> providedId = "EVD-002"; :>> label = "ModeRangeEvidence"; }
|
|
297
279
|
attribute :>> version = "0.1";
|
|
298
280
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
299
281
|
attribute :>> evidenceType = "formal proof evidence";
|
|
@@ -301,8 +283,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
301
283
|
}
|
|
302
284
|
part evidenceSameStepAlarm : MemoEvidence {
|
|
303
285
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
304
|
-
@MemoIdentity { :>> providedId = "EVD-003"; }
|
|
305
|
-
attribute :>> name = "SameStepAlarmEvidence";
|
|
286
|
+
@MemoIdentity { :>> providedId = "EVD-003"; :>> label = "SameStepAlarmEvidence"; }
|
|
306
287
|
attribute :>> version = "0.1";
|
|
307
288
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
308
289
|
attribute :>> evidenceType = "model checking evidence";
|
|
@@ -310,8 +291,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
310
291
|
}
|
|
311
292
|
part evidenceTemporalModeSafety : MemoEvidence {
|
|
312
293
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
313
|
-
@MemoIdentity { :>> providedId = "EVD-004"; }
|
|
314
|
-
attribute :>> name = "TemporalModeSafetyEvidence";
|
|
294
|
+
@MemoIdentity { :>> providedId = "EVD-004"; :>> label = "TemporalModeSafetyEvidence"; }
|
|
315
295
|
attribute :>> version = "0.1";
|
|
316
296
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
317
297
|
attribute :>> evidenceType = "model checking evidence";
|
|
@@ -319,8 +299,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
319
299
|
}
|
|
320
300
|
part evidenceSafetyAlarmSuite : MemoEvidence {
|
|
321
301
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
322
|
-
@MemoIdentity { :>> providedId = "EVD-005"; }
|
|
323
|
-
attribute :>> name = "SafetyAlarmSuiteEvidence";
|
|
302
|
+
@MemoIdentity { :>> providedId = "EVD-005"; :>> label = "SafetyAlarmSuiteEvidence"; }
|
|
324
303
|
attribute :>> version = "0.1";
|
|
325
304
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
326
305
|
attribute :>> evidenceType = "bench test evidence for alarm-driven safe states";
|
|
@@ -328,8 +307,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
328
307
|
}
|
|
329
308
|
part evidenceUsability : MemoEvidence {
|
|
330
309
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
331
|
-
@MemoIdentity { :>> providedId = "EVD-006"; }
|
|
332
|
-
attribute :>> name = "SummativeUsabilityEvidence";
|
|
310
|
+
@MemoIdentity { :>> providedId = "EVD-006"; :>> label = "SummativeUsabilityEvidence"; }
|
|
333
311
|
attribute :>> version = "0.1";
|
|
334
312
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
335
313
|
attribute :>> evidenceType = "summative usability report per IEC 62366-1";
|
|
@@ -337,8 +315,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
337
315
|
}
|
|
338
316
|
part evidenceHardwareBench : MemoEvidence {
|
|
339
317
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
340
|
-
@MemoIdentity { :>> providedId = "EVD-008"; }
|
|
341
|
-
attribute :>> name = "HardwareBenchEvidence";
|
|
318
|
+
@MemoIdentity { :>> providedId = "EVD-008"; :>> label = "HardwareBenchEvidence"; }
|
|
342
319
|
attribute :>> version = "0.1";
|
|
343
320
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
344
321
|
attribute :>> evidenceType = "bench evidence for alarm loudness and anti-free-flow valve";
|
|
@@ -346,8 +323,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
346
323
|
}
|
|
347
324
|
part evidenceDoseProgramming : MemoEvidence {
|
|
348
325
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
349
|
-
@MemoIdentity { :>> providedId = "EVD-009"; }
|
|
350
|
-
attribute :>> name = "DoseProgrammingEvidence";
|
|
326
|
+
@MemoIdentity { :>> providedId = "EVD-009"; :>> label = "DoseProgrammingEvidence"; }
|
|
351
327
|
attribute :>> version = "0.1";
|
|
352
328
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
353
329
|
attribute :>> evidenceType = "test evidence for prescription limits, confirmation, dose ceiling, and event log";
|
|
@@ -355,8 +331,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
355
331
|
}
|
|
356
332
|
part evidenceDeliveryAccuracy : MemoEvidence {
|
|
357
333
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
358
|
-
@MemoIdentity { :>> providedId = "EVD-007"; }
|
|
359
|
-
attribute :>> name = "DeliveryAccuracyEvidence";
|
|
334
|
+
@MemoIdentity { :>> providedId = "EVD-007"; :>> label = "DeliveryAccuracyEvidence"; }
|
|
360
335
|
attribute :>> version = "0.1";
|
|
361
336
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
362
337
|
attribute :>> evidenceType = "gravimetric bench test evidence";
|
package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml
CHANGED
|
@@ -18,10 +18,9 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
|
|
|
18
18
|
view gpcaSystemContextView : MemoDiagramView {
|
|
19
19
|
expose memo_examples_gpca_pump_viewpoints_context_views_context_system_context_view::*;
|
|
20
20
|
attribute depth = 2;
|
|
21
|
-
@MemoIdentity { :>> providedId = "VIEW-CTX-101"; }
|
|
22
|
-
attribute :>> name = "GPCA_SystemContextView";
|
|
21
|
+
@MemoIdentity { :>> providedId = "VIEW-CTX-101"; :>> label = "GPCA_SystemContextView"; }
|
|
23
22
|
@MemoIdentity { :>> shortDescription = "Actors, use contexts, and external entities at the GPCA system boundary."; }
|
|
24
|
-
|
|
23
|
+
doc /* Shows the CriSys Fig 2.1 boundary: patient, clinician, prescription, drug reservoir, needle, hospital pharmacy database, and hospital environment around the pump, with directional data flows, physical drug-path connections, and the intended use anchoring the boundary. */
|
|
25
24
|
attribute :>> outputKind = (ViewOutputKind::diagram);
|
|
26
25
|
attribute :>> presentationKind = (PresentationKind::blockDiagram);
|
|
27
26
|
attribute :>> viewKind = DiagramViewKind::general;
|
|
@@ -30,9 +29,8 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
|
|
|
30
29
|
attribute :>> autoPopulate = true;
|
|
31
30
|
attribute :>> queryDescription = "Include actors, use contexts, intended use, and external operational entities.";
|
|
32
31
|
part :>> selectionQuery {
|
|
33
|
-
@MemoIdentity { :>> providedId = "QRY-CTX-101"; }
|
|
34
|
-
attribute :>>
|
|
35
|
-
attribute :>> includeElementKinds = ("Actor", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity");
|
|
32
|
+
@MemoIdentity { :>> providedId = "QRY-CTX-101"; :>> label = "GPCA_SystemContextQuery"; }
|
|
33
|
+
attribute :>> includeElementKinds = ("OperationalParticipant", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity");
|
|
36
34
|
attribute :>> includeRelationshipKinds = ("connect", "flow", "Governs", "AppliesInContext");
|
|
37
35
|
attribute :>> includeLayers = ("context", "operational");
|
|
38
36
|
attribute :>> selectionExpression = "product == 'GPCA'";
|
|
@@ -19,10 +19,9 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
|
|
|
19
19
|
view gpcaCybersecurityView : MemoDiagramView {
|
|
20
20
|
expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cybersecurity_view::*;
|
|
21
21
|
attribute depth = 2;
|
|
22
|
-
@MemoIdentity { :>> providedId = "VIEW-CYB-001"; }
|
|
23
|
-
attribute :>> name = "GPCA_CybersecurityView";
|
|
22
|
+
@MemoIdentity { :>> providedId = "VIEW-CYB-001"; :>> label = "GPCA_CybersecurityView"; }
|
|
24
23
|
@MemoIdentity { :>> shortDescription = "Shows GPCA assets, trust boundaries, threats, vulnerabilities, and mitigations."; }
|
|
25
|
-
|
|
24
|
+
doc /* Product-specific cybersecurity view intended for secure product development and cross-reference into cybersecurity risk documentation. */
|
|
26
25
|
attribute :>> outputKind = (ViewOutputKind::diagram);
|
|
27
26
|
attribute :>> presentationKind = (PresentationKind::custom);
|
|
28
27
|
attribute :>> viewKind = DiagramViewKind::general;
|
|
@@ -31,9 +30,8 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
|
|
|
31
30
|
attribute :>> autoPopulate = true;
|
|
32
31
|
attribute :>> queryDescription = "Include cyber assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, mitigations, security requirements, and verification.";
|
|
33
32
|
part :>> selectionQuery {
|
|
34
|
-
@MemoIdentity { :>> providedId = "QRY-CYB-001"; }
|
|
35
|
-
attribute :>>
|
|
36
|
-
attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "OperativeScenario[scenarioKind=threat]");
|
|
33
|
+
@MemoIdentity { :>> providedId = "QRY-CYB-001"; :>> label = "GPCA_CybersecurityQuery"; }
|
|
34
|
+
attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "OperativeScenario");
|
|
37
35
|
attribute :>> includeLayers = ("cybersecurity", "risk", "assurance");
|
|
38
36
|
attribute :>> includeConcerns = (ConcernKind::cybersecurity, ConcernKind::privacy, ConcernKind::safety);
|
|
39
37
|
attribute :>> selectionExpression = "product == 'GPCA'";
|
|
@@ -10,18 +10,16 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_cyber_as
|
|
|
10
10
|
private import memo_core_common::MemoIdentity;
|
|
11
11
|
view cyberAssessmentView : MemoCybersecurityAssessmentView {
|
|
12
12
|
expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_cyber_assessment_view::*;
|
|
13
|
-
@MemoIdentity { :>> providedId = "DOC-003"; }
|
|
14
|
-
attribute :>> name = "GPCAMemoCybersecurityAssessmentView";
|
|
13
|
+
@MemoIdentity { :>> providedId = "DOC-003"; :>> label = "GPCAMemoCybersecurityAssessmentView"; }
|
|
15
14
|
@MemoIdentity { :>> shortDescription = "Cybersecurity risk-assessment-oriented document view for GPCA."; }
|
|
16
|
-
|
|
15
|
+
doc /* Captures GPCA cyber risks, mitigations, security requirements, verification, and safety/privacy traceability for cybersecurity assessment records. */
|
|
17
16
|
attribute :>> version = "0.1";
|
|
18
17
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
19
18
|
attribute :>> marketScope = "generic";
|
|
20
19
|
ref :>> viewpointDefinition = cybersecurityViewpoint;
|
|
21
20
|
part :>> selectionQuery {
|
|
22
|
-
@MemoIdentity { :>> providedId = "QRY-DOC-009"; }
|
|
23
|
-
attribute :>>
|
|
24
|
-
attribute :>> includeElementKinds = ("CyberRisk", "CyberHazard", "CybersecurityAsset", "CyberMitigation", "SecurityRequirement", "SecurityClaim", "SBOMEntry", "SoftwareModule[moduleKind=soup]");
|
|
21
|
+
@MemoIdentity { :>> providedId = "QRY-DOC-009"; :>> label = "cyberAssessmentViewQuery"; }
|
|
22
|
+
attribute :>> includeElementKinds = ("CyberRisk", "CyberHazard", "CybersecurityAsset", "CyberMitigation", "SecurityRequirement", "SBOMEntry", "SoftwareModule");
|
|
25
23
|
attribute :>> includeRelationshipKinds = ("ImpactsSafety", "Mitigates", "DerivesCyberRequirement", "AssessedAgainst", "DependsOnSoup");
|
|
26
24
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
27
25
|
}
|
|
@@ -10,18 +10,16 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_m
|
|
|
10
10
|
private import memo_core_common::MemoIdentity;
|
|
11
11
|
view threatModelView : MemoCybersecurityThreatModelView {
|
|
12
12
|
expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_model_view::*;
|
|
13
|
-
@MemoIdentity { :>> providedId = "DOC-002"; }
|
|
14
|
-
attribute :>> name = "GPCACyberThreatModelView";
|
|
13
|
+
@MemoIdentity { :>> providedId = "DOC-002"; :>> label = "GPCACyberThreatModelView"; }
|
|
15
14
|
@MemoIdentity { :>> shortDescription = "Threat-model-oriented document view for GPCA."; }
|
|
16
|
-
|
|
15
|
+
doc /* Captures GPCA cyber assets, trust boundaries, threats, threat scenarios, vulnerabilities, and mitigations for secure product development records. */
|
|
17
16
|
attribute :>> version = "0.1";
|
|
18
17
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
19
18
|
attribute :>> marketScope = "generic";
|
|
20
19
|
ref :>> viewpointDefinition = cybersecurityViewpoint;
|
|
21
20
|
part :>> selectionQuery {
|
|
22
|
-
@MemoIdentity { :>> providedId = "QRY-DOC-008"; }
|
|
23
|
-
attribute :>>
|
|
24
|
-
attribute :>> includeElementKinds = ("Threat", "OperativeScenario[scenarioKind=threat]", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
|
|
21
|
+
@MemoIdentity { :>> providedId = "QRY-DOC-008"; :>> label = "threatModelViewQuery"; }
|
|
22
|
+
attribute :>> includeElementKinds = ("Threat", "OperativeScenario", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
|
|
25
23
|
attribute :>> includeRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "CrossesTrustBoundary", "Mitigates", "DerivesCyberRequirement");
|
|
26
24
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
27
25
|
}
|
|
@@ -18,8 +18,7 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
|
|
|
18
18
|
view gpcaFunctionAllocationView : MemoDiagramView {
|
|
19
19
|
expose memo_examples_gpca_pump_viewpoints_functional_views_functional_function_allocation_view::*;
|
|
20
20
|
attribute depth = 2;
|
|
21
|
-
@MemoIdentity { :>> providedId = "VIEW-FUN-102"; }
|
|
22
|
-
attribute :>> name = "GPCA_FunctionAllocationView";
|
|
21
|
+
@MemoIdentity { :>> providedId = "VIEW-FUN-102"; :>> label = "GPCA_FunctionAllocationView"; }
|
|
23
22
|
@MemoIdentity { :>> shortDescription = "Allocation of logical functions to software components and hardware assemblies."; }
|
|
24
23
|
attribute :>> outputKind = (ViewOutputKind::matrix);
|
|
25
24
|
attribute :>> presentationKind = (PresentationKind::traceMatrix);
|
|
@@ -29,8 +28,7 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
|
|
|
29
28
|
attribute :>> autoPopulate = true;
|
|
30
29
|
attribute :>> queryDescription = "Include logical functions with their AllocatedTo targets.";
|
|
31
30
|
part :>> selectionQuery {
|
|
32
|
-
@MemoIdentity { :>> providedId = "QRY-FUN-102"; }
|
|
33
|
-
attribute :>> name = "GPCA_FunctionAllocationQuery";
|
|
31
|
+
@MemoIdentity { :>> providedId = "QRY-FUN-102"; :>> label = "GPCA_FunctionAllocationQuery"; }
|
|
34
32
|
attribute :>> includeElementKinds = ("SystemFunction", "SoftwareModule", "HardwareAssembly");
|
|
35
33
|
attribute :>> includeRelationshipKinds = ("AllocatedTo");
|
|
36
34
|
attribute :>> includeLayers = ("functions", "software_structure", "hardware_structure");
|
|
@@ -18,10 +18,9 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
|
|
|
18
18
|
view gpcaFunctionBrowserView : MemoDiagramView {
|
|
19
19
|
expose memo_examples_gpca_pump_viewpoints_functional_views_functional_function_browser_view::*;
|
|
20
20
|
attribute depth = 2;
|
|
21
|
-
@MemoIdentity { :>> providedId = "VIEW-FUN-103"; }
|
|
22
|
-
attribute :>> name = "GPCA_FunctionBrowserView";
|
|
21
|
+
@MemoIdentity { :>> providedId = "VIEW-FUN-103"; :>> label = "GPCA_FunctionBrowserView"; }
|
|
23
22
|
@MemoIdentity { :>> shortDescription = "Membership tree over the functions layer: logical functions, flows, and the exchange item definitions, grouped by kind."; }
|
|
24
|
-
|
|
23
|
+
doc /* Browser view (SysML v2 browser view kind) exposing the functions-layer membership hierarchy as a first-class view: the eleven logical functions, the logical flows connecting them, and the data/control definitions they exchange — with kind icons, expand/collapse, and filtering. */
|
|
25
24
|
attribute :>> outputKind = (ViewOutputKind::diagram);
|
|
26
25
|
attribute :>> presentationKind = (PresentationKind::blockDiagram);
|
|
27
26
|
attribute :>> viewKind = DiagramViewKind::browser;
|
|
@@ -29,9 +28,11 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
|
|
|
29
28
|
attribute :>> autoPopulate = true;
|
|
30
29
|
attribute :>> queryDescription = "Include the functions layer's functions, flows, and exchange item definitions.";
|
|
31
30
|
part :>> selectionQuery {
|
|
32
|
-
@MemoIdentity { :>> providedId = "QRY-FUN-103"; }
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
@MemoIdentity { :>> providedId = "QRY-FUN-103"; :>> label = "GPCA_FunctionBrowserQuery"; }
|
|
32
|
+
// No "FunctionalExchange": an exchange is a flow between two
|
|
33
|
+
// functions, not an element, so it is drawn as the edge between
|
|
34
|
+
// the selected functions rather than selected by kind.
|
|
35
|
+
attribute :>> includeElementKinds = ("SystemFunction", "InterfaceItem");
|
|
35
36
|
attribute :>> includeLayers = ("functions");
|
|
36
37
|
attribute :>> selectionExpression = "product == 'GPCA'";
|
|
37
38
|
attribute :>> rationaleText = "Auto-populate the function browser from the functions layer.";
|
package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml
CHANGED
|
@@ -18,10 +18,9 @@ package memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_vi
|
|
|
18
18
|
view gpcaActionFlowView : MemoDiagramView {
|
|
19
19
|
expose memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_view::*;
|
|
20
20
|
attribute depth = 2;
|
|
21
|
-
@MemoIdentity { :>> providedId = "VIEW-BHV-003"; }
|
|
22
|
-
attribute :>> name = "GPCA_InfusionDeliveryActionFlowView";
|
|
21
|
+
@MemoIdentity { :>> providedId = "VIEW-BHV-003"; :>> label = "GPCA_InfusionDeliveryActionFlowView"; }
|
|
23
22
|
@MemoIdentity { :>> shortDescription = "The 20 ms execution-step pipeline from sensor acquisition through alarm evaluation and dose limiting to pump actuation and event logging."; }
|
|
24
|
-
|
|
23
|
+
doc /* Action flow over the infusionDeliveryFlow composite action: typed action steps with in/out parameters, item flows carrying the DD/CD exchange items, succession ordering from start to done, and swimlane allocation onto the logical architecture (sensors, alarm, infusion manager, pump motor, logging). */
|
|
25
24
|
attribute :>> outputKind = (ViewOutputKind::diagram);
|
|
26
25
|
attribute :>> presentationKind = (PresentationKind::activityDiagram);
|
|
27
26
|
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
@@ -30,9 +29,8 @@ package memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_vi
|
|
|
30
29
|
attribute :>> autoPopulate = true;
|
|
31
30
|
attribute :>> queryDescription = "Include the nested action usages of the infusion delivery flow with their flows and successions.";
|
|
32
31
|
part :>> selectionQuery {
|
|
33
|
-
@MemoIdentity { :>> providedId = "QRY-BHV-103"; }
|
|
34
|
-
attribute :>>
|
|
35
|
-
attribute :>> includeElementKinds = ("ActionUsage");
|
|
32
|
+
@MemoIdentity { :>> providedId = "QRY-BHV-103"; :>> label = "GPCA_ActionFlowQuery"; }
|
|
33
|
+
attribute :>> includeElementKinds = ("MemoAction");
|
|
36
34
|
attribute :>> selectionExpression = "product == 'GPCA'";
|
|
37
35
|
attribute :>> rationaleText = "Auto-populate the action flow view from the behavior layer's action usages.";
|
|
38
36
|
}
|