@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
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// Clause-level traceability: the project-facing half of the regulatory axis.
|
|
2
|
+
//
|
|
3
|
+
// MEMO carries standards in two mechanisms, and this file is one of them:
|
|
4
|
+
//
|
|
5
|
+
// @StandardReference metadata (core/semantics) — provenance INSIDE the MEMO
|
|
6
|
+
// library: "this ontology type exists because ISO 14971 §5.4 says so".
|
|
7
|
+
// Library-internal, not project data.
|
|
8
|
+
// ConformsTo (here) — PROJECT traceability:
|
|
9
|
+
// "this requirement in this project satisfies IEC 62304 §5.2.2".
|
|
10
|
+
// Queryable, reportable, auditable.
|
|
11
|
+
//
|
|
12
|
+
// Do not add a third. A standard is data in the ontology, not a code path:
|
|
13
|
+
// adding ISO 13485 must be one new file of RegulatoryStandard/StandardClause
|
|
14
|
+
// instances and zero TypeScript changes.
|
|
15
|
+
//
|
|
16
|
+
// Nothing here is abstract. An abstract def cannot be instantiated, so a
|
|
17
|
+
// traceability matrix over abstract clause types is empty by construction —
|
|
18
|
+
// which is the failure mode this whole area exists to prevent.
|
|
19
|
+
//
|
|
20
|
+
// ─── The clause library and how a document cites it ──────────────────────
|
|
21
|
+
//
|
|
22
|
+
// The concrete instances live one file per standard beside this one
|
|
23
|
+
// (iec_62304.sysml, iec_60601_1.sysml, …). A DHF template cites them from its
|
|
24
|
+
// frontmatter, in one of two shapes:
|
|
25
|
+
//
|
|
26
|
+
// clauses: ["5.4"] relative — the clause number
|
|
27
|
+
// belongs to this document's
|
|
28
|
+
// own `standard:`
|
|
29
|
+
// clauses: ["ISO 14971:2019 §7"] qualified — the designation
|
|
30
|
+
// before the section sign, the
|
|
31
|
+
// clause number after it
|
|
32
|
+
//
|
|
33
|
+
// An entry containing "§" is qualified and nothing else is: that is the whole
|
|
34
|
+
// grammar. The designation must match a RegulatoryStandard's `designation`
|
|
35
|
+
// exactly, amendments included, and the clause number must match a
|
|
36
|
+
// StandardClause's `clauseNumber` exactly. Both are checked by
|
|
37
|
+
// standards-library.test.ts in memo-tools, which is what makes "adding a
|
|
38
|
+
// standard is one file" true rather than aspirational.
|
|
39
|
+
package memo_artifacts_standards_traceability {
|
|
40
|
+
private import Metaobjects::SemanticMetadata;
|
|
41
|
+
private import ScalarValues::*;
|
|
42
|
+
private import memo_core_common::*;
|
|
43
|
+
private import memo_core_enumerations::*;
|
|
44
|
+
private import memo_core_relationships::*;
|
|
45
|
+
private import memo_artifacts_core::*;
|
|
46
|
+
|
|
47
|
+
// =========================================================================
|
|
48
|
+
// Standards and clauses
|
|
49
|
+
// =========================================================================
|
|
50
|
+
|
|
51
|
+
item def RegulatoryStandard :> MemoArtifactItem {
|
|
52
|
+
doc /* A regulatory or consensus standard a project claims conformance
|
|
53
|
+
* to, identified by its full designation including edition and
|
|
54
|
+
* amendments (e.g. "IEC 62366-1:2015+AMD1:2020"). Dropping the
|
|
55
|
+
* amendment is a CE/MDR regression, so it is carried explicitly
|
|
56
|
+
* rather than folded into the designation by convention. */
|
|
57
|
+
attribute designation : String;
|
|
58
|
+
attribute edition : String[0..1];
|
|
59
|
+
attribute issuer : String[0..1];
|
|
60
|
+
attribute amendments : String[0..*];
|
|
61
|
+
// Which submission regimes this standard has standing in. Empty is a
|
|
62
|
+
// MEANINGFUL value, not an unset one: it says no regime mandates this
|
|
63
|
+
// standard, which is true of the method and reference standards MEMO
|
|
64
|
+
// carries (IEC 60812's FMEA method, ISO/IEC/IEEE 42010's architecture
|
|
65
|
+
// description). A regime-free standard never contributes to
|
|
66
|
+
// `required(project)` — its clauses are claimable but not required.
|
|
67
|
+
//
|
|
68
|
+
// Because empty means something, it cannot also mean "the pack author
|
|
69
|
+
// forgot". `memo standards check` prints regime-free standards in their
|
|
70
|
+
// own section rather than dropping them, and standards-library.test.ts
|
|
71
|
+
// names the exact set — the same way Phase 2 named the four document
|
|
72
|
+
// types that derive no standards. A forgotten regime is a red test.
|
|
73
|
+
attribute appliesToRegime : RegulatoryRegimeKind[0..*];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
item def StandardClause :> MemoArtifactItem {
|
|
77
|
+
doc /* One normative clause of a RegulatoryStandard, at the depth at
|
|
78
|
+
* which the standard makes a distinct requirement a MEMO document
|
|
79
|
+
* actually claims. `title` is a MEMO-authored scope phrase — a
|
|
80
|
+
* representative synonym for what the clause governs ("§17" →
|
|
81
|
+
* "electromagnetic compatibility") — never the standard's own
|
|
82
|
+
* normative wording, which is copyrighted. The scope phrase is a
|
|
83
|
+
* label: queries traverse ConformsTo to the clause instance, they
|
|
84
|
+
* never match on its text.
|
|
85
|
+
*
|
|
86
|
+
* Clause containment uses the existing Composes relation
|
|
87
|
+
* (standard as parent, clause as child; clause as parent,
|
|
88
|
+
* sub-clause as child). There is no clause-specific composition
|
|
89
|
+
* type, because whole/part decomposition is already one relation
|
|
90
|
+
* in MEMO. */
|
|
91
|
+
attribute clauseNumber : String;
|
|
92
|
+
attribute title : String[0..1];
|
|
93
|
+
attribute normativeStrength : String[0..1];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// =========================================================================
|
|
97
|
+
// Relationships
|
|
98
|
+
// =========================================================================
|
|
99
|
+
|
|
100
|
+
connection def ConformsTo :> MemoRelationship {
|
|
101
|
+
doc /* Any model element claims conformance to a standard clause.
|
|
102
|
+
* This is the edge the standards traceability matrix and the
|
|
103
|
+
* clause coverage report are computed over. */
|
|
104
|
+
end conformingElement : MemoPart :>> source;
|
|
105
|
+
end clause : StandardClause :>> target;
|
|
106
|
+
}
|
|
107
|
+
abstract connection conformsToLinks : ConformsTo[*];
|
|
108
|
+
metadata def <conformsTo> ConformsToMetadata :> SemanticMetadata {
|
|
109
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
110
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
111
|
+
:>> baseType = conformsToLinks meta SysML::Usage;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
connection def TracesToDocument :> MemoRelationship {
|
|
115
|
+
doc /* Where the evidence for a clause claim is written down. The target
|
|
116
|
+
* is the existing controlled-artifact type — MEMO does not model a
|
|
117
|
+
* separate Document/DocumentSection family, because
|
|
118
|
+
* ControlledArtifact / ModelOwnedArtifact / MarkdownDocumentSource
|
|
119
|
+
* already carry version, owner and approval status. Section
|
|
120
|
+
* granularity rides on the link as a reference string rather than
|
|
121
|
+
* as a duplicate element type. */
|
|
122
|
+
attribute sectionReference : String[0..1];
|
|
123
|
+
end tracedElement : MemoPart :>> source;
|
|
124
|
+
end artifact : ControlledArtifact :>> target;
|
|
125
|
+
}
|
|
126
|
+
abstract connection tracesToDocumentLinks : TracesToDocument[*];
|
|
127
|
+
metadata def <tracesToDocument> TracesToDocumentMetadata :> SemanticMetadata {
|
|
128
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
129
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
130
|
+
:>> baseType = tracesToDocumentLinks meta SysML::Usage;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -23,8 +23,8 @@ Defines design outputs for **{{project.product}}** per 21 CFR 820.30(d). Design
|
|
|
23
23
|
### 2.1 Hardware Design Outputs
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind: [
|
|
27
|
-
where: layer == "
|
|
26
|
+
kind: [HardwareComponent, HardwareAssembly, SoftwareComponent, SoftwareSystem]
|
|
27
|
+
where: layer == "implementation"
|
|
28
28
|
display: table
|
|
29
29
|
columns: name, kind, layer, doc
|
|
30
30
|
sort: name
|
|
@@ -34,8 +34,8 @@ empty: "No hardware design outputs defined."
|
|
|
34
34
|
### 2.2 Software Design Outputs
|
|
35
35
|
|
|
36
36
|
```memo-query
|
|
37
|
-
kind: [
|
|
38
|
-
where: layer == "
|
|
37
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
38
|
+
where: layer == "implementation"
|
|
39
39
|
display: table
|
|
40
40
|
columns: name, kind, layer, doc
|
|
41
41
|
sort: name
|
|
@@ -45,7 +45,7 @@ empty: "No software design outputs defined."
|
|
|
45
45
|
### 2.3 All Design Outputs
|
|
46
46
|
|
|
47
47
|
```memo-query
|
|
48
|
-
kind:
|
|
48
|
+
kind: [HardwareComponent, HardwareAssembly, SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
49
49
|
display: table
|
|
50
50
|
columns: name, layer, doc
|
|
51
51
|
sort: name
|
|
@@ -41,7 +41,7 @@ _[TODO: Track all open action items from design reviews]_
|
|
|
41
41
|
Snapshot of the design state at the time of review, computed from the model:
|
|
42
42
|
|
|
43
43
|
```memo-query
|
|
44
|
-
kind: [Requirement,
|
|
44
|
+
kind: [Requirement, HardwareComponent, HardwareAssembly, SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
45
45
|
display: count
|
|
46
46
|
label: Total design elements at last review
|
|
47
47
|
```
|
|
@@ -29,7 +29,7 @@ _[TODO: Reference V&V Plan]_
|
|
|
29
29
|
Describe clinical or bench validation activities demonstrating conformity with user needs under actual or simulated use conditions.
|
|
30
30
|
|
|
31
31
|
```memo-query
|
|
32
|
-
kind:
|
|
32
|
+
kind: ValidationCase
|
|
33
33
|
display: table
|
|
34
34
|
columns: name, layer, doc
|
|
35
35
|
sort: name
|
|
@@ -43,7 +43,7 @@ empty: "No validation activities defined."
|
|
|
43
43
|
Coverage of user needs by validation activities, computed live from the model:
|
|
44
44
|
|
|
45
45
|
```memo-query
|
|
46
|
-
kind: [
|
|
46
|
+
kind: [Requirement, Need]
|
|
47
47
|
display: table
|
|
48
48
|
columns: name, layer, doc
|
|
49
49
|
empty: "No user needs defined."
|
|
@@ -21,7 +21,7 @@ Documents design verification that design outputs meet design inputs for **{{pro
|
|
|
21
21
|
The verification traceability below is generated live from the model — every requirement should be covered by at least one verification activity:
|
|
22
22
|
|
|
23
23
|
```memo-query
|
|
24
|
-
kind:
|
|
24
|
+
kind: VerificationCase
|
|
25
25
|
display: table
|
|
26
26
|
columns: name, layer, doc
|
|
27
27
|
sort: name
|
|
@@ -35,7 +35,7 @@ empty: "No verification activities defined."
|
|
|
35
35
|
Test executions and their outcomes are summarized below from the model:
|
|
36
36
|
|
|
37
37
|
```memo-query
|
|
38
|
-
kind:
|
|
38
|
+
kind: VerificationCase
|
|
39
39
|
display: table
|
|
40
40
|
columns: name, layer, doc
|
|
41
41
|
sort: name
|
|
@@ -79,7 +79,7 @@ Key characteristics of **{{project.product}}**, drawn from the model:
|
|
|
79
79
|
Summary statistics of the system model at the time this document was generated:
|
|
80
80
|
|
|
81
81
|
```memo-query
|
|
82
|
-
kind:
|
|
82
|
+
kind: Requirement
|
|
83
83
|
display: count
|
|
84
84
|
label: Total requirements
|
|
85
85
|
```
|
|
@@ -91,7 +91,7 @@ label: Total hazards
|
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
```memo-query
|
|
94
|
-
kind:
|
|
94
|
+
kind: VerificationCase
|
|
95
95
|
display: count
|
|
96
96
|
label: Total test cases
|
|
97
97
|
```
|
|
@@ -36,7 +36,7 @@ Checklist of items required before design transfer to production is complete:
|
|
|
36
36
|
Production specifications derived from the design outputs:
|
|
37
37
|
|
|
38
38
|
```memo-query
|
|
39
|
-
kind:
|
|
39
|
+
kind: [HardwareComponent, HardwareAssembly, SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
40
40
|
display: table
|
|
41
41
|
columns: name, layer, doc
|
|
42
42
|
sort: name
|
|
@@ -31,7 +31,7 @@ _[TODO: Describe all intended user groups with their roles, training levels, and
|
|
|
31
31
|
User needs captured for **{{project.product}}** are listed below from the model. Each user need should trace forward to at least one design input:
|
|
32
32
|
|
|
33
33
|
```memo-query
|
|
34
|
-
kind: [
|
|
34
|
+
kind: [Requirement, Need]
|
|
35
35
|
display: table
|
|
36
36
|
columns: name, layer, doc
|
|
37
37
|
sort: name
|
|
@@ -33,7 +33,7 @@ This plan covers:
|
|
|
33
33
|
### 3.1 Requirements to Verify
|
|
34
34
|
|
|
35
35
|
```memo-query
|
|
36
|
-
kind:
|
|
36
|
+
kind: Requirement
|
|
37
37
|
display: table
|
|
38
38
|
columns: name, layer, doc
|
|
39
39
|
sort: name
|
|
@@ -43,7 +43,7 @@ empty: "No requirements defined."
|
|
|
43
43
|
### 3.2 Verification Test Cases
|
|
44
44
|
|
|
45
45
|
```memo-query
|
|
46
|
-
kind:
|
|
46
|
+
kind: VerificationCase
|
|
47
47
|
display: table
|
|
48
48
|
columns: name, kind, layer, doc
|
|
49
49
|
sort: name
|
|
@@ -57,7 +57,7 @@ empty: "No verification test cases defined."
|
|
|
57
57
|
Validation activities demonstrating that **{{project.product}}** meets user needs and intended uses:
|
|
58
58
|
|
|
59
59
|
```memo-query
|
|
60
|
-
kind:
|
|
60
|
+
kind: ValidationCase
|
|
61
61
|
display: table
|
|
62
62
|
columns: name, layer, doc
|
|
63
63
|
sort: name
|
|
@@ -23,13 +23,13 @@ This V&V Report documents the results of all verification and validation activit
|
|
|
23
23
|
Summary metrics computed live from the model:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind:
|
|
26
|
+
kind: VerificationCase
|
|
27
27
|
display: count
|
|
28
28
|
label: Total test cases
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
```memo-query
|
|
32
|
-
kind: [
|
|
32
|
+
kind: [VerificationCase, ValidationCase]
|
|
33
33
|
display: count
|
|
34
34
|
label: V&V activities
|
|
35
35
|
```
|
|
@@ -41,7 +41,7 @@ label: V&V activities
|
|
|
41
41
|
### 3.1 Test Results by Requirement
|
|
42
42
|
|
|
43
43
|
```memo-query
|
|
44
|
-
kind:
|
|
44
|
+
kind: VerificationCase
|
|
45
45
|
display: table
|
|
46
46
|
columns: name, kind, layer, doc
|
|
47
47
|
sort: name
|
|
@@ -55,7 +55,7 @@ empty: "No verification activities defined."
|
|
|
55
55
|
Results of the validation activities are summarized below:
|
|
56
56
|
|
|
57
57
|
```memo-query
|
|
58
|
-
kind:
|
|
58
|
+
kind: ValidationCase
|
|
59
59
|
display: table
|
|
60
60
|
columns: name, layer, doc
|
|
61
61
|
sort: name
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: postmarket-surveillance
|
|
3
3
|
title: Post-Market Cybersecurity Surveillance Plan
|
|
4
4
|
standard: FDA Cybersecurity Guidance 2023
|
|
5
|
-
clauses: ["
|
|
5
|
+
clauses: ["VI"]
|
|
6
6
|
required_for: ["FDA_510k", "FDA_PMA"]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -30,7 +30,8 @@ Defines ongoing cybersecurity surveillance for **{{project.product}}** in the po
|
|
|
30
30
|
Describe the process for ongoing monitoring of SOUP components for newly published vulnerabilities.
|
|
31
31
|
|
|
32
32
|
```memo-query
|
|
33
|
-
kind:
|
|
33
|
+
kind: SoftwareModule
|
|
34
|
+
where: moduleKind == "SoftwareModuleKind::soup"
|
|
34
35
|
display: table
|
|
35
36
|
columns: name, doc
|
|
36
37
|
sort: name
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: security-arch
|
|
3
3
|
title: Cybersecurity Architecture Description
|
|
4
4
|
standard: FDA Cybersecurity Guidance 2023
|
|
5
|
-
clauses: ["
|
|
5
|
+
clauses: ["V.B"]
|
|
6
6
|
required_for: ["FDA_510k", "FDA_PMA"]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -45,7 +45,7 @@ empty: "No interfaces defined."
|
|
|
45
45
|
Security controls implemented in **{{project.product}}** are listed below from the model. Each control should trace to at least one identified threat:
|
|
46
46
|
|
|
47
47
|
```memo-query
|
|
48
|
-
kind:
|
|
48
|
+
kind: RiskControlMeasure
|
|
49
49
|
display: table
|
|
50
50
|
columns: name, layer, doc
|
|
51
51
|
sort: name
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: threat-model
|
|
3
3
|
title: Cybersecurity Threat Model
|
|
4
4
|
standard: FDA Cybersecurity Guidance 2023
|
|
5
|
-
clauses: ["
|
|
5
|
+
clauses: ["V.A"]
|
|
6
6
|
required_for: ["FDA_510k", "FDA_PMA"]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -23,7 +23,7 @@ This threat model documents cybersecurity threats for **{{project.product}}** pe
|
|
|
23
23
|
Assets requiring protection (data, functions, interfaces), drawn from the model:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind: [SoftwareSystem,
|
|
26
|
+
kind: [SoftwareSystem, InterfaceElement, SoftwareModule]
|
|
27
27
|
display: table
|
|
28
28
|
columns: name, kind, layer, doc
|
|
29
29
|
sort: name
|
|
@@ -51,7 +51,7 @@ empty: "No interfaces defined."
|
|
|
51
51
|
The threat catalog below is generated from the model. Each threat should be assessed for likelihood and impact and trace to mitigating security controls:
|
|
52
52
|
|
|
53
53
|
```memo-query
|
|
54
|
-
kind:
|
|
54
|
+
kind: [FMEAWorksheet, FaultTree, HAZOPStudy]
|
|
55
55
|
display: table
|
|
56
56
|
columns: name, layer, doc
|
|
57
57
|
sort: name
|
|
@@ -76,7 +76,7 @@ empty: "No threat model elements defined. Add ThreatModel elements."
|
|
|
76
76
|
Security controls implemented in **{{project.product}}** are listed below from the model. Each control should trace to at least one identified threat:
|
|
77
77
|
|
|
78
78
|
```memo-query
|
|
79
|
-
kind:
|
|
79
|
+
kind: RiskControlMeasure
|
|
80
80
|
display: table
|
|
81
81
|
columns: name, layer, doc
|
|
82
82
|
sort: name
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: vuln-assessment
|
|
3
3
|
title: Vulnerability Assessment and Penetration Testing Report
|
|
4
4
|
standard: FDA Cybersecurity Guidance 2023
|
|
5
|
-
clauses: ["
|
|
5
|
+
clauses: ["V.C"]
|
|
6
6
|
required_for: ["FDA_510k", "FDA_PMA"]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -23,7 +23,7 @@ Documents cybersecurity vulnerability assessment and testing for **{{project.pro
|
|
|
23
23
|
Define the boundaries of this assessment: components, interfaces, and threat classes in and out of scope.
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind: [SoftwareSystem,
|
|
26
|
+
kind: [HardwareComponent, HardwareAssembly, SoftwareSystem, SoftwareComponent, SoftwareModule, InterfaceElement, MemoPort]
|
|
27
27
|
display: table
|
|
28
28
|
columns: name, kind, layer
|
|
29
29
|
sort: name
|
|
@@ -37,7 +37,8 @@ empty: "No software assets defined."
|
|
|
37
37
|
Known vulnerabilities in SOUP and third-party components (e.g. from CVE/NVD monitoring) and their disposition:
|
|
38
38
|
|
|
39
39
|
```memo-query
|
|
40
|
-
kind:
|
|
40
|
+
kind: SoftwareModule
|
|
41
|
+
where: moduleKind == "SoftwareModuleKind::soup"
|
|
41
42
|
display: table
|
|
42
43
|
columns: name, doc
|
|
43
44
|
sort: name
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hrs
|
|
3
|
+
title: Hardware Requirements Specification
|
|
4
|
+
standard: IEC 60601-1:2005+AMD1:2012+AMD2:2020
|
|
5
|
+
clauses: ["8", "9", "11", "15", "IEC 60601-1-2:2014+AMD1:2020 §7"]
|
|
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 Hardware Requirements Specification (HRS) defines the safety, construction, and performance requirements for the **{{project.product}}** physical equipment, ensuring compliance with IEC 60601-1 (general safety) and applicable collateral standards (IEC 60601-1-2 for electromagnetic compatibility).
|
|
18
|
+
|
|
19
|
+
Hardware requirements are identified by the model's `requirementKind` attribute. Per-topic sections — construction, electrical, EMC, mechanical — are **not** name filters: each is the set of elements claiming the clause that governs that topic, selected by traversing `ConformsTo` to that clause. A clause is named by its element id rather than by its number, because a clause number is not unique across standards: "8" is a clause of IEC 60601-1, of IEC 60601-1-2 and of IEC 62304.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. Hardware Requirements Summary
|
|
24
|
+
|
|
25
|
+
Summary metrics for the hardware requirements captured in the model:
|
|
26
|
+
|
|
27
|
+
```memo-query
|
|
28
|
+
kind: Requirement
|
|
29
|
+
where: requirementKind == "RequirementKind::hardware"
|
|
30
|
+
display: count
|
|
31
|
+
label: Total hardware requirements
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### All Hardware Requirements
|
|
35
|
+
|
|
36
|
+
```memo-query
|
|
37
|
+
kind: Requirement
|
|
38
|
+
where: requirementKind == "RequirementKind::hardware"
|
|
39
|
+
display: table
|
|
40
|
+
columns: name, requirementKind, electricalSafetyRelevant, doc
|
|
41
|
+
sort: name
|
|
42
|
+
empty: "No hardware requirements defined. Add Requirement elements with requirementKind = hardware."
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 3. Physical & Construction Requirements (IEC 60601-1 §15)
|
|
48
|
+
|
|
49
|
+
The physical elements these requirements govern:
|
|
50
|
+
|
|
51
|
+
```memo-query
|
|
52
|
+
kind: [PhysicalAssembly, HardwareAssembly, PhysicalSubassembly, PhysicalComponent, HardwareComponent, PhysicalConnectorPart]
|
|
53
|
+
display: table
|
|
54
|
+
columns: name, kind, layer, doc
|
|
55
|
+
sort: name
|
|
56
|
+
empty: "No physical assemblies or components defined."
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The elements claiming IEC 60601-1 §15 are a `ConformsTo` table:
|
|
60
|
+
|
|
61
|
+
```memo-query
|
|
62
|
+
select: relationships
|
|
63
|
+
kind: conformsTo
|
|
64
|
+
where: target.id == "iec60601_1Clause15"
|
|
65
|
+
display: table
|
|
66
|
+
columns: source, source.kind, target.clauseNumber, target.title
|
|
67
|
+
sort: source
|
|
68
|
+
empty: "No elements claim IEC 60601-1 §15."
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 4. Electrical Safety Requirements (IEC 60601-1 §8)
|
|
74
|
+
|
|
75
|
+
Protection against electric shock, isolation, and medical-grade power supplies. The electrical elements in scope:
|
|
76
|
+
|
|
77
|
+
```memo-query
|
|
78
|
+
kind: [ElectricalComponent, ElectronicComponent, PhysicalConnectorPart]
|
|
79
|
+
display: table
|
|
80
|
+
columns: name, kind, layer, doc
|
|
81
|
+
sort: name
|
|
82
|
+
empty: "No electrical or electronic components defined."
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```memo-query
|
|
86
|
+
select: relationships
|
|
87
|
+
kind: conformsTo
|
|
88
|
+
where: target.id == "iec60601_1Clause8"
|
|
89
|
+
display: table
|
|
90
|
+
columns: source, source.kind, target.clauseNumber, target.title
|
|
91
|
+
sort: source
|
|
92
|
+
empty: "No elements claim IEC 60601-1 §8."
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 5. Electromagnetic Compatibility (IEC 60601-1-2 §7)
|
|
98
|
+
|
|
99
|
+
Immunity from electromagnetic disturbances and limits on emissions.
|
|
100
|
+
|
|
101
|
+
This section is the one that pays for clause-level traceability: once a requirement carries `ConformsTo → IEC 60601-1-2 §7`, "EMC Requirements" stops being a filter over names and becomes *the set of requirements claiming that clause*. The section heading and the standard then come from one source.
|
|
102
|
+
|
|
103
|
+
```memo-query
|
|
104
|
+
select: relationships
|
|
105
|
+
kind: conformsTo
|
|
106
|
+
where: target.id == "iec60601_1_2Clause7"
|
|
107
|
+
display: table
|
|
108
|
+
columns: source, source.kind, target.clauseNumber, target.title
|
|
109
|
+
sort: source
|
|
110
|
+
empty: "No elements claim IEC 60601-1-2 §7."
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 6. Mechanical, Thermal, and Environmental Requirements (IEC 60601-1 §9, §11)
|
|
116
|
+
|
|
117
|
+
Mechanical strength and impact resistance (§9), excessive temperatures and ingress (§11). The elements in scope:
|
|
118
|
+
|
|
119
|
+
```memo-query
|
|
120
|
+
kind: [ThermalComponent, AcousticComponent, FluidicComponent, PneumaticComponent, OpticalComponent]
|
|
121
|
+
display: table
|
|
122
|
+
columns: name, kind, layer, doc
|
|
123
|
+
sort: name
|
|
124
|
+
empty: "No mechanical, thermal, fluidic or optical components defined."
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
```memo-query
|
|
128
|
+
select: relationships
|
|
129
|
+
kind: conformsTo
|
|
130
|
+
where: target.id == "iec60601_1Clause9"
|
|
131
|
+
display: table
|
|
132
|
+
columns: source, source.kind, target.clauseNumber, target.title
|
|
133
|
+
sort: source
|
|
134
|
+
empty: "No elements claim IEC 60601-1 §9."
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 7. Hardware Traceability
|
|
140
|
+
|
|
141
|
+
Hardware requirements traced to the elements that satisfy them:
|
|
142
|
+
|
|
143
|
+
```memo-query
|
|
144
|
+
kind: Requirement
|
|
145
|
+
where: requirementKind == "RequirementKind::hardware"
|
|
146
|
+
traverse: outgoing satisfiedBy
|
|
147
|
+
display: table
|
|
148
|
+
columns: name, kind, layer, doc
|
|
149
|
+
sort: name
|
|
150
|
+
empty: "No hardware requirements are linked to a satisfying element. Add SatisfiedBy links."
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
The allocation table proper — *which* element allocates to *which* — is relationship-shaped. It is not filtered to hardware: `AllocatedTo` joins two architecture elements and carries no layer of its own, so the receiving element's kind and layer are shown as columns instead of guessed at by a filter.
|
|
154
|
+
|
|
155
|
+
```memo-query
|
|
156
|
+
select: relationships
|
|
157
|
+
kind: allocatedTo
|
|
158
|
+
display: table
|
|
159
|
+
columns: source, target, target.kind, target.layer
|
|
160
|
+
sort: target
|
|
161
|
+
empty: "No allocations defined."
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
{{include:shared/snippets/revision-history-table.md}}
|
|
167
|
+
|
|
168
|
+
{{include:shared/snippets/approval-block.md}}
|
|
169
|
+
|
|
170
|
+
{{include:shared/snippets/references-section.md}}
|
|
@@ -23,7 +23,7 @@ This document provides detailed design specifications for **{{project.product}}*
|
|
|
23
23
|
The software units — the lowest level of decomposition per IEC 62304 — are listed below from the model:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind:
|
|
26
|
+
kind: SoftwareModule
|
|
27
27
|
display: table
|
|
28
28
|
columns: name, layer, doc
|
|
29
29
|
sort: name
|
|
@@ -23,7 +23,7 @@ This Integration Test Plan defines the approach for integration testing of **{{p
|
|
|
23
23
|
The software items in scope for this test plan, drawn from the model:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind: [
|
|
26
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
27
27
|
display: table
|
|
28
28
|
columns: name, kind, layer, doc
|
|
29
29
|
sort: name
|
|
@@ -37,8 +37,8 @@ empty: "No software items defined."
|
|
|
37
37
|
Integration test cases are listed below from the model:
|
|
38
38
|
|
|
39
39
|
```memo-query
|
|
40
|
-
kind:
|
|
41
|
-
where: layer == "
|
|
40
|
+
kind: VerificationCase
|
|
41
|
+
where: layer == "verification_validation"
|
|
42
42
|
display: table
|
|
43
43
|
columns: name, layer, doc
|
|
44
44
|
sort: name
|
|
@@ -33,7 +33,7 @@ empty: "No SoftwareSystem defined."
|
|
|
33
33
|
**Total elements:**
|
|
34
34
|
|
|
35
35
|
```memo-query
|
|
36
|
-
kind: [SoftwareSystem,
|
|
36
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
37
37
|
display: count
|
|
38
38
|
label: Total software elements
|
|
39
39
|
```
|
|
@@ -49,17 +49,17 @@ This section describes the decomposition of the software into software items per
|
|
|
49
49
|
### 3.1 Software Items
|
|
50
50
|
|
|
51
51
|
```memo-query
|
|
52
|
-
kind:
|
|
52
|
+
kind: [HardwareComponent, HardwareAssembly, SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
53
53
|
display: table
|
|
54
54
|
columns: name, layer, doc
|
|
55
55
|
sort: name
|
|
56
|
-
empty: "No
|
|
56
|
+
empty: "No SoftwareElement elements defined."
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
### 3.2 Software Units
|
|
60
60
|
|
|
61
61
|
```memo-query
|
|
62
|
-
kind:
|
|
62
|
+
kind: SoftwareModule
|
|
63
63
|
display: table
|
|
64
64
|
columns: name, layer, doc
|
|
65
65
|
sort: name
|
|
@@ -83,7 +83,8 @@ empty: "No Interface elements defined."
|
|
|
83
83
|
Software of Unknown Provenance (SOUP) used by **{{project.product}}** is listed below per IEC 62304 §5.3.3–5.3.4. For each SOUP item, functional/performance requirements and required hardware/software must be specified:
|
|
84
84
|
|
|
85
85
|
```memo-query
|
|
86
|
-
kind:
|
|
86
|
+
kind: SoftwareModule
|
|
87
|
+
where: moduleKind == "SoftwareModuleKind::soup"
|
|
87
88
|
display: table
|
|
88
89
|
columns: name, doc, layer
|
|
89
90
|
sort: name
|