@memoarchitect/ontology 0.7.0 → 0.8.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- 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 +9 -0
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +9 -5
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +82 -58
- 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 +15 -2
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -331
- 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 +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -2
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +4 -2
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +3 -2
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- 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/model/catalog/reusable_instrument.sysml +7 -5
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -60
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -15
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +42 -66
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +56 -66
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +26 -55
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +0 -18
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +51 -82
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +21 -31
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -8
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -21
- 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 +1 -1
- 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 +49 -21
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +91 -34
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +37 -10
- package/src/architecture/implementation/ui/memo_ui.sysml +78 -38
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +63 -11
- package/src/architecture/logical/structure/memo_logical_structure.sysml +21 -20
- package/src/architecture/operational/activities/memo_activities.sysml +10 -3
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
- package/src/architecture/operational/workflows/memo_workflows.sysml +29 -10
- package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +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 +39 -20
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +5 -2
- package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
- package/src/assurance/safety_risk/memo_risk.sysml +78 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +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 +121 -16
- 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/rules/ontology/ontology_invariants.sysml +213 -1
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +3 -3
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -1
- package/src/viewpoints/context/context_viewpoint.sysml +1 -1
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -1
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +1 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +1 -1
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -1
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -1
- package/src/viewpoints/operational/operational_viewpoint.sysml +1 -1
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +1 -1
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -1
- package/src/viewpoints/verification/verification_viewpoint.sysml +1 -1
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -1
- 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
|
@@ -23,7 +23,7 @@ This Software Bill of Materials (SBOM) provides a complete inventory of software
|
|
|
23
23
|
Software developed in-house for this system is listed below from the model:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind: [SoftwareSystem,
|
|
26
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
27
27
|
display: table
|
|
28
28
|
columns: name, kind, layer, doc
|
|
29
29
|
sort: name
|
|
@@ -37,7 +37,8 @@ empty: "No first-party software items defined."
|
|
|
37
37
|
All third-party and SOUP components with their versions and origins, generated from the model:
|
|
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, layer
|
|
43
44
|
sort: name
|
|
@@ -27,11 +27,11 @@ This Software Development Plan (SDP) defines the processes, activities, and task
|
|
|
27
27
|
| {{project.product}} Software System | Class B | |
|
|
28
28
|
|
|
29
29
|
```memo-query
|
|
30
|
-
kind: [SoftwareSystem,
|
|
30
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
31
31
|
display: table
|
|
32
32
|
columns: name, kind, layer, doc
|
|
33
33
|
sort: name
|
|
34
|
-
empty: "No software
|
|
34
|
+
empty: "No structural software elements defined. Add SoftwareSystem or SoftwareElement elements."
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
---
|
|
@@ -57,7 +57,8 @@ Identify the coding standards, review procedures, and quality gates applied duri
|
|
|
57
57
|
### 4.1 Software Items of Unknown Provenance (SOUP)
|
|
58
58
|
|
|
59
59
|
```memo-query
|
|
60
|
-
kind:
|
|
60
|
+
kind: SoftwareModule
|
|
61
|
+
where: moduleKind == "SoftwareModuleKind::soup"
|
|
61
62
|
display: table
|
|
62
63
|
columns: name, doc, layer
|
|
63
64
|
sort: name
|
|
@@ -68,7 +69,7 @@ empty: "No SOUP components defined."
|
|
|
68
69
|
|
|
69
70
|
```memo-query
|
|
70
71
|
kind: Hazard
|
|
71
|
-
where: layer == "
|
|
72
|
+
where: layer == "implementation"
|
|
72
73
|
display: table
|
|
73
74
|
columns: name, doc, layer
|
|
74
75
|
sort: name
|
|
@@ -23,7 +23,8 @@ This document lists all Software of Unknown Provenance (SOUP) components used in
|
|
|
23
23
|
The complete inventory of SOUP and third-party components in **{{project.product}}**, generated from the model:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind:
|
|
26
|
+
kind: SoftwareModule
|
|
27
|
+
where: moduleKind == "SoftwareModuleKind::soup"
|
|
27
28
|
display: table
|
|
28
29
|
columns: name, layer, doc
|
|
29
30
|
sort: name
|
|
@@ -37,7 +38,8 @@ empty: "No SOUP components defined. Add SOUPComponent elements to the model."
|
|
|
37
38
|
For each SOUP component, the potential impact on device safety must be evaluated.
|
|
38
39
|
|
|
39
40
|
```memo-query
|
|
40
|
-
kind:
|
|
41
|
+
kind: SoftwareModule
|
|
42
|
+
where: moduleKind == "SoftwareModuleKind::soup"
|
|
41
43
|
display: table
|
|
42
44
|
columns: name, doc
|
|
43
45
|
sort: name
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: srs
|
|
3
3
|
title: Software Requirements Specification
|
|
4
4
|
standard: IEC 62304:2006+AMD1:2015
|
|
5
|
-
clauses: ["5.2"]
|
|
5
|
+
clauses: ["5.2", "5.2.2", "5.2.3", "5.2.6"]
|
|
6
6
|
required_for: ["CE", "FDA_510k", "MDR"]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -14,7 +14,9 @@ required_for: ["CE", "FDA_510k", "MDR"]
|
|
|
14
14
|
|
|
15
15
|
## 1. Purpose
|
|
16
16
|
|
|
17
|
-
This Software Requirements Specification (SRS) defines the software requirements for **{{project.product}}** in accordance with IEC 62304:2006 §5.2.
|
|
17
|
+
This Software Requirements Specification (SRS) defines the software requirements for **{{project.product}}** in accordance with IEC 62304:2006+AMD1:2015 §5.2.
|
|
18
|
+
|
|
19
|
+
Software, hardware and system requirements are distinguished by the model's own `requirementKind` attribute, never by which layer directory a file sits in and never by what a requirement is called. There is no "software layer": hardware and software are sibling directories inside `implementation`.
|
|
18
20
|
|
|
19
21
|
---
|
|
20
22
|
|
|
@@ -24,12 +26,14 @@ Summary metrics for the requirements captured in the model:
|
|
|
24
26
|
|
|
25
27
|
```memo-query
|
|
26
28
|
kind: Requirement
|
|
29
|
+
where: requirementKind == "RequirementKind::software"
|
|
27
30
|
display: count
|
|
28
31
|
label: Total software requirements
|
|
29
32
|
```
|
|
30
33
|
|
|
31
34
|
```memo-query
|
|
32
35
|
kind: Requirement
|
|
36
|
+
where: requirementKind == "RequirementKind::system"
|
|
33
37
|
display: count
|
|
34
38
|
label: System requirements
|
|
35
39
|
```
|
|
@@ -38,25 +42,51 @@ label: System requirements
|
|
|
38
42
|
|
|
39
43
|
## 3. Functional Requirements
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
Requirements carrying a `shall` obligation — the binding ones:
|
|
42
46
|
|
|
43
47
|
```memo-query
|
|
44
48
|
kind: Requirement
|
|
45
|
-
where:
|
|
49
|
+
where: obligation == "ObligationKind::shall"
|
|
46
50
|
display: table
|
|
47
|
-
columns: name,
|
|
51
|
+
columns: name, requirementKind, safetyClass, doc
|
|
48
52
|
sort: name
|
|
49
|
-
empty: "No
|
|
53
|
+
empty: "No requirements carry a `shall` obligation. Set `obligation` on Requirement elements."
|
|
50
54
|
```
|
|
51
55
|
|
|
52
56
|
### All Software Requirements
|
|
53
57
|
|
|
54
58
|
```memo-query
|
|
55
59
|
kind: Requirement
|
|
60
|
+
where: requirementKind == "RequirementKind::software"
|
|
61
|
+
display: table
|
|
62
|
+
columns: name, requirementKind, safetyClass, doc
|
|
63
|
+
sort: name
|
|
64
|
+
empty: "No software requirements defined. Add Requirement elements with requirementKind = software."
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 3.1 Hardware-Software Interface Requirements
|
|
70
|
+
|
|
71
|
+
The hardware/software boundary is a modelled element, not a naming convention. The interfaces and ports below are the boundary this software crosses; requirements are traced to them through the model rather than selected by having "interface" in their name.
|
|
72
|
+
|
|
73
|
+
```memo-query
|
|
74
|
+
kind: [InterfaceElement, MemoPort]
|
|
56
75
|
display: table
|
|
57
76
|
columns: name, kind, layer, doc
|
|
58
77
|
sort: name
|
|
59
|
-
empty: "No
|
|
78
|
+
empty: "No interfaces or ports defined."
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Requirements satisfied by elements on that boundary:
|
|
82
|
+
|
|
83
|
+
```memo-query
|
|
84
|
+
kind: [InterfaceElement, MemoPort]
|
|
85
|
+
traverse: incoming satisfiedBy
|
|
86
|
+
display: table
|
|
87
|
+
columns: name, kind, layer, doc
|
|
88
|
+
sort: name
|
|
89
|
+
empty: "No software requirements are linked to a satisfying architecture element. Add SatisfiedBy links."
|
|
60
90
|
```
|
|
61
91
|
|
|
62
92
|
---
|
|
@@ -67,8 +97,9 @@ System requirements allocated to software per IEC 62304 §5.2, drawn from the mo
|
|
|
67
97
|
|
|
68
98
|
```memo-query
|
|
69
99
|
kind: Requirement
|
|
100
|
+
where: requirementKind == "RequirementKind::system"
|
|
70
101
|
display: table
|
|
71
|
-
columns: name,
|
|
102
|
+
columns: name, requirementKind, safetyClass, doc
|
|
72
103
|
sort: name
|
|
73
104
|
empty: "No system requirements defined."
|
|
74
105
|
```
|
|
@@ -83,21 +114,23 @@ _[TODO: Define performance requirements (response time, throughput, memory)]_
|
|
|
83
114
|
|
|
84
115
|
### 5.2 Safety Requirements
|
|
85
116
|
|
|
117
|
+
Software safety requirements are those whose `safetyClass` is set. The hazards they derive from:
|
|
118
|
+
|
|
86
119
|
```memo-query
|
|
87
120
|
kind: Hazard
|
|
88
|
-
where: layer == "software"
|
|
89
121
|
display: table
|
|
90
|
-
columns: name, doc
|
|
122
|
+
columns: name, layer, doc
|
|
91
123
|
sort: name
|
|
92
|
-
empty: "No
|
|
124
|
+
empty: "No hazards defined in the risk model."
|
|
93
125
|
```
|
|
94
126
|
|
|
95
127
|
### 5.3 Security Requirements
|
|
96
128
|
|
|
97
129
|
```memo-query
|
|
98
|
-
kind:
|
|
130
|
+
kind: SecurityRequirement
|
|
99
131
|
display: table
|
|
100
132
|
columns: name, layer, doc
|
|
133
|
+
sort: name
|
|
101
134
|
empty: "No security requirements defined."
|
|
102
135
|
```
|
|
103
136
|
|
|
@@ -105,28 +138,29 @@ empty: "No security requirements defined."
|
|
|
105
138
|
|
|
106
139
|
## 6. SOUP Requirements
|
|
107
140
|
|
|
108
|
-
|
|
141
|
+
Software of Unknown Provenance depended on by **{{project.product}}**, derived by traversing `dependsOnSoup` from the software items:
|
|
109
142
|
|
|
110
143
|
```memo-query
|
|
111
|
-
kind:
|
|
144
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
145
|
+
traverse: outgoing dependsOnSoup
|
|
112
146
|
display: table
|
|
113
|
-
columns: name, doc
|
|
147
|
+
columns: name, kind, layer, doc
|
|
114
148
|
sort: name
|
|
115
|
-
empty: "No SOUP
|
|
149
|
+
empty: "No SOUP identified. Add DependsOnSoup links from software items to the SOUP they depend on."
|
|
116
150
|
```
|
|
117
151
|
|
|
118
152
|
---
|
|
119
153
|
|
|
120
154
|
## 7. Requirements Traceability
|
|
121
155
|
|
|
122
|
-
This section is generated from the system model. The table below lists the **Requirements Traceability** elements currently defined:
|
|
123
|
-
|
|
124
156
|
```memo-query
|
|
125
157
|
kind: Requirement
|
|
158
|
+
where: requirementKind == "RequirementKind::software"
|
|
159
|
+
traverse: outgoing verifiedBy
|
|
126
160
|
display: table
|
|
127
|
-
columns: name, layer
|
|
161
|
+
columns: name, kind, layer, doc
|
|
128
162
|
sort: name
|
|
129
|
-
empty: "No software requirements to
|
|
163
|
+
empty: "No software requirements are linked to a verification case. Add VerifiedBy links."
|
|
130
164
|
```
|
|
131
165
|
|
|
132
166
|
---
|
|
@@ -35,7 +35,7 @@ label: Software requirements
|
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
```memo-query
|
|
38
|
-
kind:
|
|
38
|
+
kind: VerificationCase
|
|
39
39
|
display: count
|
|
40
40
|
label: Test cases
|
|
41
41
|
```
|
|
@@ -75,7 +75,7 @@ empty: "No software requirements defined."
|
|
|
75
75
|
This section is generated from the system model. The table below lists the **Software Requirements → Design Elements** elements currently defined:
|
|
76
76
|
|
|
77
77
|
```memo-query
|
|
78
|
-
kind: [
|
|
78
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
79
79
|
display: table
|
|
80
80
|
columns: name, kind, layer, doc
|
|
81
81
|
sort: name
|
|
@@ -89,7 +89,7 @@ empty: "No software design elements defined."
|
|
|
89
89
|
This section is generated from the system model. The table below lists the **Test Cases** elements currently defined:
|
|
90
90
|
|
|
91
91
|
```memo-query
|
|
92
|
-
kind:
|
|
92
|
+
kind: VerificationCase
|
|
93
93
|
display: table
|
|
94
94
|
columns: name, layer, doc
|
|
95
95
|
sort: name
|
|
@@ -37,7 +37,7 @@ empty: "No system requirements defined."
|
|
|
37
37
|
This section is generated from the system model. The table below lists the **System Test Cases** elements currently defined:
|
|
38
38
|
|
|
39
39
|
```memo-query
|
|
40
|
-
kind: [
|
|
40
|
+
kind: [VerificationCase, ValidationCase]
|
|
41
41
|
display: table
|
|
42
42
|
columns: name, kind, layer, doc
|
|
43
43
|
sort: name
|
|
@@ -31,7 +31,7 @@ _[TODO: Describe participant demographics, number, and selection criteria]_
|
|
|
31
31
|
This section is generated from the system model. The table below lists the **Test Scenarios** elements currently defined:
|
|
32
32
|
|
|
33
33
|
```memo-query
|
|
34
|
-
kind: [UseCase,
|
|
34
|
+
kind: [UseCase, ValidationCase]
|
|
35
35
|
display: table
|
|
36
36
|
columns: name, layer, doc
|
|
37
37
|
sort: name
|
|
@@ -14,26 +14,62 @@ required_for: ["CE", "MDR"]
|
|
|
14
14
|
|
|
15
15
|
## 1. Purpose
|
|
16
16
|
|
|
17
|
-
Documents task analysis for **{{project.product}}** per IEC 62366-1:2015 §5.4, identifying tasks
|
|
17
|
+
Documents task analysis for **{{project.product}}** per IEC 62366-1:2015+AMD1:2020 §5.4, identifying the tasks users perform — through software user interfaces and through physical interaction with the equipment — and which of them could cause a hazardous situation if performed incorrectly.
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
## 2. User Tasks
|
|
22
22
|
|
|
23
|
-
This section is generated from the system model. The table below lists the
|
|
23
|
+
This section is generated from the system model. The table below lists the user tasks and task steps currently defined:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind:
|
|
26
|
+
kind: [UserTask, TaskStep]
|
|
27
27
|
display: table
|
|
28
28
|
columns: name, layer, doc
|
|
29
29
|
sort: name
|
|
30
|
-
empty: "No
|
|
30
|
+
empty: "No UserTask or TaskStep elements defined."
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 2.1 Task Boundary — What Each Task Acts Through
|
|
34
|
+
|
|
35
|
+
A task is cyber-physical when the element it is allocated to is a user interface, an operator interface element, or a port. The set below is derived by traversing `allocatedTo` from the tasks above, so it follows the model rather than the wording of a task name.
|
|
36
|
+
|
|
37
|
+
```memo-query
|
|
38
|
+
kind: [UserTask, TaskStep]
|
|
39
|
+
traverse: outgoing allocatedTo
|
|
40
|
+
display: table
|
|
41
|
+
columns: name, kind, layer, doc
|
|
42
|
+
sort: name
|
|
43
|
+
empty: "No tasks are allocated to an interface element. Add AllocatedTo links from UserTask to the UI, operator interface, or port the task acts through."
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2.2 Operator-Facing Boundary Elements
|
|
47
|
+
|
|
48
|
+
The user-facing elements a task can act through, hardware and software alike:
|
|
49
|
+
|
|
50
|
+
```memo-query
|
|
51
|
+
kind: [UserInterface, OperatorInterfaceElement, Interface, MemoPort, PhysicalPort]
|
|
52
|
+
display: table
|
|
53
|
+
columns: name, kind, layer, doc
|
|
54
|
+
sort: name
|
|
55
|
+
empty: "No user interface or operator interface elements defined."
|
|
31
56
|
```
|
|
32
57
|
|
|
33
58
|
---
|
|
34
59
|
|
|
35
60
|
## 3. Critical Tasks
|
|
36
61
|
|
|
62
|
+
A task is critical when incorrect performance can lead to a hazardous situation. The table below is derived by traversing `causes` from the task set — the `useErrorLeadsToHazard` edge of IEC 62366-1 §5.4:
|
|
63
|
+
|
|
64
|
+
```memo-query
|
|
65
|
+
kind: [UserTask, TaskStep]
|
|
66
|
+
traverse: outgoing causes
|
|
67
|
+
display: table
|
|
68
|
+
columns: name, kind, layer, doc
|
|
69
|
+
sort: name
|
|
70
|
+
empty: "No hazardous situations linked to user tasks. Add Causes links (causeKind = useErrorLeadsToHazard) from UserTask to HazardousSituation."
|
|
71
|
+
```
|
|
72
|
+
|
|
37
73
|
Complete this section for **{{project.product}}** using the guidance below.
|
|
38
74
|
|
|
39
75
|
_[TODO: Identify which tasks are critical (could lead to hazardous situation if performed incorrectly)]_
|
|
@@ -39,7 +39,7 @@ _[TODO: Describe all use environments: clinical, home, ambulatory, etc.]_
|
|
|
39
39
|
This section is generated from the system model. The table below lists the **Use-Related Hazards** elements currently defined:
|
|
40
40
|
|
|
41
41
|
```memo-query
|
|
42
|
-
kind: [UseCase,
|
|
42
|
+
kind: [UseCase, UserTask]
|
|
43
43
|
display: table
|
|
44
44
|
columns: name, layer, doc
|
|
45
45
|
sort: name
|
|
@@ -23,7 +23,7 @@ This Use-Related Risk Analysis (URRA) identifies use errors and use-related haza
|
|
|
23
23
|
This section is generated from the system model. The table below lists the **Use Scenarios** elements currently defined:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind: [UseCase,
|
|
26
|
+
kind: [UseCase, UserTask]
|
|
27
27
|
display: table
|
|
28
28
|
columns: name, layer, doc
|
|
29
29
|
sort: name
|
|
@@ -38,7 +38,7 @@ This section is generated from the system model. The table below lists the **Use
|
|
|
38
38
|
|
|
39
39
|
```memo-query
|
|
40
40
|
kind: [Hazard, HazardousSituation]
|
|
41
|
-
where: layer == "
|
|
41
|
+
where: layer == "human-factors"
|
|
42
42
|
display: table
|
|
43
43
|
columns: name, doc, layer
|
|
44
44
|
sort: name
|
|
@@ -60,7 +60,7 @@ _[TODO: Identify the critical tasks whose failure could cause a hazardous situat
|
|
|
60
60
|
This section is generated from the system model. The table below lists the **Mitigation Measures** elements currently defined:
|
|
61
61
|
|
|
62
62
|
```memo-query
|
|
63
|
-
kind: [RiskControlMeasure,
|
|
63
|
+
kind: [RiskControlMeasure, Requirement]
|
|
64
64
|
display: table
|
|
65
65
|
columns: name, layer, doc
|
|
66
66
|
sort: name
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: fmea
|
|
3
3
|
title: Failure Mode and Effects Analysis
|
|
4
4
|
standard: IEC 60812:2018
|
|
5
|
-
clauses: ["5", "6", "7"]
|
|
5
|
+
clauses: ["5", "6", "7", "ISO 14971:2019 §7"]
|
|
6
6
|
required_for: ["CE", "FDA_510k", "FDA_PMA"]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -14,61 +14,84 @@ required_for: ["CE", "FDA_510k", "FDA_PMA"]
|
|
|
14
14
|
|
|
15
15
|
## 1. Purpose and Scope
|
|
16
16
|
|
|
17
|
-
This FMEA documents failure modes for **{{project.product}}** components, their effects, severity, and mitigations
|
|
17
|
+
This FMEA documents failure modes for **{{project.product}}** components, their effects, severity, and mitigations, across the hardware layer, the software layer, and the boundary between them. IEC 60812 is the analysis method; the results feed the ISO 14971 risk management process.
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
## 2. Component Inventory
|
|
22
22
|
|
|
23
|
-
This section is generated from the system model. The table below lists the
|
|
23
|
+
This section is generated from the system model. The table below lists the components in scope of this analysis:
|
|
24
24
|
|
|
25
25
|
```memo-query
|
|
26
|
-
kind: [
|
|
26
|
+
kind: [PhysicalAssembly, HardwareAssembly, PhysicalComponent, HardwareComponent, SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
27
27
|
display: table
|
|
28
28
|
columns: name, kind, layer, doc
|
|
29
29
|
sort: name
|
|
30
|
-
empty: "No components defined. Add
|
|
30
|
+
empty: "No components defined. Add hardware or software architecture elements."
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
35
|
## 3. FMEA Worksheet
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Each subsection traverses `hasFailureMode` from a set of architecture elements, so a failure mode appears under hardware, software, or the interface according to **what it is attached to in the model** — not according to what it is called.
|
|
38
|
+
|
|
39
|
+
### 3.1 Hardware Failure Modes
|
|
40
|
+
|
|
41
|
+
Physical component failures: electrical shorts, mechanical wear, sensor drift, power loss.
|
|
38
42
|
|
|
39
43
|
```memo-query
|
|
40
|
-
kind:
|
|
44
|
+
kind: [PhysicalAssembly, HardwareAssembly, PhysicalSubassembly, PhysicalComponent, HardwareComponent, ElectricalComponent, ElectronicComponent, ThermalComponent, FluidicComponent]
|
|
45
|
+
traverse: outgoing hasFailureMode
|
|
41
46
|
display: table
|
|
42
|
-
columns: name,
|
|
47
|
+
columns: name, effect, severityRating, probability, doc
|
|
43
48
|
sort: name
|
|
44
|
-
empty: "No hardware
|
|
49
|
+
empty: "No hardware failure modes defined. Link FailureMode elements to hardware components with HasFailureMode."
|
|
45
50
|
```
|
|
46
51
|
|
|
47
|
-
### 3.2 Software
|
|
52
|
+
### 3.2 Software Failure Modes
|
|
53
|
+
|
|
54
|
+
Software failures: logic errors, memory exhaustion, data corruption, timing violations.
|
|
48
55
|
|
|
49
56
|
```memo-query
|
|
50
|
-
kind: [
|
|
57
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
58
|
+
traverse: outgoing hasFailureMode
|
|
51
59
|
display: table
|
|
52
|
-
columns: name,
|
|
60
|
+
columns: name, effect, severityRating, probability, doc
|
|
53
61
|
sort: name
|
|
54
|
-
empty: "No software
|
|
62
|
+
empty: "No software failure modes defined. Link FailureMode elements to software items with HasFailureMode."
|
|
55
63
|
```
|
|
56
64
|
|
|
57
|
-
### 3.3 Interface
|
|
65
|
+
### 3.3 Hardware-Software Interface Failure Modes
|
|
66
|
+
|
|
67
|
+
Failures at the boundary between hardware and software — sensor data misinterpreted, actuator commands lost, protocol desynchronisation. The boundary is queried through the interface and port types, never by matching a name.
|
|
58
68
|
|
|
59
69
|
```memo-query
|
|
60
|
-
kind:
|
|
70
|
+
kind: [InterfaceElement, MemoPort]
|
|
71
|
+
traverse: incoming hasFailureMode
|
|
61
72
|
display: table
|
|
62
|
-
columns: name,
|
|
73
|
+
columns: name, effect, severityRating, probability, doc
|
|
74
|
+
sort: name
|
|
75
|
+
empty: "No interface failure modes defined. Link FailureMode elements to interfaces or ports with HasFailureMode."
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 3.4 Interface Inventory
|
|
79
|
+
|
|
80
|
+
The boundary elements the section above analyses:
|
|
81
|
+
|
|
82
|
+
```memo-query
|
|
83
|
+
kind: [InterfaceElement, MemoPort]
|
|
84
|
+
display: table
|
|
85
|
+
columns: name, kind, layer, doc
|
|
63
86
|
sort: name
|
|
64
|
-
empty: "No interfaces defined."
|
|
87
|
+
empty: "No interfaces or ports defined."
|
|
65
88
|
```
|
|
66
89
|
|
|
67
90
|
---
|
|
68
91
|
|
|
69
92
|
## 4. Risk Controls for FMEA Items
|
|
70
93
|
|
|
71
|
-
|
|
94
|
+
Risk control measures defined for **{{project.product}}**. A failure mode with no risk control belongs in §5.
|
|
72
95
|
|
|
73
96
|
```memo-query
|
|
74
97
|
kind: RiskControlMeasure
|
|
@@ -84,7 +107,7 @@ empty: "No risk controls defined."
|
|
|
84
107
|
|
|
85
108
|
Complete this section for **{{project.product}}** using the guidance below.
|
|
86
109
|
|
|
87
|
-
_[TODO: List any failure modes without risk controls and justify residual risk]_
|
|
110
|
+
_[TODO: List any failure modes without risk controls and justify residual risk per ISO 14971:2019 §7.4 and §8]_
|
|
88
111
|
|
|
89
112
|
---
|
|
90
113
|
|
|
@@ -50,7 +50,7 @@ All foreseeable hazards arising from the device, its intended use, and reasonabl
|
|
|
50
50
|
|
|
51
51
|
```memo-query
|
|
52
52
|
kind: Hazard
|
|
53
|
-
where:
|
|
53
|
+
where: hazardType == "HazardTypeKind::energyExposure"
|
|
54
54
|
display: table
|
|
55
55
|
columns: name, doc, layer
|
|
56
56
|
sort: name
|
|
@@ -61,7 +61,7 @@ empty: "No energy hazards identified."
|
|
|
61
61
|
|
|
62
62
|
```memo-query
|
|
63
63
|
kind: Hazard
|
|
64
|
-
where:
|
|
64
|
+
where: hazardType == "HazardTypeKind::biologicalContamination"
|
|
65
65
|
display: table
|
|
66
66
|
columns: name, doc, layer
|
|
67
67
|
empty: "No biological/chemical hazards identified."
|
|
@@ -114,7 +114,7 @@ empty: "No harm elements defined. Add Harm elements linked to HazardousSituation
|
|
|
114
114
|
|
|
115
115
|
```memo-query
|
|
116
116
|
kind: RiskControlMeasure
|
|
117
|
-
where:
|
|
117
|
+
where: controlKind == "RiskControlKind::inherentSafeDesign"
|
|
118
118
|
display: table
|
|
119
119
|
columns: name, doc, layer
|
|
120
120
|
empty: "No inherent safety controls."
|
|
@@ -64,7 +64,7 @@ Complete the table below for **{{project.product}}**:
|
|
|
64
64
|
### 4.1 Severity Levels
|
|
65
65
|
|
|
66
66
|
```memo-query
|
|
67
|
-
kind:
|
|
67
|
+
kind: Requirement
|
|
68
68
|
display: table
|
|
69
69
|
columns: name, doc, layer
|
|
70
70
|
empty: "No risk acceptability criteria defined. Add RiskAcceptabilityCriteria elements to the model."
|
|
@@ -83,7 +83,7 @@ Residual risk is acceptable when:
|
|
|
83
83
|
|
|
84
84
|
```memo-query
|
|
85
85
|
kind: Hazard
|
|
86
|
-
where: layer == "
|
|
86
|
+
where: layer == "safety_risk"
|
|
87
87
|
display: count
|
|
88
88
|
label: Total hazards in model
|
|
89
89
|
```
|