@memoarchitect/ontology 0.12.1 → 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 -358
- 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 -91
- 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 +675 -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 +7 -29
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +12 -36
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +13 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +388 -0
- 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 +27 -36
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +8 -21
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +17 -65
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +23 -32
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +9 -22
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +7 -22
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +18 -34
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +2 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +18 -42
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +11 -24
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +9 -36
- package/examples/sysml-diagram-samples/model/methodology/project.sysml +40 -0
- 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 +4 -5
- package/src/viewpoints/context/context_viewpoint.sysml +4 -5
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -5
- package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +3 -5
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -5
- 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 +4 -5
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -5
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
- package/src/viewpoints/physical/physical_viewpoint.sysml +4 -5
- 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 +4 -5
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
- package/src/viewpoints/risk/risk_viewpoint.sysml +4 -5
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
- package/src/viewpoints/software/software_viewpoint.sysml +4 -5
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
- package/src/viewpoints/{definitions → stakeholders_concerns}/memo_stakeholders_concerns.sysml +45 -36
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -5
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +4 -5
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -5
- 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/project.sysml +0 -26
- 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,9 +2,9 @@ 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
|
-
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirements_view::*;
|
|
8
8
|
private import ScalarValues::*;
|
|
9
9
|
private import memo_core_dimensions::*; // ElementStatusKind
|
|
10
10
|
|
|
@@ -14,59 +14,60 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
14
14
|
|
|
15
15
|
private import memo_core_common::MemoIdentity;
|
|
16
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.
|
|
17
25
|
verification vcModeRange : VerificationCase {
|
|
18
|
-
@MemoIdentity { :>> providedId = "VER-001"; }
|
|
19
|
-
attribute :>> name = "VerifyModeRange";
|
|
26
|
+
@MemoIdentity { :>> providedId = "VER-001"; :>> label = "VerifyModeRange"; }
|
|
20
27
|
attribute :>> methodKind = MemoVerificationMethodKind::formalProof;
|
|
21
28
|
attribute :>> acceptanceCriteria = "Current_System_mode only takes valid exclusive values";
|
|
22
29
|
attribute :>> status = ElementStatusKind::approved;
|
|
23
30
|
|
|
24
|
-
objective { verify reqCs01; }
|
|
25
|
-
subject verified : Base::Anything[*] = (
|
|
31
|
+
objective { verify reqCs01; verify guaranteeExclusiveMode; }
|
|
32
|
+
subject verified : Base::Anything[*] = (gpcaSoftware.tlm, gpcaSoftware.outputBus, fnManageInfusion);
|
|
26
33
|
}
|
|
27
34
|
verification vcLockout : VerificationCase {
|
|
28
|
-
@MemoIdentity { :>> providedId = "VER-002"; }
|
|
29
|
-
attribute :>> name = "VerifyBolusLockout";
|
|
35
|
+
@MemoIdentity { :>> providedId = "VER-002"; :>> label = "VerifyBolusLockout"; }
|
|
30
36
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
31
37
|
attribute :>> acceptanceCriteria = "No patient bolus initiated when lockout or max bolus constraints active";
|
|
32
38
|
attribute :>> status = ElementStatusKind::approved;
|
|
33
39
|
|
|
34
|
-
objective { verify reqCs25; }
|
|
35
|
-
subject verified : Base::Anything[*] = (lockoutControl,
|
|
40
|
+
objective { verify reqCs25; verify guaranteeLockoutPreventsBolus; verify tcBolusResponse; }
|
|
41
|
+
subject verified : Base::Anything[*] = (lockoutControl, gpcaSoftware.infusionMgr, fnEnforceLimits);
|
|
36
42
|
}
|
|
37
43
|
verification vcSameStepAlarm : VerificationCase {
|
|
38
|
-
@MemoIdentity { :>> providedId = "VER-003"; }
|
|
39
|
-
attribute :>> name = "VerifySameStepAlarmStop";
|
|
44
|
+
@MemoIdentity { :>> providedId = "VER-003"; :>> label = "VerifySameStepAlarmStop"; }
|
|
40
45
|
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
41
46
|
attribute :>> acceptanceCriteria = "Alarm output affects infusion in same execution step";
|
|
42
47
|
attribute :>> status = ElementStatusKind::approved;
|
|
43
48
|
|
|
44
|
-
objective { verify reqCs19; }
|
|
45
|
-
subject verified : Base::Anything[*] = (
|
|
49
|
+
objective { verify reqCs19; verify propAlarmStopsSameStep; verify guaranteeAlarmStopsSameStep; verify tcAlarmLatency; }
|
|
50
|
+
subject verified : Base::Anything[*] = (gpcaSoftware.alarm, fnMonitorAlarm);
|
|
46
51
|
}
|
|
47
52
|
verification vcTemporalModeSafety : VerificationCase {
|
|
48
|
-
@MemoIdentity { :>> providedId = "VER-004"; }
|
|
49
|
-
attribute :>> name = "VerifyTemporalModeSafety";
|
|
53
|
+
@MemoIdentity { :>> providedId = "VER-004"; :>> label = "VerifyTemporalModeSafety"; }
|
|
50
54
|
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
51
55
|
attribute :>> acceptanceCriteria = "No invalid transitions and pause on critical alarms";
|
|
52
56
|
attribute :>> status = ElementStatusKind::approved;
|
|
53
57
|
|
|
54
|
-
objective { verify reqCs75; verify reqDoorOpen; }
|
|
55
|
-
subject verified : Base::Anything[*] = (propLockoutTimerMonotonic, temporalNoInvalidTransition);
|
|
58
|
+
objective { verify reqCs75; verify reqDoorOpen; verify propLockoutTimerMonotonic; verify temporalNoInvalidTransition; }
|
|
56
59
|
}
|
|
57
60
|
verification vcAirInLine : VerificationCase {
|
|
58
|
-
@MemoIdentity { :>> providedId = "VER-005"; }
|
|
59
|
-
attribute :>> name = "VerifyAirInLineStop";
|
|
61
|
+
@MemoIdentity { :>> providedId = "VER-005"; :>> label = "VerifyAirInLineStop"; }
|
|
60
62
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
61
63
|
attribute :>> acceptanceCriteria = "Injected air above threshold pauses infusion and annunciates per the REQ 59 High-priority actions (REQ-CS-21)";
|
|
62
64
|
attribute :>> status = ElementStatusKind::approved;
|
|
63
65
|
|
|
64
66
|
objective { verify reqCs21; }
|
|
65
|
-
subject verified : Base::Anything[*] = (airDetectionControl);
|
|
67
|
+
subject verified : Base::Anything[*] = (airDetectionControl, fnAcquireSensors.cfnDetectAirInLine);
|
|
66
68
|
}
|
|
67
69
|
verification vcOcclusion : VerificationCase {
|
|
68
|
-
@MemoIdentity { :>> providedId = "VER-006"; }
|
|
69
|
-
attribute :>> name = "VerifyOcclusionDetection";
|
|
70
|
+
@MemoIdentity { :>> providedId = "VER-006"; :>> label = "VerifyOcclusionDetection"; }
|
|
70
71
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
71
72
|
attribute :>> acceptanceCriteria = "Clamped line above pressure threshold pauses infusion and annunciates (REQ-X-04)";
|
|
72
73
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -75,47 +76,43 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
75
76
|
subject verified : Base::Anything[*] = (occlusionAlarmControl);
|
|
76
77
|
}
|
|
77
78
|
verification vcEmptyReservoir : VerificationCase {
|
|
78
|
-
@MemoIdentity { :>> providedId = "VER-007"; }
|
|
79
|
-
attribute :>> name = "VerifyEmptyReservoirStop";
|
|
79
|
+
@MemoIdentity { :>> providedId = "VER-007"; :>> label = "VerifyEmptyReservoirStop"; }
|
|
80
80
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
81
81
|
attribute :>> acceptanceCriteria = "Reservoir-empty assertion transitions to PAUSED (KVO flow) and annunciates per the REQ 59 High-priority actions (REQ-CS-23)";
|
|
82
82
|
attribute :>> status = ElementStatusKind::approved;
|
|
83
83
|
|
|
84
84
|
objective { verify reqCs23; }
|
|
85
|
-
subject verified : Base::Anything[*] = (reservoirMonitorControl,
|
|
85
|
+
subject verified : Base::Anything[*] = (reservoirMonitorControl, gpcaSoftware.systemStatus);
|
|
86
86
|
}
|
|
87
87
|
verification vcPost : VerificationCase {
|
|
88
|
-
@MemoIdentity { :>> providedId = "VER-008"; }
|
|
89
|
-
attribute :>> name = "VerifyPowerOnSelfTest";
|
|
88
|
+
@MemoIdentity { :>> providedId = "VER-008"; :>> label = "VerifyPowerOnSelfTest"; }
|
|
90
89
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
91
90
|
attribute :>> acceptanceCriteria = "Each injected POST fault (CPU, RAM, ROM, watchdog, sensors) blocks therapy and alarms (REQ-X-02)";
|
|
92
91
|
attribute :>> status = ElementStatusKind::approved;
|
|
93
92
|
|
|
94
93
|
objective { verify reqPost; }
|
|
95
|
-
subject verified : Base::Anything[*] = (
|
|
94
|
+
subject verified : Base::Anything[*] = (gpcaSoftware.systemMonitor, fnSelfTest);
|
|
96
95
|
}
|
|
97
96
|
verification vcPowerLoss : VerificationCase {
|
|
98
|
-
@MemoIdentity { :>> providedId = "VER-009"; }
|
|
99
|
-
attribute :>> name = "VerifyPowerLossRetentionAndResume";
|
|
97
|
+
@MemoIdentity { :>> providedId = "VER-009"; :>> label = "VerifyPowerLossRetentionAndResume"; }
|
|
100
98
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
101
99
|
attribute :>> acceptanceCriteria = "Prescription and log intact after power cycle; therapy resumes only after confirmation (REQ-X-03)";
|
|
102
100
|
attribute :>> status = ElementStatusKind::approved;
|
|
103
101
|
|
|
104
102
|
objective { verify reqPowerLossRetention; verify reqBatteryBackup; }
|
|
103
|
+
subject verified : Base::Anything[*] = (fnManagePower);
|
|
105
104
|
}
|
|
106
105
|
verification vcWatchdog : VerificationCase {
|
|
107
|
-
@MemoIdentity { :>> providedId = "VER-010"; }
|
|
108
|
-
attribute :>> name = "VerifyWatchdogSafeState";
|
|
106
|
+
@MemoIdentity { :>> providedId = "VER-010"; :>> label = "VerifyWatchdogSafeState"; }
|
|
109
107
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
110
108
|
attribute :>> acceptanceCriteria = "Induced CPU hang forces zero flow and continuous alarm within 60 ms (REQ-X-08, TC-003)";
|
|
111
109
|
attribute :>> status = ElementStatusKind::approved;
|
|
112
110
|
|
|
113
|
-
objective { verify reqWatchdogSafeState; }
|
|
114
|
-
subject verified : Base::Anything[*] =
|
|
111
|
+
objective { verify reqWatchdogSafeState; verify tcWatchdogTimeout; }
|
|
112
|
+
subject verified : Base::Anything[*] = watchdogControl;
|
|
115
113
|
}
|
|
116
114
|
verification vcHourlyMax : VerificationCase {
|
|
117
|
-
@MemoIdentity { :>> providedId = "VER-011"; }
|
|
118
|
-
attribute :>> name = "VerifyHourlyDoseCeiling";
|
|
115
|
+
@MemoIdentity { :>> providedId = "VER-011"; :>> label = "VerifyHourlyDoseCeiling"; }
|
|
119
116
|
attribute :>> methodKind = MemoVerificationMethodKind::simulation;
|
|
120
117
|
attribute :>> acceptanceCriteria = "Randomized bolus/basal schedules never exceed hourly maximum in sliding window (REQ-X-06)";
|
|
121
118
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -123,26 +120,25 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
123
120
|
objective { verify reqMaxHourlyDose; }
|
|
124
121
|
}
|
|
125
122
|
verification vcPumpAccuracy : VerificationCase {
|
|
126
|
-
@MemoIdentity { :>> providedId = "VER-012"; }
|
|
127
|
-
attribute :>> name = "VerifyDeliveryAccuracy";
|
|
123
|
+
@MemoIdentity { :>> providedId = "VER-012"; :>> label = "VerifyDeliveryAccuracy"; }
|
|
128
124
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
129
125
|
attribute :>> acceptanceCriteria = "Gravimetric bench measurement within ±5% (Tolerance_Min_const) across rate range (REQ-X-11)";
|
|
130
126
|
attribute :>> status = ElementStatusKind::approved;
|
|
131
127
|
|
|
132
128
|
objective { verify reqPumpAccuracy; }
|
|
129
|
+
subject verified : Base::Anything[*] = (fnCommandPump);
|
|
133
130
|
}
|
|
134
131
|
verification vcAlarmLoudness : VerificationCase {
|
|
135
|
-
@MemoIdentity { :>> providedId = "VER-013"; }
|
|
136
|
-
attribute :>> name = "VerifyAlarmSoundPressure";
|
|
132
|
+
@MemoIdentity { :>> providedId = "VER-013"; :>> label = "VerifyAlarmSoundPressure"; }
|
|
137
133
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
138
134
|
attribute :>> acceptanceCriteria = "Each priority tone meets Audio_level_const, 50 db for 2 s per I 8 (REQ-X-12)";
|
|
139
135
|
attribute :>> status = ElementStatusKind::approved;
|
|
140
136
|
|
|
141
137
|
objective { verify reqCs72; verify reqAlarmLoudness; }
|
|
138
|
+
subject verified : Base::Anything[*] = (fnAnnunciate);
|
|
142
139
|
}
|
|
143
140
|
verification vcFreeFlow : VerificationCase {
|
|
144
|
-
@MemoIdentity { :>> providedId = "VER-014"; }
|
|
145
|
-
attribute :>> name = "VerifyAntiFreeFlowValve";
|
|
141
|
+
@MemoIdentity { :>> providedId = "VER-014"; :>> label = "VerifyAntiFreeFlowValve"; }
|
|
146
142
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
147
143
|
attribute :>> acceptanceCriteria = "No gravity flow with set disengaged under worst-case head height (REQ-X-14)";
|
|
148
144
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -151,8 +147,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
151
147
|
subject verified : Base::Anything[*] = (freeFlowValveControl);
|
|
152
148
|
}
|
|
153
149
|
verification vcStuckButton : VerificationCase {
|
|
154
|
-
@MemoIdentity { :>> providedId = "VER-015"; }
|
|
155
|
-
attribute :>> name = "VerifyStuckButtonDetection";
|
|
150
|
+
@MemoIdentity { :>> providedId = "VER-015"; :>> label = "VerifyStuckButtonDetection"; }
|
|
156
151
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
157
152
|
attribute :>> acceptanceCriteria = "Shorted pendant input yields no bolus and Medium-priority notification after 60 s (REQ-X-09)";
|
|
158
153
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -160,48 +155,44 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
160
155
|
objective { verify reqStuckButton; }
|
|
161
156
|
}
|
|
162
157
|
verification vcFlowCrossCheck : VerificationCase {
|
|
163
|
-
@MemoIdentity { :>> providedId = "VER-016"; }
|
|
164
|
-
attribute :>> name = "VerifyFlowCrossCheck";
|
|
158
|
+
@MemoIdentity { :>> providedId = "VER-016"; :>> label = "VerifyFlowCrossCheck"; }
|
|
165
159
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
166
160
|
attribute :>> acceptanceCriteria = "Injected deviation beyond Tolerance_Min_const sustained past Max_Duration_OverInfusion_const pauses therapy and annunciates (REQ-X-10)";
|
|
167
161
|
attribute :>> status = ElementStatusKind::approved;
|
|
168
162
|
|
|
169
163
|
objective { verify reqFlowCrossCheck; }
|
|
170
|
-
subject verified : Base::Anything[*] = (flowCrossCheckControl);
|
|
164
|
+
subject verified : Base::Anything[*] = (flowCrossCheckControl, fnAcquireSensors.cfnMeasureFlowRate);
|
|
171
165
|
}
|
|
172
166
|
|
|
173
167
|
verification vcDrugLibrary : VerificationCase {
|
|
174
|
-
@MemoIdentity { :>> providedId = "VER-017"; }
|
|
175
|
-
attribute :>> name = "VerifyDrugLibraryEnforcement";
|
|
168
|
+
@MemoIdentity { :>> providedId = "VER-017"; :>> label = "VerifyDrugLibraryEnforcement"; }
|
|
176
169
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
177
170
|
attribute :>> acceptanceCriteria = "Hard-limit entries rejected, soft-limit entries require confirmation, both logged (REQ-X-01)";
|
|
178
171
|
attribute :>> status = ElementStatusKind::approved;
|
|
179
172
|
|
|
180
173
|
objective { verify reqDrugLibraryLimits; }
|
|
181
|
-
subject verified : Base::Anything[*] = (drugLibraryControl,
|
|
174
|
+
subject verified : Base::Anything[*] = (drugLibraryControl, gpcaSoftware.config, fnValidatePrescription);
|
|
182
175
|
}
|
|
183
176
|
verification vcPrescriptionConfirm : VerificationCase {
|
|
184
|
-
@MemoIdentity { :>> providedId = "VER-018"; }
|
|
185
|
-
attribute :>> name = "VerifyPrescriptionConfirmation";
|
|
177
|
+
@MemoIdentity { :>> providedId = "VER-018"; :>> label = "VerifyPrescriptionConfirmation"; }
|
|
186
178
|
attribute :>> methodKind = MemoVerificationMethodKind::demonstration;
|
|
187
179
|
attribute :>> acceptanceCriteria = "Therapy cannot start without distinct confirmation; displayed values equal stored values (REQ-CS-09)";
|
|
188
180
|
attribute :>> status = ElementStatusKind::approved;
|
|
189
181
|
|
|
190
182
|
objective { verify reqCs09; }
|
|
183
|
+
subject verified : Base::Anything[*] = (fnPresentStatus);
|
|
191
184
|
}
|
|
192
185
|
verification vcEventLog : VerificationCase {
|
|
193
|
-
@MemoIdentity { :>> providedId = "VER-019"; }
|
|
194
|
-
attribute :>> name = "VerifyEventLogIntegrity";
|
|
186
|
+
@MemoIdentity { :>> providedId = "VER-019"; :>> label = "VerifyEventLogIntegrity"; }
|
|
195
187
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
196
188
|
attribute :>> acceptanceCriteria = "Operational/error log entries per REQ-CS-78..81; tampering detectable (REQ-X-07)";
|
|
197
189
|
attribute :>> status = ElementStatusKind::approved;
|
|
198
190
|
|
|
199
191
|
objective { verify reqCs78; verify reqEventLogging; }
|
|
200
|
-
subject verified : Base::Anything[*] = (
|
|
192
|
+
subject verified : Base::Anything[*] = (gpcaSoftware.logging);
|
|
201
193
|
}
|
|
202
194
|
verification vcReverseDeliveryPause : VerificationCase {
|
|
203
|
-
@MemoIdentity { :>> providedId = "VER-020"; }
|
|
204
|
-
attribute :>> name = "VerifyReverseDeliveryPause";
|
|
195
|
+
@MemoIdentity { :>> providedId = "VER-020"; :>> label = "VerifyReverseDeliveryPause"; }
|
|
205
196
|
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
206
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)";
|
|
207
198
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -209,8 +200,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
209
200
|
subject verified : Base::Anything[*] = (reverseDeliveryPauseControl);
|
|
210
201
|
}
|
|
211
202
|
verification vcAntiRefluxMechanism : VerificationCase {
|
|
212
|
-
@MemoIdentity { :>> providedId = "VER-021"; }
|
|
213
|
-
attribute :>> name = "VerifyContinuousReverseDeliveryPrevention";
|
|
203
|
+
@MemoIdentity { :>> providedId = "VER-021"; :>> label = "VerifyContinuousReverseDeliveryPrevention"; }
|
|
214
204
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
215
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)";
|
|
216
206
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -218,8 +208,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
218
208
|
subject verified : Base::Anything[*] = (antiRefluxDesignControl);
|
|
219
209
|
}
|
|
220
210
|
verification vcVtbiCeiling : VerificationCase {
|
|
221
|
-
@MemoIdentity { :>> providedId = "VER-022"; }
|
|
222
|
-
attribute :>> name = "VerifyVtbiCeilingPause";
|
|
211
|
+
@MemoIdentity { :>> providedId = "VER-022"; :>> label = "VerifyVtbiCeilingPause"; }
|
|
223
212
|
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
224
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";
|
|
225
214
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -227,8 +216,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
227
216
|
subject verified : Base::Anything[*] = (vtbiLimitPauseControl);
|
|
228
217
|
}
|
|
229
218
|
verification vcInfusionComplete : VerificationCase {
|
|
230
|
-
@MemoIdentity { :>> providedId = "VER-023"; }
|
|
231
|
-
attribute :>> name = "VerifyInfusionCompleteStop";
|
|
219
|
+
@MemoIdentity { :>> providedId = "VER-023"; :>> label = "VerifyInfusionCompleteStop"; }
|
|
232
220
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
233
221
|
attribute :>> acceptanceCriteria = "Reaching prescribed total duration or maximum VTBI transitions ACTIVE to IDLE with Infusion Complete actions (REQ-CS-28)";
|
|
234
222
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -236,8 +224,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
236
224
|
subject verified : Base::Anything[*] = (infusionCompleteControl);
|
|
237
225
|
}
|
|
238
226
|
verification vcDoorInterlock : VerificationCase {
|
|
239
|
-
@MemoIdentity { :>> providedId = "VER-024"; }
|
|
240
|
-
attribute :>> name = "VerifyDoorOpenDeliveryInhibit";
|
|
227
|
+
@MemoIdentity { :>> providedId = "VER-024"; :>> label = "VerifyDoorOpenDeliveryInhibit"; }
|
|
241
228
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
242
229
|
attribute :>> acceptanceCriteria = "Door open during THERAPY limits flow to at most KVO and raises a notification (AGREE GP-011; REQ-X-05)";
|
|
243
230
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -247,16 +234,14 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
247
234
|
|
|
248
235
|
// ── Validation cases (design validation / IEC 62366) ────────
|
|
249
236
|
verification valSimulatedWard : ValidationCase {
|
|
250
|
-
@MemoIdentity { :>> providedId = "VAL-001"; }
|
|
251
|
-
attribute :>> name = "SimulatedWardTherapyValidation";
|
|
237
|
+
@MemoIdentity { :>> providedId = "VAL-001"; :>> label = "SimulatedWardTherapyValidation"; }
|
|
252
238
|
attribute :>> validationMethod = ValidationMethodKind::simulatedUse;
|
|
253
239
|
attribute :>> userParticipation = "nurses and physicians on a simulated ward";
|
|
254
240
|
attribute :>> acceptanceCriteria = "Complete therapy scenarios OS-001..OS-006 executed without unresolved use difficulty";
|
|
255
241
|
attribute :>> clinicalContext = "post-operative PCA therapy in acute care";
|
|
256
242
|
}
|
|
257
243
|
verification valSummativeUsability : ValidationCase {
|
|
258
|
-
@MemoIdentity { :>> providedId = "VAL-002"; }
|
|
259
|
-
attribute :>> name = "SummativeUsabilityTest";
|
|
244
|
+
@MemoIdentity { :>> providedId = "VAL-002"; :>> label = "SummativeUsabilityTest"; }
|
|
260
245
|
attribute :>> validationMethod = ValidationMethodKind::summativeUsabilityTest;
|
|
261
246
|
attribute :>> userParticipation = "15 representative clinical users per user group";
|
|
262
247
|
attribute :>> acceptanceCriteria = "No critical use errors (UE-001..UE-004) observed on safety-related tasks; residual difficulty acceptable per IEC 62366-1";
|
|
@@ -266,8 +251,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
266
251
|
// ── Test artifacts and evidence ─────────────────────────────
|
|
267
252
|
part testReportLockout : MemoEvidence {
|
|
268
253
|
attribute :>> evidenceKind = EvidenceKind::testArtifact;
|
|
269
|
-
@MemoIdentity { :>> providedId = "TEST-001"; }
|
|
270
|
-
attribute :>> name = "BolusLockoutTestReport";
|
|
254
|
+
@MemoIdentity { :>> providedId = "TEST-001"; :>> label = "BolusLockoutTestReport"; }
|
|
271
255
|
attribute :>> version = "0.1";
|
|
272
256
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
273
257
|
attribute :>> artifactKind = ArtifactKind::testReport;
|
|
@@ -275,8 +259,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
275
259
|
}
|
|
276
260
|
part testProtocolSafetySuite : MemoEvidence {
|
|
277
261
|
attribute :>> evidenceKind = EvidenceKind::testArtifact;
|
|
278
|
-
@MemoIdentity { :>> providedId = "TEST-002"; }
|
|
279
|
-
attribute :>> name = "SafetyAlarmTestProtocol";
|
|
262
|
+
@MemoIdentity { :>> providedId = "TEST-002"; :>> label = "SafetyAlarmTestProtocol"; }
|
|
280
263
|
attribute :>> version = "0.1";
|
|
281
264
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
282
265
|
attribute :>> artifactKind = ArtifactKind::testProtocol;
|
|
@@ -284,8 +267,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
284
267
|
}
|
|
285
268
|
part evidenceLockout : MemoEvidence {
|
|
286
269
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
287
|
-
@MemoIdentity { :>> providedId = "EVD-001"; }
|
|
288
|
-
attribute :>> name = "BolusLockoutEvidence";
|
|
270
|
+
@MemoIdentity { :>> providedId = "EVD-001"; :>> label = "BolusLockoutEvidence"; }
|
|
289
271
|
attribute :>> version = "0.1";
|
|
290
272
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
291
273
|
attribute :>> evidenceType = "verification evidence";
|
|
@@ -293,8 +275,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
293
275
|
}
|
|
294
276
|
part evidenceModeRange : MemoEvidence {
|
|
295
277
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
296
|
-
@MemoIdentity { :>> providedId = "EVD-002"; }
|
|
297
|
-
attribute :>> name = "ModeRangeEvidence";
|
|
278
|
+
@MemoIdentity { :>> providedId = "EVD-002"; :>> label = "ModeRangeEvidence"; }
|
|
298
279
|
attribute :>> version = "0.1";
|
|
299
280
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
300
281
|
attribute :>> evidenceType = "formal proof evidence";
|
|
@@ -302,8 +283,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
302
283
|
}
|
|
303
284
|
part evidenceSameStepAlarm : MemoEvidence {
|
|
304
285
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
305
|
-
@MemoIdentity { :>> providedId = "EVD-003"; }
|
|
306
|
-
attribute :>> name = "SameStepAlarmEvidence";
|
|
286
|
+
@MemoIdentity { :>> providedId = "EVD-003"; :>> label = "SameStepAlarmEvidence"; }
|
|
307
287
|
attribute :>> version = "0.1";
|
|
308
288
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
309
289
|
attribute :>> evidenceType = "model checking evidence";
|
|
@@ -311,8 +291,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
311
291
|
}
|
|
312
292
|
part evidenceTemporalModeSafety : MemoEvidence {
|
|
313
293
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
314
|
-
@MemoIdentity { :>> providedId = "EVD-004"; }
|
|
315
|
-
attribute :>> name = "TemporalModeSafetyEvidence";
|
|
294
|
+
@MemoIdentity { :>> providedId = "EVD-004"; :>> label = "TemporalModeSafetyEvidence"; }
|
|
316
295
|
attribute :>> version = "0.1";
|
|
317
296
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
318
297
|
attribute :>> evidenceType = "model checking evidence";
|
|
@@ -320,8 +299,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
320
299
|
}
|
|
321
300
|
part evidenceSafetyAlarmSuite : MemoEvidence {
|
|
322
301
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
323
|
-
@MemoIdentity { :>> providedId = "EVD-005"; }
|
|
324
|
-
attribute :>> name = "SafetyAlarmSuiteEvidence";
|
|
302
|
+
@MemoIdentity { :>> providedId = "EVD-005"; :>> label = "SafetyAlarmSuiteEvidence"; }
|
|
325
303
|
attribute :>> version = "0.1";
|
|
326
304
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
327
305
|
attribute :>> evidenceType = "bench test evidence for alarm-driven safe states";
|
|
@@ -329,8 +307,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
329
307
|
}
|
|
330
308
|
part evidenceUsability : MemoEvidence {
|
|
331
309
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
332
|
-
@MemoIdentity { :>> providedId = "EVD-006"; }
|
|
333
|
-
attribute :>> name = "SummativeUsabilityEvidence";
|
|
310
|
+
@MemoIdentity { :>> providedId = "EVD-006"; :>> label = "SummativeUsabilityEvidence"; }
|
|
334
311
|
attribute :>> version = "0.1";
|
|
335
312
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
336
313
|
attribute :>> evidenceType = "summative usability report per IEC 62366-1";
|
|
@@ -338,8 +315,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
338
315
|
}
|
|
339
316
|
part evidenceHardwareBench : MemoEvidence {
|
|
340
317
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
341
|
-
@MemoIdentity { :>> providedId = "EVD-008"; }
|
|
342
|
-
attribute :>> name = "HardwareBenchEvidence";
|
|
318
|
+
@MemoIdentity { :>> providedId = "EVD-008"; :>> label = "HardwareBenchEvidence"; }
|
|
343
319
|
attribute :>> version = "0.1";
|
|
344
320
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
345
321
|
attribute :>> evidenceType = "bench evidence for alarm loudness and anti-free-flow valve";
|
|
@@ -347,8 +323,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
347
323
|
}
|
|
348
324
|
part evidenceDoseProgramming : MemoEvidence {
|
|
349
325
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
350
|
-
@MemoIdentity { :>> providedId = "EVD-009"; }
|
|
351
|
-
attribute :>> name = "DoseProgrammingEvidence";
|
|
326
|
+
@MemoIdentity { :>> providedId = "EVD-009"; :>> label = "DoseProgrammingEvidence"; }
|
|
352
327
|
attribute :>> version = "0.1";
|
|
353
328
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
354
329
|
attribute :>> evidenceType = "test evidence for prescription limits, confirmation, dose ceiling, and event log";
|
|
@@ -356,8 +331,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
356
331
|
}
|
|
357
332
|
part evidenceDeliveryAccuracy : MemoEvidence {
|
|
358
333
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
359
|
-
@MemoIdentity { :>> providedId = "EVD-007"; }
|
|
360
|
-
attribute :>> name = "DeliveryAccuracyEvidence";
|
|
334
|
+
@MemoIdentity { :>> providedId = "EVD-007"; :>> label = "DeliveryAccuracyEvidence"; }
|
|
361
335
|
attribute :>> version = "0.1";
|
|
362
336
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
363
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
|
}
|