@memoarchitect/ontology 0.4.6 → 0.6.0

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 (255) hide show
  1. package/README.md +5 -4
  2. package/examples/connected-patient-monitor/README.md +7 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
  4. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
  5. package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
  6. package/examples/embedded-infusion-pump/README.md +7 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
  8. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
  9. package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
  10. package/examples/extensions/README.md +16 -0
  11. package/examples/extensions/clinical/memo.package.yaml +9 -0
  12. package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
  13. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
  14. package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
  15. package/examples/extensions/template/memo.package.yaml +9 -0
  16. package/examples/extensions/template/src/extension.sysml +15 -0
  17. package/examples/functional-logical-physical/README.md +7 -0
  18. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
  19. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
  20. package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
  21. package/examples/gpca-pump/README.md +26 -0
  22. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
  23. package/examples/gpca-pump/memo.config.yaml +2 -2
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
  25. package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
  30. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
  31. package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
  32. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  33. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
  34. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
  35. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +139 -21
  36. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
  38. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
  42. package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
  43. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
  44. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
  45. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
  46. package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
  47. package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
  48. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
  49. package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
  50. package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
  51. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
  52. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
  53. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
  54. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
  55. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
  56. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
  57. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
  58. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
  59. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
  60. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
  61. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
  62. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
  63. package/examples/ivd-laboratory-system/README.md +7 -0
  64. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
  65. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
  66. package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
  67. package/examples/manual-surgical-instrument/README.md +7 -0
  68. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
  69. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
  70. package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
  71. package/examples/multidimensional-layers/README.md +7 -0
  72. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
  73. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
  74. package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
  75. package/examples/reusable-instrument/README.md +7 -0
  76. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
  77. package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
  78. package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
  79. package/examples/software-only-medical-device/README.md +7 -0
  80. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
  81. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
  82. package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
  83. package/examples/surgical-closure-workflow/README.md +8 -0
  84. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
  85. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
  86. package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
  87. package/examples/surgical-robot/README.md +7 -0
  88. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
  89. package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
  90. package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
  91. package/examples/sysml-diagram-samples/README.md +32 -0
  92. package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
  93. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
  94. package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
  95. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
  96. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
  97. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
  98. package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
  99. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
  100. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
  101. package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
  102. package/examples/temperature-alarm/README.md +7 -0
  103. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
  104. package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
  105. package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
  106. package/memo.manifest.yaml +4 -1
  107. package/methodologies/default/memo.package.yaml +1 -1
  108. package/methodologies/gpca/memo.package.yaml +4 -4
  109. package/ontology/memo.package.yaml +1 -1
  110. package/ontology/memo.rendering.yaml +37 -0
  111. package/package.json +17 -7
  112. package/profile/memo.package.yaml +1 -1
  113. package/profile/templates/connected-device/starter.sysml +3 -3
  114. package/profile/templates/infusion-pump/starter.sysml +3 -3
  115. package/profile/templates/monitoring-device/starter.sysml +3 -3
  116. package/profile/templates/samd/starter.sysml +3 -3
  117. package/src/architecture/decisions/memo_decisions.sysml +1 -1
  118. package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
  119. package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
  120. package/src/architecture/functional/functions/memo_functions.sysml +81 -0
  121. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
  122. package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
  123. package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
  124. package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
  125. package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
  126. package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
  127. package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
  128. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
  129. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
  130. package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
  131. package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
  132. package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
  133. package/src/architecture/operational/activities/memo_activities.sysml +86 -0
  134. package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
  135. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
  136. package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
  137. package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
  138. package/src/architecture/operational/structure/memo_operational.sysml +26 -0
  139. package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
  140. package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
  141. package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
  142. package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
  143. package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
  144. package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
  145. package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
  146. package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
  147. package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
  148. package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
  149. package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
  150. package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
  151. package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
  152. package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
  153. package/src/compliance/change/memo_change.sysml +2 -2
  154. package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
  155. package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
  156. package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
  157. package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
  158. package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
  159. package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
  160. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
  161. package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
  162. package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
  163. package/src/compliance/iso14971/risk_management_file.sysml +1 -1
  164. package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
  165. package/src/core/common/memo_common.sysml +123 -14
  166. package/src/core/consistency_rules/consistency_rules.sysml +2 -2
  167. package/src/core/dimensions/dimensions.sysml +45 -24
  168. package/src/core/enumerations/memo_enumerations.sysml +11 -16
  169. package/src/core/methodology_scope/methodology_scope.sysml +10 -28
  170. package/src/core/relationships/memo_relationships.sysml +178 -146
  171. package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
  172. package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
  173. package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
  174. package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
  175. package/src/core/terminology/terminology.sysml +35 -0
  176. package/src/memo_namespaces.sysml +247 -302
  177. package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
  178. package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
  179. package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
  180. package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
  181. package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
  182. package/src/rules/closure/closure_rules.sysml +11 -11
  183. package/src/rules/coverage/coverage_rules.sysml +8 -8
  184. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  185. package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
  186. package/src/rules/ontology/ontology_invariants.sysml +133 -0
  187. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  188. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
  189. package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
  190. package/src/viewpoints/context/context_viewpoint.sysml +1 -2
  191. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
  192. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
  193. package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
  194. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  195. package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
  196. package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
  197. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
  198. package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
  199. package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
  200. package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
  201. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  202. package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
  203. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  204. package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
  205. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  206. package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
  207. package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
  208. package/template/memo.package.yaml +1 -1
  209. package/template/src/catalog/starter.sysml +3 -3
  210. package/examples/gpca-pump/model/samples/README.md +0 -24
  211. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
  212. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
  213. package/src/architecture/assurance/memo_assurance.sysml +0 -29
  214. package/src/architecture/context/memo_context.sysml +0 -58
  215. package/src/architecture/functions/memo_functions.sysml +0 -30
  216. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
  217. package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
  218. package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
  219. package/src/architecture/operational/memo_operational.sysml +0 -51
  220. package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
  221. package/src/architecture/system/memo_system_analysis.sysml +0 -54
  222. package/src/artifacts/clinical_safety_report.sysml +0 -12
  223. package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
  224. package/src/artifacts/design_change_log.sysml +0 -12
  225. package/src/artifacts/design_history_file_index.sysml +0 -12
  226. package/src/artifacts/design_input_plan.sysml +0 -12
  227. package/src/artifacts/design_output_plan.sysml +0 -12
  228. package/src/artifacts/evidence_record.sysml +0 -12
  229. package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
  230. package/src/artifacts/hazard_analysis_report.sysml +0 -12
  231. package/src/artifacts/labeling_specification.sysml +0 -12
  232. package/src/artifacts/requirements_specification.sysml +0 -12
  233. package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
  234. package/src/artifacts/risk_management_plan.sysml +0 -12
  235. package/src/artifacts/software_design_description.sysml +0 -12
  236. package/src/artifacts/software_development_plan.sysml +0 -12
  237. package/src/artifacts/soup_list.sysml +0 -12
  238. package/src/artifacts/system_architecture_description.sysml +0 -12
  239. package/src/artifacts/test_protocol.sysml +0 -12
  240. package/src/artifacts/test_report.sysml +0 -12
  241. package/src/artifacts/threat_model_report.sysml +0 -12
  242. package/src/artifacts/usability_engineering_report.sysml +0 -12
  243. package/src/medical_device_library.sysml +0 -100
  244. /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
  245. /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
  246. /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
  247. /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
  248. /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
  249. /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
  250. /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
  251. /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
  252. /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
  253. /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
  254. /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
  255. /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
