@memoarchitect/ontology 0.7.0 → 0.8.24
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/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/memo.package.yaml +3 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
- package/examples/gpca-pump/model/catalog/project.sysml +5 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
- 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 +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -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 +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
- 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 +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/memo.package.yaml +3 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -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 +12 -0
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
- package/examples/surgical-robot/memo.package.yaml +3 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
- package/examples/ui-screen-regions/memo.package.yaml +3 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
- 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/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
- 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/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/src/extension.sysml +37 -0
- package/memo.manifest.yaml +13 -2
- 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 +5 -3
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +23 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +93 -36
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
- package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
- package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
- package/src/architecture/operational/activities/memo_activities.sysml +27 -29
- package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
- package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
- package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
- package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
- 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/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
- package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
- package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
- package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
- package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
- package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
- package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
- package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
- package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
- package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
- package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
- package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
- package/src/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 +40 -21
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +7 -20
- 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 +90 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
- package/src/core/annotations/memo_annotations.sysml +25 -6
- package/src/core/common/memo_common.sysml +130 -21
- package/src/core/consistency_rules/consistency_rules.sysml +1 -1
- package/src/core/dimensions/dimensions.sysml +12 -0
- package/src/core/enumerations/memo_enumerations.sysml +60 -14
- package/src/core/relationships/memo_relationships.sysml +199 -196
- package/src/memo_namespaces.sysml +30 -0
- package/src/methodology/core/memo_core.sysml +24 -0
- package/src/methodology/profiles/memo_profiles.sysml +1 -1
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +20 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/ontology/ontology_invariants.sysml +223 -11
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
- 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 +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/default/memo.package.yaml +2 -0
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/samd/memo.package.yaml +2 -0
- package/examples/extensions/README.md +0 -16
- package/examples/extensions/template/src/extension.sysml +0 -15
- package/examples/gpca-pump/gpca-pump.kpar +0 -0
- /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
- /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
|
@@ -7,22 +7,6 @@ package memo_assurance_requirements {
|
|
|
7
7
|
private import memo_assurance_requirements_needs::*;
|
|
8
8
|
part def RiskDriver specializes RequirementDriver { attribute driverKind : String; }
|
|
9
9
|
|
|
10
|
-
// ISO 14971 risk-analysis inputs. These are model elements so hazards,
|
|
11
|
-
// scenarios, requirements, and DHF records can trace to the exact use
|
|
12
|
-
// definition or foreseeable misuse that motivated them.
|
|
13
|
-
part def IntendedUse specializes DocumentedElement {
|
|
14
|
-
attribute indication : String;
|
|
15
|
-
attribute contraindication : String;
|
|
16
|
-
attribute patientPopulation : String;
|
|
17
|
-
attribute clinicalBenefit : String;
|
|
18
|
-
attribute regulatoryClassification : String;
|
|
19
|
-
}
|
|
20
|
-
part def ReasonablyForeseeableMisuse specializes DocumentedElement {
|
|
21
|
-
attribute misuseContext : String;
|
|
22
|
-
attribute foreseeableBasis : String;
|
|
23
|
-
attribute affectedUseContext : String;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
10
|
// The kind of requirement. Was a subclass branch (SystemRequirement /
|
|
27
11
|
// SoftwareRequirement / HardwareRequirement) plus a parallel design-control
|
|
28
12
|
// specification hierarchy (DesignControlSpecification / System- / Software- /
|
|
@@ -40,13 +24,16 @@ package memo_assurance_requirements {
|
|
|
40
24
|
enum designControl;
|
|
41
25
|
}
|
|
42
26
|
|
|
43
|
-
requirement def Requirement specializes
|
|
27
|
+
requirement def Requirement specializes MemoRequirement {
|
|
44
28
|
attribute requirementKind : RequirementKind;
|
|
45
|
-
attribute statement : String;
|
|
29
|
+
attribute :>> statement : String;
|
|
46
30
|
attribute sourceKind : RequirementSourceKind;
|
|
47
31
|
attribute concernKind : ConcernKind;
|
|
48
|
-
|
|
49
|
-
|
|
32
|
+
// Editorial state is the inherited `status : ElementStatusKind` — the
|
|
33
|
+
// one status vocabulary in MEMO. Whether a requirement is implemented,
|
|
34
|
+
// verified, or validated is read from its Realizes / VerifiedBy /
|
|
35
|
+
// Validates links, not restated here.
|
|
36
|
+
attribute :>> acceptanceCriteria : String;
|
|
50
37
|
attribute subjectDescription : String;
|
|
51
38
|
attribute actorDescription : String;
|
|
52
39
|
attribute assumptionSummary : 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 : MemoPart :>> 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,9 +1,23 @@
|
|
|
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::*;
|
|
6
8
|
private import memo_assurance_requirements::*;
|
|
9
|
+
|
|
10
|
+
// ISO 14971 / IEC 62366-1 risk-analysis input. A model element so hazards,
|
|
11
|
+
// scenarios, requirements, and DHF records can trace to the foreseeable
|
|
12
|
+
// misuse that motivated them. Its counterpart, IntendedUse, is now the
|
|
13
|
+
// operational-world root (memo_architecture_operational_structure::IntendedUse,
|
|
14
|
+
// a MemoMission).
|
|
15
|
+
part def ReasonablyForeseeableMisuse specializes MemoPart {
|
|
16
|
+
attribute misuseContext : String;
|
|
17
|
+
attribute foreseeableBasis : String;
|
|
18
|
+
attribute affectedUseContext : String;
|
|
19
|
+
}
|
|
20
|
+
|
|
7
21
|
part def Risk specializes RiskDriver {
|
|
8
22
|
attribute probabilityEstimate : ProbabilityKind;
|
|
9
23
|
attribute severityEstimate : SeverityKind;
|
|
@@ -46,32 +60,52 @@ package memo_assurance_safety_risk {
|
|
|
46
60
|
attribute normalUseRelevant : Boolean;
|
|
47
61
|
attribute faultConditionRelevant : Boolean;
|
|
48
62
|
}
|
|
49
|
-
|
|
63
|
+
// ─── Risk-element base ──────────────────────────────────────────
|
|
64
|
+
// The common supertype of the item-based elements an ISO 14971 / FMEA /
|
|
65
|
+
// FTA chain relates: hazards, sequences of events, hazardous situations,
|
|
66
|
+
// harms, causes, failure modes, fault-tree events, cut sets, HAZOP
|
|
67
|
+
// deviations, vulnerabilities.
|
|
68
|
+
//
|
|
69
|
+
// It exists so the risk relations can TYPE their ends. Before it, every
|
|
70
|
+
// one of them (Causes, TracesRisk, DetectedBy, InputToGate, ProducesEvent,
|
|
71
|
+
// ContainsEvent, IdentifiesHazard, Mitigates, ImpactsSafety) fell back to
|
|
72
|
+
// MemoPart — which every element in MEMO is — so the authoring picker
|
|
73
|
+
// offered fault-tree edges when linking a screen to a requirement.
|
|
74
|
+
//
|
|
75
|
+
// It is deliberately an `item def` and deliberately does NOT cover Risk /
|
|
76
|
+
// ResidualRisk / RiskMatrix, which are parts: a risk is an assessed
|
|
77
|
+
// judgement about a chain, not a link in it, and it is reached by
|
|
78
|
+
// AssessedAgainst instead. One base per metaclass is the right shape here
|
|
79
|
+
// — forcing the two families under one supertype would put a hazard and a
|
|
80
|
+
// risk matrix back in the same picker.
|
|
81
|
+
abstract item def RiskItem specializes MemoItem;
|
|
82
|
+
|
|
83
|
+
item def Hazard specializes RiskItem {
|
|
50
84
|
attribute hazardType : HazardTypeKind;
|
|
51
85
|
attribute severity : SeverityKind;
|
|
52
86
|
attribute foreseeable : Boolean;
|
|
53
87
|
}
|
|
54
|
-
item def SequenceOfEvents specializes
|
|
88
|
+
item def SequenceOfEvents specializes RiskItem {
|
|
55
89
|
attribute initiatingEvent : String;
|
|
56
90
|
attribute contributingFactors : String;
|
|
57
91
|
}
|
|
58
92
|
// A categorized root cause in a hazard causal tree (FDA GIIP
|
|
59
93
|
// taxonomy pattern: cause -> hazard -> hazardous situation -> harm;
|
|
60
94
|
// several HazardCause elements may converge on one Hazard).
|
|
61
|
-
item def HazardCause specializes
|
|
95
|
+
item def HazardCause specializes RiskItem {
|
|
62
96
|
attribute causeSource : CauseSourceKind;
|
|
63
97
|
attribute contributingFactors : String;
|
|
64
98
|
}
|
|
65
|
-
item def HazardousSituation specializes
|
|
99
|
+
item def HazardousSituation specializes RiskItem {
|
|
66
100
|
attribute exposedPersons : String;
|
|
67
101
|
attribute operatingCondition : String;
|
|
68
102
|
}
|
|
69
|
-
item def Harm specializes
|
|
103
|
+
item def Harm specializes RiskItem {
|
|
70
104
|
attribute clinicalImpact : String;
|
|
71
105
|
attribute reversibility : String;
|
|
72
106
|
attribute severity : SeverityKind;
|
|
73
107
|
}
|
|
74
|
-
|
|
108
|
+
part def RiskControlMeasure specializes VerifiableElement {
|
|
75
109
|
attribute controlKind : RiskControlKind;
|
|
76
110
|
attribute implementationKind : RiskControlImplementationKind;
|
|
77
111
|
attribute verificationStatus : String;
|
|
@@ -82,8 +116,57 @@ package memo_assurance_safety_risk {
|
|
|
82
116
|
attribute clinicalSignificance : String;
|
|
83
117
|
attribute supportingEvidence : String;
|
|
84
118
|
}
|
|
85
|
-
|
|
119
|
+
part def OverallResidualRiskEvaluation specializes MemoPart {
|
|
86
120
|
attribute conclusion : String;
|
|
87
121
|
attribute reviewer : String;
|
|
88
122
|
}
|
|
123
|
+
|
|
124
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
125
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
126
|
+
// types declared here, and core must not depend on a domain package.
|
|
127
|
+
// ISO 14971 risk chain — distinct sequence-of-events relations over risk elements.
|
|
128
|
+
connection def TracesRisk :> MemoRelationship {
|
|
129
|
+
end sourceRiskElement : RiskItem :>> source;
|
|
130
|
+
end targetRiskElement : RiskItem :>> target;
|
|
131
|
+
}
|
|
132
|
+
abstract connection tracesRiskLinks : TracesRisk[*];
|
|
133
|
+
metadata def <tracesRisk> TracesRiskMetadata :> SemanticMetadata {
|
|
134
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
135
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
136
|
+
:>> baseType = tracesRiskLinks meta SysML::Usage;
|
|
137
|
+
}
|
|
138
|
+
connection def AssessedAgainst :> MemoRelationship {
|
|
139
|
+
end risk : Risk :>> source;
|
|
140
|
+
end riskMatrix : RiskMatrix :>> target;
|
|
141
|
+
}
|
|
142
|
+
abstract connection assessedAgainstLinks : AssessedAgainst[*];
|
|
143
|
+
metadata def <assessedAgainst> AssessedAgainstMetadata :> SemanticMetadata {
|
|
144
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
145
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
146
|
+
:>> baseType = assessedAgainstLinks meta SysML::Usage;
|
|
147
|
+
}
|
|
148
|
+
// Mitigates unifies the control/action → risk-element edges of the
|
|
149
|
+
// ISO 14971 / FMEA / FTA / cyber chains — MitigatesHazard,
|
|
150
|
+
// MitigatesVulnerability, MitigatedByControl, BrokenByControl,
|
|
151
|
+
// AddressedByAction — keyed by mitigationKind. control is the mitigating
|
|
152
|
+
// control/action; mitigatedElement is the hazard/vulnerability/failure/cut set.
|
|
153
|
+
enum def MitigationKind {
|
|
154
|
+
enum hazard;
|
|
155
|
+
enum vulnerability;
|
|
156
|
+
enum failureMode;
|
|
157
|
+
enum cutSet;
|
|
158
|
+
enum fmeaAction;
|
|
159
|
+
}
|
|
160
|
+
connection def Mitigates :> MemoRelationship {
|
|
161
|
+
attribute mitigationKind : MitigationKind;
|
|
162
|
+
// Untyped: controls/hazards may be item defs (RiskControlMeasure, Hazard, …).
|
|
163
|
+
end control :>> source;
|
|
164
|
+
end mitigatedElement : RiskItem :>> target;
|
|
165
|
+
}
|
|
166
|
+
abstract connection mitigatesLinks : Mitigates[*];
|
|
167
|
+
metadata def <mitigates> MitigatesMetadata :> SemanticMetadata {
|
|
168
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
169
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
170
|
+
:>> baseType = mitigatesLinks meta SysML::Usage;
|
|
171
|
+
}
|
|
89
172
|
}
|
package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
package memo_assurance_safety_risk_postmarket_surveillance {
|
|
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
|
|
|
@@ -8,4 +10,18 @@ package memo_assurance_safety_risk_postmarket_surveillance {
|
|
|
8
10
|
attribute dataSource : String;
|
|
9
11
|
attribute reportingObligation : String;
|
|
10
12
|
}
|
|
13
|
+
|
|
14
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
15
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
16
|
+
// types declared here, and core must not depend on a domain package.
|
|
17
|
+
connection def FeedsBackTo :> MemoRelationship {
|
|
18
|
+
end feedbackItem : PostMarketSurveillance :>> source;
|
|
19
|
+
end designElement : MemoPart :>> target;
|
|
20
|
+
}
|
|
21
|
+
abstract connection feedsBackToLinks : FeedsBackTo[*];
|
|
22
|
+
metadata def <feedsBackTo> FeedsBackToMetadata :> SemanticMetadata {
|
|
23
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
24
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
25
|
+
:>> baseType = feedsBackToLinks meta SysML::Usage;
|
|
26
|
+
}
|
|
11
27
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
package memo_assurance_verification_validation {
|
|
2
|
+
private import Metaobjects::SemanticMetadata;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
|
|
4
5
|
private import memo_core_common::*;
|
|
@@ -10,10 +11,17 @@ package memo_assurance_verification_validation {
|
|
|
10
11
|
// Verification and validation cases are SysML v2 verification cases
|
|
11
12
|
// (behaviours that check requirements), not verifiable structures — they
|
|
12
13
|
// derive from the MemoVerificationCase foundation, not MemoPart.
|
|
14
|
+
// `status` is NOT redeclared here. It used to be re-declared as a String,
|
|
15
|
+
// which shadowed the `status : ElementStatusKind` every MEMO base carries
|
|
16
|
+
// and let a verification case hold an editorial status no other element
|
|
17
|
+
// could hold — against the "one status vocabulary in MEMO" rule stated in
|
|
18
|
+
// memo_requirements.sysml. The values it actually held ("planned") were an
|
|
19
|
+
// EXECUTION state, not an editorial one; execution state belongs in an
|
|
20
|
+
// attribute of its own (see RiskControlMeasure.verificationStatus), not in
|
|
21
|
+
// a second spelling of `status`.
|
|
13
22
|
verification def VerificationCase :> MemoVerificationCase {
|
|
14
23
|
attribute methodKind : VerificationMethodKind;
|
|
15
24
|
attribute acceptanceCriteria : String;
|
|
16
|
-
attribute status : String;
|
|
17
25
|
}
|
|
18
26
|
verification def ValidationCase :> MemoVerificationCase {
|
|
19
27
|
attribute validationMethod : ValidationMethodKind;
|
|
@@ -21,29 +29,17 @@ package memo_assurance_verification_validation {
|
|
|
21
29
|
attribute acceptanceCriteria : String;
|
|
22
30
|
attribute clinicalContext : String;
|
|
23
31
|
}
|
|
24
|
-
part def TestArtifact specializes MemoEvidence {
|
|
25
|
-
attribute version : String;
|
|
26
|
-
attribute artifactKind : ArtifactKind;
|
|
27
|
-
attribute resultSummary : String;
|
|
28
|
-
}
|
|
29
|
-
part def Evidence specializes MemoEvidence {
|
|
30
|
-
attribute version : String;
|
|
31
|
-
attribute evidenceType : String;
|
|
32
|
-
attribute integrityStatus : String;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// A scenario executed to verify — selected path with purpose
|
|
36
|
-
// 'verification'.
|
|
37
|
-
action def VerificationScenario specializes MemoScenario {
|
|
38
|
-
attribute verificationEnvironment : String;
|
|
39
|
-
attribute stimulusSummary : String;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
32
|
// Operational validation confirms the user's goal is achieved in the
|
|
43
33
|
// use environment (§5): ValidationCase validates a UseCase.
|
|
44
34
|
// Safety-critical functions must trace to verification (rules/coverage).
|
|
45
35
|
connection def ExecutesScenario :> MemoRelationship {
|
|
46
|
-
end verificationCase : VerificationCase;
|
|
47
|
-
end scenario :
|
|
36
|
+
end verificationCase : VerificationCase :>> source;
|
|
37
|
+
end scenario : OperativeScenario :>> target;
|
|
38
|
+
}
|
|
39
|
+
abstract connection executesScenarioLinks : ExecutesScenario[*];
|
|
40
|
+
metadata def <executesScenario> ExecutesScenarioMetadata :> SemanticMetadata {
|
|
41
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
42
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
43
|
+
:>> baseType = executesScenarioLinks meta SysML::Usage;
|
|
48
44
|
}
|
|
49
45
|
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// NotesOn leave their subject ends untyped, following the MemoLink precedent in
|
|
15
15
|
// memo_core_relationships.
|
|
16
16
|
package memo_core_annotations {
|
|
17
|
+
private import Metaobjects::SemanticMetadata;
|
|
17
18
|
private import ScalarValues::*;
|
|
18
19
|
|
|
19
20
|
private import memo_core_common::*;
|
|
@@ -61,17 +62,35 @@ package memo_core_annotations {
|
|
|
61
62
|
// The end is `remark`, not `comment`: `comment` is a reserved KerML
|
|
62
63
|
// keyword and cannot name a feature.
|
|
63
64
|
connection def CommentsOn :> MemoRelationship {
|
|
64
|
-
end remark : ModelComment;
|
|
65
|
-
end annotatedElement;
|
|
65
|
+
end remark : ModelComment :>> source;
|
|
66
|
+
end annotatedElement :>> target;
|
|
67
|
+
}
|
|
68
|
+
abstract connection commentsOnLinks : CommentsOn[*];
|
|
69
|
+
metadata def <commentsOn> CommentsOnMetadata :> SemanticMetadata {
|
|
70
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
71
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
72
|
+
:>> baseType = commentsOnLinks meta SysML::Usage;
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
connection def RationaleFor :> MemoRelationship {
|
|
69
|
-
end rationaleRecord : ModelRationale;
|
|
70
|
-
end justifiedElement;
|
|
76
|
+
end rationaleRecord : ModelRationale :>> source;
|
|
77
|
+
end justifiedElement :>> target;
|
|
78
|
+
}
|
|
79
|
+
abstract connection rationaleForLinks : RationaleFor[*];
|
|
80
|
+
metadata def <rationaleFor> RationaleForMetadata :> SemanticMetadata {
|
|
81
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
82
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
83
|
+
:>> baseType = rationaleForLinks meta SysML::Usage;
|
|
71
84
|
}
|
|
72
85
|
|
|
73
86
|
connection def NotesOn :> MemoRelationship {
|
|
74
|
-
end noteRecord : ModelNote;
|
|
75
|
-
end notedElement;
|
|
87
|
+
end noteRecord : ModelNote :>> source;
|
|
88
|
+
end notedElement :>> target;
|
|
89
|
+
}
|
|
90
|
+
abstract connection notesOnLinks : NotesOn[*];
|
|
91
|
+
metadata def <notesOn> NotesOnMetadata :> SemanticMetadata {
|
|
92
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
93
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
94
|
+
:>> baseType = notesOnLinks meta SysML::Usage;
|
|
76
95
|
}
|
|
77
96
|
}
|