@memoarchitect/ontology 0.6.5 → 0.8.22
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 +4 -2
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
- package/examples/gpca-pump/model/catalog/project.sysml +26 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
- package/examples/nested-architecture-dsm/README.md +49 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
- package/examples/surgical-robot/model/catalog/project.sysml +24 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
- package/examples/sysml-diagram-samples/README.md +7 -0
- package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
- package/examples/ui-screen-regions/README.md +117 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
- package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
- package/extensions/LICENSES/MIT.txt +19 -0
- package/extensions/README.md +94 -0
- package/extensions/aadl/memo.package.yaml +18 -0
- package/extensions/aadl/src/aadl_extension.sysml +6 -0
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
- package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
- package/extensions/clinical/memo.package.yaml +18 -0
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -0
- package/extensions/cloud/memo.package.yaml +18 -0
- package/extensions/cloud/src/cloud_extension.sysml +44 -0
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
- package/extensions/container/memo.package.yaml +18 -0
- package/extensions/container/src/container_extension.sysml +37 -0
- package/extensions/container/src/methodology/container_methodology.sysml +17 -0
- package/extensions/messaging/memo.package.yaml +18 -0
- package/extensions/messaging/src/messaging_extension.sysml +64 -0
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
- package/extensions/ros/memo.package.yaml +18 -0
- package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
- package/extensions/ros/src/ros_extension.sysml +200 -0
- package/extensions/template/memo.package.yaml +17 -0
- package/extensions/template/src/extension.sysml +37 -0
- package/memo.manifest.yaml +15 -2
- package/methodologies/default/memo.package.yaml +19 -9
- package/methodologies/gpca/memo.package.yaml +18 -9
- package/ontology/memo.package.yaml +23 -8
- package/package.json +6 -6
- package/profile/memo.package.yaml +18 -9
- package/src/architecture/decisions/memo_decisions.sysml +28 -0
- package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +93 -43
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
- package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
- package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
- package/src/architecture/operational/activities/memo_activities.sysml +10 -4
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
- package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
- package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
- package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
- package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
- package/src/artifacts/standards/cfr_21_820.sysml +116 -0
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
- package/src/artifacts/standards/iec_60601_1.sysml +149 -0
- package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
- package/src/artifacts/standards/iec_60812.sysml +51 -0
- package/src/artifacts/standards/iec_62304.sysml +210 -0
- package/src/artifacts/standards/iec_62366_1.sysml +113 -0
- package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
- package/src/artifacts/standards/iso_13485.sysml +113 -0
- package/src/artifacts/standards/iso_14971.sysml +94 -0
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
- package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +2 -2
- package/src/artifacts/templates/dhf/system/sad.md +173 -0
- package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
- package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
- package/src/artifacts/templates/dhf/system/syrs.md +128 -0
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +5 -2
- package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
- package/src/assurance/safety_risk/memo_risk.sysml +78 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
- package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
- package/src/core/annotations/memo_annotations.sysml +96 -0
- package/src/core/common/memo_common.sysml +140 -18
- package/src/core/consistency_rules/consistency_rules.sysml +7 -0
- package/src/core/dimensions/dimensions.sysml +17 -1
- package/src/core/enumerations/memo_enumerations.sysml +101 -20
- package/src/core/methodology_scope/methodology_scope.sysml +7 -15
- package/src/core/relationships/memo_relationships.sysml +199 -194
- package/src/memo_namespaces.sysml +127 -67
- package/src/methodology/core/memo_core.sysml +69 -2
- package/src/methodology/profiles/memo_profiles.sysml +31 -41
- package/src/methodology/workflow/memo_workflow.sysml +7 -2
- package/src/rules/closure/closure_rules.sysml +104 -31
- package/src/rules/coverage/coverage_rules.sysml +4 -256
- package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
- package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
- package/src/rules/ontology/ontology_invariants.sysml +243 -74
- package/src/rules/quantitative/quantitative_rules.sysml +8 -8
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
- package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
- package/src/viewpoints/context/context_viewpoint.sysml +4 -2
- package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
- package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
- package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
- package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
- package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
- package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
- package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
- package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
- package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
- package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
- package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
- package/src/viewpoints/software/software_viewpoint.sysml +3 -1
- package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
- package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
- package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
- package/templates/connected-device/memo.package.yaml +11 -5
- package/templates/connected-device/model/catalog/project.sysml +28 -0
- package/templates/connected-device/syside.toml +1 -1
- package/templates/default/memo.package.yaml +11 -5
- package/templates/default/model/catalog/project.sysml +28 -0
- package/templates/default/syside.toml +1 -1
- package/templates/infusion-pump/memo.package.yaml +11 -5
- package/templates/infusion-pump/model/catalog/project.sysml +28 -0
- package/templates/infusion-pump/syside.toml +1 -1
- package/templates/monitoring-device/memo.package.yaml +11 -5
- package/templates/monitoring-device/model/catalog/project.sysml +28 -0
- package/templates/monitoring-device/syside.toml +1 -1
- package/templates/samd/memo.package.yaml +11 -5
- package/templates/samd/model/catalog/project.sysml +28 -0
- package/templates/samd/syside.toml +1 -1
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
- package/examples/extensions/README.md +0 -16
- package/examples/extensions/clinical/memo.package.yaml +0 -9
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
- package/examples/extensions/template/memo.package.yaml +0 -9
- package/examples/extensions/template/src/extension.sysml +0 -15
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
- package/examples/gpca-pump/memo.config.yaml +0 -9
- package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
- package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
- package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
- package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
- package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
- package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
- package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
- package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
- package/ontology/memo.rendering.yaml +0 -84
- package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
- package/src/compliance/change/memo_change.sysml +0 -17
- package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
- package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
- package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
- package/src/compliance/document_views/memo_document_views.sysml +0 -7
- package/src/compliance/iso14971/risk_management_file.sysml +0 -16
- package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
- /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
- /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: syrs
|
|
3
|
+
title: System Requirements Specification
|
|
4
|
+
standard: IEC 60601-1:2005+AMD1:2012+AMD2:2020
|
|
5
|
+
clauses: ["4.2", "IEC 62304:2006+AMD1:2015 §5.2", "ISO 14971:2019 §5"]
|
|
6
|
+
required_for: ["CE", "FDA_510k", "MDR"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
{{include:shared/snippets/document-control-header.md}}
|
|
10
|
+
|
|
11
|
+
{{toc}}
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Purpose
|
|
16
|
+
|
|
17
|
+
This System Requirements Specification (SyRS) defines the top-level requirements for the **{{project.product}}** cyber-physical system, serving as the bridge between user needs and the lower-level hardware (IEC 60601-1) and software (IEC 62304) requirements.
|
|
18
|
+
|
|
19
|
+
One standard is named above because a document claims one; the others it feeds are carried in `clauses:`.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. System Requirements Summary
|
|
24
|
+
|
|
25
|
+
Summary metrics for the system requirements captured in the model:
|
|
26
|
+
|
|
27
|
+
```memo-query
|
|
28
|
+
kind: Requirement
|
|
29
|
+
where: requirementKind == "RequirementKind::system"
|
|
30
|
+
display: count
|
|
31
|
+
label: Total system requirements
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 3. Functional Requirements
|
|
37
|
+
|
|
38
|
+
Binding system requirements — those carrying a `shall` obligation:
|
|
39
|
+
|
|
40
|
+
```memo-query
|
|
41
|
+
kind: Requirement
|
|
42
|
+
where: obligation == "ObligationKind::shall"
|
|
43
|
+
display: table
|
|
44
|
+
columns: name, requirementKind, doc
|
|
45
|
+
sort: name
|
|
46
|
+
empty: "No requirements carry a `shall` obligation. Set `obligation` on Requirement elements."
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### All System Requirements
|
|
50
|
+
|
|
51
|
+
```memo-query
|
|
52
|
+
kind: Requirement
|
|
53
|
+
where: requirementKind == "RequirementKind::system"
|
|
54
|
+
display: table
|
|
55
|
+
columns: name, requirementKind, safetyClass, doc
|
|
56
|
+
sort: name
|
|
57
|
+
empty: "No system requirements defined. Add Requirement elements with requirementKind = system."
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 4. Requirements Allocation
|
|
63
|
+
|
|
64
|
+
How system requirements are allocated down to hardware and software.
|
|
65
|
+
|
|
66
|
+
### 4.1 Elements System Requirements Are Satisfied By
|
|
67
|
+
|
|
68
|
+
```memo-query
|
|
69
|
+
kind: Requirement
|
|
70
|
+
where: requirementKind == "RequirementKind::system"
|
|
71
|
+
traverse: outgoing satisfiedBy
|
|
72
|
+
display: table
|
|
73
|
+
columns: name, kind, layer, doc
|
|
74
|
+
sort: name
|
|
75
|
+
empty: "No system requirements are linked to a satisfying element. Add SatisfiedBy links."
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 4.2 Function Allocation
|
|
79
|
+
|
|
80
|
+
The allocation table proper — which element allocates to which — is a relationship table, not an element table. It is grouped by the kind of the receiving element, which is where the hardware/software split actually lives: `AllocatedTo` joins two architecture elements and carries no layer of its own, so a single comparison cannot ask for "the hardware ones" without naming one hardware kind and dropping the rest.
|
|
81
|
+
|
|
82
|
+
```memo-query
|
|
83
|
+
select: relationships
|
|
84
|
+
kind: allocatedTo
|
|
85
|
+
display: grouped
|
|
86
|
+
group_by: target.kind
|
|
87
|
+
columns: source, source.kind, target, target.layer
|
|
88
|
+
sort: source
|
|
89
|
+
empty: "No allocations defined. Add AllocatedTo links."
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 5. Non-Functional Requirements
|
|
95
|
+
|
|
96
|
+
### 5.1 System Performance Requirements
|
|
97
|
+
|
|
98
|
+
_[TODO: Define system performance requirements (e.g. overall throughput, latency, physical capacities)]_
|
|
99
|
+
|
|
100
|
+
### 5.2 System Safety Requirements
|
|
101
|
+
|
|
102
|
+
Hazards from the ISO 14971 analysis that system-level risk controls must address:
|
|
103
|
+
|
|
104
|
+
```memo-query
|
|
105
|
+
kind: [Hazard, HazardousSituation]
|
|
106
|
+
display: table
|
|
107
|
+
columns: name, layer, doc
|
|
108
|
+
sort: name
|
|
109
|
+
empty: "No hazards defined in the risk model."
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The risk controls answering them:
|
|
113
|
+
|
|
114
|
+
```memo-query
|
|
115
|
+
kind: RiskControlMeasure
|
|
116
|
+
display: table
|
|
117
|
+
columns: name, layer, doc
|
|
118
|
+
sort: name
|
|
119
|
+
empty: "No risk controls defined."
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
{{include:shared/snippets/revision-history-table.md}}
|
|
125
|
+
|
|
126
|
+
{{include:shared/snippets/approval-block.md}}
|
|
127
|
+
|
|
128
|
+
{{include:shared/snippets/references-section.md}}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
package memo_assurance_cybersecurity {
|
|
2
|
+
private import Metaobjects::SemanticMetadata;
|
|
2
3
|
private import ScalarValues::*;
|
|
4
|
+
private import memo_core_relationships::*; // MemoRelationship
|
|
3
5
|
|
|
4
6
|
private import memo_core_common::*;
|
|
5
7
|
private import memo_core_enumerations::*;
|
|
@@ -27,7 +29,7 @@ package memo_assurance_cybersecurity {
|
|
|
27
29
|
attribute authenticationExpected : Boolean;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
part def Threat specializes RiskDriver {
|
|
31
33
|
attribute threatCategory : ThreatCategoryKind;
|
|
32
34
|
attribute attackVector : String;
|
|
33
35
|
attribute threatSource : String;
|
|
@@ -37,7 +39,7 @@ package memo_assurance_cybersecurity {
|
|
|
37
39
|
attribute strideCategory : ThreatCategoryKind;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
item def Vulnerability specializes
|
|
42
|
+
item def Vulnerability specializes RiskItem {
|
|
41
43
|
attribute weakness : String;
|
|
42
44
|
attribute exploitability : String;
|
|
43
45
|
attribute discoveryMethod : String;
|
|
@@ -46,18 +48,6 @@ package memo_assurance_cybersecurity {
|
|
|
46
48
|
attribute remediable : Boolean;
|
|
47
49
|
}
|
|
48
50
|
|
|
49
|
-
// A scenario specialization: an attack path through the
|
|
50
|
-
// system, classified by the shared scenario dimensions with purpose
|
|
51
|
-
// `cybersecurity`.
|
|
52
|
-
part def ThreatScenario specializes MemoScenario {
|
|
53
|
-
attribute actorDescription : String;
|
|
54
|
-
attribute assumptionSummary : String;
|
|
55
|
-
attribute guaranteeSummary : String;
|
|
56
|
-
attribute securityObjective : String;
|
|
57
|
-
attribute abuseCaseReference : String;
|
|
58
|
-
attribute defaultCategory : ThreatCategoryKind;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
51
|
item def CyberHazard specializes Hazard {
|
|
62
52
|
attribute securityImpact : String;
|
|
63
53
|
attribute safetyImpact : String;
|
|
@@ -66,7 +56,7 @@ package memo_assurance_cybersecurity {
|
|
|
66
56
|
attribute linkedSafetyHazardId : String;
|
|
67
57
|
}
|
|
68
58
|
|
|
69
|
-
|
|
59
|
+
part def CyberRisk specializes Risk {
|
|
70
60
|
attribute exploitabilityEstimate : String;
|
|
71
61
|
attribute attackComplexity : String;
|
|
72
62
|
attribute detectability : DetectionKind;
|
|
@@ -88,15 +78,44 @@ package memo_assurance_cybersecurity {
|
|
|
88
78
|
attribute defaultConcern : ConcernKind;
|
|
89
79
|
}
|
|
90
80
|
|
|
91
|
-
|
|
81
|
+
part def TrustBoundary specializes InterfaceElement {
|
|
92
82
|
attribute boundaryType : String;
|
|
93
83
|
attribute crossingConstraint : String;
|
|
94
84
|
attribute trustAssumption : String;
|
|
95
85
|
}
|
|
96
86
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
87
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
88
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
89
|
+
// types declared here, and core must not depend on a domain package.
|
|
90
|
+
connection def Exploits :> MemoRelationship {
|
|
91
|
+
end realizedThreat : RequirementDriver :>> source;
|
|
92
|
+
end enablingVulnerability : Vulnerability :>> target;
|
|
93
|
+
}
|
|
94
|
+
abstract connection exploitsLinks : Exploits[*];
|
|
95
|
+
metadata def <exploits> ExploitsMetadata :> SemanticMetadata {
|
|
96
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
97
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
98
|
+
:>> baseType = exploitsLinks meta SysML::Usage;
|
|
99
|
+
}
|
|
100
|
+
connection def RealizedByScenario :> MemoRelationship {
|
|
101
|
+
end realizedThreat : RequirementDriver :>> source;
|
|
102
|
+
end scenario : MemoScenario :>> target;
|
|
103
|
+
}
|
|
104
|
+
abstract connection realizedByScenarioLinks : RealizedByScenario[*];
|
|
105
|
+
metadata def <realizedByScenario> RealizedByScenarioMetadata :> SemanticMetadata {
|
|
106
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
107
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
108
|
+
:>> baseType = realizedByScenarioLinks meta SysML::Usage;
|
|
109
|
+
}
|
|
110
|
+
connection def ImpactsSafety :> MemoRelationship {
|
|
111
|
+
attribute tracePurpose : String;
|
|
112
|
+
end cyberElement : MemoPart :>> source;
|
|
113
|
+
end safetyElement : RiskItem :>> target;
|
|
114
|
+
}
|
|
115
|
+
abstract connection impactsSafetyLinks : ImpactsSafety[*];
|
|
116
|
+
metadata def <impactsSafety> ImpactsSafetyMetadata :> SemanticMetadata {
|
|
117
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
118
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
119
|
+
:>> baseType = impactsSafetyLinks meta SysML::Usage;
|
|
101
120
|
}
|
|
102
121
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// engineering chain: user → task → use error → hazard → risk control →
|
|
5
5
|
// usability validation.
|
|
6
6
|
package memo_assurance_human_factors {
|
|
7
|
+
private import Metaobjects::SemanticMetadata;
|
|
7
8
|
private import ScalarValues::*;
|
|
8
9
|
|
|
9
10
|
private import memo_core_common::*;
|
|
@@ -19,32 +20,38 @@ package memo_assurance_human_factors {
|
|
|
19
20
|
attribute rootCauseType : String;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
attribute hazardReference : String;
|
|
26
|
-
attribute selectionRationale : String;
|
|
23
|
+
connection def CommitsUseError :> MemoRelationship {
|
|
24
|
+
end task : UserTask :>> source;
|
|
25
|
+
end useError : UseError :>> target;
|
|
27
26
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
abstract connection commitsUseErrorLinks : CommitsUseError[*];
|
|
28
|
+
metadata def <commitsUseError> CommitsUseErrorMetadata :> SemanticMetadata {
|
|
29
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
30
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
31
|
+
:>> baseType = commitsUseErrorLinks meta SysML::Usage;
|
|
33
32
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
connection def EvaluatesTask :> MemoRelationship {
|
|
34
|
+
end evaluation : MemoEvidence :>> source;
|
|
35
|
+
end task : UserTask :>> target;
|
|
36
|
+
}
|
|
37
|
+
abstract connection evaluatesTaskLinks : EvaluatesTask[*];
|
|
38
|
+
metadata def <evaluatesTask> EvaluatesTaskMetadata :> SemanticMetadata {
|
|
39
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
40
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
41
|
+
:>> baseType = evaluatesTaskLinks meta SysML::Usage;
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
45
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
46
|
+
// types declared here, and core must not depend on a domain package.
|
|
47
|
+
connection def TestedByUsability :> MemoRelationship {
|
|
48
|
+
end uiElementOrTask : MemoPart :>> source;
|
|
49
|
+
end usabilityTest : MemoEvidence :>> target;
|
|
45
50
|
}
|
|
46
|
-
connection
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
abstract connection testedByUsabilityLinks : TestedByUsability[*];
|
|
52
|
+
metadata def <testedByUsability> TestedByUsabilityMetadata :> SemanticMetadata {
|
|
53
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
54
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
55
|
+
:>> baseType = testedByUsabilityLinks meta SysML::Usage;
|
|
49
56
|
}
|
|
50
57
|
}
|
|
@@ -40,12 +40,15 @@ package memo_assurance_requirements {
|
|
|
40
40
|
enum designControl;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
requirement def Requirement specializes
|
|
43
|
+
requirement def Requirement specializes MemoRequirement {
|
|
44
44
|
attribute requirementKind : RequirementKind;
|
|
45
45
|
attribute statement : String;
|
|
46
46
|
attribute sourceKind : RequirementSourceKind;
|
|
47
47
|
attribute concernKind : ConcernKind;
|
|
48
|
-
|
|
48
|
+
// Editorial state is the inherited `status : ElementStatusKind` — the
|
|
49
|
+
// one status vocabulary in MEMO. Whether a requirement is implemented,
|
|
50
|
+
// verified, or validated is read from its Realizes / VerifiedBy /
|
|
51
|
+
// Validates links, not restated here.
|
|
49
52
|
attribute acceptanceCriteria : String;
|
|
50
53
|
attribute subjectDescription : String;
|
|
51
54
|
attribute actorDescription : String;
|
|
@@ -27,7 +27,7 @@ package memo_assurance_requirements_needs {
|
|
|
27
27
|
enum designControl;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
requirement def Need specializes MemoNeed
|
|
30
|
+
requirement def Need specializes MemoNeed {
|
|
31
31
|
attribute needKind : NeedKind;
|
|
32
32
|
// user need (IEC 62366-1)
|
|
33
33
|
attribute userPopulationReference : String;
|
|
@@ -1,37 +1,57 @@
|
|
|
1
1
|
package memo_assurance_safety_risk_analysis {
|
|
2
|
+
private import Metaobjects::SemanticMetadata;
|
|
2
3
|
private import ScalarValues::*;
|
|
4
|
+
private import memo_core_relationships::*; // MemoRelationship
|
|
3
5
|
|
|
4
6
|
private import memo_core_common::*;
|
|
5
7
|
private import memo_core_enumerations::*;
|
|
6
|
-
|
|
8
|
+
private import memo_assurance_safety_risk::*; // RiskItem
|
|
9
|
+
part def FMEAWorksheet specializes AnalysisArtifact {
|
|
7
10
|
attribute analysisScope : String;
|
|
8
11
|
attribute standardReference : String;
|
|
9
12
|
attribute analysisBasis : String;
|
|
10
13
|
attribute revisionDate : String;
|
|
11
14
|
attribute reviewer : String;
|
|
12
15
|
}
|
|
13
|
-
|
|
16
|
+
// An FMEA worksheet row states, on one line, what fails, what that does,
|
|
17
|
+
// how likely it is, and what controls it. The RPN triple carries the
|
|
18
|
+
// *scoring*; `effect` and `probability` carry the two facts a reader of the
|
|
19
|
+
// row needs in words. They are summaries, not replacements: the modelled
|
|
20
|
+
// form of an effect is a FailureEffect linked by Causes, and the modelled
|
|
21
|
+
// form of a control is a RiskControlMeasure linked by
|
|
22
|
+
// Mitigates(mitigationKind = failureMode) — traversable as
|
|
23
|
+
// `traverse: incoming mitigates`. MEMO deliberately does not add a second
|
|
24
|
+
// failure-mode-to-control relation; one whole/part and one mitigation
|
|
25
|
+
// relation is the lean shape the rest of the ontology already uses.
|
|
26
|
+
item def FailureMode specializes RiskItem {
|
|
14
27
|
attribute failureModeKind : FailureModeKind;
|
|
28
|
+
doc /* One-line statement of what this failure does, for the worksheet
|
|
29
|
+
* row. The structured form is a FailureEffect. */
|
|
30
|
+
attribute effect : String[0..1];
|
|
15
31
|
attribute severityRating : Integer;
|
|
32
|
+
doc /* Qualitative likelihood, the ISO 14971 register. `occurrenceRating`
|
|
33
|
+
* is the same fact as an FMEA score; both are kept because an FMEA
|
|
34
|
+
* reports the score and a risk file reports the qualitative band. */
|
|
35
|
+
attribute probability : ProbabilityKind[0..1];
|
|
16
36
|
attribute occurrenceRating : Integer;
|
|
17
37
|
attribute detectionRating : Integer;
|
|
18
38
|
attribute rpn : Integer;
|
|
19
39
|
attribute criticality : CriticalityKind;
|
|
20
40
|
}
|
|
21
|
-
item def FailureEffect specializes
|
|
41
|
+
item def FailureEffect specializes RiskItem {
|
|
22
42
|
attribute effectLevel : FailureEffectLevelKind;
|
|
23
43
|
attribute effectOnPatient : String;
|
|
24
44
|
attribute effectOnOperator : String;
|
|
25
45
|
attribute effectOnSystem : String;
|
|
26
46
|
attribute severity : SeverityKind;
|
|
27
47
|
}
|
|
28
|
-
item def FailureCause specializes
|
|
48
|
+
item def FailureCause specializes RiskItem {
|
|
29
49
|
attribute causeCategory : FailureCauseCategoryKind;
|
|
30
50
|
attribute causeDescription : String;
|
|
31
51
|
attribute occurrenceRating : ProbabilityKind;
|
|
32
52
|
attribute preventionMethod : String;
|
|
33
53
|
}
|
|
34
|
-
|
|
54
|
+
part def DetectionMethod specializes MemoPart {
|
|
35
55
|
attribute methodKind : DetectionMethodKind;
|
|
36
56
|
attribute detectionPoint : String;
|
|
37
57
|
attribute confidence : DetectionKind;
|
|
@@ -42,43 +62,41 @@ package memo_assurance_safety_risk_analysis {
|
|
|
42
62
|
attribute targetCompletionDate : String;
|
|
43
63
|
attribute revisedRpn : Integer;
|
|
44
64
|
}
|
|
45
|
-
|
|
65
|
+
part def FaultTree specializes AnalysisArtifact {
|
|
46
66
|
attribute standardReference : String;
|
|
47
67
|
attribute analysisScope : String;
|
|
48
68
|
attribute topEventDescription : String;
|
|
49
69
|
attribute cutSetSummary : String;
|
|
50
70
|
attribute revisionDate : String;
|
|
51
71
|
}
|
|
52
|
-
|
|
72
|
+
part def FaultTreeNode specializes MemoPart {
|
|
53
73
|
attribute eventKind : FaultTreeEventKind;
|
|
54
74
|
attribute probability : Real;
|
|
55
75
|
attribute failureRate : Real;
|
|
56
76
|
attribute exposureTime : Real;
|
|
57
77
|
attribute :>> description : String;
|
|
58
|
-
}
|
|
59
|
-
item def FaultTreeGate specializes MemoPart {
|
|
60
78
|
attribute gateKind : FaultTreeGateKind;
|
|
61
79
|
attribute kValue : Integer;
|
|
62
80
|
attribute nValue : Integer;
|
|
63
81
|
}
|
|
64
|
-
item def MinimalCutSet specializes
|
|
82
|
+
item def MinimalCutSet specializes RiskItem {
|
|
65
83
|
attribute cutSetOrder : Integer;
|
|
66
84
|
attribute probability : Real;
|
|
67
85
|
attribute involvedEvents : String;
|
|
68
86
|
attribute significance : String;
|
|
69
87
|
}
|
|
70
|
-
|
|
88
|
+
part def HAZOPStudy specializes AnalysisArtifact {
|
|
71
89
|
attribute standardReference : String;
|
|
72
90
|
attribute processDescription : String;
|
|
73
91
|
attribute studyScope : String;
|
|
74
92
|
attribute teamComposition : String;
|
|
75
93
|
}
|
|
76
|
-
|
|
94
|
+
part def HAZOPNode specializes MemoPart {
|
|
77
95
|
attribute nodeDescription : String;
|
|
78
96
|
attribute designIntent : String;
|
|
79
97
|
attribute operatingConditions : String;
|
|
80
98
|
}
|
|
81
|
-
item def HAZOPDeviation specializes
|
|
99
|
+
item def HAZOPDeviation specializes RiskItem {
|
|
82
100
|
attribute guideWord : HAZOPGuideWordKind;
|
|
83
101
|
attribute parameter : String;
|
|
84
102
|
attribute cause : String;
|
|
@@ -88,4 +106,91 @@ package memo_assurance_safety_risk_analysis {
|
|
|
88
106
|
attribute likelihood : ProbabilityKind;
|
|
89
107
|
attribute recommendation : String;
|
|
90
108
|
}
|
|
109
|
+
|
|
110
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
111
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
112
|
+
// types declared here, and core must not depend on a domain package.
|
|
113
|
+
// Causes unifies the former causal edges of the ISO 14971 / FMEA / FTA
|
|
114
|
+
// chains — CausesEffect, CausedBy, ContributesToHazard, LeadsToHazard,
|
|
115
|
+
// OriginatesFrom, UseErrorLeadsToHazard — keyed by causeKind. cause is the
|
|
116
|
+
// originating element, effect the consequence.
|
|
117
|
+
enum def CauseKind {
|
|
118
|
+
enum failureCausesEffect;
|
|
119
|
+
enum failureCausedBy;
|
|
120
|
+
enum contributesToHazard;
|
|
121
|
+
enum leadsToHazard;
|
|
122
|
+
enum originatesFrom;
|
|
123
|
+
enum useErrorLeadsToHazard;
|
|
124
|
+
}
|
|
125
|
+
connection def Causes :> MemoRelationship {
|
|
126
|
+
attribute causeKind : CauseKind;
|
|
127
|
+
end cause : MemoPart :>> source;
|
|
128
|
+
end effect : RiskItem :>> target;
|
|
129
|
+
}
|
|
130
|
+
abstract connection causesLinks : Causes[*];
|
|
131
|
+
metadata def <causes> CausesMetadata :> SemanticMetadata {
|
|
132
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
133
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
134
|
+
:>> baseType = causesLinks meta SysML::Usage;
|
|
135
|
+
}
|
|
136
|
+
connection def DetectedBy :> MemoRelationship {
|
|
137
|
+
end failureMode : FailureMode :>> source;
|
|
138
|
+
end detectionMethod : DetectionMethod :>> target;
|
|
139
|
+
}
|
|
140
|
+
abstract connection detectedByLinks : DetectedBy[*];
|
|
141
|
+
metadata def <detectedBy> DetectedByMetadata :> SemanticMetadata {
|
|
142
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
143
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
144
|
+
:>> baseType = detectedByLinks meta SysML::Usage;
|
|
145
|
+
}
|
|
146
|
+
connection def InputToGate :> MemoRelationship {
|
|
147
|
+
end input : FaultTreeNode :>> source;
|
|
148
|
+
end gate : FaultTreeNode :>> target;
|
|
149
|
+
}
|
|
150
|
+
abstract connection inputToGateLinks : InputToGate[*];
|
|
151
|
+
metadata def <inputToGate> InputToGateMetadata :> SemanticMetadata {
|
|
152
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
153
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
154
|
+
:>> baseType = inputToGateLinks meta SysML::Usage;
|
|
155
|
+
}
|
|
156
|
+
connection def ProducesEvent :> MemoRelationship {
|
|
157
|
+
end gate : FaultTreeNode :>> source;
|
|
158
|
+
end eventElement : FaultTreeNode :>> target;
|
|
159
|
+
}
|
|
160
|
+
abstract connection producesEventLinks : ProducesEvent[*];
|
|
161
|
+
metadata def <producesEvent> ProducesEventMetadata :> SemanticMetadata {
|
|
162
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
163
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
164
|
+
:>> baseType = producesEventLinks meta SysML::Usage;
|
|
165
|
+
}
|
|
166
|
+
connection def ContainsEvent :> MemoRelationship {
|
|
167
|
+
end cutSet : MinimalCutSet :>> source;
|
|
168
|
+
end eventElement : FaultTreeNode :>> target;
|
|
169
|
+
}
|
|
170
|
+
abstract connection containsEventLinks : ContainsEvent[*];
|
|
171
|
+
metadata def <containsEvent> ContainsEventMetadata :> SemanticMetadata {
|
|
172
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
173
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
174
|
+
:>> baseType = containsEventLinks meta SysML::Usage;
|
|
175
|
+
}
|
|
176
|
+
connection def IdentifiesHazard :> MemoRelationship {
|
|
177
|
+
end deviation : HAZOPDeviation :>> source;
|
|
178
|
+
end hazard : Hazard :>> target;
|
|
179
|
+
}
|
|
180
|
+
abstract connection identifiesHazardLinks : IdentifiesHazard[*];
|
|
181
|
+
metadata def <identifiesHazard> IdentifiesHazardMetadata :> SemanticMetadata {
|
|
182
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
183
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
184
|
+
:>> baseType = identifiesHazardLinks meta SysML::Usage;
|
|
185
|
+
}
|
|
186
|
+
connection def HasFailureMode :> MemoRelationship {
|
|
187
|
+
end element : ArchitectureElement :>> source;
|
|
188
|
+
end failureMode : FailureMode :>> target;
|
|
189
|
+
}
|
|
190
|
+
abstract connection hasFailureModeLinks : HasFailureMode[*];
|
|
191
|
+
metadata def <hasFailureMode> HasFailureModeMetadata :> SemanticMetadata {
|
|
192
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
193
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
194
|
+
:>> baseType = hasFailureModeLinks meta SysML::Usage;
|
|
195
|
+
}
|
|
91
196
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
package memo_assurance_safety_risk {
|
|
2
|
+
private import Metaobjects::SemanticMetadata;
|
|
2
3
|
private import ScalarValues::*;
|
|
4
|
+
private import memo_core_relationships::*; // MemoRelationship
|
|
3
5
|
|
|
4
6
|
private import memo_core_common::*;
|
|
5
7
|
private import memo_core_enumerations::*;
|
|
@@ -46,32 +48,52 @@ package memo_assurance_safety_risk {
|
|
|
46
48
|
attribute normalUseRelevant : Boolean;
|
|
47
49
|
attribute faultConditionRelevant : Boolean;
|
|
48
50
|
}
|
|
49
|
-
|
|
51
|
+
// ─── Risk-element base ──────────────────────────────────────────
|
|
52
|
+
// The common supertype of the item-based elements an ISO 14971 / FMEA /
|
|
53
|
+
// FTA chain relates: hazards, sequences of events, hazardous situations,
|
|
54
|
+
// harms, causes, failure modes, fault-tree events, cut sets, HAZOP
|
|
55
|
+
// deviations, vulnerabilities.
|
|
56
|
+
//
|
|
57
|
+
// It exists so the risk relations can TYPE their ends. Before it, every
|
|
58
|
+
// one of them (Causes, TracesRisk, DetectedBy, InputToGate, ProducesEvent,
|
|
59
|
+
// ContainsEvent, IdentifiesHazard, Mitigates, ImpactsSafety) fell back to
|
|
60
|
+
// MemoPart — which every element in MEMO is — so the authoring picker
|
|
61
|
+
// offered fault-tree edges when linking a screen to a requirement.
|
|
62
|
+
//
|
|
63
|
+
// It is deliberately an `item def` and deliberately does NOT cover Risk /
|
|
64
|
+
// ResidualRisk / RiskMatrix, which are parts: a risk is an assessed
|
|
65
|
+
// judgement about a chain, not a link in it, and it is reached by
|
|
66
|
+
// AssessedAgainst instead. One base per metaclass is the right shape here
|
|
67
|
+
// — forcing the two families under one supertype would put a hazard and a
|
|
68
|
+
// risk matrix back in the same picker.
|
|
69
|
+
abstract item def RiskItem specializes MemoItem;
|
|
70
|
+
|
|
71
|
+
item def Hazard specializes RiskItem {
|
|
50
72
|
attribute hazardType : HazardTypeKind;
|
|
51
73
|
attribute severity : SeverityKind;
|
|
52
74
|
attribute foreseeable : Boolean;
|
|
53
75
|
}
|
|
54
|
-
item def SequenceOfEvents specializes
|
|
76
|
+
item def SequenceOfEvents specializes RiskItem {
|
|
55
77
|
attribute initiatingEvent : String;
|
|
56
78
|
attribute contributingFactors : String;
|
|
57
79
|
}
|
|
58
80
|
// A categorized root cause in a hazard causal tree (FDA GIIP
|
|
59
81
|
// taxonomy pattern: cause -> hazard -> hazardous situation -> harm;
|
|
60
82
|
// several HazardCause elements may converge on one Hazard).
|
|
61
|
-
item def HazardCause specializes
|
|
83
|
+
item def HazardCause specializes RiskItem {
|
|
62
84
|
attribute causeSource : CauseSourceKind;
|
|
63
85
|
attribute contributingFactors : String;
|
|
64
86
|
}
|
|
65
|
-
item def HazardousSituation specializes
|
|
87
|
+
item def HazardousSituation specializes RiskItem {
|
|
66
88
|
attribute exposedPersons : String;
|
|
67
89
|
attribute operatingCondition : String;
|
|
68
90
|
}
|
|
69
|
-
item def Harm specializes
|
|
91
|
+
item def Harm specializes RiskItem {
|
|
70
92
|
attribute clinicalImpact : String;
|
|
71
93
|
attribute reversibility : String;
|
|
72
94
|
attribute severity : SeverityKind;
|
|
73
95
|
}
|
|
74
|
-
|
|
96
|
+
part def RiskControlMeasure specializes VerifiableElement {
|
|
75
97
|
attribute controlKind : RiskControlKind;
|
|
76
98
|
attribute implementationKind : RiskControlImplementationKind;
|
|
77
99
|
attribute verificationStatus : String;
|
|
@@ -82,8 +104,57 @@ package memo_assurance_safety_risk {
|
|
|
82
104
|
attribute clinicalSignificance : String;
|
|
83
105
|
attribute supportingEvidence : String;
|
|
84
106
|
}
|
|
85
|
-
|
|
107
|
+
part def OverallResidualRiskEvaluation specializes MemoPart {
|
|
86
108
|
attribute conclusion : String;
|
|
87
109
|
attribute reviewer : String;
|
|
88
110
|
}
|
|
111
|
+
|
|
112
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
113
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
114
|
+
// types declared here, and core must not depend on a domain package.
|
|
115
|
+
// ISO 14971 risk chain — distinct sequence-of-events relations over risk elements.
|
|
116
|
+
connection def TracesRisk :> MemoRelationship {
|
|
117
|
+
end sourceRiskElement : RiskItem :>> source;
|
|
118
|
+
end targetRiskElement : RiskItem :>> target;
|
|
119
|
+
}
|
|
120
|
+
abstract connection tracesRiskLinks : TracesRisk[*];
|
|
121
|
+
metadata def <tracesRisk> TracesRiskMetadata :> SemanticMetadata {
|
|
122
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
123
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
124
|
+
:>> baseType = tracesRiskLinks meta SysML::Usage;
|
|
125
|
+
}
|
|
126
|
+
connection def AssessedAgainst :> MemoRelationship {
|
|
127
|
+
end risk : Risk :>> source;
|
|
128
|
+
end riskMatrix : RiskMatrix :>> target;
|
|
129
|
+
}
|
|
130
|
+
abstract connection assessedAgainstLinks : AssessedAgainst[*];
|
|
131
|
+
metadata def <assessedAgainst> AssessedAgainstMetadata :> SemanticMetadata {
|
|
132
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
133
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
134
|
+
:>> baseType = assessedAgainstLinks meta SysML::Usage;
|
|
135
|
+
}
|
|
136
|
+
// Mitigates unifies the control/action → risk-element edges of the
|
|
137
|
+
// ISO 14971 / FMEA / FTA / cyber chains — MitigatesHazard,
|
|
138
|
+
// MitigatesVulnerability, MitigatedByControl, BrokenByControl,
|
|
139
|
+
// AddressedByAction — keyed by mitigationKind. control is the mitigating
|
|
140
|
+
// control/action; mitigatedElement is the hazard/vulnerability/failure/cut set.
|
|
141
|
+
enum def MitigationKind {
|
|
142
|
+
enum hazard;
|
|
143
|
+
enum vulnerability;
|
|
144
|
+
enum failureMode;
|
|
145
|
+
enum cutSet;
|
|
146
|
+
enum fmeaAction;
|
|
147
|
+
}
|
|
148
|
+
connection def Mitigates :> MemoRelationship {
|
|
149
|
+
attribute mitigationKind : MitigationKind;
|
|
150
|
+
// Untyped: controls/hazards may be item defs (RiskControlMeasure, Hazard, …).
|
|
151
|
+
end control :>> source;
|
|
152
|
+
end mitigatedElement : RiskItem :>> target;
|
|
153
|
+
}
|
|
154
|
+
abstract connection mitigatesLinks : Mitigates[*];
|
|
155
|
+
metadata def <mitigates> MitigatesMetadata :> SemanticMetadata {
|
|
156
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
157
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
158
|
+
:>> baseType = mitigatesLinks meta SysML::Usage;
|
|
159
|
+
}
|
|
89
160
|
}
|