@memoarchitect/ontology 0.6.5 → 0.8.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  5. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  7. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  8. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  9. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  11. package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
  12. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  13. package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
  15. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  16. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
  17. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
  18. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
  33. package/examples/gpca-pump/model/catalog/project.sysml +26 -0
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
  35. package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
  37. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
  38. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
  39. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
  40. package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  41. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
  42. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
  44. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
  45. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
  47. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
  48. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
  49. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
  50. package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
  51. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
  53. package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
  54. package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
  55. package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  56. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
  57. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
  58. package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  59. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
  61. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
  62. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
  64. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
  66. package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
  67. package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
  68. package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
  69. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
  71. package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
  72. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  73. package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
  74. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
  75. package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
  76. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  77. package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
  78. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  79. package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
  80. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  81. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  82. package/examples/nested-architecture-dsm/README.md +49 -0
  83. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
  84. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  86. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  87. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
  88. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  89. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
  90. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  91. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
  92. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  93. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  94. package/examples/ros-mobile-robot/README.md +40 -0
  95. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  96. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  97. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  98. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  99. package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
  100. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  101. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  102. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  103. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  104. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
  105. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  106. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  107. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  108. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
  109. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  110. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  111. package/examples/sysml-diagram-samples/README.md +7 -0
  112. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  113. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  114. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  115. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  116. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
  118. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  119. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
  120. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  124. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
  128. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
  129. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  130. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  131. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
  132. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  133. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  134. package/examples/ui-screen-regions/README.md +117 -0
  135. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
  136. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
  137. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  138. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  139. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  140. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  141. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  142. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  143. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  144. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  145. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  146. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  147. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  148. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
  149. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  150. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  151. package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -0
  152. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  153. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
  154. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  155. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
  159. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
  160. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
  161. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
  162. package/extensions/LICENSES/MIT.txt +19 -0
  163. package/extensions/README.md +94 -0
  164. package/extensions/aadl/memo.package.yaml +18 -0
  165. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  166. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  167. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  168. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  169. package/extensions/clinical/memo.package.yaml +18 -0
  170. package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -0
  171. package/extensions/cloud/memo.package.yaml +18 -0
  172. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  173. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  174. package/extensions/container/memo.package.yaml +18 -0
  175. package/extensions/container/src/container_extension.sysml +37 -0
  176. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  177. package/extensions/messaging/memo.package.yaml +18 -0
  178. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  179. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  180. package/extensions/ros/memo.package.yaml +18 -0
  181. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  182. package/extensions/ros/src/ros_extension.sysml +200 -0
  183. package/extensions/template/memo.package.yaml +17 -0
  184. package/extensions/template/src/extension.sysml +37 -0
  185. package/memo.manifest.yaml +15 -2
  186. package/methodologies/default/memo.package.yaml +19 -9
  187. package/methodologies/gpca/memo.package.yaml +18 -9
  188. package/ontology/memo.package.yaml +23 -8
  189. package/package.json +6 -6
  190. package/profile/memo.package.yaml +18 -9
  191. package/src/architecture/decisions/memo_decisions.sysml +28 -0
  192. package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
  193. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  194. package/src/architecture/functional/functions/memo_functions.sysml +93 -43
  195. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
  196. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
  197. package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
  198. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
  199. package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
  200. package/src/architecture/operational/activities/memo_activities.sysml +10 -4
  201. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  202. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  203. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  204. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  205. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  206. package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
  207. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  208. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  209. package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
  210. package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
  211. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  212. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  213. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  214. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  215. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  216. package/src/artifacts/standards/iec_60812.sysml +51 -0
  217. package/src/artifacts/standards/iec_62304.sysml +210 -0
  218. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  219. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  220. package/src/artifacts/standards/iso_13485.sysml +113 -0
  221. package/src/artifacts/standards/iso_14971.sysml +94 -0
  222. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  223. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  224. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
  225. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
  226. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
  227. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
  228. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
  229. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
  230. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
  231. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
  232. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
  233. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
  234. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
  235. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
  236. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
  237. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
  238. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
  239. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  240. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
  241. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
  242. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
  243. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
  244. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
  245. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
  246. package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
  247. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
  248. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
  249. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
  250. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
  251. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
  252. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
  253. package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
  254. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
  255. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +2 -2
  256. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  257. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  258. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  259. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  260. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  261. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  262. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  263. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  264. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  265. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  266. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
  267. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  268. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  269. package/src/core/annotations/memo_annotations.sysml +96 -0
  270. package/src/core/common/memo_common.sysml +140 -18
  271. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  272. package/src/core/dimensions/dimensions.sysml +17 -1
  273. package/src/core/enumerations/memo_enumerations.sysml +101 -20
  274. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  275. package/src/core/relationships/memo_relationships.sysml +199 -194
  276. package/src/memo_namespaces.sysml +127 -67
  277. package/src/methodology/core/memo_core.sysml +69 -2
  278. package/src/methodology/profiles/memo_profiles.sysml +31 -41
  279. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  280. package/src/rules/closure/closure_rules.sysml +104 -31
  281. package/src/rules/coverage/coverage_rules.sysml +4 -256
  282. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  283. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  284. package/src/rules/ontology/ontology_invariants.sysml +243 -74
  285. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  286. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
  287. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  288. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  289. package/src/viewpoints/context/context_viewpoint.sysml +4 -2
  290. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  291. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  292. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  293. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  294. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
  295. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  296. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
  297. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
  298. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  299. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  300. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  301. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
  302. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  303. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  304. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  305. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  306. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  307. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  308. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  309. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  310. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  311. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  312. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  313. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  314. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  315. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  316. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  317. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
  318. package/templates/connected-device/memo.package.yaml +11 -5
  319. package/templates/connected-device/model/catalog/project.sysml +28 -0
  320. package/templates/connected-device/syside.toml +1 -1
  321. package/templates/default/memo.package.yaml +11 -5
  322. package/templates/default/model/catalog/project.sysml +28 -0
  323. package/templates/default/syside.toml +1 -1
  324. package/templates/infusion-pump/memo.package.yaml +11 -5
  325. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  326. package/templates/infusion-pump/syside.toml +1 -1
  327. package/templates/monitoring-device/memo.package.yaml +11 -5
  328. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  329. package/templates/monitoring-device/syside.toml +1 -1
  330. package/templates/samd/memo.package.yaml +11 -5
  331. package/templates/samd/model/catalog/project.sysml +28 -0
  332. package/templates/samd/syside.toml +1 -1
  333. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  334. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  335. package/examples/extensions/README.md +0 -16
  336. package/examples/extensions/clinical/memo.package.yaml +0 -9
  337. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
  338. package/examples/extensions/template/memo.package.yaml +0 -9
  339. package/examples/extensions/template/src/extension.sysml +0 -15
  340. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  341. package/examples/gpca-pump/memo.config.yaml +0 -9
  342. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  343. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  344. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  345. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  346. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  347. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  348. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  349. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  350. package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
  351. package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
  352. package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
  353. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
  354. package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
  355. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  356. package/ontology/memo.rendering.yaml +0 -84
  357. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  358. package/src/compliance/change/memo_change.sysml +0 -17
  359. package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
  360. package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
  361. package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
  362. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  363. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  364. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  365. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  366. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  367. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  368. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  369. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  370. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  371. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  372. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  373. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  374. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  375. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  376. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  377. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  378. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  379. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  380. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  381. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  382. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  383. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  384. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  385. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  386. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  387. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  388. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  389. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  390. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  391. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  392. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  393. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  394. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -0,0 +1,128 @@
