@memoarchitect/ontology 0.4.4

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 (217) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +70 -0
  3. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +210 -0
  4. package/examples/gpca-pump/memo.config.yaml +9 -0
  5. package/examples/gpca-pump/methodology/gpca_methodology.sysml +11 -0
  6. package/examples/gpca-pump/methodology/gpca_profiles.sysml +25 -0
  7. package/examples/gpca-pump/methodology/gpca_scope.sysml +25 -0
  8. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +231 -0
  9. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +272 -0
  10. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +81 -0
  11. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +363 -0
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +205 -0
  13. package/examples/gpca-pump/model/catalog/gpca_context.sysml +113 -0
  14. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +172 -0
  15. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +173 -0
  16. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +1062 -0
  17. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +209 -0
  18. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +53 -0
  19. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1505 -0
  20. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +744 -0
  21. package/examples/gpca-pump/model/catalog/gpca_system.sysml +144 -0
  22. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +696 -0
  23. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +285 -0
  24. package/examples/gpca-pump/model/samples/README.md +24 -0
  25. package/examples/gpca-pump/model/samples/action_flow_view.sysml +72 -0
  26. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +9 -0
  27. package/examples/gpca-pump/model/samples/functional_flow_view.sysml +153 -0
  28. package/examples/gpca-pump/model/samples/interconnection_view.sysml +93 -0
  29. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +99 -0
  30. package/examples/gpca-pump/model/samples/operational_behaviour_view.sysml +145 -0
  31. package/examples/gpca-pump/model/samples/tree_view.sysml +56 -0
  32. package/examples/gpca-pump/model/views/behavior_action_flow_view.sysml +41 -0
  33. package/examples/gpca-pump/model/views/context_system_context_view.sysml +43 -0
  34. package/examples/gpca-pump/model/views/cybersecurity_cybersecurity_view.sysml +44 -0
  35. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +29 -0
  36. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +28 -0
  37. package/examples/gpca-pump/model/views/document_dhf_index_view.sysml +29 -0
  38. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +29 -0
  39. package/examples/gpca-pump/model/views/document_rmf_view.sysml +29 -0
  40. package/examples/gpca-pump/model/views/document_sdd_view.sysml +29 -0
  41. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +28 -0
  42. package/examples/gpca-pump/model/views/document_usability_view.sysml +28 -0
  43. package/examples/gpca-pump/model/views/document_vv_view.sysml +29 -0
  44. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +42 -0
  45. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +41 -0
  46. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +43 -0
  47. package/examples/gpca-pump/model/views/logical_logical_architecture_view.sysml +42 -0
  48. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +42 -0
  49. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +44 -0
  50. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +41 -0
  51. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +43 -0
  52. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +41 -0
  53. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +42 -0
  54. package/examples/gpca-pump/model/views/risk_fmea_view.sysml +42 -0
  55. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +44 -0
  56. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +43 -0
  57. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +42 -0
  58. package/memo.manifest.yaml +13 -0
  59. package/methodologies/default/memo.package.yaml +9 -0
  60. package/methodologies/gpca/memo.package.yaml +9 -0
  61. package/ontology/memo.package.yaml +8 -0
  62. package/ontology/memo.rendering.yaml +47 -0
  63. package/package.json +65 -0
  64. package/profile/archetypes.yaml +36 -0
  65. package/profile/memo.package.yaml +9 -0
  66. package/profile/templates/connected-device/starter.sysml +8 -0
  67. package/profile/templates/infusion-pump/starter.sysml +8 -0
  68. package/profile/templates/monitoring-device/starter.sysml +8 -0
  69. package/profile/templates/samd/starter.sysml +8 -0
  70. package/src/architecture/analysis/memo_fmea.sysml +91 -0
  71. package/src/architecture/assurance/memo_assurance.sysml +29 -0
  72. package/src/architecture/behavior/memo_behavior.sysml +65 -0
  73. package/src/architecture/constraints/memo_constraints.sysml +14 -0
  74. package/src/architecture/context/memo_context.sysml +58 -0
  75. package/src/architecture/cybersecurity/memo_cybersecurity.sysml +99 -0
  76. package/src/architecture/decisions/memo_decisions.sysml +12 -0
  77. package/src/architecture/functions/memo_functions.sysml +30 -0
  78. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +15 -0
  79. package/src/architecture/interfaces/memo_interfaces.sysml +103 -0
  80. package/src/architecture/logical_structure/memo_logical_structure.sysml +10 -0
  81. package/src/architecture/operational/memo_operational.sysml +51 -0
  82. package/src/architecture/physical/memo_physical_architecture.sysml +19 -0
  83. package/src/architecture/requirements/memo_requirements.sysml +69 -0
  84. package/src/architecture/risk/memo_arch_risk.sysml +7 -0
  85. package/src/architecture/risk/memo_risk.sysml +80 -0
  86. package/src/architecture/software_structure/memo_software_structure.sysml +44 -0
  87. package/src/architecture/system/memo_system_analysis.sysml +54 -0
  88. package/src/artifacts/clinical_safety_report.sysml +12 -0
  89. package/src/artifacts/cybersecurity_assessment_report.sysml +12 -0
  90. package/src/artifacts/definitions/memo_artifact_definitions.sysml +12 -0
  91. package/src/artifacts/design_change_log.sysml +12 -0
  92. package/src/artifacts/design_history_file_index.sysml +12 -0
  93. package/src/artifacts/design_input_plan.sysml +12 -0
  94. package/src/artifacts/design_output_plan.sysml +12 -0
  95. package/src/artifacts/evidence_record.sysml +12 -0
  96. package/src/artifacts/failure_mode_effects_analysis.sysml +12 -0
  97. package/src/artifacts/hazard_analysis_report.sysml +12 -0
  98. package/src/artifacts/labeling_specification.sysml +12 -0
  99. package/src/artifacts/requirements_specification.sysml +12 -0
  100. package/src/artifacts/requirements_traceability_matrix.sysml +12 -0
  101. package/src/artifacts/risk_management_plan.sysml +12 -0
  102. package/src/artifacts/software_design_description.sysml +12 -0
  103. package/src/artifacts/software_development_plan.sysml +12 -0
  104. package/src/artifacts/soup_list.sysml +12 -0
  105. package/src/artifacts/system_architecture_description.sysml +12 -0
  106. package/src/artifacts/test_protocol.sysml +12 -0
  107. package/src/artifacts/test_report.sysml +12 -0
  108. package/src/artifacts/threat_model_report.sysml +12 -0
  109. package/src/artifacts/usability_engineering_report.sysml +12 -0
  110. package/src/compliance/artifacts/memo_artifacts.sysml +13 -0
  111. package/src/compliance/change/memo_change.sysml +17 -0
  112. package/src/compliance/dhf-templates/21cfr820/change-record.md +45 -0
  113. package/src/compliance/dhf-templates/21cfr820/design-input.md +67 -0
  114. package/src/compliance/dhf-templates/21cfr820/design-output.md +80 -0
  115. package/src/compliance/dhf-templates/21cfr820/design-review.md +51 -0
  116. package/src/compliance/dhf-templates/21cfr820/design-validation.md +64 -0
  117. package/src/compliance/dhf-templates/21cfr820/design-verification.md +57 -0
  118. package/src/compliance/dhf-templates/21cfr820/dhf-index.md +111 -0
  119. package/src/compliance/dhf-templates/21cfr820/transfer-plan.md +50 -0
  120. package/src/compliance/dhf-templates/21cfr820/user-needs.md +81 -0
  121. package/src/compliance/dhf-templates/21cfr820/vv-plan.md +89 -0
  122. package/src/compliance/dhf-templates/21cfr820/vv-report.md +85 -0
  123. package/src/compliance/dhf-templates/fda-cybersecurity/incident-response.md +66 -0
  124. package/src/compliance/dhf-templates/fda-cybersecurity/postmarket-surveillance.md +63 -0
  125. package/src/compliance/dhf-templates/fda-cybersecurity/security-arch.md +83 -0
  126. package/src/compliance/dhf-templates/fda-cybersecurity/threat-model.md +100 -0
  127. package/src/compliance/dhf-templates/fda-cybersecurity/vuln-assessment.md +77 -0
  128. package/src/compliance/dhf-templates/iec-62304/change-control.md +40 -0
  129. package/src/compliance/dhf-templates/iec-62304/detailed-design.md +69 -0
  130. package/src/compliance/dhf-templates/iec-62304/integration-test.md +68 -0
  131. package/src/compliance/dhf-templates/iec-62304/sad.md +115 -0
  132. package/src/compliance/dhf-templates/iec-62304/sbom.md +67 -0
  133. package/src/compliance/dhf-templates/iec-62304/sdp.md +108 -0
  134. package/src/compliance/dhf-templates/iec-62304/soup.md +77 -0
  135. package/src/compliance/dhf-templates/iec-62304/srs.md +138 -0
  136. package/src/compliance/dhf-templates/iec-62304/sw-traceability.md +111 -0
  137. package/src/compliance/dhf-templates/iec-62304/system-test.md +67 -0
  138. package/src/compliance/dhf-templates/iec-62366/formative-eval.md +47 -0
  139. package/src/compliance/dhf-templates/iec-62366/summative-eval.md +69 -0
  140. package/src/compliance/dhf-templates/iec-62366/task-analysis.md +57 -0
  141. package/src/compliance/dhf-templates/iec-62366/ue-plan.md +81 -0
  142. package/src/compliance/dhf-templates/iec-62366/ui-spec.md +61 -0
  143. package/src/compliance/dhf-templates/iec-62366/urra.md +74 -0
  144. package/src/compliance/dhf-templates/iec-62366/use-spec.md +61 -0
  145. package/src/compliance/dhf-templates/iso-14971/fmea.md +93 -0
  146. package/src/compliance/dhf-templates/iso-14971/fta.md +70 -0
  147. package/src/compliance/dhf-templates/iso-14971/har.md +165 -0
  148. package/src/compliance/dhf-templates/iso-14971/risk-benefit.md +51 -0
  149. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +51 -0
  150. package/src/compliance/dhf-templates/iso-14971/rmp.md +169 -0
  151. package/src/compliance/dhf-templates/iso-14971/rmr.md +101 -0
  152. package/src/compliance/dhf-templates/shared/snippets/approval-block.md +16 -0
  153. package/src/compliance/dhf-templates/shared/snippets/document-control-header.md +15 -0
  154. package/src/compliance/dhf-templates/shared/snippets/references-section.md +16 -0
  155. package/src/compliance/dhf-templates/shared/snippets/revision-history-table.md +11 -0
  156. package/src/compliance/document_views/memo_document_views.sysml +7 -0
  157. package/src/compliance/iso14971/risk_management_file.sysml +16 -0
  158. package/src/compliance/postmarket/memo_postmarket.sysml +16 -0
  159. package/src/core/common/memo_common.sysml +50 -0
  160. package/src/core/consistency_rules/consistency_rules.sysml +41 -0
  161. package/src/core/dimensions/dimensions.sysml +37 -0
  162. package/src/core/enumerations/memo_enumerations.sysml +562 -0
  163. package/src/core/methodology_scope/methodology_scope.sysml +46 -0
  164. package/src/core/relationships/memo_relationships.sysml +230 -0
  165. package/src/core/semantics/semantics.sysml +20 -0
  166. package/src/core/stdlib/collections.sysml +6 -0
  167. package/src/core/stdlib/functions.sysml +6 -0
  168. package/src/core/stdlib/scalars.sysml +6 -0
  169. package/src/core/stdlib/time.sysml +6 -0
  170. package/src/medical_device_library.sysml +100 -0
  171. package/src/memo_namespaces.sysml +668 -0
  172. package/src/methodology/LICENSES/MIT.txt +19 -0
  173. package/src/methodology/memo_archetypes.sysml +93 -0
  174. package/src/methodology/memo_core.sysml +53 -0
  175. package/src/methodology/memo_gates.sysml +11 -0
  176. package/src/methodology/memo_patterns.sysml +12 -0
  177. package/src/methodology/memo_profiles.sysml +218 -0
  178. package/src/methodology/memo_rules.sysml +15 -0
  179. package/src/methodology/memo_viewpoints.sysml +5 -0
  180. package/src/methodology/memo_workflow.sysml +14 -0
  181. package/src/rules/closure/closure_rules.sysml +180 -0
  182. package/src/rules/coverage/coverage_rules.sysml +258 -0
  183. package/src/rules/crosslayer/cross_layer_rules.sysml +38 -0
  184. package/src/rules/lifecycle/lifecycle_rules.sysml +41 -0
  185. package/src/rules/quantitative/quantitative_rules.sysml +34 -0
  186. package/src/viewpoints/clinical/clinical_evidence_view.sysml +13 -0
  187. package/src/viewpoints/clinical/clinical_viewpoint.sysml +25 -0
  188. package/src/viewpoints/context/context_viewpoint.sysml +25 -0
  189. package/src/viewpoints/context/system_context_view.sysml +29 -0
  190. package/src/viewpoints/cybersecurity/cybersecurity_assessment_view.sysml +13 -0
  191. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +27 -0
  192. package/src/viewpoints/cybersecurity/threat_model_view.sysml +13 -0
  193. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +82 -0
  194. package/src/viewpoints/functional/function_allocation_view.sysml +29 -0
  195. package/src/viewpoints/functional/functional_viewpoint.sysml +25 -0
  196. package/src/viewpoints/functional/system_functional_tree_view.sysml +29 -0
  197. package/src/viewpoints/logical/logical_architecture_view.sysml +29 -0
  198. package/src/viewpoints/logical/logical_viewpoint.sysml +25 -0
  199. package/src/viewpoints/operational/operational_viewpoint.sysml +25 -0
  200. package/src/viewpoints/operational/use_case_view.sysml +29 -0
  201. package/src/viewpoints/physical/network_topology_view.sysml +29 -0
  202. package/src/viewpoints/physical/physical_bom_view.sysml +29 -0
  203. package/src/viewpoints/physical/physical_viewpoint.sysml +25 -0
  204. package/src/viewpoints/requirements/requirements_traceability_view.sysml +29 -0
  205. package/src/viewpoints/requirements/requirements_viewpoint.sysml +25 -0
  206. package/src/viewpoints/risk/risk_chain_view.sysml +30 -0
  207. package/src/viewpoints/risk/risk_viewpoint.sysml +25 -0
  208. package/src/viewpoints/software/software_architecture_view.sysml +29 -0
  209. package/src/viewpoints/software/software_viewpoint.sysml +25 -0
  210. package/src/viewpoints/usability/usability_engineering_view.sysml +13 -0
  211. package/src/viewpoints/usability/usability_viewpoint.sysml +25 -0
  212. package/src/viewpoints/verification/verification_coverage_view.sysml +29 -0
  213. package/src/viewpoints/verification/verification_viewpoint.sysml +25 -0
  214. package/template/memo.package.yaml +5 -0
  215. package/template/src/catalog/starter.sysml +12 -0
  216. package/template/src/documents/.gitkeep +1 -0
  217. package/template/src/views/.gitkeep +1 -0