@@ -0,0 +1,67 @@
1
+ // Use cases (§5). A UseCase is a goal a person or organization wants to
2
+ // achieve with system support — there is no separate Goal class. Clinical,
3
+ // service, manufacturing, and development use cases specialize the same base.
4
+ package memo_architecture_operational_use_cases {
5
+ private import ScalarValues::*;
6
+
7
+ private import memo_core_common::*;
8
+ private import memo_core_enumerations::*;
9
+ private import memo_core_relationships::*;
10
+ private import memo_architecture_operational_context_actors::*;
11
+ private import memo_architecture_operational_context_use_context::*;
12
+ private import memo_assurance_requirements_needs::*;
13
+
14
+ enum def UseCaseKind {
15
+ enum clinical;
16
+ enum service;
17
+ enum manufacturing;
18
+ enum development;
19
+ }
20
+
21
+ use case def UseCase {
22
+ attribute id : String;
23
+ attribute name : String;
24
+ attribute description : String;
25
+ attribute rationale : String;
26
+ attribute sourceReference : String;
27
+ // Text of this use case's goal; this is not a separate Goal element.
28
+ attribute goalStatement : String;
29
+ attribute trigger : String;
30
+ attribute preCondition : String;
31
+ attribute successOutcome : String;
32
+ attribute failureOutcome : String;
33
+ attribute postCondition : String;
34
+ // clinical / service / manufacturing / development
35
+ attribute useCaseKind : UseCaseKind;
36
+
37
+ // The device or system under consideration supports the goal.
38
+ ref supportingSystem : MemoPart[0..1];
39
+ ref primaryUser : User[0..1];
40
+ ref supportingActors : Actor[0..*];
41
+ ref useContext : UseContext[0..1];
42
+ ref originatingNeeds : Need[0..*];
43
+ }
44
+
45
+ connection def Motivates :> MemoRelationship {
46
+ end motivatingNeed : Need;
47
+ end motivatedUseCase : UseCase;
48
+ }
49
+ connection def Initiates :> MemoRelationship {
50
+ end initiatingUser : User;
51
+ end initiatedUseCase : UseCase;
52
+ }
53
+ connection def ParticipatesIn :> MemoRelationship {
54
+ end participant : Actor;
55
+ end useCase : UseCase;
56
+ }
57
+ // UML use-case relationships. Includes establishes a decomposition level;
58
+ // extends remains a cross-cutting relationship and is always presented.
59
+ connection def Includes :> MemoRelationship {
60
+ end includingUseCase : UseCase;
61
+ end includedUseCase : UseCase;
62
+ }
63
+ connection def Extends :> MemoRelationship {
64
+ end extendingUseCase : UseCase;
65
+ end extendedUseCase : UseCase;
66
+ }
67
+ }
@@ -0,0 +1,126 @@
1
+ // First-class operational workflows. An OperationalWorkflow is
2
+ // a reusable definition of how clinical or service work is performed — it may
3
+ // exist before any device is selected. A scenario (memo_architecture_operational_scenarios) is a
4
+ // selected path through a workflow; an occurrence is an execution of a
5
+ // scenario. Workflows are action defs: steps, decisions, forks/joins, and
6
+ // successions use native SysML v2 action semantics where portable.
7
+ package memo_architecture_operational_workflows {
8
+ private import ScalarValues::*;
9
+
10
+ private import memo_core_common::*;
11
+ private import memo_core_enumerations::*;
12
+ private import memo_core_relationships::*;
13
+ private import memo_architecture_operational_context_actors::*;
14
+ private import memo_architecture_operational_activities::*;
15
+ private import memo_architecture_operational_use_cases::*;
16
+
17
+ // As-is vs. to-be vs. contingency is a typed dimension of the workflow,
18
+ // not a name suffix.
19
+ enum def WorkflowStateKind {
20
+ enum asIs;
21
+ enum toBe;
22
+ enum contingency;
23
+ enum deprecated;
24
+ }
25
+
26
+ enum def StepTransformationKind {
27
+ enum preserves;
28
+ enum automates;
29
+ enum augments;
30
+ enum eliminates;
31
+ }
32
+
33
+ action def OperationalWorkflow specializes MemoAction {
34
+ attribute workflowState : WorkflowStateKind;
35
+ attribute entryCondition : String;
36
+ attribute completionCondition : String;
37
+ attribute recoveryPathSummary : String;
38
+ attribute timingConstraints : String;
39
+ ref involvedActors : Actor[0..*];
40
+ attribute environmentSummary : String;
41
+ }
42
+
43
+ // A step in a workflow wraps an operational activity or user task by
44
+ // reference — the same activity may appear in several workflows.
45
+ action def WorkflowStep specializes MemoAction {
46
+ attribute stepOrder : Integer;
47
+ attribute entryCondition : String;
48
+ attribute exitCondition : String;
49
+ ref performedActivity : OperationalActivity[0..1];
50
+ ref performedTask : UserTask[0..1];
51
+ ref responsibleRole : Actor[0..1];
52
+ }
53
+
54
+ // decision / fork / join / handoff.
55
+ enum def ControlNodeKind {
56
+ enum decision;
57
+ enum fork;
58
+ enum join;
59
+ enum handoff;
60
+ }
61
+
62
+ // A workflow control node. The role is given by controlKind; the
63
+ // kind-specific fields below are set only for the relevant controlKind.
64
+ // handoff = transfer of responsibility between roles (shift change, room-to-lab).
65
+ action def WorkflowControlNode specializes MemoAction {
66
+ attribute controlKind : ControlNodeKind;
67
+ attribute decisionQuestion : String[0..1];
68
+ attribute decisionCriteria : String[0..1];
69
+ attribute parallelismRationale : String[0..1];
70
+ attribute joinCondition : String[0..1];
71
+ attribute informationTransferred : String[0..1];
72
+ ref fromRole : Actor[0..1];
73
+ ref toRole : Actor[0..1];
74
+ }
75
+
76
+ // Resources a workflow requires: information, materials, or equipment by
77
+ // reference.
78
+ part def WorkflowResource specializes MemoPart {
79
+ attribute resourceKind : String;
80
+ attribute quantity : String;
81
+ ref resolvedProduct : MemoPart[0..1];
82
+ }
83
+
84
+ // ── 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;
98
+ end supported;
99
+ }
100
+ connection def StepPrecedes :> MemoRelationship {
101
+ attribute guardCondition : String;
102
+ end predecessor : WorkflowStep;
103
+ end successor : WorkflowStep;
104
+ }
105
+ connection def RequiresResource :> MemoRelationship {
106
+ end workflow : OperationalWorkflow;
107
+ end resource : WorkflowResource;
108
+ }
109
+
110
+ // ── Workflow transformation (as-is → to-be) ──────────────────
111
+ // Transforms unifies TransformsStep / TransformsWorkflow / ReplacesWorkflow
112
+ // (tailoring of workflow structure: as-is → to-be), keyed by transformKind.
113
+ enum def TransformKind {
114
+ enum step;
115
+ enum workflow;
116
+ enum replacesWorkflow;
117
+ }
118
+ connection def Transforms :> MemoRelationship {
119
+ attribute transformKind : TransformKind;
120
+ attribute transformation : StepTransformationKind[0..1];
121
+ attribute transformationRationale : String[0..1];
122
+ end source : MemoPart;
123
+ end target : MemoPart;
124
+ }
125
+ // The device or system whose introduction enables a workflow.
126
+ }
@@ -0,0 +1,90 @@
1
+ // Deployment (allocation) view: SoftwareModule buildsInto
2
+ // DeploymentUnit; DeploymentUnit deploysTo ProcessingNode; SoftwareComponent
3
+ // hostedBy ProcessingNode. Software deploys only to capable execution nodes
4
+ // (rules/crosslayer).
5
+ package memo_architecture_realization_deployment {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_common::*;
9
+ private import memo_core_enumerations::*;
10
+ private import memo_core_relationships::*;
11
+ private import memo_architecture_implementation_software_structure::*;
12
+ private import memo_architecture_implementation_software_runtime::*;
13
+ private import memo_architecture_realization_physical::*;
14
+ private import memo_architecture_functional_functions::*;
15
+ private import memo_architecture_logical_structure::*;
16
+
17
+ part def DeploymentUnit specializes ArchitectureElement {
18
+ attribute unitKind : String;
19
+ attribute version : String;
20
+ attribute integrityProtection : String;
21
+ attribute installationMechanism : String;
22
+ }
23
+
24
+ part def RuntimeEnvironment specializes ArchitectureElement {
25
+ attribute environmentKind : String;
26
+ attribute osOrRtos : String;
27
+ attribute providedServices : String;
28
+ attribute certificationEvidence : String;
29
+ }
30
+
31
+ connection def BuildsInto :> MemoRelationship {
32
+ end module : SoftwareModule;
33
+ end deploymentUnit : DeploymentUnit;
34
+ }
35
+ connection def DeploysTo :> MemoRelationship {
36
+ attribute deploymentKind : DeploymentKind;
37
+ end deploymentUnit : DeploymentUnit;
38
+ end node : ProcessingNode;
39
+ }
40
+ connection def ProvidesEnvironment :> MemoRelationship {
41
+ end node : ProcessingNode;
42
+ end environment : RuntimeEnvironment;
43
+ }
44
+
45
+ // ─── AADL-style flow modeling (SAE AS5506) ───────────────────────────
46
+ // AADL separates a flow *specification* (declared at a component boundary
47
+ // as source / sink / path through ports) from a flow *implementation*
48
+ // (its routing through subcomponents and connectors), and traces a
49
+ // complete source→sink flow as an *end-to-end flow* across the assembly.
50
+ // MEMO keeps software and hardware as distinct families (SoftwareModule
51
+ // vs ProcessingNode) and analyses the flow across their binding — the same
52
+ // way AADL end-to-end flows account for processor/bus bindings — enabling
53
+ // latency and fault-propagation analysis.
54
+ enum def FlowSpecKind {
55
+ enum source;
56
+ enum sink;
57
+ enum path;
58
+ }
59
+ // A flow declared at a logical component boundary (in-port → out-port).
60
+ part def FlowSpecification specializes ArchitectureElement {
61
+ attribute flowKind : FlowSpecKind;
62
+ ref inPort : LogicalPort[0..1];
63
+ ref outPort : LogicalPort[0..1];
64
+ }
65
+ // A complete source→sink flow traced across the layers and the software→
66
+ // hardware binding it traverses. `latencyBudgetMs` and `analysisPurpose`
67
+ // (latency | fault-propagation | security) drive the AADL-style analysis.
68
+ part def EndToEndFlow specializes ArchitectureElement {
69
+ attribute latencyBudgetMs : Real;
70
+ attribute analysisPurpose : String;
71
+ ref sourceFunction : SystemFunction[0..1];
72
+ ref sinkFunction : SystemFunction[0..1];
73
+ ref logicalSegments : LogicalComponent[0..*];
74
+ // Runtime C&C components (SEI) — the elements actually bound to hardware.
75
+ ref softwareSegments : SoftwareComponent[0..*];
76
+ ref hostNodes : ProcessingNode[0..*];
77
+ }
78
+ // The end-to-end flow is realized by an ordered flow specification, one
79
+ // segment per traversed component boundary (AADL flow-spec → end-to-end).
80
+ connection def FlowComprisesSpec :> MemoRelationship {
81
+ attribute segmentOrder : Integer;
82
+ end flow : EndToEndFlow;
83
+ end spec : FlowSpecification;
84
+ }
85
+ // The flow traverses a software→hardware binding; latency accrues here.
86
+ connection def FlowTraversesBinding :> MemoRelationship {
87
+ end flow : EndToEndFlow;
88
+ end deploymentUnit : DeploymentUnit;
89
+ }
90
+ }
@@ -1,4 +1,7 @@
1
- package memo_architecture_physical {
1
+ // Execution-platform elements of the physical architecture (§12): the nodes
2
+ // software runs on and the ports the outside world plugs into. The broader
3
+ // physical taxonomy lives in memo_architecture_implementation_hardware_structure.
4
+ package memo_architecture_realization_physical {
2
5
  private import ScalarValues::*;
3
6
 
4
7
  private import memo_core_common::*;
@@ -10,6 +13,14 @@ package memo_architecture_physical {
10
13
  attribute operatingSystem : String;
11
14
  attribute safetyPartition : Boolean;
12
15
  attribute redundancyKind : String;
16
+ // Capabilities relevant to deployment feasibility checks.
17
+ attribute supportsContainerization : Boolean;
18
+ attribute realTimeCapable : Boolean;
19
+ }
20
+ part def MemoryDevice specializes ArchitectureElement {
21
+ attribute memoryKind : String;
22
+ attribute capacityMB : String;
23
+ attribute nonVolatile : Boolean;
13
24
  }
14
25
  part def PhysicalPort specializes InterfaceElement {
15
26
  attribute portKind : InterfaceKind;
@@ -4,7 +4,7 @@ package memo_artifacts_definitions {
4
4
  private import memo_core_common::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
- part def ArtifactKindDef specializes TraceableElement {
7
+ part def ArtifactKindDef specializes MemoPart {
8
8
  attribute documentTitle : String;
9
9
  attribute regulatoryRef : String;
10
10
  attribute artifactKind : ArtifactKind;
@@ -1,11 +1,12 @@
1
- package memo_architecture_cybersecurity {
1
+ package memo_assurance_cybersecurity {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_core_common::*;
5
5
  private import memo_core_enumerations::*;
6
- private import memo_architecture_requirements::*;
7
- private import memo_architecture_risk_risk::*;
8
- private import memo_architecture_assurance::*;
6
+ private import memo_assurance_requirements::*;
7
+ private import memo_assurance_safety_risk::*;
8
+ private import memo_assurance_verification_validation::*;
9
+ private import memo_architecture_operational_scenarios::*;
9
10
 
10
11
  part def CybersecurityAsset specializes ArchitectureElement {
11
12
  attribute assetKind : AssetKind;
@@ -19,7 +20,7 @@ package memo_architecture_cybersecurity {
19
20
  attribute classification : String;
20
21
  }
21
22
 
22
- part def AttackSurface specializes TraceableElement {
23
+ part def AttackSurface specializes MemoPart {
23
24
  attribute entryPointKind : InterfaceKind;
24
25
  attribute exposureLevel : String;
25
26
  attribute reachableFrom : String;
@@ -36,7 +37,7 @@ package memo_architecture_cybersecurity {
36
37
  attribute strideCategory : ThreatCategoryKind;
37
38
  }
38
39
 
39
- item def Vulnerability specializes TraceableElement {
40
+ item def Vulnerability specializes MemoPart {
40
41
  attribute weakness : String;
41
42
  attribute exploitability : String;
42
43
  attribute discoveryMethod : String;
@@ -45,7 +46,10 @@ package memo_architecture_cybersecurity {
45
46
  attribute remediable : Boolean;
46
47
  }
47
48
 
48
- item def ThreatScenario specializes TraceableElement {
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 {
49
53
  attribute actorDescription : String;
50
54
  attribute assumptionSummary : String;
51
55
  attribute guaranteeSummary : String;
@@ -62,7 +66,7 @@ package memo_architecture_cybersecurity {
62
66
  attribute linkedSafetyHazardId : String;
63
67
  }
64
68
 
65
- item def CyberRisk specializes RiskBeforeMitigation {
69
+ item def CyberRisk specializes Risk {
66
70
  attribute exploitabilityEstimate : String;
67
71
  attribute attackComplexity : String;
68
72
  attribute detectability : DetectionKind;
@@ -70,7 +74,7 @@ package memo_architecture_cybersecurity {
70
74
  attribute patientSafetyContribution : String;
71
75
  }
72
76
 
73
- part def CyberMitigation specializes RiskControl {
77
+ part def CyberMitigation specializes RiskControlMeasure {
74
78
  attribute cyberControlKind : CyberControlKind;
75
79
  attribute securityMechanism : String;
76
80
  attribute verificationExpectation : String;
@@ -91,7 +95,7 @@ package memo_architecture_cybersecurity {
91
95
  attribute trustAssumption : String;
92
96
  }
93
97
 
94
- part def SecurityClaim specializes EvidenceElement {
98
+ part def SecurityClaim specializes MemoEvidence {
95
99
  attribute claimText : String;
96
100
  attribute claimScope : String;
97
101
  attribute supportedByEvidence : String;
@@ -0,0 +1,50 @@
1
+ // Human-factors assurance (IEC 62366-1; FDA HF guidance 2016). UseError
2
+ // relocated here from the former memo_architecture_context; hazard-related
3
+ // use scenarios and formative/summative evaluations complete the usability
4
+ // engineering chain: user → task → use error → hazard → risk control →
5
+ // usability validation.
6
+ package memo_assurance_human_factors {
7
+ private import ScalarValues::*;
8
+
9
+ private import memo_core_common::*;
10
+ private import memo_core_enumerations::*;
11
+ private import memo_core_relationships::*;
12
+ private import memo_architecture_operational_activities::*;
13
+ private import memo_architecture_operational_scenarios::*;
14
+
15
+ part def UseError specializes MemoPart {
16
+ attribute errorCategory : UseErrorCategoryKind;
17
+ attribute taskReference : String;
18
+ attribute severity : SeverityKind;
19
+ attribute rootCauseType : String;
20
+ }
21
+
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;
27
+ }
28
+
29
+ part def FormativeEvaluation specializes MemoEvidence {
30
+ attribute evaluationMethod : String;
31
+ attribute findingsSummary : String;
32
+ attribute designChangesTriggered : String;
33
+ }
34
+
35
+ part def UsabilityValidation specializes MemoEvidence {
36
+ attribute participantProfile : String;
37
+ attribute participantCount : Integer;
38
+ attribute acceptanceCriteria : String;
39
+ attribute resultSummary : String;
40
+ }
41
+
42
+ connection def CommitsUseError :> MemoRelationship {
43
+ end task : UserTask;
44
+ end useError : UseError;
45
+ }
46
+ connection def EvaluatesTask :> MemoRelationship {
47
+ end evaluation : MemoEvidence;
48
+ end task : UserTask;
49
+ }
50
+ }
@@ -1,14 +1,47 @@
1
- package memo_architecture_requirements {
1
+ package memo_assurance_requirements {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_core_common::*;
5
5
  private import memo_core_enumerations::*;
6
- requirement def StakeholderNeed specializes RequirementDriver {
7
- attribute statement : String;
8
- attribute priority : String;
9
- }
6
+ // StakeholderNeed and the needs hierarchy now live in memo_assurance_requirements_needs.
7
+ private import memo_assurance_requirements_needs::*;
10
8
  part def RiskDriver specializes RequirementDriver { attribute driverKind : String; }
9
+
10
+ // ISO 14971 risk-analysis inputs. These are model elements so hazards,
11
+ // scenarios, requirements, and DHF records can trace to the exact use
12
+ // definition or foreseeable misuse that motivated them.
13
+ part def IntendedUse specializes DocumentedElement {
14
+ attribute indication : String;
15
+ attribute contraindication : String;
16
+ attribute patientPopulation : String;
17
+ attribute clinicalBenefit : String;
18
+ attribute regulatoryClassification : String;
19
+ }
20
+ part def ReasonablyForeseeableMisuse specializes DocumentedElement {
21
+ attribute misuseContext : String;
22
+ attribute foreseeableBasis : String;
23
+ attribute affectedUseContext : String;
24
+ }
25
+
26
+ // The kind of requirement. Was a subclass branch (SystemRequirement /
27
+ // SoftwareRequirement / HardwareRequirement) plus a parallel design-control
28
+ // specification hierarchy (DesignControlSpecification / System- / Software- /
29
+ // HardwareSpecification); now one attribute. The role-specific attributes
30
+ // below are all optional so a requirement carries only the ones its kind
31
+ // needs. IEC 62304 / design-control classification is preserved as the
32
+ // enum value, not lost.
33
+ enum def RequirementKind {
34
+ enum system;
35
+ enum software;
36
+ enum hardware;
37
+ enum systemSpecification;
38
+ enum softwareSpecification;
39
+ enum hardwareSpecification;
40
+ enum designControl;
41
+ }
42
+
11
43
  requirement def Requirement specializes VerifiableElement {
44
+ attribute requirementKind : RequirementKind;
12
45
  attribute statement : String;
13
46
  attribute sourceKind : RequirementSourceKind;
14
47
  attribute concernKind : ConcernKind;
@@ -26,29 +59,20 @@ package memo_architecture_requirements {
26
59
  attribute obligation : ObligationKind; // shall/should/will (RFC 2119, SOPHIST legal-obligation)
27
60
  attribute conditionClause : String; // EARS When/While/If/Where or SOPHIST condition clause
28
61
  attribute systemResponse : String; // the "shall <system response>" predicate
29
- }
30
- requirement def SystemRequirement specializes Requirement;
31
- requirement def SoftwareRequirement specializes Requirement { attribute safetyClass : SafetyClassKind; }
32
- requirement def HardwareRequirement specializes Requirement { attribute electricalSafetyRelevant : Boolean; }
33
- requirement def DesignControlNeed specializes StakeholderNeed {
34
- attribute sourceFolder : String;
35
- attribute linkedDesignControls : String;
36
- }
37
- requirement def DesignControlSpecification specializes Requirement {
62
+ // software requirement / specification (IEC 62304)
63
+ attribute safetyClass : SafetyClassKind[0..1];
64
+ // hardware requirement
65
+ attribute electricalSafetyRelevant : Boolean;
66
+ // design-control specification (ISO 13485 design output)
38
67
  attribute specificationDomain : String;
39
68
  attribute sourceFolder : String;
40
69
  attribute linkedUserNeeds : String;
41
70
  attribute linkedRisks : String;
42
71
  attribute linkedTests : String;
43
72
  }
44
- requirement def HardwareSpecification specializes DesignControlSpecification;
45
- requirement def SoftwareSpecification specializes DesignControlSpecification {
46
- attribute softwareSafetyClass : SafetyClassKind;
47
- }
48
- requirement def SystemSpecification specializes DesignControlSpecification;
49
73
  // Named constant defined by a source requirements document (e.g. CriSys
50
74
  // GPCA App. A.4) and referenced from requirement statements.
51
- part def SystemConstant specializes TraceableElement {
75
+ part def SystemConstant specializes MemoPart {
52
76
  attribute symbol : String; // identifier as written in the source, e.g. "Tolerance_Max const"
53
77
  attribute unit : String;
54
78
  attribute valueType : String;
@@ -57,7 +81,7 @@ package memo_architecture_requirements {
57
81
  }
58
82
  // One row of a notification/alarm action table (e.g. CriSys GPCA REQ 59):
59
83
  // a named notification, its priority, and the actions the system must take.
60
- part def NotificationSpec specializes TraceableElement {
84
+ part def NotificationSpec specializes MemoPart {
61
85
  attribute priority : NotificationPriorityKind;
62
86
  attribute visualNotification : Boolean;
63
87
  attribute audioNotification : Boolean;
@@ -0,0 +1,43 @@
1
+ // Needs (§4). A Need is a problem-space expectation stated in stakeholder
2
+ // language; requirements (memo_assurance_requirements) are the solution-space
3
+ // obligations derived from needs. Need specializes the part-based
4
+ // RequirementDriver so it can serve as a typed end of trace relations
5
+ // (DerivesFrom, Motivates).
6
+ package memo_assurance_requirements_needs {
7
+ private import ScalarValues::*;
8
+
9
+ private import memo_core_common::*;
10
+ private import memo_core_enumerations::*;
11
+
12
+ // The kind of need. Was a subclass branch (StakeholderNeed / UserNeed /
13
+ // ClinicalUserNeed / PatientUserNeed / BusinessNeed / ServiceNeed /
14
+ // RegulatoryNeed / OperationalNeed / DesignControlNeed); now one attribute.
15
+ // The exact terms survive as enum values, so design-input classification
16
+ // (ISO 13485 §7.3.3, IEC 62366-1 user needs) is unchanged — it is simply
17
+ // an attribute of the one Need type rather than a class the modeler picks.
18
+ enum def NeedKind {
19
+ enum stakeholder;
20
+ enum user;
21
+ enum clinicalUser;
22
+ enum patientUser;
23
+ enum business;
24
+ enum service;
25
+ enum regulatory;
26
+ enum operational;
27
+ enum designControl;
28
+ }
29
+
30
+ requirement def Need specializes MemoNeed, RequirementDriver {
31
+ attribute needKind : NeedKind;
32
+ // user need (IEC 62366-1)
33
+ attribute userPopulationReference : String;
34
+ // regulatory need
35
+ attribute jurisdiction : String;
36
+ attribute regulationReference : String;
37
+ // operational need
38
+ attribute operationalContextReference : String;
39
+ // design-control need (ISO 13485 design input)
40
+ attribute sourceFolder : String;
41
+ attribute linkedDesignControls : String;
42
+ }
43
+ }