@memoarchitect/ontology 0.8.22 → 0.10.9

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 (240) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  4. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  5. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
  8. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  9. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
  12. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  13. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  15. package/examples/gpca-pump/memo.package.yaml +3 -0
  16. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  17. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  18. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  33. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
  35. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
  37. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
  38. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
  39. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
  40. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
  41. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
  42. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
  47. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
  50. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
  51. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
  52. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
  53. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
  54. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
  55. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
  56. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
  57. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
  58. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
  59. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
  60. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  61. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
  62. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  63. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  64. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  65. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
  66. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  67. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  68. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  69. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  70. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  71. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  72. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  73. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  74. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  75. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  76. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  77. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  78. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  79. package/examples/reusable-instrument/memo.package.yaml +3 -0
  80. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  81. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
  82. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  83. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  84. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  85. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  86. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  87. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  88. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  89. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
  90. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  91. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  92. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  93. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
  94. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  95. package/examples/surgical-robot/memo.package.yaml +3 -0
  96. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  97. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  98. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  99. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  100. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  101. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
  102. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
  103. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
  104. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
  105. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
  106. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
  107. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
  108. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
  109. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
  110. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
  111. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  112. package/examples/temperature-alarm/memo.package.yaml +3 -0
  113. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  114. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
  115. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  116. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  117. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  118. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  119. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  120. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  121. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  122. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  123. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  124. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  125. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  126. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  127. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  128. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  129. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  130. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  131. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
  132. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
  133. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
  134. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
  135. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
  136. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
  137. package/extensions/aadl/memo.package.yaml +1 -1
  138. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  139. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  140. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  141. package/extensions/cloud/memo.package.yaml +1 -1
  142. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  143. package/extensions/container/memo.package.yaml +1 -1
  144. package/extensions/container/src/container_extension.sysml +2 -2
  145. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  146. package/extensions/messaging/memo.package.yaml +1 -1
  147. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  148. package/extensions/ros/memo.package.yaml +1 -1
  149. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  150. package/extensions/template/src/extension.sysml +3 -1
  151. package/methodologies/default/memo.package.yaml +1 -1
  152. package/methodologies/gpca/memo.package.yaml +1 -1
  153. package/ontology/memo.package.yaml +1 -1
  154. package/package.json +2 -2
  155. package/profile/memo.package.yaml +1 -1
  156. package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
  157. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  158. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  159. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  160. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  161. package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
  162. package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
  163. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  164. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  165. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  166. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  167. package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
  168. package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
  169. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  170. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
  171. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
  172. package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
  173. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  174. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  175. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  176. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  177. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  178. package/src/artifacts/standards/iec_60812.sysml +21 -22
  179. package/src/artifacts/standards/iec_62304.sysml +150 -169
  180. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  181. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  182. package/src/artifacts/standards/iso_13485.sysml +80 -89
  183. package/src/artifacts/standards/iso_14971.sysml +66 -73
  184. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  185. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  186. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  187. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  188. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  189. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  190. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  191. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  192. package/src/core/common/memo_common.sysml +59 -55
  193. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  194. package/src/core/relationships/memo_relationships.sysml +29 -56
  195. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  196. package/src/methodology/core/memo_core.sysml +0 -10
  197. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  198. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  199. package/src/rules/closure/closure_rules.sysml +22 -20
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  201. package/src/rules/ontology/ontology_invariants.sysml +121 -48
  202. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  203. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
  204. package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
  205. package/src/viewpoints/context/context_viewpoint.sysml +6 -5
  206. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
  207. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
  208. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
  209. package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
  210. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
  211. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
  212. package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
  213. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
  214. package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
  215. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
  216. package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
  217. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
  218. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
  219. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  220. package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
  221. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
  222. package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
  223. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
  224. package/src/viewpoints/software/software_viewpoint.sysml +5 -4
  225. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
  226. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
  227. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  228. package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
  229. package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
  230. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
  231. package/templates/connected-device/memo.package.yaml +2 -0
  232. package/templates/connected-device/model/catalog/project.sysml +3 -1
  233. package/templates/default/memo.package.yaml +2 -0
  234. package/templates/default/model/catalog/project.sysml +3 -1
  235. package/templates/infusion-pump/memo.package.yaml +2 -0
  236. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  237. package/templates/monitoring-device/memo.package.yaml +2 -0
  238. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  239. package/templates/samd/memo.package.yaml +2 -0
  240. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -1,31 +1,60 @@