@@ -0,0 +1,30 @@
1
+ package memo_architecture_functions {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+ part def LogicalFunction specializes ArchitectureElement {
7
+ attribute functionCategory : String;
8
+ attribute trigger : String;
9
+ attribute outputSummary : String;
10
+ attribute concernKind : ConcernKind;
11
+ attribute criticality : CriticalityKind;
12
+ }
13
+ part def LogicalFlow specializes ArchitectureElement {
14
+ attribute flowKind : FlowKind;
15
+ attribute direction : DirectionKind;
16
+ attribute latencyBudgetMs : Real;
17
+ attribute staleAfterMs : Real;
18
+ attribute integrityLevel : String;
19
+ }
20
+ part def DataDefinition specializes ExchangeItem {
21
+ attribute confidentialityClass : String;
22
+ attribute integrityClass : String;
23
+ attribute availabilityClass : String;
24
+ }
25
+ part def ControlDefinition specializes ExchangeItem {
26
+ attribute controlType : String;
27
+ attribute timeoutMs : Real;
28
+ attribute retryPolicy : String;
29
+ }
30
+ }
@@ -0,0 +1,15 @@
1
+ package memo_architecture_hardware_structure {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+ part def HardwareAssembly specializes ArchitectureElement {
7
+ attribute responsibility : String;
8
+ attribute safetyRole : String;
9
+ attribute partNumber : String;
10
+ attribute mtbfHours : String;
11
+ attribute protectionClass : String;
12
+ attribute ipRating : String;
13
+ attribute lifecycleState : LifecycleStateKind;
14
+ }
15
+ }
@@ -0,0 +1,103 @@
1
+ package memo_architecture_interfaces {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ // ─── Interface taxonomy ──────────────────────────────────────────
8
+ // One root `Interface`, specialized by realization domain
9
+ // (hardware / software) then by signaling family then by concrete
10
+ // protocol. The Arcadia layer (operational/system/logical/physical)
11
+ // is carried as the `arcadiaLayer` attribute, not as a type branch.
12
+
13
+ part def Interface specializes InterfaceElement {
14
+ attribute arcadiaLayer : ArcadiaLayerKind;
15
+ attribute interfaceKind : InterfaceKind;
16
+ attribute direction : DirectionKind;
17
+ attribute protocol : String;
18
+ attribute protocolSemantics : String;
19
+ attribute interactionPattern : String;
20
+ }
21
+
22
+ // ─── Hardware interfaces ─────────────────────────────────────────
23
+
24
+ part def HardwareInterface specializes Interface {
25
+ attribute electricalStandard : String;
26
+ attribute nominalVoltageV : Real;
27
+ attribute nominalCurrentA : Real;
28
+ attribute directionality : DirectionKind;
29
+ attribute bandwidth : String;
30
+ attribute timingConstraint : String;
31
+ }
32
+
33
+ part def DigitalInterface specializes HardwareInterface {
34
+ attribute bitRateBps : String;
35
+ attribute signaling : String;
36
+ }
37
+ part def SPIInterface specializes DigitalInterface;
38
+ part def USBInterface specializes DigitalInterface;
39
+ part def I2CInterface specializes DigitalInterface;
40
+ part def CANInterface specializes DigitalInterface;
41
+ part def UARTInterface specializes DigitalInterface;
42
+ part def EthernetInterface specializes DigitalInterface;
43
+
44
+ part def AnalogInterface specializes HardwareInterface {
45
+ attribute signalRange : String;
46
+ }
47
+ part def VoltageInterface specializes AnalogInterface;
48
+ part def CurrentInterface specializes AnalogInterface;
49
+ part def CurrentLoop4To20mA specializes AnalogInterface;
50
+ part def ThermocoupleInterface specializes AnalogInterface;
51
+
52
+ // ─── Software interfaces ─────────────────────────────────────────
53
+
54
+ part def SoftwareInterface specializes Interface {
55
+ attribute apiStyle : String;
56
+ }
57
+
58
+ part def SynchronousInterface specializes SoftwareInterface;
59
+ part def RestInterface specializes SynchronousInterface;
60
+ part def GrpcInterface specializes SynchronousInterface;
61
+ part def RpcInterface specializes SynchronousInterface;
62
+ part def LocalApiInterface specializes SynchronousInterface;
63
+
64
+ part def AsynchronousInterface specializes SoftwareInterface;
65
+ part def MessageQueueInterface specializes AsynchronousInterface;
66
+ part def PubSubInterface specializes AsynchronousInterface;
67
+ part def EventStreamInterface specializes AsynchronousInterface;
68
+
69
+ // ─── Ports, interface defs, and exchanges ────────────────────────
70
+ // SysML port/interface mechanism + logical exchange, relocated here
71
+ // from the former logical_interfaces namespace.
72
+
73
+ abstract interface def DataInterface specializes InterfaceElement {
74
+ attribute interfaceKind : InterfaceKind;
75
+ attribute protocolSemantics : String;
76
+ }
77
+ port def DataPort {
78
+ attribute direction : DirectionKind;
79
+ attribute interfaceType : String;
80
+ }
81
+ port def SensorPort specializes DataPort { attribute sensorDomain : String; }
82
+ port def CommandPort specializes DataPort { attribute commandDomain : String; }
83
+
84
+ part def ComponentExchange specializes ArchitectureElement {
85
+ attribute exchangeKind : FlowKind;
86
+ attribute sourcePort : String;
87
+ attribute targetPort : String;
88
+ attribute allocatedFunctionalExchanges : String;
89
+ attribute direction : DirectionKind;
90
+ // Connection timing discipline from the source architecture
91
+ // (e.g. AADL Communication_Properties::Timing — immediate
92
+ // connections deliver in the same execution step).
93
+ attribute timingSemantics : String;
94
+ }
95
+ // Boundary data port of a software system (e.g. an AADL top-level
96
+ // data port), modeled as a first-class element so exchanges can
97
+ // reference it and views can render the system boundary.
98
+ part def SoftwarePort specializes InterfaceElement {
99
+ attribute portKind : InterfaceKind;
100
+ attribute direction : DirectionKind;
101
+ attribute dataTypeName : String;
102
+ }
103
+ }
@@ -0,0 +1,10 @@
1
+ package memo_architecture_logical_structure {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ part def LogicalComponent specializes ArchitectureElement {
6
+ attribute responsibility : String;
7
+ attribute decompositionLevel : String;
8
+ attribute safetyPartition : String;
9
+ }
10
+ }
@@ -0,0 +1,51 @@
1
+ package memo_architecture_operational {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+ private import memo_core_relationships::*;
7
+ part def OperationalEntity specializes ArchitectureElement {
8
+ attribute entityKind : OperationalEntityKind;
9
+ attribute operationalDomain : String;
10
+ attribute responsibility : String;
11
+ }
12
+ part def OperationalActivity specializes ArchitectureElement {
13
+ attribute trigger : String;
14
+ attribute preCondition : String;
15
+ attribute postCondition : String;
16
+ attribute criticality : CriticalityKind;
17
+ }
18
+ part def OperationalCapability specializes ArchitectureElement {
19
+ attribute capabilityLevel : String;
20
+ attribute preCondition : String;
21
+ attribute postCondition : String;
22
+ }
23
+ part def OperationalScenario specializes TraceableElement {
24
+ attribute scenarioKind : ScenarioKind;
25
+ attribute preCondition : String;
26
+ attribute postCondition : String;
27
+ attribute sequenceDescription : String;
28
+ }
29
+ part def OperationalInteraction specializes ArchitectureElement {
30
+ attribute exchangeKind : FlowKind;
31
+ attribute direction : DirectionKind;
32
+ attribute latencyConstraint : String;
33
+ }
34
+
35
+ connection def Performs :> SemanticLink {
36
+ end entity : OperationalEntity;
37
+ end activity : OperationalActivity;
38
+ }
39
+ connection def ContributesToCapability :> SemanticLink {
40
+ end activity : OperationalActivity;
41
+ end capability : OperationalCapability;
42
+ }
43
+ connection def SequencesStep :> SemanticLink {
44
+ end activity : OperationalActivity;
45
+ end nextActivity : OperationalActivity;
46
+ }
47
+ connection def DerivesSystemNeed :> SemanticLink {
48
+ end activity : OperationalActivity;
49
+ end systemNeed : VerifiableElement;
50
+ }
51
+ }
@@ -0,0 +1,19 @@
1
+ package memo_architecture_physical {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+ part def ProcessingNode specializes ArchitectureElement {
7
+ attribute nodeKind : ProcessingNodeKind;
8
+ attribute processorArchitecture : String;
9
+ attribute memoryMB : String;
10
+ attribute operatingSystem : String;
11
+ attribute safetyPartition : Boolean;
12
+ attribute redundancyKind : String;
13
+ }
14
+ part def PhysicalPort specializes InterfaceElement {
15
+ attribute portKind : InterfaceKind;
16
+ attribute connectorType : String;
17
+ attribute direction : DirectionKind;
18
+ }
19
+ }
@@ -0,0 +1,69 @@
1
+ package memo_architecture_requirements {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+ requirement def StakeholderNeed specializes RequirementDriver {
7
+ attribute statement : String;
8
+ attribute priority : String;
9
+ }
10
+ part def RiskDriver specializes RequirementDriver { attribute driverKind : String; }
11
+ requirement def Requirement specializes VerifiableElement {
12
+ attribute statement : String;
13
+ attribute sourceKind : RequirementSourceKind;
14
+ attribute concernKind : ConcernKind;
15
+ attribute status : RequirementStatusKind;
16
+ attribute acceptanceCriteria : String;
17
+ attribute subjectDescription : String;
18
+ attribute actorDescription : String;
19
+ attribute assumptionSummary : String;
20
+ attribute guaranteeSummary : String;
21
+ // Authoring notation. `notation` selects the syntactic discipline the
22
+ // `statement` follows; the slot attributes below carry the parsed clauses
23
+ // so tools can lint pattern conformance and render either style.
24
+ attribute notation : RequirementNotationKind;
25
+ attribute earsPattern : EarsPatternKind; // applies when notation = ears
26
+ attribute obligation : ObligationKind; // shall/should/will (RFC 2119, SOPHIST legal-obligation)
27
+ attribute conditionClause : String; // EARS When/While/If/Where or SOPHIST condition clause
28
+ attribute systemResponse : String; // the "shall <system response>" predicate
29
+ }
30
+ requirement def SystemRequirement specializes Requirement;
31
+ requirement def SoftwareRequirement specializes Requirement { attribute safetyClass : SafetyClassKind; }
32
+ requirement def HardwareRequirement specializes Requirement { attribute electricalSafetyRelevant : Boolean; }
33
+ requirement def DesignControlNeed specializes StakeholderNeed {
34
+ attribute sourceFolder : String;
35
+ attribute linkedDesignControls : String;
36
+ }
37
+ requirement def DesignControlSpecification specializes Requirement {
38
+ attribute specificationDomain : String;
39
+ attribute sourceFolder : String;
40
+ attribute linkedUserNeeds : String;
41
+ attribute linkedRisks : String;
42
+ attribute linkedTests : String;
43
+ }
44
+ requirement def HardwareSpecification specializes DesignControlSpecification;
45
+ requirement def SoftwareSpecification specializes DesignControlSpecification {
46
+ attribute softwareSafetyClass : SafetyClassKind;
47
+ }
48
+ requirement def SystemSpecification specializes DesignControlSpecification;
49
+ // Named constant defined by a source requirements document (e.g. CriSys
50
+ // GPCA App. A.4) and referenced from requirement statements.
51
+ part def SystemConstant specializes TraceableElement {
52
+ attribute symbol : String; // identifier as written in the source, e.g. "Tolerance_Max const"
53
+ attribute unit : String;
54
+ attribute valueType : String;
55
+ attribute constantValue : String; // empty when the source leaves the value open
56
+ attribute valueCondition : String; // constraints on the value stated by the source
57
+ }
58
+ // One row of a notification/alarm action table (e.g. CriSys GPCA REQ 59):
59
+ // a named notification, its priority, and the actions the system must take.
60
+ part def NotificationSpec specializes TraceableElement {
61
+ attribute priority : NotificationPriorityKind;
62
+ attribute visualNotification : Boolean;
63
+ attribute audioNotification : Boolean;
64
+ attribute inhibitInfusion : Boolean;
65
+ attribute inhibitSquareBolus : Boolean;
66
+ attribute inhibitPatientBolus : Boolean;
67
+ attribute stopBolus : Boolean;
68
+ }
69
+ }
@@ -0,0 +1,7 @@
1
+ package memo_architecture_risk_arch_risk {
2
+ private import ScalarValues::*;
3
+
4
+ doc /* Configuration Item (CI) aggregator for MEMO architecture risk domain.
5
+ * Re-exports all risk-related packages for Sysand build. */
6
+ public import memo_architecture_risk_risk::*;
7
+ }
@@ -0,0 +1,80 @@
1
+ package memo_architecture_risk_risk {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+ private import memo_architecture_requirements::*;
7
+ part def Risk specializes RiskDriver {
8
+ attribute probabilityEstimate : ProbabilityKind;
9
+ attribute severityEstimate : SeverityKind;
10
+ attribute riskLevel : CriticalityKind;
11
+ attribute acceptability : RiskAcceptabilityKind;
12
+ }
13
+ part def RiskBeforeMitigation specializes Risk {
14
+ attribute estimationBasis : String;
15
+ attribute analysisContext : String;
16
+ attribute foreseeableMisuseIncluded : Boolean;
17
+ }
18
+ part def RiskAfterMitigation specializes Risk {
19
+ attribute residualProbability : ProbabilityKind;
20
+ attribute residualSeverity : SeverityKind;
21
+ attribute residualAcceptability : RiskAcceptabilityKind;
22
+ attribute benefitRiskRequired : Boolean;
23
+ }
24
+ part def RiskMatrix specializes TraceableElement {
25
+ attribute probabilityScaleDefinition : String;
26
+ attribute severityScaleDefinition : String;
27
+ attribute riskLevelMapping : String;
28
+ attribute acceptabilityThresholds : String;
29
+ }
30
+ part def DesignControlRiskRow specializes Risk {
31
+ attribute rowTitle : String;
32
+ attribute hazardAnalysis : String;
33
+ attribute hazardCategory : String;
34
+ attribute hazardSubcategory : String;
35
+ attribute causeSequenceOfEventsFailure : String;
36
+ attribute harmText : String;
37
+ attribute probabilityBeforeRaw : String;
38
+ attribute severityBeforeRaw : String;
39
+ attribute riskBeforeMeasureRaw : String;
40
+ attribute probabilityAfterRaw : String;
41
+ attribute severityAfterRaw : String;
42
+ attribute riskAfterMitigationRaw : String;
43
+ attribute cannotReduceFurther : Boolean;
44
+ attribute linkSummary : String;
45
+ }
46
+ item def Hazard specializes TraceableElement {
47
+ attribute hazardType : HazardTypeKind;
48
+ attribute severity : SeverityKind;
49
+ attribute foreseeable : Boolean;
50
+ }
51
+ item def SequenceOfEvents specializes TraceableElement {
52
+ attribute initiatingEvent : String;
53
+ attribute contributingFactors : String;
54
+ }
55
+ // A categorized root cause in a hazard causal tree (FDA GIIP
56
+ // taxonomy pattern: cause -> hazard -> hazardous situation -> harm;
57
+ // several HazardCause elements may converge on one Hazard).
58
+ item def HazardCause specializes TraceableElement {
59
+ attribute causeSource : CauseSourceKind;
60
+ attribute contributingFactors : String;
61
+ }
62
+ item def HazardousSituation specializes TraceableElement {
63
+ attribute exposedPersons : String;
64
+ attribute operatingCondition : String;
65
+ }
66
+ item def Harm specializes TraceableElement {
67
+ attribute clinicalImpact : String;
68
+ attribute reversibility : String;
69
+ attribute severity : SeverityKind;
70
+ }
71
+ item def RiskControl specializes VerifiableElement {
72
+ attribute controlKind : RiskControlKind;
73
+ attribute implementationKind : RiskControlImplementationKind;
74
+ attribute verificationStatus : String;
75
+ }
76
+ item def OverallResidualRiskEvaluation specializes TraceableElement {
77
+ attribute conclusion : String;
78
+ attribute reviewer : String;
79
+ }
80
+ }
@@ -0,0 +1,44 @@
1
+ package memo_architecture_software_structure {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+ part def SoftwareSystem specializes ArchitectureElement {
7
+ attribute version : String;
8
+ attribute lifecycleState : LifecycleStateKind;
9
+ attribute safetyClass : SafetyClassKind;
10
+ attribute complexity : ComplexityKind;
11
+ attribute operatingSystem : String;
12
+ }
13
+ part def SoftwareComponent specializes ArchitectureElement {
14
+ attribute responsibility : String;
15
+ attribute safetyClass : SafetyClassKind;
16
+ attribute complexity : ComplexityKind;
17
+ attribute periodMs : Real;
18
+ attribute deadlineMs : Real;
19
+ attribute wcetMs : Real;
20
+ attribute schedulingPolicy : SchedulingPolicyKind;
21
+ }
22
+ part def SoftwareItem specializes SoftwareComponent {
23
+ attribute softwareItemKind : String;
24
+ attribute iec62304Role : String;
25
+ }
26
+ part def FirmwareItem specializes SoftwareItem {
27
+ attribute firmwareTarget : String;
28
+ attribute updateMechanism : String;
29
+ }
30
+ part def SOUPComponent specializes SoftwareComponent {
31
+ attribute soupVersion : String;
32
+ attribute soupVendor : String;
33
+ attribute knownAnomalies : String;
34
+ attribute riskAcceptance : String;
35
+ attribute classification : SOUPClassificationKind;
36
+ }
37
+ item def SBOMEntry specializes TraceableElement {
38
+ attribute componentName : String;
39
+ attribute version : String;
40
+ attribute supplier : String;
41
+ attribute license : String;
42
+ attribute hash : String;
43
+ }
44
+ }
@@ -0,0 +1,54 @@
1
+ package memo_architecture_system {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+ private import memo_core_relationships::*;
7
+ private import memo_architecture_functions::*;
8
+ part def SystemCapability specializes ArchitectureElement {
9
+ attribute capabilityKind : String;
10
+ attribute primaryFunction : String;
11
+ attribute safetyRelevant : Boolean;
12
+ }
13
+ part def FunctionalChain specializes ArchitectureElement {
14
+ attribute chainKind : FunctionalChainKind;
15
+ attribute startFunction : String;
16
+ attribute endFunction : String;
17
+ attribute endToEndLatencyBudgetMs : String;
18
+ attribute safetyRelevant : Boolean;
19
+ attribute securityRelevant : Boolean;
20
+ }
21
+ part def FunctionalChainStep specializes TraceableElement {
22
+ attribute stepOrder : String;
23
+ attribute allocatedFunction : String;
24
+ attribute exchangeItem : String;
25
+ }
26
+ part def SystemScenario specializes TraceableElement {
27
+ attribute scenarioKind : ScenarioKind;
28
+ attribute sequenceDiagramRef : String;
29
+ attribute precondition : String;
30
+ attribute postcondition : String;
31
+ }
32
+ part def Mission specializes DocumentedElement {
33
+ attribute missionKind : String;
34
+ attribute successCriteria : String;
35
+ attribute operationalContext : String;
36
+ }
37
+
38
+ connection def RealizesCapability :> SemanticLink {
39
+ end functionalChain : FunctionalChain;
40
+ end capability : SystemCapability;
41
+ }
42
+ connection def IncludesStep :> SemanticLink {
43
+ end functionalChain : FunctionalChain;
44
+ end step : FunctionalChainStep;
45
+ }
46
+ connection def InvolvesFunction :> SemanticLink {
47
+ end functionalChain : FunctionalChain;
48
+ end function : LogicalFunction;
49
+ }
50
+ connection def RealizesScenario :> SemanticLink {
51
+ end functionalChain : FunctionalChain;
52
+ end scenario : SystemScenario;
53
+ }
54
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_clinical_safety_report {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def ClinicalSafetyReport specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Clinical Safety Report";
9
+ attribute :>> regulatoryRef = "ISO 14971:2019 §10";
10
+ attribute :>> artifactKind = ArtifactKind::clinicalSafetyReport;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_cybersecurity_assessment_report {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def CybersecurityAssessmentReport specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Cybersecurity Risk Assessment";
9
+ attribute :>> regulatoryRef = "FDA Cybersecurity Guidance";
10
+ attribute :>> artifactKind = ArtifactKind::cybersecurityAssessment;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_definitions {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def ArtifactKindDef specializes TraceableElement {
8
+ attribute documentTitle : String;
9
+ attribute regulatoryRef : String;
10
+ attribute artifactKind : ArtifactKind;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_design_change_log {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def DesignChangeLog specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Design Change Log";
9
+ attribute :>> regulatoryRef = "ISO 13485:2016 §7.3.9";
10
+ attribute :>> artifactKind = ArtifactKind::designChangeLog;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_design_history_file_index {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def DesignHistoryFileIndex specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Design History File Index";
9
+ attribute :>> regulatoryRef = "ISO 13485:2016 §4.2.4 / 21 CFR 820.30";
10
+ attribute :>> artifactKind = ArtifactKind::designHistoryFileIndex;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_design_input_plan {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def DesignInputPlan specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Design Input Plan";
9
+ attribute :>> regulatoryRef = "ISO 13485:2016 §7.3.3";
10
+ attribute :>> artifactKind = ArtifactKind::designInputPlan;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_design_output_plan {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def DesignOutputPlan specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Design Output Plan";
9
+ attribute :>> regulatoryRef = "ISO 13485:2016 §7.3.4";
10
+ attribute :>> artifactKind = ArtifactKind::designOutputPlan;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_evidence_record {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def EvidenceRecord specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Evidence Record";
9
+ attribute :>> regulatoryRef = "21 CFR 820.30";
10
+ attribute :>> artifactKind = ArtifactKind::evidenceRecord;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_failure_mode_effects_analysis {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def FailureModeEffectsAnalysisReport specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Failure Mode and Effects Analysis";
9
+ attribute :>> regulatoryRef = "IEC 60812:2018";
10
+ attribute :>> artifactKind = ArtifactKind::failureModeEffectsAnalysis;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_hazard_analysis_report {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def HazardAnalysisReport specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Hazard Analysis Report";
9
+ attribute :>> regulatoryRef = "ISO 14971:2019 §5-6";
10
+ attribute :>> artifactKind = ArtifactKind::riskRecord;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_labeling_specification {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def LabelingSpecification specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Labeling Specification";
9
+ attribute :>> regulatoryRef = "21 CFR 801 / MDR Annex I §23";
10
+ attribute :>> artifactKind = ArtifactKind::labelingSpecification;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_requirements_specification {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ part def RequirementsSpecification specializes ArtifactKindDef {
8
+ attribute :>> documentTitle = "Requirements Specification";
9
+ attribute :>> regulatoryRef = "ISO 13485:2016 §7.3.3";
10
+ attribute :>> artifactKind = ArtifactKind::requirementSpecification;
11
+ }
12
+ }