@memoarchitect/ontology 0.13.2 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
- package/examples/connected-patient-monitor/memo.package.yaml +3 -1
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
- package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
- package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/functional-logical-physical/memo.identity.yaml +28 -0
- package/examples/functional-logical-physical/memo.package.yaml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
- package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
- package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
- package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
- package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
- package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
- package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
- package/examples/gpca-pump/analysis/Samples/README.md +15 -9
- package/examples/gpca-pump/analysis/memo_model.py +243 -0
- package/examples/gpca-pump/memo.identity.yaml +521 -26
- package/examples/gpca-pump/memo.package.yaml +3 -1
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
- package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
- package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/multidimensional-layers/memo.package.yaml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
- package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
- package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/reusable-instrument/memo.package.yaml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
- package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/robot-cell-family/README.md +34 -0
- package/examples/robot-cell-family/memo.identity.yaml +142 -0
- package/examples/robot-cell-family/memo.package.yaml +7 -0
- package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
- package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
- package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
- package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
- package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
- package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
- package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
- package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
- package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
- package/examples/robot-platform/memo.package.yaml +3 -0
- package/examples/robot-platform/model/platform.sysml +15 -0
- package/examples/ros-mobile-robot/README.md +5 -4
- package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
- package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
- package/examples/software-only-medical-device/memo.package.yaml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
- package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
- package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
- package/examples/surgical-robot/memo.package.yaml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
- package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/sysml-diagram-samples/README.md +1 -0
- package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
- package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
- package/examples/temperature-alarm/memo.identity.yaml +6 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
- package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/ui-screen-regions/memo.identity.yaml +33 -0
- package/examples/ui-screen-regions/memo.package.yaml +3 -1
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
- package/extensions/README.md +65 -16
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/aadl_extension.sysml +5 -2
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
- package/extensions/clinical/memo.package.yaml +1 -1
- package/extensions/clinical/src/clinical_extension.sysml +2 -0
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/messaging_extension.sysml +2 -2
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/ros_extension.sysml +25 -24
- package/extensions/template/memo.package.yaml +1 -1
- package/extensions/template/model/extension.sysml +25 -0
- package/memo.manifest.yaml +1 -7
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +6 -4
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +9 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
- package/src/architecture/functional/functions/memo_functions.sysml +45 -31
- package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
- package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
- package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
- package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
- package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
- package/src/architecture/operational/structure/memo_operational.sysml +5 -2
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
- package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
- package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
- package/src/architecture/variability/memo_variability.sysml +87 -0
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
- package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
- package/src/artifacts/standards/cfr_21_820.sysml +12 -24
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
- package/src/artifacts/standards/iec_60601_1.sysml +16 -32
- package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
- package/src/artifacts/standards/iec_60812.sysml +4 -8
- package/src/artifacts/standards/iec_62304.sysml +607 -47
- package/src/artifacts/standards/iec_62366_1.sysml +12 -24
- package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
- package/src/artifacts/standards/iso_13485.sysml +12 -24
- package/src/artifacts/standards/iso_14971.sysml +118 -20
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
- package/src/artifacts/templates/dhf/system/sad.md +1 -1
- package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
- package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
- package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
- package/src/assurance/safety_risk/memo_risk.sysml +39 -1
- package/src/core/common/memo_common.sysml +61 -68
- package/src/core/enumerations/memo_enumerations.sysml +93 -9
- package/src/core/relationships/memo_relationships.sysml +17 -11
- package/src/core/relationships/memo_workspace_membership.sysml +284 -0
- package/src/core/semantics/semantics.sysml +58 -0
- package/src/core/terminology/terminology.sysml +7 -0
- package/src/memo_namespaces.sysml +6 -0
- package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
- package/src/methodology/core/memo_core.sysml +85 -29
- package/src/methodology/profiles/memo_profiles.sysml +217 -61
- package/src/methodology/workflow/memo_workflow.sysml +28 -0
- package/src/rules/closure/closure_rules.sysml +250 -4
- package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
- package/src/rules/ontology/ontology_invariants.sysml +288 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -0
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
- package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
- package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
- package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
- package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
- package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
- package/src/viewpoints/software/software_viewpoint.sysml +2 -3
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
- package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
- package/templates/default/memo.package.yaml +6 -1
- package/templates/default/model/catalog/architecture/system.sysml +7 -3
- package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
- package/extensions/container/src/methodology/container_methodology.sysml +0 -19
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
- package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
- package/extensions/template/src/extension.sysml +0 -39
- package/templates/connected-device/memo.package.yaml +0 -13
- package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/connected-device/model/catalog/project.sysml +0 -30
- package/templates/connected-device/package.json +0 -8
- package/templates/connected-device/syside.toml +0 -13
- package/templates/infusion-pump/memo.package.yaml +0 -13
- package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
- package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/infusion-pump/model/catalog/project.sysml +0 -30
- package/templates/infusion-pump/package.json +0 -8
- package/templates/infusion-pump/syside.toml +0 -13
- package/templates/monitoring-device/memo.package.yaml +0 -13
- package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/monitoring-device/model/catalog/project.sysml +0 -30
- package/templates/monitoring-device/package.json +0 -8
- package/templates/monitoring-device/syside.toml +0 -13
- package/templates/samd/memo.package.yaml +0 -13
- package/templates/samd/model/catalog/architecture/system.sysml +0 -5
- package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/samd/model/catalog/project.sysml +0 -30
- package/templates/samd/package.json +0 -8
- package/templates/samd/syside.toml +0 -13
|
@@ -30,7 +30,7 @@ A **Gap** is not a defect in the model. Coverage is profile-dependent — that i
|
|
|
30
30
|
|
|
31
31
|
**Scope.** The clauses below are those of the standards the project's `regulatoryRegime` declaration pulls in. Method and reference standards that no regime mandates — the FMEA method, the architecture-description standard — are listed separately in §4; their clauses are claimable but not required, so they have no gap count.
|
|
32
32
|
|
|
33
|
-
`memo standards
|
|
33
|
+
`memo validate --standards` prints the same numbers at the command line, from the same computation.
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
@@ -38,7 +38,7 @@ A **Gap** is not a defect in the model. Coverage is profile-dependent — that i
|
|
|
38
38
|
|
|
39
39
|
```memo-standards
|
|
40
40
|
display: summary
|
|
41
|
-
empty: "No standards are in scope. Declare `regulatoryRegime` on the
|
|
41
|
+
empty: "No standards are in scope. Declare `regulatoryRegime` on the model's ModelMethodBinding."
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
---
|
|
@@ -20,7 +20,7 @@ This Standards Traceability Matrix cross-references the requirements and archite
|
|
|
20
20
|
|
|
21
21
|
Each section is scoped to one standard by the clause's declaring package — the standards library is one package per standard, which makes `target.package` an exact per-standard selector. A clause *number* is not one: "5" is a clause of seven of the standards MEMO ships, so a matrix filtered on clause number would silently mix IEC 62304 §5 with ISO 14971 §5.
|
|
22
22
|
|
|
23
|
-
A clause with no `ConformsTo` link is a gap. Enumerating the gaps is `memo standards
|
|
23
|
+
A clause with no `ConformsTo` link is a gap. Enumerating the gaps is `memo validate --standards`, not this document — this document shows what the project *does* claim.
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
// Cybersecurity (FDA premarket cybersecurity guidance 2023, AAMI TIR57).
|
|
2
|
+
// What an element is linked to is a relation, not a string naming it: a
|
|
3
|
+
// security requirement's source threat is `DerivesCyberRequirement`, not a
|
|
4
|
+
// `derivedFromThreat` id, and an asset's threats are `ThreatenedBy`. Which
|
|
5
|
+
// layer an element belongs to is its package; an asset or a vulnerability
|
|
6
|
+
// that lives in the architecture points at that element with a typed ref.
|
|
7
|
+
// `ThreatenedBy` lives here rather than in memo_core_relationships because
|
|
8
|
+
// its ends are typed against CybersecurityAsset and Threat.
|
|
1
9
|
package memo_assurance_cybersecurity {
|
|
2
10
|
private import Metaobjects::SemanticMetadata;
|
|
3
11
|
private import ScalarValues::*;
|
|
@@ -9,17 +17,19 @@ package memo_assurance_cybersecurity {
|
|
|
9
17
|
private import memo_assurance_safety_risk::*;
|
|
10
18
|
private import memo_assurance_verification_validation::*;
|
|
11
19
|
private import memo_architecture_operational_scenarios::*;
|
|
20
|
+
private import memo_architecture_implementation_software_structure::SBOMEntry;
|
|
12
21
|
|
|
13
22
|
part def CybersecurityAsset specializes MemoPart {
|
|
14
23
|
attribute assetKind : AssetKind;
|
|
15
|
-
attribute confidentialityNeed :
|
|
16
|
-
attribute integrityNeed :
|
|
17
|
-
attribute availabilityNeed :
|
|
24
|
+
attribute confidentialityNeed : SecurityNeedKind;
|
|
25
|
+
attribute integrityNeed : SecurityNeedKind;
|
|
26
|
+
attribute availabilityNeed : SecurityNeedKind;
|
|
18
27
|
attribute privacyRelevant : Boolean;
|
|
19
28
|
attribute safetyRelevant : Boolean;
|
|
20
|
-
attribute owningLayer : String;
|
|
21
29
|
attribute assetOwner : String;
|
|
22
30
|
attribute classification : String;
|
|
31
|
+
// The architecture elements that store, process or are this asset.
|
|
32
|
+
ref holder : MemoPart[0..*];
|
|
23
33
|
}
|
|
24
34
|
|
|
25
35
|
part def AttackSurface specializes MemoPart {
|
|
@@ -35,22 +45,23 @@ package memo_assurance_cybersecurity {
|
|
|
35
45
|
attribute threatSource : String;
|
|
36
46
|
attribute precondition : String;
|
|
37
47
|
attribute affectedConcern : ConcernKind;
|
|
38
|
-
attribute defaultTechnique : String;
|
|
39
|
-
attribute strideCategory : ThreatCategoryKind;
|
|
40
48
|
}
|
|
41
49
|
|
|
42
50
|
item def Vulnerability specializes RiskItem {
|
|
43
51
|
attribute weakness : String;
|
|
44
52
|
attribute exploitability : String;
|
|
45
53
|
attribute discoveryMethod : String;
|
|
46
|
-
attribute affectedLayer : String;
|
|
47
54
|
attribute cweReference : String;
|
|
55
|
+
attribute cveReference : String;
|
|
48
56
|
attribute remediable : Boolean;
|
|
57
|
+
attribute vulnerabilityDisposition : VulnerabilityDispositionKind;
|
|
49
58
|
// CVSS v3.1 quantitative rating — the core output of a vulnerability
|
|
50
59
|
// analysis (e.g. RSK-00058). `cvssBaseScore` is the 0.0-10.0 numeric
|
|
51
60
|
// score; `cvssVector` the source vector string (AV:.../AC:.../...).
|
|
52
61
|
attribute cvssBaseScore : Real;
|
|
53
62
|
attribute cvssVector : String;
|
|
63
|
+
// The architecture elements the weakness is in.
|
|
64
|
+
ref affectedElement : MemoPart[0..*];
|
|
54
65
|
}
|
|
55
66
|
|
|
56
67
|
item def CyberHazard specializes Hazard {
|
|
@@ -77,9 +88,6 @@ package memo_assurance_cybersecurity {
|
|
|
77
88
|
|
|
78
89
|
requirement def SecurityRequirement :> Requirement {
|
|
79
90
|
attribute securityObjective : String;
|
|
80
|
-
attribute derivedFromThreat : String;
|
|
81
|
-
attribute derivedFromRisk : String;
|
|
82
|
-
attribute defaultConcern : ConcernKind;
|
|
83
91
|
}
|
|
84
92
|
|
|
85
93
|
part def TrustBoundary specializes InterfaceElement {
|
|
@@ -88,11 +96,184 @@ package memo_assurance_cybersecurity {
|
|
|
88
96
|
attribute trustAssumption : String;
|
|
89
97
|
}
|
|
90
98
|
|
|
99
|
+
// ── Product-security and threat-intelligence extensions ─────────
|
|
100
|
+
enum def ThreatActorKind {
|
|
101
|
+
enum insider;
|
|
102
|
+
enum serviceTechnician;
|
|
103
|
+
enum opportunistic;
|
|
104
|
+
enum cybercriminal;
|
|
105
|
+
enum nationState;
|
|
106
|
+
enum supplyChain;
|
|
107
|
+
}
|
|
108
|
+
enum def ThreatCapabilityKind {
|
|
109
|
+
enum low;
|
|
110
|
+
enum moderate;
|
|
111
|
+
enum high;
|
|
112
|
+
enum advanced;
|
|
113
|
+
}
|
|
114
|
+
enum def ThreatAccessKind {
|
|
115
|
+
enum physical;
|
|
116
|
+
enum local;
|
|
117
|
+
enum network;
|
|
118
|
+
enum remote;
|
|
119
|
+
enum supplyChain;
|
|
120
|
+
}
|
|
121
|
+
enum def AttackTechniqueFrameworkKind {
|
|
122
|
+
enum mitreAttackIcs;
|
|
123
|
+
enum mitreEmb3d;
|
|
124
|
+
enum capec;
|
|
125
|
+
enum other;
|
|
126
|
+
}
|
|
127
|
+
enum def SecurityObjectiveKind {
|
|
128
|
+
enum confidentiality;
|
|
129
|
+
enum integrity;
|
|
130
|
+
enum availability;
|
|
131
|
+
enum authenticity;
|
|
132
|
+
enum accountability;
|
|
133
|
+
enum privacy;
|
|
134
|
+
enum safety;
|
|
135
|
+
}
|
|
136
|
+
enum def CyberAssumptionValidityKind {
|
|
137
|
+
enum valid;
|
|
138
|
+
enum reviewDue;
|
|
139
|
+
enum invalid;
|
|
140
|
+
enum retired;
|
|
141
|
+
}
|
|
142
|
+
enum def VulnerabilityDispositionKind {
|
|
143
|
+
enum open;
|
|
144
|
+
enum mitigated;
|
|
145
|
+
enum accepted;
|
|
146
|
+
enum closed;
|
|
147
|
+
}
|
|
148
|
+
enum def SecurityFindingStatusKind {
|
|
149
|
+
enum open;
|
|
150
|
+
enum inRemediation;
|
|
151
|
+
enum accepted;
|
|
152
|
+
enum closed;
|
|
153
|
+
}
|
|
154
|
+
enum def PostmarketProcessKind {
|
|
155
|
+
enum monitoring;
|
|
156
|
+
enum vulnerabilityDisclosure;
|
|
157
|
+
enum patching;
|
|
158
|
+
enum incidentResponse;
|
|
159
|
+
}
|
|
160
|
+
enum def CyberRiskAssessmentStageKind {
|
|
161
|
+
enum inherent;
|
|
162
|
+
enum residual;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
part def ThreatActor specializes MemoPart {
|
|
166
|
+
attribute actorKind : ThreatActorKind;
|
|
167
|
+
attribute motivation : String;
|
|
168
|
+
attribute capability : ThreatCapabilityKind;
|
|
169
|
+
attribute accessMode : ThreatAccessKind;
|
|
170
|
+
attribute organization : String;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
part def AttackTechnique specializes MemoPart {
|
|
174
|
+
attribute framework : AttackTechniqueFrameworkKind;
|
|
175
|
+
attribute externalId : String;
|
|
176
|
+
attribute tactic : String;
|
|
177
|
+
attribute platform : String;
|
|
178
|
+
attribute techniqueVersion : String;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
part def SecurityProperty specializes MemoPart {
|
|
182
|
+
attribute objectiveKind : SecurityObjectiveKind;
|
|
183
|
+
attribute impactLevel : CriticalityKind;
|
|
184
|
+
attribute propertyRationale : String;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
part def CybersecurityAssumption specializes MemoPart {
|
|
188
|
+
attribute statement : String;
|
|
189
|
+
attribute owner : String;
|
|
190
|
+
attribute reviewDate : String;
|
|
191
|
+
attribute expirationDate : String;
|
|
192
|
+
attribute validity : CyberAssumptionValidityKind;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// The path's narrative is the inherited `pathSummary`.
|
|
196
|
+
action def AttackPath specializes OperativeScenario {
|
|
197
|
+
attribute entryPoint : String;
|
|
198
|
+
attribute attackGoal : String;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Security assessment: a case is the planned activity (penetration test,
|
|
202
|
+
// static or dynamic analysis, composition analysis), a report is the
|
|
203
|
+
// evidence it produced, and a finding is one result in the report.
|
|
204
|
+
// The case is a verification case: it checks the security requirements,
|
|
205
|
+
// and `ProducesEvidence` already links a verification case to what it
|
|
206
|
+
// produced. The method is stated once, on the case; a finding is one
|
|
207
|
+
// type whose method-specific descriptors are optional, as Interface's
|
|
208
|
+
// are. A finding is traced to its vulnerability by
|
|
209
|
+
// `IdentifiesVulnerability`, and from there to the SBOM entry by
|
|
210
|
+
// `AffectsSBOMEntry`.
|
|
211
|
+
enum def SecurityAssessmentMethodKind {
|
|
212
|
+
enum penetrationTest;
|
|
213
|
+
enum sast;
|
|
214
|
+
enum dast;
|
|
215
|
+
enum sca;
|
|
216
|
+
}
|
|
217
|
+
verification def SecurityAssessmentCase :> VerificationCase {
|
|
218
|
+
attribute assessmentMethod : SecurityAssessmentMethodKind;
|
|
219
|
+
attribute assessmentScope : String;
|
|
220
|
+
attribute toolName : String;
|
|
221
|
+
attribute toolVersion : String;
|
|
222
|
+
}
|
|
223
|
+
part def SecurityFinding specializes MemoEvidence {
|
|
224
|
+
attribute findingIdentifier : String;
|
|
225
|
+
attribute severity : CriticalityKind;
|
|
226
|
+
attribute cvssBaseScore : Real;
|
|
227
|
+
attribute cvssVector : String;
|
|
228
|
+
attribute findingStatus : SecurityFindingStatusKind;
|
|
229
|
+
attribute retestDate : String;
|
|
230
|
+
// method-specific (optional)
|
|
231
|
+
attribute weaknessReference : String[0..1]; // CWE identifier (SAST)
|
|
232
|
+
attribute sourceLocation : String[0..1]; // file and line (SAST)
|
|
233
|
+
attribute testedEndpoint : String[0..1]; // URL or interface (DAST)
|
|
234
|
+
}
|
|
235
|
+
part def SecurityAssessmentReport specializes MemoEvidence {
|
|
236
|
+
attribute reportDate : String;
|
|
237
|
+
attribute assessor : String;
|
|
238
|
+
part finding : SecurityFinding[0..*];
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
action def PostmarketProcess specializes MemoAction {
|
|
242
|
+
attribute processKind : PostmarketProcessKind;
|
|
243
|
+
attribute owner : String;
|
|
244
|
+
attribute cadence : String;
|
|
245
|
+
attribute serviceLevelTarget : String;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// A CyberRisk remains the stable risk identity. Assessments record its
|
|
249
|
+
// pre-control (inherent) and post-control (residual) states without
|
|
250
|
+
// duplicating the risk itself.
|
|
251
|
+
part def CyberRiskAssessment specializes MemoPart {
|
|
252
|
+
attribute assessmentStage : CyberRiskAssessmentStageKind;
|
|
253
|
+
attribute probabilityEstimate : ProbabilityKind;
|
|
254
|
+
attribute severityEstimate : SeverityKind;
|
|
255
|
+
attribute riskLevel : CriticalityKind;
|
|
256
|
+
attribute acceptability : RiskAcceptabilityKind;
|
|
257
|
+
attribute controlsAppliedSummary : String;
|
|
258
|
+
attribute assessmentDate : String;
|
|
259
|
+
attribute assessor : String;
|
|
260
|
+
attribute approver : String;
|
|
261
|
+
}
|
|
262
|
+
|
|
91
263
|
// ── Relations owned by this package ─────────────────────────────
|
|
92
|
-
|
|
93
|
-
|
|
264
|
+
connection def ThreatenedBy :> MemoRelationship {
|
|
265
|
+
attribute threatRole : String;
|
|
266
|
+
end protectedAsset : CybersecurityAsset :>> source;
|
|
267
|
+
end threat : Threat :>> target;
|
|
268
|
+
}
|
|
269
|
+
abstract connection threatenedByLinks : ThreatenedBy[*];
|
|
270
|
+
metadata def <threatenedBy> ThreatenedByMetadata :> SemanticMetadata {
|
|
271
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
272
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
273
|
+
:>> baseType = threatenedByLinks meta SysML::Usage;
|
|
274
|
+
}
|
|
94
275
|
connection def Exploits :> MemoRelationship {
|
|
95
|
-
end
|
|
276
|
+
end threat : Threat :>> source;
|
|
96
277
|
end enablingVulnerability : Vulnerability :>> target;
|
|
97
278
|
}
|
|
98
279
|
abstract connection exploitsLinks : Exploits[*];
|
|
@@ -122,4 +303,149 @@ package memo_assurance_cybersecurity {
|
|
|
122
303
|
:> annotatedElement : SysML::ConnectionUsage;
|
|
123
304
|
:>> baseType = impactsSafetyLinks meta SysML::Usage;
|
|
124
305
|
}
|
|
306
|
+
|
|
307
|
+
// ── Product-security and threat-intelligence relations ──────────
|
|
308
|
+
|
|
309
|
+
connection def HasSecurityProperty :> MemoRelationship {
|
|
310
|
+
end characterizedAsset : CybersecurityAsset :>> source;
|
|
311
|
+
end securityProperty : SecurityProperty :>> target;
|
|
312
|
+
}
|
|
313
|
+
abstract connection hasSecurityPropertyLinks : HasSecurityProperty[*];
|
|
314
|
+
metadata def <hasSecurityProperty> HasSecurityPropertyMetadata :> SemanticMetadata {
|
|
315
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
316
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
317
|
+
:>> baseType = hasSecurityPropertyLinks meta SysML::Usage;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
connection def ExposesAsset :> MemoRelationship {
|
|
321
|
+
end attackSurface : AttackSurface :>> source;
|
|
322
|
+
end exposedAsset : CybersecurityAsset :>> target;
|
|
323
|
+
}
|
|
324
|
+
abstract connection exposesAssetLinks : ExposesAsset[*];
|
|
325
|
+
metadata def <exposesAsset> ExposesAssetMetadata :> SemanticMetadata {
|
|
326
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
327
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
328
|
+
:>> baseType = exposesAssetLinks meta SysML::Usage;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
connection def AttributedToThreatActor :> MemoRelationship {
|
|
332
|
+
end attributedThreat : Threat :>> source;
|
|
333
|
+
end threatActor : ThreatActor :>> target;
|
|
334
|
+
}
|
|
335
|
+
abstract connection attributedToThreatActorLinks : AttributedToThreatActor[*];
|
|
336
|
+
metadata def <attributedToThreatActor> AttributedToThreatActorMetadata :> SemanticMetadata {
|
|
337
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
338
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
339
|
+
:>> baseType = attributedToThreatActorLinks meta SysML::Usage;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
connection def UsesAttackTechnique :> MemoRelationship {
|
|
343
|
+
end realizedThreat : Threat :>> source;
|
|
344
|
+
end attackTechnique : AttackTechnique :>> target;
|
|
345
|
+
}
|
|
346
|
+
abstract connection usesAttackTechniqueLinks : UsesAttackTechnique[*];
|
|
347
|
+
metadata def <usesAttackTechnique> UsesAttackTechniqueMetadata :> SemanticMetadata {
|
|
348
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
349
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
350
|
+
:>> baseType = usesAttackTechniqueLinks meta SysML::Usage;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
connection def IncludesAttackTechnique :> MemoRelationship {
|
|
354
|
+
end attackPath : AttackPath :>> source;
|
|
355
|
+
end attackTechnique : AttackTechnique :>> target;
|
|
356
|
+
}
|
|
357
|
+
abstract connection includesAttackTechniqueLinks : IncludesAttackTechnique[*];
|
|
358
|
+
metadata def <includesAttackTechnique> IncludesAttackTechniqueMetadata :> SemanticMetadata {
|
|
359
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
360
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
361
|
+
:>> baseType = includesAttackTechniqueLinks meta SysML::Usage;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
connection def RealizesCyberHazard :> MemoRelationship {
|
|
365
|
+
end realizedThreat : Threat :>> source;
|
|
366
|
+
end resultingCyberHazard : CyberHazard :>> target;
|
|
367
|
+
}
|
|
368
|
+
abstract connection realizesCyberHazardLinks : RealizesCyberHazard[*];
|
|
369
|
+
metadata def <realizesCyberHazard> RealizesCyberHazardMetadata :> SemanticMetadata {
|
|
370
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
371
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
372
|
+
:>> baseType = realizesCyberHazardLinks meta SysML::Usage;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
connection def AssessesCyberRisk :> MemoRelationship {
|
|
376
|
+
end assessment : CyberRiskAssessment :>> source;
|
|
377
|
+
end assessedRisk : CyberRisk :>> target;
|
|
378
|
+
}
|
|
379
|
+
abstract connection assessesCyberRiskLinks : AssessesCyberRisk[*];
|
|
380
|
+
metadata def <assessesCyberRisk> AssessesCyberRiskMetadata :> SemanticMetadata {
|
|
381
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
382
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
383
|
+
:>> baseType = assessesCyberRiskLinks meta SysML::Usage;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
connection def IdentifiesVulnerability :> MemoRelationship {
|
|
387
|
+
end finding : SecurityFinding :>> source;
|
|
388
|
+
end identifiedVulnerability : Vulnerability :>> target;
|
|
389
|
+
}
|
|
390
|
+
abstract connection identifiesVulnerabilityLinks : IdentifiesVulnerability[*];
|
|
391
|
+
metadata def <identifiesVulnerability> IdentifiesVulnerabilityMetadata :> SemanticMetadata {
|
|
392
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
393
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
394
|
+
:>> baseType = identifiesVulnerabilityLinks meta SysML::Usage;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
connection def AffectsSBOMEntry :> MemoRelationship {
|
|
398
|
+
end vulnerability : Vulnerability :>> source;
|
|
399
|
+
end affectedComponent : SBOMEntry :>> target;
|
|
400
|
+
}
|
|
401
|
+
abstract connection affectsSBOMEntryLinks : AffectsSBOMEntry[*];
|
|
402
|
+
metadata def <affectsSBOMEntry> AffectsSBOMEntryMetadata :> SemanticMetadata {
|
|
403
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
404
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
405
|
+
:>> baseType = affectsSBOMEntryLinks meta SysML::Usage;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
connection def DemonstratesAttackPath :> MemoRelationship {
|
|
409
|
+
end finding : SecurityFinding :>> source;
|
|
410
|
+
end demonstratedPath : AttackPath :>> target;
|
|
411
|
+
}
|
|
412
|
+
abstract connection demonstratesAttackPathLinks : DemonstratesAttackPath[*];
|
|
413
|
+
metadata def <demonstratesAttackPath> DemonstratesAttackPathMetadata :> SemanticMetadata {
|
|
414
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
415
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
416
|
+
:>> baseType = demonstratesAttackPathLinks meta SysML::Usage;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
connection def SupportsMitigationEffectiveness :> MemoRelationship {
|
|
420
|
+
end supportingEvidence : MemoEvidence :>> source;
|
|
421
|
+
end supportedMitigation : CyberMitigation :>> target;
|
|
422
|
+
}
|
|
423
|
+
abstract connection supportsMitigationEffectivenessLinks : SupportsMitigationEffectiveness[*];
|
|
424
|
+
metadata def <supportsMitigationEffectiveness> SupportsMitigationEffectivenessMetadata :> SemanticMetadata {
|
|
425
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
426
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
427
|
+
:>> baseType = supportsMitigationEffectivenessLinks meta SysML::Usage;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
connection def ConditionsCyberElement :> MemoRelationship {
|
|
431
|
+
end governingAssumption : CybersecurityAssumption :>> source;
|
|
432
|
+
end conditionedElement :>> target;
|
|
433
|
+
}
|
|
434
|
+
abstract connection conditionsCyberElementLinks : ConditionsCyberElement[*];
|
|
435
|
+
metadata def <conditionsCyberElement> ConditionsCyberElementMetadata :> SemanticMetadata {
|
|
436
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
437
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
438
|
+
:>> baseType = conditionsCyberElementLinks meta SysML::Usage;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
connection def MonitorsSBOMEntry :> MemoRelationship {
|
|
442
|
+
end postmarketProcess : PostmarketProcess :>> source;
|
|
443
|
+
end monitoredComponent : SBOMEntry :>> target;
|
|
444
|
+
}
|
|
445
|
+
abstract connection monitorsSBOMEntryLinks : MonitorsSBOMEntry[*];
|
|
446
|
+
metadata def <monitorsSBOMEntry> MonitorsSBOMEntryMetadata :> SemanticMetadata {
|
|
447
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
448
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
449
|
+
:>> baseType = monitorsSBOMEntryLinks meta SysML::Usage;
|
|
450
|
+
}
|
|
125
451
|
}
|
|
@@ -43,9 +43,13 @@ package memo_assurance_human_factors {
|
|
|
43
43
|
// ── Relations owned by this package ─────────────────────────────
|
|
44
44
|
// Moved out of memo_core_relationships: their ends are typed against
|
|
45
45
|
// types declared here, and core must not depend on a domain package.
|
|
46
|
+
// The source end is untyped for the reason `Validates`' is: a UI element
|
|
47
|
+
// is a part and a task is an action (Track A0), so no one type spans both.
|
|
48
|
+
// The target is the usability TEST — a validation case — and not the
|
|
49
|
+
// evidence it produces; `ProducesEvidence` links the two.
|
|
46
50
|
connection def TestedByUsability :> MemoRelationship {
|
|
47
|
-
end uiElementOrTask
|
|
48
|
-
end usabilityTest :
|
|
51
|
+
end uiElementOrTask :>> source;
|
|
52
|
+
end usabilityTest : MemoVerificationCase :>> target;
|
|
49
53
|
}
|
|
50
54
|
abstract connection testedByUsabilityLinks : TestedByUsability[*];
|
|
51
55
|
metadata def <testedByUsability> TestedByUsabilityMetadata :> SemanticMetadata {
|
|
@@ -74,7 +74,6 @@ package memo_assurance_safety_risk_analysis {
|
|
|
74
74
|
attribute probability : Real;
|
|
75
75
|
attribute failureRate : Real;
|
|
76
76
|
attribute exposureTime : Real;
|
|
77
|
-
attribute :>> description : String;
|
|
78
77
|
attribute gateKind : FaultTreeGateKind;
|
|
79
78
|
attribute kValue : Integer;
|
|
80
79
|
attribute nValue : Integer;
|
|
@@ -124,8 +123,13 @@ package memo_assurance_safety_risk_analysis {
|
|
|
124
123
|
}
|
|
125
124
|
connection def Causes :> MemoRelationship {
|
|
126
125
|
attribute causeKind : CauseKind;
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
// Untyped both ways, because CauseKind spans metaclasses: a failure
|
|
127
|
+
// mode or cause (items) causes an effect, a component or use error
|
|
128
|
+
// (parts) originates one, and `originatesFrom` ends at a fault-tree
|
|
129
|
+
// node, which is a part. No single type covers either end; the
|
|
130
|
+
// admissible kinds are CR-ONT-082 and CR-ONT-083.
|
|
131
|
+
end cause :>> source;
|
|
132
|
+
end effect :>> target;
|
|
129
133
|
}
|
|
130
134
|
abstract connection causesLinks : Causes[*];
|
|
131
135
|
metadata def <causes> CausesMetadata :> SemanticMetadata {
|
|
@@ -42,7 +42,8 @@ package memo_assurance_safety_risk {
|
|
|
42
42
|
// `DesignControlRiskRow` was a denormalized spreadsheet transcription.
|
|
43
43
|
// Risk rows now decompose into the ISO 14971 chain below: Risk owns its
|
|
44
44
|
// Hazard, SequenceOfEvents, HazardousSituation, and Harm items, linked by
|
|
45
|
-
// TracesRisk / LeadsToHarm, with ResidualRisk after mitigation.
|
|
45
|
+
// TracesRisk / LeadsToHarm, with ResidualRisk after mitigation. The risk
|
|
46
|
+
// itself is reached by EstimatedFor / ReducedBy / EvaluatedIn below.
|
|
46
47
|
// A device characteristic whose implementation, failure, or misuse can
|
|
47
48
|
// affect safety. This is the modelable output of ISO 14971 §5.3.
|
|
48
49
|
part def SafetyRelatedCharacteristic specializes MemoPart {
|
|
@@ -168,6 +169,43 @@ package memo_assurance_safety_risk {
|
|
|
168
169
|
:> annotatedElement : SysML::ConnectionUsage;
|
|
169
170
|
:>> baseType = assessedAgainstLinks meta SysML::Usage;
|
|
170
171
|
}
|
|
172
|
+
// A risk is not a link in the chain (see RiskItem), so TracesRisk cannot
|
|
173
|
+
// reach it — and until these three nothing else could either. A model had
|
|
174
|
+
// no way to say which hazardous situation or harm a risk was estimated for
|
|
175
|
+
// (ISO 14971 §5.5), which control reduced it to a residual risk (§7), or
|
|
176
|
+
// which overall evaluation covered that residual (§8), so gpca-pump wrote
|
|
177
|
+
// all three as TracesRisk into a Risk and the builder rejected every one.
|
|
178
|
+
// Named from the risk's side, like AssessedAgainst.
|
|
179
|
+
connection def EstimatedFor :> MemoRelationship {
|
|
180
|
+
end risk : Risk :>> source;
|
|
181
|
+
end riskElement : RiskItem :>> target;
|
|
182
|
+
}
|
|
183
|
+
abstract connection estimatedForLinks : EstimatedFor[*];
|
|
184
|
+
metadata def <estimatedFor> EstimatedForMetadata :> SemanticMetadata {
|
|
185
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
186
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
187
|
+
:>> baseType = estimatedForLinks meta SysML::Usage;
|
|
188
|
+
}
|
|
189
|
+
connection def ReducedBy :> MemoRelationship {
|
|
190
|
+
end residualRisk : ResidualRisk :>> source;
|
|
191
|
+
end control : RiskControlMeasure :>> target;
|
|
192
|
+
}
|
|
193
|
+
abstract connection reducedByLinks : ReducedBy[*];
|
|
194
|
+
metadata def <reducedBy> ReducedByMetadata :> SemanticMetadata {
|
|
195
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
196
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
197
|
+
:>> baseType = reducedByLinks meta SysML::Usage;
|
|
198
|
+
}
|
|
199
|
+
connection def EvaluatedIn :> MemoRelationship {
|
|
200
|
+
end residualRisk : ResidualRisk :>> source;
|
|
201
|
+
end evaluation : OverallResidualRiskEvaluation :>> target;
|
|
202
|
+
}
|
|
203
|
+
abstract connection evaluatedInLinks : EvaluatedIn[*];
|
|
204
|
+
metadata def <evaluatedIn> EvaluatedInMetadata :> SemanticMetadata {
|
|
205
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
206
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
207
|
+
:>> baseType = evaluatedInLinks meta SysML::Usage;
|
|
208
|
+
}
|
|
171
209
|
// Mitigates unifies the control/action → risk-element edges of the
|
|
172
210
|
// ISO 14971 / FMEA / FTA / cyber chains — MitigatesHazard,
|
|
173
211
|
// MitigatesVulnerability, MitigatedByControl, BrokenByControl,
|