@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
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: sad-system
|
|
3
|
+
title: System Architecture Description
|
|
4
|
+
standard: ISO/IEC/IEEE 42010:2022
|
|
5
|
+
clauses: ["5", "6", "IEC 62304:2006+AMD1:2015 §5.3", "IEC 60601-1:2005+AMD1:2012+AMD2:2020 §4.2"]
|
|
6
|
+
required_for: ["CE", "FDA_510k", "MDR"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
{{include:shared/snippets/document-control-header.md}}
|
|
10
|
+
|
|
11
|
+
{{toc}}
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Purpose
|
|
16
|
+
|
|
17
|
+
This System Architecture Description (SAD) defines the overall cyber-physical architecture of **{{project.product}}** per ISO/IEC/IEEE 42010:2022 and satisfies architecture requirements across IEC 62304 §5.3 (software) and IEC 60601-1 (hardware).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 2. System Overview
|
|
22
|
+
|
|
23
|
+
A high-level view of the **{{project.product}}** system, drawn live from the architecture model:
|
|
24
|
+
|
|
25
|
+
```memo-query
|
|
26
|
+
kind: [SoftwareSystem, HardwareAssembly, PhysicalAssembly]
|
|
27
|
+
display: table
|
|
28
|
+
columns: name, layer, doc
|
|
29
|
+
sort: name
|
|
30
|
+
empty: "No system-level elements defined."
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Total elements:**
|
|
34
|
+
|
|
35
|
+
```memo-query
|
|
36
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule, HardwareAssembly, PhysicalAssembly, PhysicalSubassembly, HardwareComponent, PhysicalComponent]
|
|
37
|
+
display: count
|
|
38
|
+
label: Total system elements
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 3. SEI Viewpoints
|
|
44
|
+
|
|
45
|
+
This architecture is described using the Software Engineering Institute (SEI) Views and Beyond approach, adapted for cyber-physical systems.
|
|
46
|
+
|
|
47
|
+
### 3.1 Module View (Implementation Structure)
|
|
48
|
+
|
|
49
|
+
The static structure of the system's implementation units. Hardware and software are sibling directories in the `implementation` layer, so the two subsections are distinguished by **kind**, not by a layer filter — there is no hardware layer and no software layer.
|
|
50
|
+
|
|
51
|
+
#### 3.1.1 Software Implementation Units (IEC 62304 §5.3.1)
|
|
52
|
+
|
|
53
|
+
```memo-query
|
|
54
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
55
|
+
display: table
|
|
56
|
+
columns: name, layer, doc
|
|
57
|
+
sort: name
|
|
58
|
+
empty: "No software implementation units defined."
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### 3.1.2 Hardware Implementation Units
|
|
62
|
+
|
|
63
|
+
```memo-query
|
|
64
|
+
kind: [PhysicalAssembly, HardwareAssembly, PhysicalSubassembly, PhysicalComponent, HardwareComponent]
|
|
65
|
+
display: table
|
|
66
|
+
columns: name, layer, doc
|
|
67
|
+
sort: name
|
|
68
|
+
empty: "No hardware implementation units defined."
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 3.2 Component-and-Connector (C&C) View (Runtime Execution)
|
|
72
|
+
|
|
73
|
+
Runtime behaviour: the components executing in the system and the connectors through which they interact.
|
|
74
|
+
|
|
75
|
+
#### 3.2.1 Runtime Environments
|
|
76
|
+
|
|
77
|
+
```memo-query
|
|
78
|
+
kind: [RuntimeEnvironment, DeploymentUnit]
|
|
79
|
+
display: table
|
|
80
|
+
columns: name, layer, doc
|
|
81
|
+
sort: name
|
|
82
|
+
empty: "No runtime environments or deployment units defined."
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### 3.2.2 Interfaces and Data Flows
|
|
86
|
+
|
|
87
|
+
Cyber-physical interactions and data flows between components:
|
|
88
|
+
|
|
89
|
+
```memo-query
|
|
90
|
+
kind: [Interface, LogicalInterface, ComponentExchange, InterfaceElement, MemoPort, DataPort, SensorPort, CommandPort, SoftwarePort, PhysicalPort, LogicalPort]
|
|
91
|
+
display: table
|
|
92
|
+
columns: name, kind, layer, doc
|
|
93
|
+
sort: name
|
|
94
|
+
empty: "No interfaces, ports or component exchanges defined."
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 3.3 Allocation View (Environment Mapping)
|
|
98
|
+
|
|
99
|
+
Software elements mapped to their execution environments.
|
|
100
|
+
|
|
101
|
+
#### 3.3.1 Deployment Units
|
|
102
|
+
|
|
103
|
+
```memo-query
|
|
104
|
+
kind: DeploymentUnit
|
|
105
|
+
traverse: outgoing deploysTo
|
|
106
|
+
display: table
|
|
107
|
+
columns: name, kind, layer, doc
|
|
108
|
+
sort: name
|
|
109
|
+
empty: "No deployments defined. Add DeploysTo links from DeploymentUnit to the processing node."
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 4. Architecture Decisions & Segregation
|
|
115
|
+
|
|
116
|
+
Significant architecture decisions, alternatives considered, and rationale — including decisions driven by risk control measures (ISO 14971) or cybersecurity considerations.
|
|
117
|
+
|
|
118
|
+
### 4.1 Segregation of Safety Classes (IEC 62304 §5.3.5)
|
|
119
|
+
|
|
120
|
+
_[TODO: Describe how safety-critical items are segregated from non-safety-critical items, and the rationale for the integrity of each boundary]_
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 5. SOUP Components
|
|
125
|
+
|
|
126
|
+
Software of Unknown Provenance used by **{{project.product}}**, derived by traversing `dependsOnSoup` from the software items. MEMO has no `SOUPComponent` kind: SOUP is a *relationship* a project's own software item has to a third-party item, which is why it is traversed rather than typed.
|
|
127
|
+
|
|
128
|
+
```memo-query
|
|
129
|
+
kind: [SoftwareSystem, SoftwareComponent, SoftwareModule]
|
|
130
|
+
traverse: outgoing dependsOnSoup
|
|
131
|
+
display: table
|
|
132
|
+
columns: name, kind, layer, doc
|
|
133
|
+
sort: name
|
|
134
|
+
empty: "No SOUP identified. Add DependsOnSoup links from software items to the SOUP they depend on."
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 6. Standards Compliance and Traceability
|
|
140
|
+
|
|
141
|
+
Maps architectural elements to the regulatory clauses they claim, for compliance audits. Both tables are relationship tables — rows are `ConformsTo` links, with columns drawn from both endpoints. Each is scoped to one standard by the clause's declaring package, since the standards library is one package per standard; a clause *number* would not do it, because "5" is a clause of seven of the standards MEMO ships.
|
|
142
|
+
|
|
143
|
+
### 6.1 Compliance with IEC 62304
|
|
144
|
+
|
|
145
|
+
```memo-query
|
|
146
|
+
select: relationships
|
|
147
|
+
kind: conformsTo
|
|
148
|
+
where: target.package == "memo_artifacts_standards_iec_62304"
|
|
149
|
+
display: table
|
|
150
|
+
columns: source, source.kind, target.clauseNumber, target.title
|
|
151
|
+
sort: target.clauseNumber
|
|
152
|
+
empty: "No IEC 62304 compliance traces defined."
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 6.2 Compliance with IEC 60601-1
|
|
156
|
+
|
|
157
|
+
```memo-query
|
|
158
|
+
select: relationships
|
|
159
|
+
kind: conformsTo
|
|
160
|
+
where: target.package == "memo_artifacts_standards_iec_60601_1"
|
|
161
|
+
display: table
|
|
162
|
+
columns: source, source.kind, target.clauseNumber, target.title
|
|
163
|
+
sort: target.clauseNumber
|
|
164
|
+
empty: "No IEC 60601-1 compliance traces defined."
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
{{include:shared/snippets/revision-history-table.md}}
|
|
170
|
+
|
|
171
|
+
{{include:shared/snippets/approval-block.md}}
|
|
172
|
+
|
|
173
|
+
{{include:shared/snippets/references-section.md}}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: standards-checklist
|
|
3
|
+
title: Standards Conformance Checklist
|
|
4
|
+
standard: ISO 13485:2016
|
|
5
|
+
clauses: ["4.2", "7.3.10"]
|
|
6
|
+
required_for: ["CE", "FDA_510k", "FDA_PMA", "MDR"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
{{include:shared/snippets/document-control-header.md}}
|
|
10
|
+
|
|
11
|
+
{{toc}}
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Purpose
|
|
16
|
+
|
|
17
|
+
This checklist is the clause-by-clause conformance record for **{{project.product}}**. It lists every clause the project's declared regulatory regimes require, states whether the project claims it, and — where it does — names the element that carries the claim and the evidence behind it.
|
|
18
|
+
|
|
19
|
+
It replaces a hand-maintained conformance matrix. The difference that matters is that this one **cannot silently go empty**: it is generated from the clause library, so a clause nobody has claimed appears as a row marked *Gap*, not as an absent line.
|
|
20
|
+
|
|
21
|
+
**How to read this document.**
|
|
22
|
+
|
|
23
|
+
| Status | Meaning |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| ✅ Evidenced | Something claims the clause, and that claim reaches verification, a risk control, or an approved controlled document. |
|
|
26
|
+
| 🟡 Claimed | Something claims the clause, but no evidence is linked to it yet. |
|
|
27
|
+
| ❌ Gap | Nothing in the project claims the clause. |
|
|
28
|
+
|
|
29
|
+
A **Gap** is not a defect in the model. Coverage is profile-dependent — that is why it is a report and not a consistency rule, and why `memo_rules_coverage` is deliberately empty. A gap says the project has not claimed that clause *yet*, which is the normal state of a project in flight.
|
|
30
|
+
|
|
31
|
+
**Scope.** The clauses below are those of the standards the project's `regulatoryRegime` declaration pulls in. Method and reference standards that no regime mandates — the FMEA method, the architecture-description standard — are listed separately in §4; their clauses are claimable but not required, so they have no gap count.
|
|
32
|
+
|
|
33
|
+
`memo standards check` prints the same numbers at the command line, from the same computation.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 2. Coverage Summary
|
|
38
|
+
|
|
39
|
+
```memo-standards
|
|
40
|
+
display: summary
|
|
41
|
+
empty: "No standards are in scope. Declare `regulatoryRegime` on the project's ProjectMethodBinding."
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 3. Clause-by-Clause Record
|
|
47
|
+
|
|
48
|
+
Every required clause, including the ones nothing claims. The unclaimed rows are the point of the document.
|
|
49
|
+
|
|
50
|
+
```memo-standards
|
|
51
|
+
display: checklist
|
|
52
|
+
status: all
|
|
53
|
+
empty: "No standards are in scope for the declared regimes."
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 4. Standards Not Required by the Declared Regimes
|
|
59
|
+
|
|
60
|
+
Method and reference standards, and packs outside this project's submission targets. A clause claimed here is real traceability; it is simply not something a regime obliges this project to claim, so nothing here is counted as a gap.
|
|
61
|
+
|
|
62
|
+
```memo-standards
|
|
63
|
+
display: checklist
|
|
64
|
+
scope: unrequired
|
|
65
|
+
status: claimed
|
|
66
|
+
empty: "No clauses are claimed outside the required standards."
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 5. Open Gaps
|
|
72
|
+
|
|
73
|
+
The working list. Each row is a clause a declared regime requires and nothing in the project claims.
|
|
74
|
+
|
|
75
|
+
```memo-standards
|
|
76
|
+
display: checklist
|
|
77
|
+
status: gaps
|
|
78
|
+
empty: "No open gaps — every required clause is claimed."
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
{{include:shared/snippets/revision-history-table.md}}
|
|
84
|
+
|
|
85
|
+
{{include:shared/snippets/approval-block.md}}
|
|
86
|
+
|
|
87
|
+
{{include:shared/snippets/references-section.md}}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: standards-traceability
|
|
3
|
+
title: Standards Traceability Matrix
|
|
4
|
+
standard: ISO 13485:2016
|
|
5
|
+
clauses: ["7.3.9", "IEC 62304:2006+AMD1:2015 §5.1", "IEC 60601-1:2005+AMD1:2012+AMD2:2020 §4.2", "ISO 14971:2019 §4.4"]
|
|
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 Standards Traceability Matrix cross-references the requirements and architectural elements of the **{{project.product}}** cyber-physical system against the clauses of applicable regulatory standards. It is the automated compliance checklist an auditor reads.
|
|
18
|
+
|
|
19
|
+
**How to read this document.** Every table below is *relationship-shaped*: a row is a `ConformsTo` link, with the clause on one end and the conforming element on the other. `select: relationships` makes the link the row, so both ends are addressable as columns.
|
|
20
|
+
|
|
21
|
+
Each section is scoped to one standard by the clause's declaring package — the standards library is one package per standard, which makes `target.package` an exact per-standard selector. A clause *number* is not one: "5" is a clause of seven of the standards MEMO ships, so a matrix filtered on clause number would silently mix IEC 62304 §5 with ISO 14971 §5.
|
|
22
|
+
|
|
23
|
+
A clause with no `ConformsTo` link is a gap. Enumerating the gaps is `memo standards check`, not this document — this document shows what the project *does* claim.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. IEC 62304 Software Lifecycle Processes
|
|
28
|
+
|
|
29
|
+
Maps IEC 62304 clauses to the system elements that satisfy them.
|
|
30
|
+
|
|
31
|
+
```memo-query
|
|
32
|
+
select: relationships
|
|
33
|
+
kind: conformsTo
|
|
34
|
+
where: target.package == "memo_artifacts_standards_iec_62304"
|
|
35
|
+
display: table
|
|
36
|
+
columns: target.clauseNumber, target.title, source, source.kind
|
|
37
|
+
sort: target.clauseNumber
|
|
38
|
+
empty: "No IEC 62304 compliance traces defined."
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2.1 Document Traceability (IEC 62304)
|
|
42
|
+
|
|
43
|
+
```memo-query
|
|
44
|
+
select: relationships
|
|
45
|
+
kind: tracesToDocument
|
|
46
|
+
where: source.package == "memo_artifacts_standards_iec_62304"
|
|
47
|
+
display: table
|
|
48
|
+
columns: source.clauseNumber, source.title, target, sectionReference
|
|
49
|
+
sort: source.clauseNumber
|
|
50
|
+
empty: "No IEC 62304 document traces defined."
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 3. IEC 60601-1 Medical Electrical Equipment Safety
|
|
56
|
+
|
|
57
|
+
Maps IEC 60601-1 clauses to the hardware elements and requirements that satisfy them.
|
|
58
|
+
|
|
59
|
+
```memo-query
|
|
60
|
+
select: relationships
|
|
61
|
+
kind: conformsTo
|
|
62
|
+
where: target.package == "memo_artifacts_standards_iec_60601_1"
|
|
63
|
+
display: table
|
|
64
|
+
columns: target.clauseNumber, target.title, source, source.kind
|
|
65
|
+
sort: target.clauseNumber
|
|
66
|
+
empty: "No IEC 60601-1 compliance traces defined."
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 3.1 Document Traceability (IEC 60601-1)
|
|
70
|
+
|
|
71
|
+
```memo-query
|
|
72
|
+
select: relationships
|
|
73
|
+
kind: tracesToDocument
|
|
74
|
+
where: source.package == "memo_artifacts_standards_iec_60601_1"
|
|
75
|
+
display: table
|
|
76
|
+
columns: source.clauseNumber, source.title, target, sectionReference
|
|
77
|
+
sort: source.clauseNumber
|
|
78
|
+
empty: "No IEC 60601-1 document traces defined."
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 4. ISO 14971 Risk Management
|
|
84
|
+
|
|
85
|
+
Maps ISO 14971 risk management clauses to their conforming elements — the risk management plan, the hazard analysis, the risk controls.
|
|
86
|
+
|
|
87
|
+
```memo-query
|
|
88
|
+
select: relationships
|
|
89
|
+
kind: conformsTo
|
|
90
|
+
where: target.package == "memo_artifacts_standards_iso_14971"
|
|
91
|
+
display: table
|
|
92
|
+
columns: target.clauseNumber, target.title, source, source.kind
|
|
93
|
+
sort: target.clauseNumber
|
|
94
|
+
empty: "No ISO 14971 compliance traces defined."
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 5. Standards and Clauses in Scope
|
|
100
|
+
|
|
101
|
+
The clause library itself, as element queries — the standards this project's documents cite, and the clauses available to claim.
|
|
102
|
+
|
|
103
|
+
```memo-query
|
|
104
|
+
kind: RegulatoryStandard
|
|
105
|
+
display: table
|
|
106
|
+
columns: name, designation, edition, issuer
|
|
107
|
+
sort: designation
|
|
108
|
+
empty: "No standards declared. Add RegulatoryStandard instances for the standards this project claims."
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```memo-query
|
|
112
|
+
kind: StandardClause
|
|
113
|
+
display: table
|
|
114
|
+
columns: clauseNumber, title, normativeStrength, doc
|
|
115
|
+
sort: clauseNumber
|
|
116
|
+
empty: "No standard clauses declared. Add StandardClause instances for the clauses this project claims."
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
{{include:shared/snippets/revision-history-table.md}}
|
|
122
|
+
|
|
123
|
+
{{include:shared/snippets/approval-block.md}}
|
|
124
|
+
|
|
125
|
+
{{include:shared/snippets/references-section.md}}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: syrs
|
|
3
|
+
title: System Requirements Specification
|
|
4
|
+
standard: IEC 60601-1:2005+AMD1:2012+AMD2:2020
|
|
5
|
+
clauses: ["4.2", "IEC 62304:2006+AMD1:2015 §5.2", "ISO 14971:2019 §5"]
|
|
6
|
+
required_for: ["CE", "FDA_510k", "MDR"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
{{include:shared/snippets/document-control-header.md}}
|
|
10
|
+
|
|
11
|
+
{{toc}}
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Purpose
|
|
16
|
+
|
|
17
|
+
This System Requirements Specification (SyRS) defines the top-level requirements for the **{{project.product}}** cyber-physical system, serving as the bridge between user needs and the lower-level hardware (IEC 60601-1) and software (IEC 62304) requirements.
|
|
18
|
+
|
|
19
|
+
One standard is named above because a document claims one; the others it feeds are carried in `clauses:`.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. System Requirements Summary
|
|
24
|
+
|
|
25
|
+
Summary metrics for the system requirements captured in the model:
|
|
26
|
+
|
|
27
|
+
```memo-query
|
|
28
|
+
kind: Requirement
|
|
29
|
+
where: requirementKind == "RequirementKind::system"
|
|
30
|
+
display: count
|
|
31
|
+
label: Total system requirements
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 3. Functional Requirements
|
|
37
|
+
|
|
38
|
+
Binding system requirements — those carrying a `shall` obligation:
|
|
39
|
+
|
|
40
|
+
```memo-query
|
|
41
|
+
kind: Requirement
|
|
42
|
+
where: obligation == "ObligationKind::shall"
|
|
43
|
+
display: table
|
|
44
|
+
columns: name, requirementKind, doc
|
|
45
|
+
sort: name
|
|
46
|
+
empty: "No requirements carry a `shall` obligation. Set `obligation` on Requirement elements."
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### All System Requirements
|
|
50
|
+
|
|
51
|
+
```memo-query
|
|
52
|
+
kind: Requirement
|
|
53
|
+
where: requirementKind == "RequirementKind::system"
|
|
54
|
+
display: table
|
|
55
|
+
columns: name, requirementKind, safetyClass, doc
|
|
56
|
+
sort: name
|
|
57
|
+
empty: "No system requirements defined. Add Requirement elements with requirementKind = system."
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 4. Requirements Allocation
|
|
63
|
+
|
|
64
|
+
How system requirements are allocated down to hardware and software.
|
|
65
|
+
|
|
66
|
+
### 4.1 Elements System Requirements Are Satisfied By
|
|
67
|
+
|
|
68
|
+
```memo-query
|
|
69
|
+
kind: Requirement
|
|
70
|
+
where: requirementKind == "RequirementKind::system"
|
|
71
|
+
traverse: outgoing satisfiedBy
|
|
72
|
+
display: table
|
|
73
|
+
columns: name, kind, layer, doc
|
|
74
|
+
sort: name
|
|
75
|
+
empty: "No system requirements are linked to a satisfying element. Add SatisfiedBy links."
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 4.2 Function Allocation
|
|
79
|
+
|
|
80
|
+
The allocation table proper — which element allocates to which — is a relationship table, not an element table. It is grouped by the kind of the receiving element, which is where the hardware/software split actually lives: `AllocatedTo` joins two architecture elements and carries no layer of its own, so a single comparison cannot ask for "the hardware ones" without naming one hardware kind and dropping the rest.
|
|
81
|
+
|
|
82
|
+
```memo-query
|
|
83
|
+
select: relationships
|
|
84
|
+
kind: allocatedTo
|
|
85
|
+
display: grouped
|
|
86
|
+
group_by: target.kind
|
|
87
|
+
columns: source, source.kind, target, target.layer
|
|
88
|
+
sort: source
|
|
89
|
+
empty: "No allocations defined. Add AllocatedTo links."
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 5. Non-Functional Requirements
|
|
95
|
+
|
|
96
|
+
### 5.1 System Performance Requirements
|
|
97
|
+
|
|
98
|
+
_[TODO: Define system performance requirements (e.g. overall throughput, latency, physical capacities)]_
|
|
99
|
+
|
|
100
|
+
### 5.2 System Safety Requirements
|
|
101
|
+
|
|
102
|
+
Hazards from the ISO 14971 analysis that system-level risk controls must address:
|
|
103
|
+
|
|
104
|
+
```memo-query
|
|
105
|
+
kind: [Hazard, HazardousSituation]
|
|
106
|
+
display: table
|
|
107
|
+
columns: name, layer, doc
|
|
108
|
+
sort: name
|
|
109
|
+
empty: "No hazards defined in the risk model."
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The risk controls answering them:
|
|
113
|
+
|
|
114
|
+
```memo-query
|
|
115
|
+
kind: RiskControlMeasure
|
|
116
|
+
display: table
|
|
117
|
+
columns: name, layer, doc
|
|
118
|
+
sort: name
|
|
119
|
+
empty: "No risk controls defined."
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
{{include:shared/snippets/revision-history-table.md}}
|
|
125
|
+
|
|
126
|
+
{{include:shared/snippets/approval-block.md}}
|
|
127
|
+
|
|
128
|
+
{{include:shared/snippets/references-section.md}}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
package memo_assurance_cybersecurity {
|
|
2
|
+
private import Metaobjects::SemanticMetadata;
|
|
2
3
|
private import ScalarValues::*;
|
|
4
|
+
private import memo_core_relationships::*; // MemoRelationship
|
|
3
5
|
|
|
4
6
|
private import memo_core_common::*;
|
|
5
7
|
private import memo_core_enumerations::*;
|
|
@@ -27,7 +29,7 @@ package memo_assurance_cybersecurity {
|
|
|
27
29
|
attribute authenticationExpected : Boolean;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
part def Threat specializes RiskDriver {
|
|
31
33
|
attribute threatCategory : ThreatCategoryKind;
|
|
32
34
|
attribute attackVector : String;
|
|
33
35
|
attribute threatSource : String;
|
|
@@ -37,7 +39,7 @@ package memo_assurance_cybersecurity {
|
|
|
37
39
|
attribute strideCategory : ThreatCategoryKind;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
item def Vulnerability specializes
|
|
42
|
+
item def Vulnerability specializes RiskItem {
|
|
41
43
|
attribute weakness : String;
|
|
42
44
|
attribute exploitability : String;
|
|
43
45
|
attribute discoveryMethod : String;
|
|
@@ -46,18 +48,6 @@ package memo_assurance_cybersecurity {
|
|
|
46
48
|
attribute remediable : Boolean;
|
|
47
49
|
}
|
|
48
50
|
|
|
49
|
-
// A scenario specialization: an attack path through the
|
|
50
|
-
// system, classified by the shared scenario dimensions with purpose
|
|
51
|
-
// `cybersecurity`.
|
|
52
|
-
action def ThreatScenario specializes MemoScenario {
|
|
53
|
-
attribute actorDescription : String;
|
|
54
|
-
attribute assumptionSummary : String;
|
|
55
|
-
attribute guaranteeSummary : String;
|
|
56
|
-
attribute securityObjective : String;
|
|
57
|
-
attribute abuseCaseReference : String;
|
|
58
|
-
attribute defaultCategory : ThreatCategoryKind;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
51
|
item def CyberHazard specializes Hazard {
|
|
62
52
|
attribute securityImpact : String;
|
|
63
53
|
attribute safetyImpact : String;
|
|
@@ -66,7 +56,7 @@ package memo_assurance_cybersecurity {
|
|
|
66
56
|
attribute linkedSafetyHazardId : String;
|
|
67
57
|
}
|
|
68
58
|
|
|
69
|
-
|
|
59
|
+
part def CyberRisk specializes Risk {
|
|
70
60
|
attribute exploitabilityEstimate : String;
|
|
71
61
|
attribute attackComplexity : String;
|
|
72
62
|
attribute detectability : DetectionKind;
|
|
@@ -88,15 +78,44 @@ package memo_assurance_cybersecurity {
|
|
|
88
78
|
attribute defaultConcern : ConcernKind;
|
|
89
79
|
}
|
|
90
80
|
|
|
91
|
-
|
|
81
|
+
part def TrustBoundary specializes InterfaceElement {
|
|
92
82
|
attribute boundaryType : String;
|
|
93
83
|
attribute crossingConstraint : String;
|
|
94
84
|
attribute trustAssumption : String;
|
|
95
85
|
}
|
|
96
86
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
87
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
88
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
89
|
+
// types declared here, and core must not depend on a domain package.
|
|
90
|
+
connection def Exploits :> MemoRelationship {
|
|
91
|
+
end realizedThreat : RequirementDriver :>> source;
|
|
92
|
+
end enablingVulnerability : Vulnerability :>> target;
|
|
93
|
+
}
|
|
94
|
+
abstract connection exploitsLinks : Exploits[*];
|
|
95
|
+
metadata def <exploits> ExploitsMetadata :> SemanticMetadata {
|
|
96
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
97
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
98
|
+
:>> baseType = exploitsLinks meta SysML::Usage;
|
|
99
|
+
}
|
|
100
|
+
connection def RealizedByScenario :> MemoRelationship {
|
|
101
|
+
end realizedThreat : RequirementDriver :>> source;
|
|
102
|
+
end scenario : MemoScenario :>> target;
|
|
103
|
+
}
|
|
104
|
+
abstract connection realizedByScenarioLinks : RealizedByScenario[*];
|
|
105
|
+
metadata def <realizedByScenario> RealizedByScenarioMetadata :> SemanticMetadata {
|
|
106
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
107
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
108
|
+
:>> baseType = realizedByScenarioLinks meta SysML::Usage;
|
|
109
|
+
}
|
|
110
|
+
connection def ImpactsSafety :> MemoRelationship {
|
|
111
|
+
attribute tracePurpose : String;
|
|
112
|
+
end cyberElement : MemoPart :>> source;
|
|
113
|
+
end safetyElement : RiskItem :>> target;
|
|
114
|
+
}
|
|
115
|
+
abstract connection impactsSafetyLinks : ImpactsSafety[*];
|
|
116
|
+
metadata def <impactsSafety> ImpactsSafetyMetadata :> SemanticMetadata {
|
|
117
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
118
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
119
|
+
:>> baseType = impactsSafetyLinks meta SysML::Usage;
|
|
101
120
|
}
|
|
102
121
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// engineering chain: user → task → use error → hazard → risk control →
|
|
5
5
|
// usability validation.
|
|
6
6
|
package memo_assurance_human_factors {
|
|
7
|
+
private import Metaobjects::SemanticMetadata;
|
|
7
8
|
private import ScalarValues::*;
|
|
8
9
|
|
|
9
10
|
private import memo_core_common::*;
|
|
@@ -19,32 +20,38 @@ package memo_assurance_human_factors {
|
|
|
19
20
|
attribute rootCauseType : String;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
attribute hazardReference : String;
|
|
26
|
-
attribute selectionRationale : String;
|
|
23
|
+
connection def CommitsUseError :> MemoRelationship {
|
|
24
|
+
end task : UserTask :>> source;
|
|
25
|
+
end useError : UseError :>> target;
|
|
27
26
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
abstract connection commitsUseErrorLinks : CommitsUseError[*];
|
|
28
|
+
metadata def <commitsUseError> CommitsUseErrorMetadata :> SemanticMetadata {
|
|
29
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
30
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
31
|
+
:>> baseType = commitsUseErrorLinks meta SysML::Usage;
|
|
33
32
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
connection def EvaluatesTask :> MemoRelationship {
|
|
34
|
+
end evaluation : MemoEvidence :>> source;
|
|
35
|
+
end task : UserTask :>> target;
|
|
36
|
+
}
|
|
37
|
+
abstract connection evaluatesTaskLinks : EvaluatesTask[*];
|
|
38
|
+
metadata def <evaluatesTask> EvaluatesTaskMetadata :> SemanticMetadata {
|
|
39
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
40
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
41
|
+
:>> baseType = evaluatesTaskLinks meta SysML::Usage;
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
45
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
46
|
+
// types declared here, and core must not depend on a domain package.
|
|
47
|
+
connection def TestedByUsability :> MemoRelationship {
|
|
48
|
+
end uiElementOrTask : MemoPart :>> source;
|
|
49
|
+
end usabilityTest : MemoEvidence :>> target;
|
|
45
50
|
}
|
|
46
|
-
connection
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
abstract connection testedByUsabilityLinks : TestedByUsability[*];
|
|
52
|
+
metadata def <testedByUsability> TestedByUsabilityMetadata :> SemanticMetadata {
|
|
53
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
54
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
55
|
+
:>> baseType = testedByUsabilityLinks meta SysML::Usage;
|
|
49
56
|
}
|
|
50
57
|
}
|