1
+ ---
2
+ id: syrs
3
+ title: System Requirements Specification
4
+ standard: IEC 60601-1:2005+AMD1:2012+AMD2:2020
5
+ clauses: ["4.2", "IEC 62304:2006+AMD1:2015 §5.2", "ISO 14971:2019 §5"]
6
+ required_for: ["CE", "FDA_510k", "MDR"]
7
+ ---
8
+
9
+ {{include:shared/snippets/document-control-header.md}}
10
+
11
+ {{toc}}
12
+
13
+ ---
14
+
15
+ ## 1. Purpose
16
+
17
+ This System Requirements Specification (SyRS) defines the top-level requirements for the **{{project.product}}** cyber-physical system, serving as the bridge between user needs and the lower-level hardware (IEC 60601-1) and software (IEC 62304) requirements.
18
+
19
+ One standard is named above because a document claims one; the others it feeds are carried in `clauses:`.
20
+
21
+ ---
22
+
23
+ ## 2. System Requirements Summary
24
+
25
+ Summary metrics for the system requirements captured in the model:
26
+
27
+ ```memo-query
28
+ kind: Requirement
29
+ where: requirementKind == "RequirementKind::system"
30
+ display: count
31
+ label: Total system requirements
32
+ ```
33
+
34
+ ---
35
+
36
+ ## 3. Functional Requirements
37
+
38
+ Binding system requirements — those carrying a `shall` obligation:
39
+
40
+ ```memo-query
41
+ kind: Requirement
42
+ where: obligation == "ObligationKind::shall"
43
+ display: table
44
+ columns: name, requirementKind, doc
45
+ sort: name
46
+ empty: "No requirements carry a `shall` obligation. Set `obligation` on Requirement elements."
47
+ ```
48
+
49
+ ### All System Requirements
50
+
51
+ ```memo-query
52
+ kind: Requirement
53
+ where: requirementKind == "RequirementKind::system"
54
+ display: table
55
+ columns: name, requirementKind, safetyClass, doc
56
+ sort: name
57
+ empty: "No system requirements defined. Add Requirement elements with requirementKind = system."
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 4. Requirements Allocation
63
+
64
+ How system requirements are allocated down to hardware and software.
65
+
66
+ ### 4.1 Elements System Requirements Are Satisfied By
67
+
68
+ ```memo-query
69
+ kind: Requirement
70
+ where: requirementKind == "RequirementKind::system"
71
+ traverse: outgoing satisfiedBy
72
+ display: table
73
+ columns: name, kind, layer, doc
74
+ sort: name
75
+ empty: "No system requirements are linked to a satisfying element. Add SatisfiedBy links."
76
+ ```
77
+
78
+ ### 4.2 Function Allocation
79
+
80
+ The allocation table proper — which element allocates to which — is a relationship table, not an element table. It is grouped by the kind of the receiving element, which is where the hardware/software split actually lives: `AllocatedTo` joins two architecture elements and carries no layer of its own, so a single comparison cannot ask for "the hardware ones" without naming one hardware kind and dropping the rest.
81
+
82
+ ```memo-query
83
+ select: relationships
84
+ kind: allocatedTo
85
+ display: grouped
86
+ group_by: target.kind
87
+ columns: source, source.kind, target, target.layer
88
+ sort: source
89
+ empty: "No allocations defined. Add AllocatedTo links."
90
+ ```
91
+
92
+ ---
93
+
94
+ ## 5. Non-Functional Requirements
95
+
96
+ ### 5.1 System Performance Requirements
97
+
98
+ _[TODO: Define system performance requirements (e.g. overall throughput, latency, physical capacities)]_
99
+
100
+ ### 5.2 System Safety Requirements
101
+
102
+ Hazards from the ISO 14971 analysis that system-level risk controls must address:
103
+
104
+ ```memo-query
105
+ kind: [Hazard, HazardousSituation]
106
+ display: table
107
+ columns: name, layer, doc
108
+ sort: name
109
+ empty: "No hazards defined in the risk model."
110
+ ```
111
+
112
+ The risk controls answering them:
113
+
114
+ ```memo-query
115
+ kind: RiskControlMeasure
116
+ display: table
117
+ columns: name, layer, doc
118
+ sort: name
119
+ empty: "No risk controls defined."
120
+ ```
121
+
122
+ ---
123
+
124
+ {{include:shared/snippets/revision-history-table.md}}
125
+
126
+ {{include:shared/snippets/approval-block.md}}
127
+
128
+ {{include:shared/snippets/references-section.md}}
@@ -1,5 +1,7 @@
1
1
  package memo_assurance_cybersecurity {
2
+ private import Metaobjects::SemanticMetadata;
2
3
  private import ScalarValues::*;
4
+ private import memo_core_relationships::*; // MemoRelationship
3
5
 
4
6
  private import memo_core_common::*;
5
7
  private import memo_core_enumerations::*;
@@ -27,7 +29,7 @@ package memo_assurance_cybersecurity {
27
29
  attribute authenticationExpected : Boolean;
28
30
  }
29
31
 
30
- item def Threat specializes RiskDriver {
32
+ part def Threat specializes RiskDriver {
31
33
  attribute threatCategory : ThreatCategoryKind;
32
34
  attribute attackVector : String;
33
35
  attribute threatSource : String;
@@ -37,7 +39,7 @@ package memo_assurance_cybersecurity {
37
39
  attribute strideCategory : ThreatCategoryKind;
38
40
  }
39
41
 
40
- item def Vulnerability specializes MemoPart {
42
+ item def Vulnerability specializes RiskItem {
41
43
  attribute weakness : String;
42
44
  attribute exploitability : String;
43
45
  attribute discoveryMethod : String;
@@ -46,18 +48,6 @@ package memo_assurance_cybersecurity {
46
48
  attribute remediable : Boolean;
47
49
  }
48
50
 
49
- // A scenario specialization: an attack path through the
50
- // system, classified by the shared scenario dimensions with purpose
51
- // `cybersecurity`.
52
- part def ThreatScenario specializes MemoScenario {
53
- attribute actorDescription : String;
54
- attribute assumptionSummary : String;
55
- attribute guaranteeSummary : String;
56
- attribute securityObjective : String;
57
- attribute abuseCaseReference : String;
58
- attribute defaultCategory : ThreatCategoryKind;
59
- }
60
-
61
51
  item def CyberHazard specializes Hazard {
62
52
  attribute securityImpact : String;
63
53
  attribute safetyImpact : String;
@@ -66,7 +56,7 @@ package memo_assurance_cybersecurity {
66
56
  attribute linkedSafetyHazardId : String;
67
57
  }
68
58
 
69
- item def CyberRisk specializes Risk {
59
+ part def CyberRisk specializes Risk {
70
60
  attribute exploitabilityEstimate : String;
71
61
  attribute attackComplexity : String;
72
62
  attribute detectability : DetectionKind;
@@ -88,15 +78,44 @@ package memo_assurance_cybersecurity {
88
78
  attribute defaultConcern : ConcernKind;
89
79
  }
90
80
 
91
- item def TrustBoundary specializes InterfaceElement {
81
+ part def TrustBoundary specializes InterfaceElement {
92
82
  attribute boundaryType : String;
93
83
  attribute crossingConstraint : String;
94
84
  attribute trustAssumption : String;
95
85
  }
96
86
 
97
- part def SecurityClaim specializes MemoEvidence {
98
- attribute claimText : String;
99
- attribute claimScope : String;
100
- attribute supportedByEvidence : String;
87
+ // ── Relations owned by this package ─────────────────────────────
88
+ // Moved out of memo_core_relationships: their ends are typed against
89
+ // types declared here, and core must not depend on a domain package.
90
+ connection def Exploits :> MemoRelationship {
91
+ end realizedThreat : RequirementDriver :>> source;
92
+ end enablingVulnerability : Vulnerability :>> target;
93
+ }
94
+ abstract connection exploitsLinks : Exploits[*];
95
+ metadata def <exploits> ExploitsMetadata :> SemanticMetadata {
96
+ :> annotatedElement : SysML::ConnectionDefinition;
97
+ :> annotatedElement : SysML::ConnectionUsage;
98
+ :>> baseType = exploitsLinks meta SysML::Usage;
99
+ }
100
+ connection def RealizedByScenario :> MemoRelationship {
101
+ end realizedThreat : RequirementDriver :>> source;
102
+ end scenario : MemoScenario :>> target;
103
+ }
104
+ abstract connection realizedByScenarioLinks : RealizedByScenario[*];
105
+ metadata def <realizedByScenario> RealizedByScenarioMetadata :> SemanticMetadata {
106
+ :> annotatedElement : SysML::ConnectionDefinition;
107
+ :> annotatedElement : SysML::ConnectionUsage;
108
+ :>> baseType = realizedByScenarioLinks meta SysML::Usage;
109
+ }
110
+ connection def ImpactsSafety :> MemoRelationship {
111
+ attribute tracePurpose : String;
112
+ end cyberElement : MemoPart :>> source;
113
+ end safetyElement : RiskItem :>> target;
114
+ }
115
+ abstract connection impactsSafetyLinks : ImpactsSafety[*];
116
+ metadata def <impactsSafety> ImpactsSafetyMetadata :> SemanticMetadata {
117
+ :> annotatedElement : SysML::ConnectionDefinition;
118
+ :> annotatedElement : SysML::ConnectionUsage;
119
+ :>> baseType = impactsSafetyLinks meta SysML::Usage;
101
120
  }
102
121
  }
@@ -4,6 +4,7 @@
4
4
  // engineering chain: user → task → use error → hazard → risk control →
5
5
  // usability validation.
6
6
  package memo_assurance_human_factors {
7
+ private import Metaobjects::SemanticMetadata;
7
8
  private import ScalarValues::*;
8
9
 
9
10
  private import memo_core_common::*;
@@ -19,32 +20,38 @@ package memo_assurance_human_factors {
19
20
  attribute rootCauseType : String;
20
21
  }
21
22
 
22
- // A use scenario whose performance could lead to a hazardous situation
23
- // (IEC 62366-1 3.9); selected for summative evaluation.
24
- part def HazardRelatedUseScenario specializes MemoScenario {
25
- attribute hazardReference : String;
26
- attribute selectionRationale : String;
23
+ connection def CommitsUseError :> MemoRelationship {
24
+ end task : UserTask :>> source;
25
+ end useError : UseError :>> target;
27
26
  }
28
-
29
- part def FormativeEvaluation specializes MemoEvidence {
30
- attribute evaluationMethod : String;
31
- attribute findingsSummary : String;
32
- attribute designChangesTriggered : String;
27
+ abstract connection commitsUseErrorLinks : CommitsUseError[*];
28
+ metadata def <commitsUseError> CommitsUseErrorMetadata :> SemanticMetadata {
29
+ :> annotatedElement : SysML::ConnectionDefinition;
30
+ :> annotatedElement : SysML::ConnectionUsage;
31
+ :>> baseType = commitsUseErrorLinks meta SysML::Usage;
33
32
  }
34
-
35
- part def UsabilityValidation specializes MemoEvidence {
36
- attribute participantProfile : String;
37
- attribute participantCount : Integer;
38
- attribute acceptanceCriteria : String;
39
- attribute resultSummary : String;
33
+ connection def EvaluatesTask :> MemoRelationship {
34
+ end evaluation : MemoEvidence :>> source;
35
+ end task : UserTask :>> target;
36
+ }
37
+ abstract connection evaluatesTaskLinks : EvaluatesTask[*];
38
+ metadata def <evaluatesTask> EvaluatesTaskMetadata :> SemanticMetadata {
39
+ :> annotatedElement : SysML::ConnectionDefinition;
40
+ :> annotatedElement : SysML::ConnectionUsage;
41
+ :>> baseType = evaluatesTaskLinks meta SysML::Usage;
40
42
  }
41
43
 
42
- connection def CommitsUseError :> MemoRelationship {
43
- end task : UserTask;
44
- end useError : UseError;
44
+ // ── Relations owned by this package ─────────────────────────────
45
+ // Moved out of memo_core_relationships: their ends are typed against
46
+ // types declared here, and core must not depend on a domain package.
47
+ connection def TestedByUsability :> MemoRelationship {
48
+ end uiElementOrTask : MemoPart :>> source;
49
+ end usabilityTest : MemoEvidence :>> target;
45
50
  }
46
- connection def EvaluatesTask :> MemoRelationship {
47
- end evaluation : MemoEvidence;
48
- end task : UserTask;
51
+ abstract connection testedByUsabilityLinks : TestedByUsability[*];
52
+ metadata def <testedByUsability> TestedByUsabilityMetadata :> SemanticMetadata {
53
+ :> annotatedElement : SysML::ConnectionDefinition;
54
+ :> annotatedElement : SysML::ConnectionUsage;
55
+ :>> baseType = testedByUsabilityLinks meta SysML::Usage;
49
56
  }
50
57
  }
@@ -40,12 +40,15 @@ package memo_assurance_requirements {
40
40
  enum designControl;
41
41
  }
42
42
 
43
- requirement def Requirement specializes VerifiableElement {
43
+ requirement def Requirement specializes MemoRequirement {
44
44
  attribute requirementKind : RequirementKind;
45
45
  attribute statement : String;
46
46
  attribute sourceKind : RequirementSourceKind;
47
47
  attribute concernKind : ConcernKind;
48
- attribute requirementStatus : RequirementStatusKind;
48
+ // Editorial state is the inherited `status : ElementStatusKind` — the
49
+ // one status vocabulary in MEMO. Whether a requirement is implemented,
50
+ // verified, or validated is read from its Realizes / VerifiedBy /
51
+ // Validates links, not restated here.
49
52
  attribute acceptanceCriteria : String;
50
53
  attribute subjectDescription : String;
51
54
  attribute actorDescription : String;
@@ -27,7 +27,7 @@ package memo_assurance_requirements_needs {
27
27
  enum designControl;
28
28
  }
29
29
 
30
- requirement def Need specializes MemoNeed, RequirementDriver {
30
+ requirement def Need specializes MemoNeed {
31
31
  attribute needKind : NeedKind;
32
32
  // user need (IEC 62366-1)
33
33
  attribute userPopulationReference : String;
@@ -1,37 +1,57 @@
1
1
  package memo_assurance_safety_risk_analysis {
2
+ private import Metaobjects::SemanticMetadata;
2
3
  private import ScalarValues::*;
4
+ private import memo_core_relationships::*; // MemoRelationship
3
5
 
4
6
  private import memo_core_common::*;
5
7
  private import memo_core_enumerations::*;
6
- item def FMEAWorksheet specializes AnalysisArtifact {
8
+ private import memo_assurance_safety_risk::*; // RiskItem
9
+ part def FMEAWorksheet specializes AnalysisArtifact {
7
10
  attribute analysisScope : String;
8
11
  attribute standardReference : String;
9
12
  attribute analysisBasis : String;
10
13
  attribute revisionDate : String;
11
14
  attribute reviewer : String;
12
15
  }
13
- item def FailureMode specializes MemoPart {
16
+ // An FMEA worksheet row states, on one line, what fails, what that does,
17
+ // how likely it is, and what controls it. The RPN triple carries the
18
+ // *scoring*; `effect` and `probability` carry the two facts a reader of the
19
+ // row needs in words. They are summaries, not replacements: the modelled
20
+ // form of an effect is a FailureEffect linked by Causes, and the modelled
21
+ // form of a control is a RiskControlMeasure linked by
22
+ // Mitigates(mitigationKind = failureMode) — traversable as
23
+ // `traverse: incoming mitigates`. MEMO deliberately does not add a second
24
+ // failure-mode-to-control relation; one whole/part and one mitigation
25
+ // relation is the lean shape the rest of the ontology already uses.
26
+ item def FailureMode specializes RiskItem {
14
27
  attribute failureModeKind : FailureModeKind;
28
+ doc /* One-line statement of what this failure does, for the worksheet
29
+ * row. The structured form is a FailureEffect. */
30
+ attribute effect : String[0..1];
15
31
  attribute severityRating : Integer;
32
+ doc /* Qualitative likelihood, the ISO 14971 register. `occurrenceRating`
33
+ * is the same fact as an FMEA score; both are kept because an FMEA
34
+ * reports the score and a risk file reports the qualitative band. */
35
+ attribute probability : ProbabilityKind[0..1];
16
36
  attribute occurrenceRating : Integer;
17
37
  attribute detectionRating : Integer;
18
38
  attribute rpn : Integer;
19
39
  attribute criticality : CriticalityKind;
20
40
  }
21
- item def FailureEffect specializes MemoPart {
41
+ item def FailureEffect specializes RiskItem {
22
42
  attribute effectLevel : FailureEffectLevelKind;
23
43
  attribute effectOnPatient : String;
24
44
  attribute effectOnOperator : String;
25
45
  attribute effectOnSystem : String;
26
46
  attribute severity : SeverityKind;
27
47
  }
28
- item def FailureCause specializes MemoPart {
48
+ item def FailureCause specializes RiskItem {
29
49
  attribute causeCategory : FailureCauseCategoryKind;
30
50
  attribute causeDescription : String;
31
51
  attribute occurrenceRating : ProbabilityKind;
32
52
  attribute preventionMethod : String;
33
53
  }
34
- item def DetectionMethod specializes MemoPart {
54
+ part def DetectionMethod specializes MemoPart {
35
55
  attribute methodKind : DetectionMethodKind;
36
56
  attribute detectionPoint : String;
37
57
  attribute confidence : DetectionKind;
@@ -42,43 +62,41 @@ package memo_assurance_safety_risk_analysis {
42
62
  attribute targetCompletionDate : String;
43
63
  attribute revisedRpn : Integer;
44
64
  }
45
- item def FaultTree specializes AnalysisArtifact {
65
+ part def FaultTree specializes AnalysisArtifact {
46
66
  attribute standardReference : String;
47
67
  attribute analysisScope : String;
48
68
  attribute topEventDescription : String;
49
69
  attribute cutSetSummary : String;
50
70
  attribute revisionDate : String;
51
71
  }
52
- item def FaultTreeEvent specializes MemoPart {
72
+ part def FaultTreeNode specializes MemoPart {
53
73
  attribute eventKind : FaultTreeEventKind;
54
74
  attribute probability : Real;
55
75
  attribute failureRate : Real;
56
76
  attribute exposureTime : Real;
57
77
  attribute :>> description : String;
58
- }
59
- item def FaultTreeGate specializes MemoPart {
60
78
  attribute gateKind : FaultTreeGateKind;
61
79
  attribute kValue : Integer;
62
80
  attribute nValue : Integer;
63
81
  }
64
- item def MinimalCutSet specializes MemoPart {
82
+ item def MinimalCutSet specializes RiskItem {
65
83
  attribute cutSetOrder : Integer;
66
84
  attribute probability : Real;
67
85
  attribute involvedEvents : String;
68
86
  attribute significance : String;
69
87
  }
70
- item def HAZOPStudy specializes AnalysisArtifact {
88
+ part def HAZOPStudy specializes AnalysisArtifact {
71
89
  attribute standardReference : String;
72
90
  attribute processDescription : String;
73
91
  attribute studyScope : String;
74
92
  attribute teamComposition : String;
75
93
  }
76
- item def HAZOPNode specializes MemoPart {
94
+ part def HAZOPNode specializes MemoPart {
77
95
  attribute nodeDescription : String;
78
96
  attribute designIntent : String;
79
97
  attribute operatingConditions : String;
80
98
  }
81
- item def HAZOPDeviation specializes MemoPart {
99
+ item def HAZOPDeviation specializes RiskItem {
82
100
  attribute guideWord : HAZOPGuideWordKind;
83
101
  attribute parameter : String;
84
102
  attribute cause : String;
@@ -88,4 +106,91 @@ package memo_assurance_safety_risk_analysis {
88
106
  attribute likelihood : ProbabilityKind;
89
107
  attribute recommendation : String;
90
108
  }
109
+
110
+ // ── Relations owned by this package ─────────────────────────────
111
+ // Moved out of memo_core_relationships: their ends are typed against
112
+ // types declared here, and core must not depend on a domain package.
113
+ // Causes unifies the former causal edges of the ISO 14971 / FMEA / FTA
114
+ // chains — CausesEffect, CausedBy, ContributesToHazard, LeadsToHazard,
115
+ // OriginatesFrom, UseErrorLeadsToHazard — keyed by causeKind. cause is the
116
+ // originating element, effect the consequence.
117
+ enum def CauseKind {
118
+ enum failureCausesEffect;
119
+ enum failureCausedBy;
120
+ enum contributesToHazard;
121
+ enum leadsToHazard;
122
+ enum originatesFrom;
123
+ enum useErrorLeadsToHazard;
124
+ }
125
+ connection def Causes :> MemoRelationship {
126
+ attribute causeKind : CauseKind;
127
+ end cause : MemoPart :>> source;
128
+ end effect : RiskItem :>> target;
129
+ }
130
+ abstract connection causesLinks : Causes[*];
131
+ metadata def <causes> CausesMetadata :> SemanticMetadata {
132
+ :> annotatedElement : SysML::ConnectionDefinition;
133
+ :> annotatedElement : SysML::ConnectionUsage;
134
+ :>> baseType = causesLinks meta SysML::Usage;
135
+ }
136
+ connection def DetectedBy :> MemoRelationship {
137
+ end failureMode : FailureMode :>> source;
138
+ end detectionMethod : DetectionMethod :>> target;
139
+ }
140
+ abstract connection detectedByLinks : DetectedBy[*];
141
+ metadata def <detectedBy> DetectedByMetadata :> SemanticMetadata {
142
+ :> annotatedElement : SysML::ConnectionDefinition;
143
+ :> annotatedElement : SysML::ConnectionUsage;
144
+ :>> baseType = detectedByLinks meta SysML::Usage;
145
+ }
146
+ connection def InputToGate :> MemoRelationship {
147
+ end input : FaultTreeNode :>> source;
148
+ end gate : FaultTreeNode :>> target;
149
+ }
150
+ abstract connection inputToGateLinks : InputToGate[*];
151
+ metadata def <inputToGate> InputToGateMetadata :> SemanticMetadata {
152
+ :> annotatedElement : SysML::ConnectionDefinition;
153
+ :> annotatedElement : SysML::ConnectionUsage;
154
+ :>> baseType = inputToGateLinks meta SysML::Usage;
155
+ }
156
+ connection def ProducesEvent :> MemoRelationship {
157
+ end gate : FaultTreeNode :>> source;
158
+ end eventElement : FaultTreeNode :>> target;
159
+ }
160
+ abstract connection producesEventLinks : ProducesEvent[*];
161
+ metadata def <producesEvent> ProducesEventMetadata :> SemanticMetadata {
162
+ :> annotatedElement : SysML::ConnectionDefinition;
163
+ :> annotatedElement : SysML::ConnectionUsage;
164
+ :>> baseType = producesEventLinks meta SysML::Usage;
165
+ }
166
+ connection def ContainsEvent :> MemoRelationship {
167
+ end cutSet : MinimalCutSet :>> source;
168
+ end eventElement : FaultTreeNode :>> target;
169
+ }
170
+ abstract connection containsEventLinks : ContainsEvent[*];
171
+ metadata def <containsEvent> ContainsEventMetadata :> SemanticMetadata {
172
+ :> annotatedElement : SysML::ConnectionDefinition;
173
+ :> annotatedElement : SysML::ConnectionUsage;
174
+ :>> baseType = containsEventLinks meta SysML::Usage;
175
+ }
176
+ connection def IdentifiesHazard :> MemoRelationship {
177
+ end deviation : HAZOPDeviation :>> source;
178
+ end hazard : Hazard :>> target;
179
+ }
180
+ abstract connection identifiesHazardLinks : IdentifiesHazard[*];
181
+ metadata def <identifiesHazard> IdentifiesHazardMetadata :> SemanticMetadata {
182
+ :> annotatedElement : SysML::ConnectionDefinition;
183
+ :> annotatedElement : SysML::ConnectionUsage;
184
+ :>> baseType = identifiesHazardLinks meta SysML::Usage;
185
+ }
186
+ connection def HasFailureMode :> MemoRelationship {
187
+ end element : ArchitectureElement :>> source;
188
+ end failureMode : FailureMode :>> target;
189
+ }
190
+ abstract connection hasFailureModeLinks : HasFailureMode[*];
191
+ metadata def <hasFailureMode> HasFailureModeMetadata :> SemanticMetadata {
192
+ :> annotatedElement : SysML::ConnectionDefinition;
193
+ :> annotatedElement : SysML::ConnectionUsage;
194
+ :>> baseType = hasFailureModeLinks meta SysML::Usage;
195
+ }
91
196
  }
@@ -1,5 +1,7 @@
1
1
  package memo_assurance_safety_risk {
2
+ private import Metaobjects::SemanticMetadata;
2
3
  private import ScalarValues::*;
4
+ private import memo_core_relationships::*; // MemoRelationship
3
5
 
4
6
  private import memo_core_common::*;
5
7
  private import memo_core_enumerations::*;
@@ -46,32 +48,52 @@ package memo_assurance_safety_risk {
46
48
  attribute normalUseRelevant : Boolean;
47
49
  attribute faultConditionRelevant : Boolean;
48
50
  }
49
- item def Hazard specializes MemoPart {
51
+ // ─── Risk-element base ──────────────────────────────────────────
52
+ // The common supertype of the item-based elements an ISO 14971 / FMEA /
53
+ // FTA chain relates: hazards, sequences of events, hazardous situations,
54
+ // harms, causes, failure modes, fault-tree events, cut sets, HAZOP
55
+ // deviations, vulnerabilities.
56
+ //
57
+ // It exists so the risk relations can TYPE their ends. Before it, every
58
+ // one of them (Causes, TracesRisk, DetectedBy, InputToGate, ProducesEvent,
59
+ // ContainsEvent, IdentifiesHazard, Mitigates, ImpactsSafety) fell back to
60
+ // MemoPart — which every element in MEMO is — so the authoring picker
61
+ // offered fault-tree edges when linking a screen to a requirement.
62
+ //
63
+ // It is deliberately an `item def` and deliberately does NOT cover Risk /
64
+ // ResidualRisk / RiskMatrix, which are parts: a risk is an assessed
65
+ // judgement about a chain, not a link in it, and it is reached by
66
+ // AssessedAgainst instead. One base per metaclass is the right shape here
67
+ // — forcing the two families under one supertype would put a hazard and a
68
+ // risk matrix back in the same picker.
69
+ abstract item def RiskItem specializes MemoItem;
70
+
71
+ item def Hazard specializes RiskItem {
50
72
  attribute hazardType : HazardTypeKind;
51
73
  attribute severity : SeverityKind;
52
74
  attribute foreseeable : Boolean;
53
75
  }
54
- item def SequenceOfEvents specializes MemoPart {
76
+ item def SequenceOfEvents specializes RiskItem {
55
77
  attribute initiatingEvent : String;
56
78
  attribute contributingFactors : String;
57
79
  }
58
80
  // A categorized root cause in a hazard causal tree (FDA GIIP
59
81
  // taxonomy pattern: cause -> hazard -> hazardous situation -> harm;
60
82
  // several HazardCause elements may converge on one Hazard).
61
- item def HazardCause specializes MemoPart {
83
+ item def HazardCause specializes RiskItem {
62
84
  attribute causeSource : CauseSourceKind;
63
85
  attribute contributingFactors : String;
64
86
  }
65
- item def HazardousSituation specializes MemoPart {
87
+ item def HazardousSituation specializes RiskItem {
66
88
  attribute exposedPersons : String;
67
89
  attribute operatingCondition : String;
68
90
  }
69
- item def Harm specializes MemoPart {
91
+ item def Harm specializes RiskItem {
70
92
  attribute clinicalImpact : String;
71
93
  attribute reversibility : String;
72
94
  attribute severity : SeverityKind;
73
95
  }
74
- item def RiskControlMeasure specializes VerifiableElement {
96
+ part def RiskControlMeasure specializes VerifiableElement {
75
97
  attribute controlKind : RiskControlKind;
76
98
  attribute implementationKind : RiskControlImplementationKind;
77
99
  attribute verificationStatus : String;
@@ -82,8 +104,57 @@ package memo_assurance_safety_risk {
82
104
  attribute clinicalSignificance : String;
83
105
  attribute supportingEvidence : String;
84
106
  }
85
- item def OverallResidualRiskEvaluation specializes MemoPart {
107
+ part def OverallResidualRiskEvaluation specializes MemoPart {
86
108
  attribute conclusion : String;
87
109
  attribute reviewer : String;
88
110
  }
111
+
112
+ // ── Relations owned by this package ─────────────────────────────
113
+ // Moved out of memo_core_relationships: their ends are typed against
114
+ // types declared here, and core must not depend on a domain package.
115
+ // ISO 14971 risk chain — distinct sequence-of-events relations over risk elements.
116
+ connection def TracesRisk :> MemoRelationship {
117
+ end sourceRiskElement : RiskItem :>> source;
118
+ end targetRiskElement : RiskItem :>> target;
119
+ }
120
+ abstract connection tracesRiskLinks : TracesRisk[*];
121
+ metadata def <tracesRisk> TracesRiskMetadata :> SemanticMetadata {
122
+ :> annotatedElement : SysML::ConnectionDefinition;
123
+ :> annotatedElement : SysML::ConnectionUsage;
124
+ :>> baseType = tracesRiskLinks meta SysML::Usage;
125
+ }
126
+ connection def AssessedAgainst :> MemoRelationship {
127
+ end risk : Risk :>> source;
128
+ end riskMatrix : RiskMatrix :>> target;
129
+ }
130
+ abstract connection assessedAgainstLinks : AssessedAgainst[*];
131
+ metadata def <assessedAgainst> AssessedAgainstMetadata :> SemanticMetadata {
132
+ :> annotatedElement : SysML::ConnectionDefinition;
133
+ :> annotatedElement : SysML::ConnectionUsage;
134
+ :>> baseType = assessedAgainstLinks meta SysML::Usage;
135
+ }
136
+ // Mitigates unifies the control/action → risk-element edges of the
137
+ // ISO 14971 / FMEA / FTA / cyber chains — MitigatesHazard,
138
+ // MitigatesVulnerability, MitigatedByControl, BrokenByControl,
139
+ // AddressedByAction — keyed by mitigationKind. control is the mitigating
140
+ // control/action; mitigatedElement is the hazard/vulnerability/failure/cut set.
141
+ enum def MitigationKind {
142
+ enum hazard;
143
+ enum vulnerability;
144
+ enum failureMode;
145
+ enum cutSet;
146
+ enum fmeaAction;
147
+ }
148
+ connection def Mitigates :> MemoRelationship {
149
+ attribute mitigationKind : MitigationKind;
150
+ // Untyped: controls/hazards may be item defs (RiskControlMeasure, Hazard, …).
151
+ end control :>> source;
152
+ end mitigatedElement : RiskItem :>> target;
153
+ }
154
+ abstract connection mitigatesLinks : Mitigates[*];
155
+ metadata def <mitigates> MitigatesMetadata :> SemanticMetadata {
156
+ :> annotatedElement : SysML::ConnectionDefinition;
157
+ :> annotatedElement : SysML::ConnectionUsage;
158
+ :>> baseType = mitigatesLinks meta SysML::Usage;
159
+ }
89
160
  }