@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.
Files changed (204) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  4. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  5. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  6. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  7. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  8. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  9. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  10. package/examples/gpca-pump/model/catalog/gpca_context.sysml +9 -0
  11. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +9 -5
  12. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  13. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +82 -58
  14. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  15. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  16. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  17. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -2
  18. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -331
  19. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  20. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  21. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -1
  22. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +1 -1
  23. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +1 -1
  24. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +1 -1
  25. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +1 -1
  28. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +2 -2
  30. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -2
  31. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -2
  32. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -1
  33. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +2 -2
  35. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -2
  36. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +4 -2
  37. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -1
  38. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +3 -2
  39. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  40. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  41. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  42. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  43. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  44. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -5
  45. package/examples/ros-mobile-robot/README.md +40 -0
  46. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  47. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  48. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  49. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  50. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  51. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  52. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -60
  53. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  54. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -15
  55. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -9
  56. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +42 -66
  57. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +56 -66
  58. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +26 -55
  59. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -6
  60. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +0 -18
  61. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +51 -82
  62. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +21 -31
  63. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -8
  64. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -21
  65. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  66. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  67. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  68. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  69. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  70. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  71. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -1
  72. package/extensions/LICENSES/MIT.txt +19 -0
  73. package/extensions/README.md +94 -0
  74. package/extensions/aadl/memo.package.yaml +18 -0
  75. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  76. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  77. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  78. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  79. package/extensions/cloud/memo.package.yaml +18 -0
  80. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  81. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  82. package/extensions/container/memo.package.yaml +18 -0
  83. package/extensions/container/src/container_extension.sysml +37 -0
  84. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  85. package/extensions/messaging/memo.package.yaml +18 -0
  86. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  87. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  88. package/extensions/ros/memo.package.yaml +18 -0
  89. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  90. package/extensions/ros/src/ros_extension.sysml +200 -0
  91. package/extensions/template/src/extension.sysml +37 -0
  92. package/memo.manifest.yaml +13 -2
  93. package/methodologies/default/memo.package.yaml +1 -1
  94. package/methodologies/gpca/memo.package.yaml +1 -1
  95. package/ontology/memo.package.yaml +1 -1
  96. package/package.json +5 -3
  97. package/profile/memo.package.yaml +1 -1
  98. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  99. package/src/architecture/functional/behavior/memo_behavior.sysml +49 -21
  100. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  101. package/src/architecture/functional/functions/memo_functions.sysml +91 -34
  102. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  103. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +37 -10
  104. package/src/architecture/implementation/ui/memo_ui.sysml +78 -38
  105. package/src/architecture/logical/interfaces/memo_interfaces.sysml +63 -11
  106. package/src/architecture/logical/structure/memo_logical_structure.sysml +21 -20
  107. package/src/architecture/operational/activities/memo_activities.sysml +10 -3
  108. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  109. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  110. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  111. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  112. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  113. package/src/architecture/operational/workflows/memo_workflows.sysml +29 -10
  114. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  115. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  116. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  117. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  118. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  119. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  120. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  121. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  122. package/src/artifacts/standards/iec_60812.sysml +51 -0
  123. package/src/artifacts/standards/iec_62304.sysml +210 -0
  124. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  125. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  126. package/src/artifacts/standards/iso_13485.sysml +113 -0
  127. package/src/artifacts/standards/iso_14971.sysml +94 -0
  128. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  129. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  130. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  131. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  132. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  133. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  134. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  135. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  136. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  137. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  138. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  139. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  140. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  141. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  142. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  143. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  144. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  145. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  146. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  147. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  148. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  149. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  150. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  151. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  152. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  153. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  154. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  155. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  156. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  157. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  158. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  159. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  160. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  161. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  162. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  163. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  164. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  165. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  166. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  167. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  168. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  169. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  170. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  171. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  172. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  173. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  174. package/src/core/annotations/memo_annotations.sysml +25 -6
  175. package/src/core/common/memo_common.sysml +121 -16
  176. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  177. package/src/core/dimensions/dimensions.sysml +12 -0
  178. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  179. package/src/core/relationships/memo_relationships.sysml +199 -196
  180. package/src/memo_namespaces.sysml +30 -0
  181. package/src/methodology/core/memo_core.sysml +24 -0
  182. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  183. package/src/rules/ontology/ontology_invariants.sysml +213 -1
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +3 -3
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -1
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -1
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +1 -0
  189. package/src/viewpoints/functional/functional_viewpoint.sysml +1 -1
  190. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -1
  191. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -1
  192. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -1
  193. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +1 -1
  194. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -1
  195. package/src/viewpoints/verification/verification_viewpoint.sysml +1 -1
  196. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -1
  197. package/examples/extensions/README.md +0 -16
  198. package/examples/extensions/template/src/extension.sysml +0 -15
  199. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  200. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  201. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  202. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  203. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  204. /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
- item def Threat specializes RiskDriver {
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 MemoPart {
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
- item def CyberRisk specializes Risk {
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
- item def TrustBoundary specializes InterfaceElement {
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
- part def SecurityClaim specializes MemoEvidence {
98
- attribute claimText : String;
99
- attribute claimScope : String;
100
- attribute supportedByEvidence : String;
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
- // A use scenario whose performance could lead to a hazardous situation
23
- // (IEC 62366-1 3.9); selected for summative evaluation.
24
- action def HazardRelatedUseScenario specializes MemoScenario {
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
- part def FormativeEvaluation specializes MemoEvidence {
30
- attribute evaluationMethod : String;
31
- attribute findingsSummary : String;
32
- attribute designChangesTriggered : String;
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
- part def UsabilityValidation specializes MemoEvidence {
36
- attribute participantProfile : String;
37
- attribute participantCount : Integer;
38
- attribute acceptanceCriteria : String;
39
- attribute resultSummary : String;
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
- connection def CommitsUseError :> MemoRelationship {
43
- end task : UserTask;
44
- end useError : UseError;
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 def EvaluatesTask :> MemoRelationship {
47
- end evaluation : MemoEvidence;
48
- end task : UserTask;
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
  }