1
1
  package memo_architecture_operational_structure {
2
+ private import Metaobjects::SemanticMetadata;
2
3
  private import ScalarValues::*;
3
4
 
4
5
  private import memo_core_common::*;
5
6
  private import memo_core_enumerations::*;
6
7
  private import memo_core_relationships::*;
7
- private import memo_architecture_operational_activities::*;
8
- // OperationalActivity now lives in memo_architecture_operational_activities (action def) and
9
- // Operational scenarios are defined in memo_architecture_operational_scenarios.
10
- part def Mission specializes DocumentedElement {
11
- attribute missionKind : String;
12
- attribute successCriteria : String;
13
- attribute operationalContext : String;
8
+ private import memo_architecture_operational_use_cases::*;
9
+
10
+ // IEC 62366-1 / ISO 14971 intended use: the medical device's declared
11
+ // purpose and the root of the operational spine. A MemoMission, because
12
+ // "mission" has no medical-device meaning — intended use is what a device
13
+ // exists to do. Was in memo_assurance_requirements; moved here as the
14
+ // operational-world root.
15
+ part def IntendedUse specializes MemoMission {
16
+ attribute indication : String;
17
+ attribute contraindication : String;
18
+ attribute patientPopulation : String;
19
+ attribute clinicalBenefit : String;
20
+ attribute regulatoryClassification : String;
14
21
  }
15
- part def OperationalEntity specializes ArchitectureElement {
22
+ part def OperationalEntity specializes MemoPart {
16
23
  attribute entityKind : OperationalEntityKind;
17
24
  attribute operationalDomain : String;
18
25
  attribute responsibility : String;
19
26
  }
20
- part def OperationalCapability specializes ArchitectureElement {
27
+ part def OperationalCapability specializes MemoPart {
21
28
  attribute capabilityLevel : String;
22
29
  attribute preCondition : String;
23
30
  attribute postCondition : String;
24
31
  }
25
- part def OperationalInteraction specializes ArchitectureElement {
26
- attribute exchangeKind : FlowKind;
27
- attribute direction : DirectionKind;
28
- attribute latencyConstraint : String;
32
+
33
+ // The intended use requires these operational capabilities (ARCADIA:
34
+ // Mission Requires Capability).
35
+ connection def RequiresCapability :> MemoRelationship {
36
+ end requiringIntendedUse : IntendedUse :>> source;
37
+ end requiredCapability : OperationalCapability :>> target;
38
+ }
39
+ abstract connection requiresCapabilityLinks : RequiresCapability[*];
40
+ metadata def <requiresCapability> RequiresCapabilityMetadata :> SemanticMetadata {
41
+ :> annotatedElement : SysML::ConnectionDefinition;
42
+ :> annotatedElement : SysML::ConnectionUsage;
43
+ :>> baseType = requiresCapabilityLinks meta SysML::Usage;
44
+ }
45
+
46
+ // An operational capability enables a use case (the ability the actor draws
47
+ // on to accomplish the goal). Capability is tied to the use case, not to
48
+ // individual activities.
49
+ connection def EnablesUseCase :> MemoRelationship {
50
+ end enablingCapability : OperationalCapability :>> source;
51
+ end enabledUseCase : UseCase :>> target;
52
+ }
53
+ abstract connection enablesUseCaseLinks : EnablesUseCase[*];
54
+ metadata def <enablesUseCase> EnablesUseCaseMetadata :> SemanticMetadata {
55
+ :> annotatedElement : SysML::ConnectionDefinition;
56
+ :> annotatedElement : SysML::ConnectionUsage;
57
+ :>> baseType = enablesUseCaseLinks meta SysML::Usage;
29
58
  }
30
59
 
31
60
  }
@@ -19,7 +19,13 @@ package memo_architecture_operational_use_cases {
19
19
  enum development;
20
20
  }
21
21
 
22
- use case def UseCase :> MemoUseCase {
22
+ // Specializes the STANDARD library use case as well as MEMO's base. Before
23
+ // this it specialized only `MemoUseCase` and so shadowed `UseCases::UseCase`
24
+ // — same name, same metaclass, none of the semantics — which is why the
25
+ // subject/actor features below had to be re-declared by hand instead of
26
+ // being inherited. The wrapper survives only to carry the display label and
27
+ // lifecycle status; identity comes from `@MemoIdentity`.
28
+ use case def UseCase :> MemoUseCase, UseCases::UseCase {
23
29
  // Text of this use case's goal; this is not a separate Goal element.
24
30
  attribute goalStatement : String;
25
31
  attribute trigger : String;
@@ -40,7 +46,6 @@ package memo_architecture_operational_use_cases {
40
46
  ref primaryUser : User[0..1];
41
47
  ref supportingActors : OperationalParticipant[0..*];
42
48
  ref useContext : UseContext[0..1];
43
- ref originatingNeeds : Need[0..*];
44
49
  }
45
50
 
46
51
  connection def Motivates :> MemoRelationship {
@@ -63,14 +68,4 @@ package memo_architecture_operational_use_cases {
63
68
  // `include` (R10-S6); write that instead of a connection here. `extends`
64
69
  // has 0 hits in the corpus for a use-case `extend` production, so it stays
65
70
  // a MEMO construct: a cross-cutting relationship that is always presented.
66
- connection def Extends :> MemoRelationship {
67
- end extendingUseCase : UseCase :>> source;
68
- end extendedUseCase : UseCase :>> target;
69
- }
70
- abstract connection extendsLinks : Extends[*];
71
- metadata def <extends> ExtendsMetadata :> SemanticMetadata {
72
- :> annotatedElement : SysML::ConnectionDefinition;
73
- :> annotatedElement : SysML::ConnectionUsage;
74
- :>> baseType = extendsLinks meta SysML::Usage;
75
- }
76
71
  }
@@ -37,20 +37,24 @@ package memo_architecture_operational_workflows {
37
37
  attribute completionCondition : String;
38
38
  attribute recoveryPathSummary : String;
39
39
  attribute timingConstraints : String;
40
- ref involvedActors : OperationalParticipant[0..*];
41
40
  attribute environmentSummary : String;
42
41
  }
43
42
 
44
- // A step in a workflow wraps an operational activity or user task by
45
- // reference — the same activity may appear in several workflows.
46
- action def WorkflowStep specializes MemoAction {
47
- attribute entryCondition : String;
48
- attribute exitCondition : String;
49
- ref performedActivity : OperationalActivity[0..1];
50
- ref performedTask : UserTask[0..1];
51
- ref responsibleRole : OperationalParticipant[0..1];
43
+ // The use case a workflow realizes. Many workflows may trace to one use
44
+ // case; the use case does not own its workflows (the trace points upward,
45
+ // workflow → use case).
46
+ connection def RealizesUseCase :> MemoRelationship {
47
+ end realizingWorkflow : OperationalWorkflow :>> source;
48
+ end realizedUseCase : UseCase :>> target;
49
+ }
50
+ abstract connection realizesUseCaseLinks : RealizesUseCase[*];
51
+ metadata def <realizesUseCase> RealizesUseCaseMetadata :> SemanticMetadata {
52
+ :> annotatedElement : SysML::ConnectionDefinition;
53
+ :> annotatedElement : SysML::ConnectionUsage;
54
+ :>> baseType = realizesUseCaseLinks meta SysML::Usage;
52
55
  }
53
56
 
57
+
54
58
  // decision / fork / join / handoff.
55
59
  enum def ControlNodeKind {
56
60
  enum decision;
@@ -69,8 +73,6 @@ package memo_architecture_operational_workflows {
69
73
  attribute parallelismRationale : String[0..1];
70
74
  attribute joinCondition : String[0..1];
71
75
  attribute informationTransferred : String[0..1];
72
- ref fromRole : OperationalParticipant[0..1];
73
- ref toRole : OperationalParticipant[0..1];
74
76
  }
75
77
 
76
78
  // Resources a workflow requires: information, materials, or equipment by
@@ -82,37 +84,13 @@ package memo_architecture_operational_workflows {
82
84
  }
83
85
 
84
86
  // ── Workflow-level relationships ─────────────────────────────
85
- // Supports unifies SupportsUseCase / SupportsTask / ContributesToCapability
86
- // (an element supports a goal/task/capability), keyed by supportKind.
87
- enum def SupportKind {
88
- enum useCase;
89
- enum task;
90
- enum capability;
91
- }
92
- connection def Supports :> MemoRelationship {
93
- attribute supportKind : SupportKind;
94
- // The accepted endpoints span SysML metaclasses: an operational
95
- // workflow or other action may support a use case, task, or
96
- // capability. They therefore have no single MEMO base type.
97
- end supporter :>> source;
98
- end supported : MemoAction :>> target;
99
- }
100
- abstract connection supportsLinks : Supports[*];
101
- metadata def <supports> SupportsMetadata :> SemanticMetadata {
102
- :> annotatedElement : SysML::ConnectionDefinition;
103
- :> annotatedElement : SysML::ConnectionUsage;
104
- :>> baseType = supportsLinks meta SysML::Usage;
105
- }
106
- connection def RequiresResource :> MemoRelationship {
107
- end workflow : OperationalWorkflow :>> source;
108
- end resource : WorkflowResource :>> target;
109
- }
110
- abstract connection requiresResourceLinks : RequiresResource[*];
111
- metadata def <requiresResource> RequiresResourceMetadata :> SemanticMetadata {
112
- :> annotatedElement : SysML::ConnectionDefinition;
113
- :> annotatedElement : SysML::ConnectionUsage;
114
- :>> baseType = requiresResourceLinks meta SysML::Usage;
115
- }
87
+ // An element supports (affords, enables) an action — e.g. a UI element
88
+ // that affords a user task. Use-case and capability tracing are direct
89
+ // refs now (OperationalWorkflow.useCase,
90
+ // OperativeAction.contributesToCapabilities), so the former
91
+ // SupportKind discriminator is gone: what used to be three enum values
92
+ // that each implied a different target type are now two typed refs plus
93
+ // this one plain relation.
116
94
 
117
95
  // ── Workflow transformation (as-is → to-be) ──────────────────
118
96
  // Transforms unifies TransformsStep / TransformsWorkflow / ReplacesWorkflow
@@ -1,10 +1,10 @@
1
- // Deployment (allocation) view: SoftwareModule buildsInto DeploymentUnit;
2
- // DeploymentUnit deploysTo ProcessingNode. Software deploys only to capable
1
+ // Deployment (allocation) view: SoftwareModule buildsInto SoftwareDeploymentUnit;
2
+ // SoftwareDeploymentUnit deploysTo ProcessingNode. Software deploys only to capable
3
3
  // execution nodes (rules/crosslayer).
4
4
  //
5
5
  // `HostedBy` is NOT part of that chain, and this comment used to claim it was
6
6
  // ("SoftwareComponent hostedBy ProcessingNode"). It is
7
- // `processingNode : ArchitectureElement -> hostAssembly : ArchitectureElement`:
7
+ // `processingNode : ProcessingNode -> hostAssembly : PhysicalAssembly`:
8
8
  // physical hosting of a node by the assembly it is mounted in, running the
9
9
  // other way and between different things. Software reaches a node through
10
10
  // DeploysTo.
@@ -26,39 +26,44 @@ package memo_architecture_realization_deployment {
26
26
  private import memo_architecture_logical_structure::*;
27
27
  private import memo_architecture_logical_interfaces::*; // ComponentExchange
28
28
 
29
- part def DeploymentUnit specializes ArchitectureElement {
29
+ part def SoftwareDeploymentUnit specializes MemoPart {
30
30
  attribute unitKind : String;
31
31
  attribute version : String;
32
32
  attribute integrityProtection : String;
33
33
  attribute installationMechanism : String;
34
34
  }
35
35
 
36
- part def RuntimeEnvironment specializes ArchitectureElement {
36
+ part def RuntimeEnvironment specializes MemoPart {
37
37
  attribute environmentKind : String;
38
38
  attribute osOrRtos : String;
39
39
  attribute providedServices : String;
40
40
  attribute certificationEvidence : String;
41
41
  }
42
42
 
43
- connection def BuildsInto :> MemoRelationship {
43
+ // A module BUILDS INTO a deployment unit: that is an allocation, and the
44
+ // language has one. Rooted like MemoryBinding / ConnectionBinding below,
45
+ // so the whole deployment family spells allocation the same way.
46
+ allocation def BuildsInto :> MemoRelationship, Allocations::Allocation {
44
47
  end module : SoftwareModule :>> source;
45
- end deploymentUnit : DeploymentUnit :>> target;
48
+ end deploymentUnit : SoftwareDeploymentUnit :>> target;
46
49
  }
47
50
  abstract connection buildsIntoLinks : BuildsInto[*];
48
51
  metadata def <buildsInto> BuildsIntoMetadata :> SemanticMetadata {
49
- :> annotatedElement : SysML::ConnectionDefinition;
50
- :> annotatedElement : SysML::ConnectionUsage;
52
+ :> annotatedElement : SysML::AllocationDefinition;
53
+ :> annotatedElement : SysML::AllocationUsage;
51
54
  :>> baseType = buildsIntoLinks meta SysML::Usage;
52
55
  }
53
- connection def DeploysTo :> MemoRelationship {
56
+ // Every usage of this already writes `allocation x : DeploysTo allocate a
57
+ // to b;` -- the declaration was the only part still saying `connection`.
58
+ allocation def DeploysTo :> MemoRelationship, Allocations::Allocation {
54
59
  attribute deploymentKind : DeploymentKind;
55
- end deploymentUnit : DeploymentUnit :>> source;
60
+ end deploymentUnit : SoftwareDeploymentUnit :>> source;
56
61
  end node : ProcessingNode :>> target;
57
62
  }
58
63
  abstract connection deploysToLinks : DeploysTo[*];
59
64
  metadata def <deploysTo> DeploysToMetadata :> SemanticMetadata {
60
- :> annotatedElement : SysML::ConnectionDefinition;
61
- :> annotatedElement : SysML::ConnectionUsage;
65
+ :> annotatedElement : SysML::AllocationDefinition;
66
+ :> annotatedElement : SysML::AllocationUsage;
62
67
  :>> baseType = deploysToLinks meta SysML::Usage;
63
68
  }
64
69
  connection def ProvidesEnvironment :> MemoRelationship {
@@ -140,7 +145,7 @@ package memo_architecture_realization_deployment {
140
145
  enum path;
141
146
  }
142
147
  // A flow declared at a logical component boundary (in-port → out-port).
143
- part def FlowSpecification specializes ArchitectureElement {
148
+ part def FlowSpecification specializes MemoPart {
144
149
  attribute flowKind : FlowSpecKind;
145
150
  ref inPort : LogicalPort[0..1];
146
151
  ref outPort : LogicalPort[0..1];
@@ -148,7 +153,7 @@ package memo_architecture_realization_deployment {
148
153
  // A complete source→sink flow traced across the layers and the software→
149
154
  // hardware binding it traverses. `latencyBudgetMs` and `analysisPurpose`
150
155
  // (latency | fault-propagation | security) drive the AADL-style analysis.
151
- part def EndToEndFlow specializes ArchitectureElement {
156
+ part def EndToEndFlow specializes MemoPart {
152
157
  attribute latencyBudgetMs : Real;
153
158
  attribute analysisPurpose : String;
154
159
  ref sourceFunction : MemoFunction[0..1];
@@ -172,14 +177,16 @@ package memo_architecture_realization_deployment {
172
177
  :>> baseType = flowComprisesSpecLinks meta SysML::Usage;
173
178
  }
174
179
  // The flow traverses a software→hardware binding; latency accrues here.
175
- connection def FlowTraversesBinding :> MemoRelationship {
180
+ // A binding IS an allocation, exactly as MemoryBinding and
181
+ // ConnectionBinding already declare.
182
+ allocation def FlowTraversesBinding :> MemoRelationship, Allocations::Allocation {
176
183
  end endToEndFlow : EndToEndFlow :>> source;
177
- end deploymentUnit : DeploymentUnit :>> target;
184
+ end deploymentUnit : SoftwareDeploymentUnit :>> target;
178
185
  }
179
186
  abstract connection flowTraversesBindingLinks : FlowTraversesBinding[*];
180
187
  metadata def <flowTraversesBinding> FlowTraversesBindingMetadata :> SemanticMetadata {
181
- :> annotatedElement : SysML::ConnectionDefinition;
182
- :> annotatedElement : SysML::ConnectionUsage;
188
+ :> annotatedElement : SysML::AllocationDefinition;
189
+ :> annotatedElement : SysML::AllocationUsage;
183
190
  :>> baseType = flowTraversesBindingLinks meta SysML::Usage;
184
191
  }
185
192
  }
@@ -6,7 +6,13 @@ package memo_architecture_realization_physical {
6
6
 
7
7
  private import memo_core_common::*;
8
8
  private import memo_core_enumerations::*;
9
- part def ProcessingNode specializes ArchitectureElement {
9
+ // For PhysicalElement: a processing node and a memory device ARE physical
10
+ // things — a board and a chip — and specialized MemoPart directly only
11
+ // because the physical family had no shared root until CR-ONT-079 needed
12
+ // one. Their home package reflects their ROLE (deployment target), not
13
+ // their nature.
14
+ private import memo_architecture_implementation_hardware_common::PhysicalElement;
15
+ part def ProcessingNode specializes PhysicalElement {
10
16
  attribute nodeKind : ProcessingNodeKind;
11
17
  attribute processorArchitecture : String;
12
18
  attribute memoryMB : String;
@@ -17,7 +23,7 @@ package memo_architecture_realization_physical {
17
23
  attribute supportsContainerization : Boolean;
18
24
  attribute realTimeCapable : Boolean;
19
25
  }
20
- part def MemoryDevice specializes ArchitectureElement {
26
+ part def MemoryDevice specializes PhysicalElement {
21
27
  attribute memoryKind : String;
22
28
  attribute capacityMB : String;
23
29
  attribute nonVolatile : Boolean;
@@ -15,102 +15,93 @@ package memo_artifacts_standards_cfr_21_820 {
15
15
  private import memo_core_relationships::*;
16
16
  private import memo_artifacts_standards_traceability::*;
17
17
 
18
+ private import memo_core_common::*;
19
+ private import memo_core_common::MemoIdentity;
18
20
  item cfr21Part820 : RegulatoryStandard {
19
- attribute :>> id = "STD-21-CFR-820";
21
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820"; }
20
22
  attribute :>> name = "CFR21Part820";
21
23
  attribute :>> designation = "21 CFR Part 820";
22
24
  attribute :>> issuer = "FDA";
23
25
  attribute :>> appliesToRegime = (RegulatoryRegimeKind::FDA_510k, RegulatoryRegimeKind::FDA_PMA);
26
+ item cfr820_30 : StandardClause {
27
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30"; }
28
+ attribute :>> name = "CFR820_30";
29
+ attribute :>> clauseNumber = "820.30";
30
+ attribute :>> title = "design controls";
31
+ attribute :>> normativeStrength = "shall";
32
+ item cfr820_30a : StandardClause {
33
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-A"; }
34
+ attribute :>> name = "CFR820_30a";
35
+ attribute :>> clauseNumber = "820.30(a)";
36
+ attribute :>> title = "general design control applicability";
37
+ attribute :>> normativeStrength = "shall";
38
+ }
39
+ item cfr820_30b : StandardClause {
40
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-B"; }
41
+ attribute :>> name = "CFR820_30b";
42
+ attribute :>> clauseNumber = "820.30(b)";
43
+ attribute :>> title = "design and development planning";
44
+ attribute :>> normativeStrength = "shall";
45
+ }
46
+ item cfr820_30c : StandardClause {
47
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-C"; }
48
+ attribute :>> name = "CFR820_30c";
49
+ attribute :>> clauseNumber = "820.30(c)";
50
+ attribute :>> title = "design input";
51
+ attribute :>> normativeStrength = "shall";
52
+ }
53
+ item cfr820_30d : StandardClause {
54
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-D"; }
55
+ attribute :>> name = "CFR820_30d";
56
+ attribute :>> clauseNumber = "820.30(d)";
57
+ attribute :>> title = "design output";
58
+ attribute :>> normativeStrength = "shall";
59
+ }
60
+ item cfr820_30e : StandardClause {
61
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-E"; }
62
+ attribute :>> name = "CFR820_30e";
63
+ attribute :>> clauseNumber = "820.30(e)";
64
+ attribute :>> title = "design review";
65
+ attribute :>> normativeStrength = "shall";
66
+ }
67
+ item cfr820_30f : StandardClause {
68
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-F"; }
69
+ attribute :>> name = "CFR820_30f";
70
+ attribute :>> clauseNumber = "820.30(f)";
71
+ attribute :>> title = "design verification";
72
+ attribute :>> normativeStrength = "shall";
73
+ }
74
+ item cfr820_30g : StandardClause {
75
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-G"; }
76
+ attribute :>> name = "CFR820_30g";
77
+ attribute :>> clauseNumber = "820.30(g)";
78
+ attribute :>> title = "design validation";
79
+ attribute :>> normativeStrength = "shall";
80
+ }
81
+ item cfr820_30h : StandardClause {
82
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-H"; }
83
+ attribute :>> name = "CFR820_30h";
84
+ attribute :>> clauseNumber = "820.30(h)";
85
+ attribute :>> title = "design transfer";
86
+ attribute :>> normativeStrength = "shall";
87
+ }
88
+ item cfr820_30i : StandardClause {
89
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-I"; }
90
+ attribute :>> name = "CFR820_30i";
91
+ attribute :>> clauseNumber = "820.30(i)";
92
+ attribute :>> title = "design changes";
93
+ attribute :>> normativeStrength = "shall";
94
+ }
95
+ item cfr820_30j : StandardClause {
96
+ @MemoIdentity { :>> providedId = "STD-21-CFR-820-30-J"; }
97
+ attribute :>> name = "CFR820_30j";
98
+ attribute :>> clauseNumber = "820.30(j)";
99
+ attribute :>> title = "design history file";
100
+ attribute :>> normativeStrength = "shall";
101
+ }
102
+ }
24
103
  }
25
104
 
26
- item cfr820_30 : StandardClause {
27
- attribute :>> id = "STD-21-CFR-820-30";
28
- attribute :>> name = "CFR820_30";
29
- attribute :>> clauseNumber = "820.30";
30
- attribute :>> title = "design controls";
31
- attribute :>> normativeStrength = "shall";
32
- }
33
- item cfr820_30a : StandardClause {
34
- attribute :>> id = "STD-21-CFR-820-30-A";
35
- attribute :>> name = "CFR820_30a";
36
- attribute :>> clauseNumber = "820.30(a)";
37
- attribute :>> title = "general design control applicability";
38
- attribute :>> normativeStrength = "shall";
39
- }
40
- item cfr820_30b : StandardClause {
41
- attribute :>> id = "STD-21-CFR-820-30-B";
42
- attribute :>> name = "CFR820_30b";
43
- attribute :>> clauseNumber = "820.30(b)";
44
- attribute :>> title = "design and development planning";
45
- attribute :>> normativeStrength = "shall";
46
- }
47
- item cfr820_30c : StandardClause {
48
- attribute :>> id = "STD-21-CFR-820-30-C";
49
- attribute :>> name = "CFR820_30c";
50
- attribute :>> clauseNumber = "820.30(c)";
51
- attribute :>> title = "design input";
52
- attribute :>> normativeStrength = "shall";
53
- }
54
- item cfr820_30d : StandardClause {
55
- attribute :>> id = "STD-21-CFR-820-30-D";
56
- attribute :>> name = "CFR820_30d";
57
- attribute :>> clauseNumber = "820.30(d)";
58
- attribute :>> title = "design output";
59
- attribute :>> normativeStrength = "shall";
60
- }
61
- item cfr820_30e : StandardClause {
62
- attribute :>> id = "STD-21-CFR-820-30-E";
63
- attribute :>> name = "CFR820_30e";
64
- attribute :>> clauseNumber = "820.30(e)";
65
- attribute :>> title = "design review";
66
- attribute :>> normativeStrength = "shall";
67
- }
68
- item cfr820_30f : StandardClause {
69
- attribute :>> id = "STD-21-CFR-820-30-F";
70
- attribute :>> name = "CFR820_30f";
71
- attribute :>> clauseNumber = "820.30(f)";
72
- attribute :>> title = "design verification";
73
- attribute :>> normativeStrength = "shall";
74
- }
75
- item cfr820_30g : StandardClause {
76
- attribute :>> id = "STD-21-CFR-820-30-G";
77
- attribute :>> name = "CFR820_30g";
78
- attribute :>> clauseNumber = "820.30(g)";
79
- attribute :>> title = "design validation";
80
- attribute :>> normativeStrength = "shall";
81
- }
82
- item cfr820_30h : StandardClause {
83
- attribute :>> id = "STD-21-CFR-820-30-H";
84
- attribute :>> name = "CFR820_30h";
85
- attribute :>> clauseNumber = "820.30(h)";
86
- attribute :>> title = "design transfer";
87
- attribute :>> normativeStrength = "shall";
88
- }
89
- item cfr820_30i : StandardClause {
90
- attribute :>> id = "STD-21-CFR-820-30-I";
91
- attribute :>> name = "CFR820_30i";
92
- attribute :>> clauseNumber = "820.30(i)";
93
- attribute :>> title = "design changes";
94
- attribute :>> normativeStrength = "shall";
95
- }
96
- item cfr820_30j : StandardClause {
97
- attribute :>> id = "STD-21-CFR-820-30-J";
98
- attribute :>> name = "CFR820_30j";
99
- attribute :>> clauseNumber = "820.30(j)";
100
- attribute :>> title = "design history file";
101
- attribute :>> normativeStrength = "shall";
102
- }
103
105
 
104
- connection cfr820Has30 : Composes connect parent ::> cfr21Part820 to child ::> cfr820_30;
105
106
 
106
- connection cfr820_30HasA : Composes connect parent ::> cfr820_30 to child ::> cfr820_30a;
107
- connection cfr820_30HasB : Composes connect parent ::> cfr820_30 to child ::> cfr820_30b;
108
- connection cfr820_30HasC : Composes connect parent ::> cfr820_30 to child ::> cfr820_30c;
109
- connection cfr820_30HasD : Composes connect parent ::> cfr820_30 to child ::> cfr820_30d;
110
- connection cfr820_30HasE : Composes connect parent ::> cfr820_30 to child ::> cfr820_30e;
111
- connection cfr820_30HasF : Composes connect parent ::> cfr820_30 to child ::> cfr820_30f;
112
- connection cfr820_30HasG : Composes connect parent ::> cfr820_30 to child ::> cfr820_30g;
113
- connection cfr820_30HasH : Composes connect parent ::> cfr820_30 to child ::> cfr820_30h;
114
- connection cfr820_30HasI : Composes connect parent ::> cfr820_30 to child ::> cfr820_30i;
115
- connection cfr820_30HasJ : Composes connect parent ::> cfr820_30 to child ::> cfr820_30j;
116
107
  }
@@ -18,63 +18,59 @@ package memo_artifacts_standards_fda_cybersecurity_2023 {
18
18
  private import memo_core_relationships::*;
19
19
  private import memo_artifacts_standards_traceability::*;
20
20
 
21
+ private import memo_core_common::*;
22
+ private import memo_core_common::MemoIdentity;
21
23
  item fdaCybersecurity2023 : RegulatoryStandard {
22
- attribute :>> id = "STD-FDA-CYBER-2023";
24
+ @MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023"; }
23
25
  attribute :>> name = "FDACybersecurity2023";
24
26
  attribute :>> designation = "FDA Cybersecurity Guidance 2023";
25
27
  attribute :>> edition = "2023-09";
26
28
  attribute :>> issuer = "FDA";
27
29
  attribute :>> appliesToRegime = (RegulatoryRegimeKind::FDA_510k, RegulatoryRegimeKind::FDA_PMA);
30
+ item fdaCyberSection4 : StandardClause {
31
+ @MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-IV"; }
32
+ attribute :>> name = "FDACyberSectionIV";
33
+ attribute :>> clauseNumber = "IV";
34
+ attribute :>> title = "general cybersecurity principles";
35
+ attribute :>> normativeStrength = "informative";
36
+ }
37
+ item fdaCyberSection5 : StandardClause {
38
+ @MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-V"; }
39
+ attribute :>> name = "FDACyberSectionV";
40
+ attribute :>> clauseNumber = "V";
41
+ attribute :>> title = "secure product development framework";
42
+ attribute :>> normativeStrength = "informative";
43
+ item fdaCyberSection5A : StandardClause {
44
+ @MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-V-A"; }
45
+ attribute :>> name = "FDACyberSectionVA";
46
+ attribute :>> clauseNumber = "V.A";
47
+ attribute :>> title = "security risk management";
48
+ attribute :>> normativeStrength = "informative";
49
+ }
50
+ item fdaCyberSection5B : StandardClause {
51
+ @MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-V-B"; }
52
+ attribute :>> name = "FDACyberSectionVB";
53
+ attribute :>> clauseNumber = "V.B";
54
+ attribute :>> title = "security architecture";
55
+ attribute :>> normativeStrength = "informative";
56
+ }
57
+ item fdaCyberSection5C : StandardClause {
58
+ @MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-V-C"; }
59
+ attribute :>> name = "FDACyberSectionVC";
60
+ attribute :>> clauseNumber = "V.C";
61
+ attribute :>> title = "cybersecurity testing";
62
+ attribute :>> normativeStrength = "informative";
63
+ }
64
+ }
65
+ item fdaCyberSection6 : StandardClause {
66
+ @MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-VI"; }
67
+ attribute :>> name = "FDACyberSectionVI";
68
+ attribute :>> clauseNumber = "VI";
69
+ attribute :>> title = "cybersecurity transparency and vulnerability management";
70
+ attribute :>> normativeStrength = "informative";
71
+ }
28
72
  }
29
73
 
30
- item fdaCyberSection4 : StandardClause {
31
- attribute :>> id = "STD-FDA-CYBER-2023-IV";
32
- attribute :>> name = "FDACyberSectionIV";
33
- attribute :>> clauseNumber = "IV";
34
- attribute :>> title = "general cybersecurity principles";
35
- attribute :>> normativeStrength = "informative";
36
- }
37
- item fdaCyberSection5 : StandardClause {
38
- attribute :>> id = "STD-FDA-CYBER-2023-V";
39
- attribute :>> name = "FDACyberSectionV";
40
- attribute :>> clauseNumber = "V";
41
- attribute :>> title = "secure product development framework";
42
- attribute :>> normativeStrength = "informative";
43
- }
44
- item fdaCyberSection5A : StandardClause {
45
- attribute :>> id = "STD-FDA-CYBER-2023-V-A";
46
- attribute :>> name = "FDACyberSectionVA";
47
- attribute :>> clauseNumber = "V.A";
48
- attribute :>> title = "security risk management";
49
- attribute :>> normativeStrength = "informative";
50
- }
51
- item fdaCyberSection5B : StandardClause {
52
- attribute :>> id = "STD-FDA-CYBER-2023-V-B";
53
- attribute :>> name = "FDACyberSectionVB";
54
- attribute :>> clauseNumber = "V.B";
55
- attribute :>> title = "security architecture";
56
- attribute :>> normativeStrength = "informative";
57
- }
58
- item fdaCyberSection5C : StandardClause {
59
- attribute :>> id = "STD-FDA-CYBER-2023-V-C";
60
- attribute :>> name = "FDACyberSectionVC";
61
- attribute :>> clauseNumber = "V.C";
62
- attribute :>> title = "cybersecurity testing";
63
- attribute :>> normativeStrength = "informative";
64
- }
65
- item fdaCyberSection6 : StandardClause {
66
- attribute :>> id = "STD-FDA-CYBER-2023-VI";
67
- attribute :>> name = "FDACyberSectionVI";
68
- attribute :>> clauseNumber = "VI";
69
- attribute :>> title = "cybersecurity transparency and vulnerability management";
70
- attribute :>> normativeStrength = "informative";
71
- }
72
74
 
73
- connection fdaCyberHas4 : Composes connect parent ::> fdaCybersecurity2023 to child ::> fdaCyberSection4;
74
- connection fdaCyberHas5 : Composes connect parent ::> fdaCybersecurity2023 to child ::> fdaCyberSection5;
75
- connection fdaCyberHas6 : Composes connect parent ::> fdaCybersecurity2023 to child ::> fdaCyberSection6;
76
75
 
77
- connection fdaCyberHas5A : Composes connect parent ::> fdaCyberSection5 to child ::> fdaCyberSection5A;
78
- connection fdaCyberHas5B : Composes connect parent ::> fdaCyberSection5 to child ::> fdaCyberSection5B;
79
- connection fdaCyberHas5C : Composes connect parent ::> fdaCyberSection5 to child ::> fdaCyberSection5C;
80
76
  }