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