@memoarchitect/ontology 0.6.5 → 0.7.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 (319) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  3. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  4. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  6. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  7. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/extensions/clinical/memo.package.yaml +18 -9
  9. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +10 -2
  10. package/examples/extensions/template/memo.package.yaml +17 -9
  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/gpca-pump.kpar +0 -0
  15. package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
  16. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  17. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  18. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +1 -1
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +2 -2
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +1 -1
  21. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +5 -5
  22. package/examples/gpca-pump/model/catalog/gpca_context.sysml +3 -8
  23. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  24. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  25. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +7 -6
  26. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +19 -8
  27. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +2 -2
  28. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +34 -30
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +27 -23
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +1 -1
  33. package/examples/gpca-pump/model/catalog/project.sysml +21 -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 +3 -3
  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 +3 -3
  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 +4 -4
  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 +7 -7
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +3 -3
  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 +3 -3
  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 +2 -2
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +3 -3
  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 +6 -6
  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 +3 -3
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +3 -3
  61. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +2 -2
  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 +3 -3
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +3 -3
  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 +4 -4
  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 +3 -3
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +2 -2
  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 +1 -0
  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/project.sysml +24 -0
  79. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  80. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  81. package/examples/nested-architecture-dsm/README.md +49 -0
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +174 -0
  83. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +183 -0
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  86. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +90 -0
  87. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  88. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +49 -0
  89. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  90. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -6
  91. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  92. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  93. package/examples/software-only-medical-device/model/catalog/project.sysml +24 -0
  94. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  95. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  96. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  97. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -19
  98. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  99. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  100. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  101. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +5 -3
  102. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  103. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  104. package/examples/sysml-diagram-samples/README.md +7 -0
  105. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  106. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  107. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  108. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  109. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +18 -10
  110. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +4 -2
  111. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  112. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/functional_flow_view.sysml +23 -20
  113. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/interconnection_view.sysml +17 -14
  114. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  115. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/operational_behaviour_view.sysml +23 -20
  116. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +3 -1
  118. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +51 -0
  119. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/state_transition_view.sysml +3 -1
  120. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/tree_view.sysml +3 -1
  121. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +3 -1
  122. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  123. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  124. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +2 -1
  125. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  126. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  127. package/examples/ui-screen-regions/README.md +117 -0
  128. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +60 -0
  129. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +189 -0
  130. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  131. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  132. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  133. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  134. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  135. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  136. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  137. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  138. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  139. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  140. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  141. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +60 -0
  142. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  143. package/examples/ui-screen-regions/model/catalog/traces.sysml +276 -0
  144. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  145. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
  146. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  147. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
  148. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  149. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
  150. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
  151. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
  152. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
  153. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
  154. package/memo.manifest.yaml +2 -0
  155. package/methodologies/default/memo.package.yaml +19 -9
  156. package/methodologies/gpca/memo.package.yaml +18 -9
  157. package/ontology/memo.package.yaml +23 -8
  158. package/package.json +2 -4
  159. package/profile/memo.package.yaml +18 -9
  160. package/src/architecture/decisions/memo_decisions.sysml +7 -0
  161. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  162. package/src/architecture/functional/functions/memo_functions.sysml +5 -12
  163. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +1 -3
  164. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +18 -5
  165. package/src/architecture/implementation/ui/memo_ui.sysml +210 -27
  166. package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -2
  167. package/src/architecture/logical/structure/memo_logical_structure.sysml +71 -15
  168. package/src/architecture/operational/activities/memo_activities.sysml +0 -1
  169. package/src/architecture/operational/scenarios/memo_scenarios.sysml +2 -2
  170. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -6
  171. package/src/{compliance/change/memo_change.sysml → artifacts/configuration_management/memo_configuration_management.sysml} +5 -3
  172. package/src/artifacts/core/memo_controlled_artifacts.sysml +33 -0
  173. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  174. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +1 -1
  175. package/src/assurance/human_factors/memo_human_factors.sysml +1 -1
  176. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +11 -0
  177. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  178. package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
  179. package/src/core/annotations/memo_annotations.sysml +77 -0
  180. package/src/core/common/memo_common.sysml +20 -3
  181. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  182. package/src/core/dimensions/dimensions.sysml +5 -1
  183. package/src/core/enumerations/memo_enumerations.sysml +41 -6
  184. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  185. package/src/core/relationships/memo_relationships.sysml +4 -2
  186. package/src/memo_namespaces.sysml +97 -67
  187. package/src/methodology/core/memo_core.sysml +45 -2
  188. package/src/methodology/profiles/memo_profiles.sysml +30 -40
  189. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  190. package/src/rules/closure/closure_rules.sysml +104 -31
  191. package/src/rules/coverage/coverage_rules.sysml +4 -256
  192. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  193. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  194. package/src/rules/ontology/ontology_invariants.sysml +30 -73
  195. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  196. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +7 -0
  197. package/src/viewpoints/clinical/clinical_viewpoint.sysml +3 -1
  198. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  199. package/src/viewpoints/context/context_viewpoint.sysml +3 -1
  200. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  201. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +3 -1
  202. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  203. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  204. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +4 -0
  205. package/src/viewpoints/functional/functional_viewpoint.sysml +3 -1
  206. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +2 -2
  207. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +2 -2
  208. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  209. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  210. package/src/viewpoints/operational/operational_viewpoint.sysml +3 -1
  211. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +2 -2
  212. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  213. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  214. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  215. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  216. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  217. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  218. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  219. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  220. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  221. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  222. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  223. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  224. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  225. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  226. package/src/viewpoints/verification/verification_viewpoint.sysml +3 -1
  227. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +2 -2
  228. package/templates/connected-device/memo.package.yaml +11 -5
  229. package/templates/connected-device/model/catalog/project.sysml +28 -0
  230. package/templates/connected-device/syside.toml +1 -1
  231. package/templates/default/memo.package.yaml +11 -5
  232. package/templates/default/model/catalog/project.sysml +28 -0
  233. package/templates/default/syside.toml +1 -1
  234. package/templates/infusion-pump/memo.package.yaml +11 -5
  235. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  236. package/templates/infusion-pump/syside.toml +1 -1
  237. package/templates/monitoring-device/memo.package.yaml +11 -5
  238. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  239. package/templates/monitoring-device/syside.toml +1 -1
  240. package/templates/samd/memo.package.yaml +11 -5
  241. package/templates/samd/model/catalog/project.sysml +28 -0
  242. package/templates/samd/syside.toml +1 -1
  243. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  244. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  245. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  246. package/examples/gpca-pump/memo.config.yaml +0 -9
  247. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  248. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  249. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  250. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  251. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  252. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  253. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  254. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  255. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  256. package/ontology/memo.rendering.yaml +0 -84
  257. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  258. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  259. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  260. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  261. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  262. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +0 -0
  263. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +0 -0
  264. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +0 -0
  265. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +0 -0
  266. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +0 -0
  267. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +0 -0
  268. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +0 -0
  269. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +0 -0
  270. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +0 -0
  271. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +0 -0
  272. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +0 -0
  273. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +0 -0
  274. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +0 -0
  275. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +0 -0
  276. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +0 -0
  277. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  278. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +0 -0
  279. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +0 -0
  280. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +0 -0
  281. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +0 -0
  282. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +0 -0
  283. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +0 -0
  284. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/srs.md +0 -0
  285. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +0 -0
  286. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +0 -0
  287. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  288. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +0 -0
  289. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/task-analysis.md +0 -0
  290. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +0 -0
  291. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  292. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +0 -0
  293. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  294. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fmea.md +0 -0
  295. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  296. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +0 -0
  297. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  298. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  299. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +0 -0
  300. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  301. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  302. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  303. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  304. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  305. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  306. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  307. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  308. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  309. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  310. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  311. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  312. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  313. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  314. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  315. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  316. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  317. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  318. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  319. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -0,0 +1,89 @@
1
+ // Requirements — the row axis of the traceability matrix.
2
+ //
3
+ // StatusVisibility is deliberately left untraced, so the coverage figure is
4
+ // under 100% and there is an empty row to author a trace into from the
5
+ // traceability view.
6
+ package memo_examples_nested_architecture_dsm_assurance_requirements {
7
+ private import ScalarValues::*;
8
+
9
+ private import memo_core_enumerations::*;
10
+ private import memo_core_relationships::*;
11
+ private import memo_assurance_requirements::*;
12
+
13
+ requirement reqDoseAccuracy : Requirement {
14
+ attribute :>> id = "NDS-REQ-001"; attribute :>> name = "DoseAccuracy";
15
+ attribute :>> requirementKind = RequirementKind::system;
16
+ attribute :>> statement = "The pump shall deliver the prescribed volume within ±5% over any 60-minute window.";
17
+ attribute :>> notation = RequirementNotationKind::sophist;
18
+ attribute :>> obligation = ObligationKind::shall;
19
+ attribute :>> systemResponse = "deliver the prescribed volume within ±5% over any 60-minute window";
20
+ attribute :>> concernKind = ConcernKind::clinical;
21
+ }
22
+ requirement reqOcclusionDetection : Requirement {
23
+ attribute :>> id = "NDS-REQ-002"; attribute :>> name = "OcclusionDetection";
24
+ attribute :>> requirementKind = RequirementKind::system;
25
+ attribute :>> statement = "When line pressure exceeds the occlusion threshold, the pump shall stop delivery within 2 seconds.";
26
+ attribute :>> notation = RequirementNotationKind::ears;
27
+ attribute :>> earsPattern = EarsPatternKind::eventDriven;
28
+ attribute :>> obligation = ObligationKind::shall;
29
+ attribute :>> conditionClause = "When line pressure exceeds the occlusion threshold";
30
+ attribute :>> systemResponse = "stop delivery within 2 seconds";
31
+ attribute :>> concernKind = ConcernKind::safety;
32
+ }
33
+ requirement reqAirInLine : Requirement {
34
+ attribute :>> id = "NDS-REQ-003"; attribute :>> name = "AirInLineProtection";
35
+ attribute :>> requirementKind = RequirementKind::system;
36
+ attribute :>> statement = "When an air bolus above 0.1 mL is detected, the pump shall stop delivery and raise a high-priority alarm.";
37
+ attribute :>> notation = RequirementNotationKind::ears;
38
+ attribute :>> earsPattern = EarsPatternKind::eventDriven;
39
+ attribute :>> obligation = ObligationKind::shall;
40
+ attribute :>> conditionClause = "When an air bolus above 0.1 mL is detected";
41
+ attribute :>> systemResponse = "stop delivery and raise a high-priority alarm";
42
+ attribute :>> concernKind = ConcernKind::safety;
43
+ }
44
+ requirement reqAlarmAnnunciation : Requirement {
45
+ attribute :>> id = "NDS-REQ-004"; attribute :>> name = "AlarmAnnunciation";
46
+ attribute :>> requirementKind = RequirementKind::software;
47
+ attribute :>> statement = "While any alarm condition is active, the pump shall present its IEC 60601-1-8 signal until the condition clears or is acknowledged.";
48
+ attribute :>> notation = RequirementNotationKind::ears;
49
+ attribute :>> earsPattern = EarsPatternKind::stateDriven;
50
+ attribute :>> obligation = ObligationKind::shall;
51
+ attribute :>> conditionClause = "While any alarm condition is active";
52
+ attribute :>> systemResponse = "present its IEC 60601-1-8 signal until the condition clears or is acknowledged";
53
+ attribute :>> concernKind = ConcernKind::safety;
54
+ attribute :>> safetyClass = SafetyClassKind::C;
55
+ }
56
+ requirement reqBatteryEndurance : Requirement {
57
+ attribute :>> id = "NDS-REQ-005"; attribute :>> name = "BatteryEndurance";
58
+ attribute :>> requirementKind = RequirementKind::system;
59
+ attribute :>> statement = "On loss of mains power, the pump shall continue delivery for at least 4 hours at 25 mL/h.";
60
+ attribute :>> notation = RequirementNotationKind::ears;
61
+ attribute :>> earsPattern = EarsPatternKind::eventDriven;
62
+ attribute :>> obligation = ObligationKind::shall;
63
+ attribute :>> conditionClause = "On loss of mains power";
64
+ attribute :>> systemResponse = "continue delivery for at least 4 hours at 25 mL/h";
65
+ attribute :>> concernKind = ConcernKind::reliability;
66
+ }
67
+ requirement reqPrescriptionConfirmation : Requirement {
68
+ attribute :>> id = "NDS-REQ-006"; attribute :>> name = "PrescriptionConfirmation";
69
+ attribute :>> requirementKind = RequirementKind::software;
70
+ attribute :>> statement = "When the clinician changes the infusion rate, the pump shall require explicit confirmation before applying it.";
71
+ attribute :>> notation = RequirementNotationKind::ears;
72
+ attribute :>> earsPattern = EarsPatternKind::eventDriven;
73
+ attribute :>> obligation = ObligationKind::shall;
74
+ attribute :>> conditionClause = "When the clinician changes the infusion rate";
75
+ attribute :>> systemResponse = "require explicit confirmation before applying it";
76
+ attribute :>> concernKind = ConcernKind::usability;
77
+ attribute :>> safetyClass = SafetyClassKind::C;
78
+ }
79
+ // Untraced on purpose — the gap the traceability view is meant to find.
80
+ requirement reqStatusVisibility : Requirement {
81
+ attribute :>> id = "NDS-REQ-007"; attribute :>> name = "StatusVisibility";
82
+ attribute :>> requirementKind = RequirementKind::system;
83
+ attribute :>> statement = "The pump shall display the active rate and volume delivered legibly at 1 m.";
84
+ attribute :>> notation = RequirementNotationKind::sophist;
85
+ attribute :>> obligation = ObligationKind::shall;
86
+ attribute :>> systemResponse = "display the active rate and volume delivered legibly at 1 m";
87
+ attribute :>> concernKind = ConcernKind::usability;
88
+ }
89
+ }
@@ -0,0 +1,90 @@
1
+ // Verification cases — the far end of the trace chain, and a third axis for
2
+ // the traceability matrix (function → verification case).
3
+ package memo_examples_nested_architecture_dsm_assurance_verification_validation {
4
+ private import ScalarValues::*;
5
+
6
+ private import memo_core_enumerations::*;
7
+ private import memo_core_relationships::*;
8
+ private import memo_assurance_verification_validation::*;
9
+ private import memo_examples_nested_architecture_dsm_architecture_functional_functions::*;
10
+ private import memo_examples_nested_architecture_dsm_assurance_requirements::*;
11
+
12
+ verification vcDoseAccuracy : VerificationCase {
13
+ attribute :>> id = "NDS-VER-001"; attribute :>> name = "VerifyDoseAccuracy";
14
+ attribute :>> methodKind = VerificationMethodKind::test;
15
+ attribute :>> acceptanceCriteria = "Gravimetric delivery over 60 minutes is within ±5% of the prescribed volume at 1, 25 and 999 mL/h.";
16
+ attribute :>> status = "planned";
17
+ }
18
+ verification vcOcclusionResponse : VerificationCase {
19
+ attribute :>> id = "NDS-VER-002"; attribute :>> name = "VerifyOcclusionResponse";
20
+ attribute :>> methodKind = VerificationMethodKind::test;
21
+ attribute :>> acceptanceCriteria = "Delivery stops within 2 s of the occlusion threshold being crossed, at every supported rate.";
22
+ attribute :>> status = "planned";
23
+ }
24
+ verification vcAirInLineResponse : VerificationCase {
25
+ attribute :>> id = "NDS-VER-003"; attribute :>> name = "VerifyAirInLineResponse";
26
+ attribute :>> methodKind = VerificationMethodKind::test;
27
+ attribute :>> acceptanceCriteria = "A 0.1 mL air bolus stops delivery and raises a high-priority alarm.";
28
+ attribute :>> status = "planned";
29
+ }
30
+ verification vcAlarmSignals : VerificationCase {
31
+ attribute :>> id = "NDS-VER-004"; attribute :>> name = "VerifyAlarmSignals";
32
+ attribute :>> methodKind = VerificationMethodKind::test;
33
+ attribute :>> acceptanceCriteria = "Alarm signals conform to IEC 60601-1-8 for every priority, and persist until cleared or acknowledged.";
34
+ attribute :>> status = "planned";
35
+ }
36
+ verification vcBatteryEndurance : VerificationCase {
37
+ attribute :>> id = "NDS-VER-005"; attribute :>> name = "VerifyBatteryEndurance";
38
+ attribute :>> methodKind = VerificationMethodKind::test;
39
+ attribute :>> acceptanceCriteria = "Delivery continues for at least 4 hours at 25 mL/h from a fully charged battery after mains loss.";
40
+ attribute :>> status = "planned";
41
+ }
42
+ verification vcConfirmationFlow : VerificationCase {
43
+ attribute :>> id = "NDS-VER-006"; attribute :>> name = "VerifyConfirmationFlow";
44
+ attribute :>> methodKind = VerificationMethodKind::demonstration;
45
+ attribute :>> acceptanceCriteria = "No rate change reaches the controller without an explicit confirmation step.";
46
+ attribute :>> status = "planned";
47
+ }
48
+ verification vcStatusLegibility : VerificationCase {
49
+ attribute :>> id = "NDS-VER-007"; attribute :>> name = "VerifyStatusLegibility";
50
+ attribute :>> methodKind = VerificationMethodKind::inspection;
51
+ attribute :>> acceptanceCriteria = "Rate and volume delivered are readable at 1 m under 100–1000 lux.";
52
+ attribute :>> status = "planned";
53
+ }
54
+ verification vcPowerSourceSwitch : VerificationCase {
55
+ attribute :>> id = "NDS-VER-008"; attribute :>> name = "VerifyPowerSourceSwitch";
56
+ attribute :>> methodKind = VerificationMethodKind::test;
57
+ attribute :>> acceptanceCriteria = "Rail brownout switches source without interrupting delivery.";
58
+ attribute :>> status = "planned";
59
+ }
60
+
61
+ // Requirement → verification case.
62
+ connection verDoseAccuracy : VerifiedBy connect verificationTarget ::> reqDoseAccuracy to verificationCase ::> vcDoseAccuracy;
63
+ connection verOcclusion : VerifiedBy connect verificationTarget ::> reqOcclusionDetection to verificationCase ::> vcOcclusionResponse;
64
+ connection verAirInLine : VerifiedBy connect verificationTarget ::> reqAirInLine to verificationCase ::> vcAirInLineResponse;
65
+ connection verAlarm : VerifiedBy connect verificationTarget ::> reqAlarmAnnunciation to verificationCase ::> vcAlarmSignals;
66
+ connection verBattery : VerifiedBy connect verificationTarget ::> reqBatteryEndurance to verificationCase ::> vcBatteryEndurance;
67
+ connection verConfirmation : VerifiedBy connect verificationTarget ::> reqPrescriptionConfirmation to verificationCase ::> vcConfirmationFlow;
68
+ connection verStatus : VerifiedBy connect verificationTarget ::> reqStatusVisibility to verificationCase ::> vcStatusLegibility;
69
+
70
+ // Function → verification case, so safety-critical functions carry their
71
+ // own verification rather than inheriting it through a requirement.
72
+ connection verFnDeliverTherapy : VerifiedBy connect verificationTarget ::> fnDeliverTherapy to verificationCase ::> vcDoseAccuracy;
73
+ connection verFnMeterFluid : VerifiedBy connect verificationTarget ::> fnMeterFluid to verificationCase ::> vcDoseAccuracy;
74
+ connection verFnDriveActuator : VerifiedBy connect verificationTarget ::> fnDriveActuator to verificationCase ::> vcDoseAccuracy;
75
+ connection verFnMeasureDelivered : VerifiedBy connect verificationTarget ::> fnMeasureDelivered to verificationCase ::> vcDoseAccuracy;
76
+ connection verFnControlDose : VerifiedBy connect verificationTarget ::> fnControlDose to verificationCase ::> vcDoseAccuracy;
77
+ connection verFnComputeRate : VerifiedBy connect verificationTarget ::> fnComputeRate to verificationCase ::> vcDoseAccuracy;
78
+ connection verFnValidatePrescription : VerifiedBy connect verificationTarget ::> fnValidatePrescription to verificationCase ::> vcConfirmationFlow;
79
+ connection verFnEnsureSafety : VerifiedBy connect verificationTarget ::> fnEnsureSafety to verificationCase ::> vcOcclusionResponse;
80
+ connection verFnDetectOcclusion : VerifiedBy connect verificationTarget ::> fnDetectOcclusion to verificationCase ::> vcOcclusionResponse;
81
+ connection verFnDetectAirInLine : VerifiedBy connect verificationTarget ::> fnDetectAirInLine to verificationCase ::> vcAirInLineResponse;
82
+ connection verFnEnforceDoseLimits : VerifiedBy connect verificationTarget ::> fnEnforceDoseLimits to verificationCase ::> vcOcclusionResponse;
83
+ connection verFnInformUser : VerifiedBy connect verificationTarget ::> fnInformUser to verificationCase ::> vcStatusLegibility;
84
+ connection verFnRenderStatus : VerifiedBy connect verificationTarget ::> fnRenderStatus to verificationCase ::> vcStatusLegibility;
85
+ connection verFnAnnunciateAlarm : VerifiedBy connect verificationTarget ::> fnAnnunciateAlarm to verificationCase ::> vcAlarmSignals;
86
+ connection verFnAcceptInput : VerifiedBy connect verificationTarget ::> fnAcceptInput to verificationCase ::> vcConfirmationFlow;
87
+ connection verFnManagePower : VerifiedBy connect verificationTarget ::> fnManagePower to verificationCase ::> vcBatteryEndurance;
88
+ connection verFnMonitorBattery : VerifiedBy connect verificationTarget ::> fnMonitorBattery to verificationCase ::> vcBatteryEndurance;
89
+ connection verFnSelectPowerSource : VerifiedBy connect verificationTarget ::> fnSelectPowerSource to verificationCase ::> vcPowerSourceSwitch;
90
+ }
@@ -0,0 +1,28 @@
1
+ // Nested architecture DSM — project identity and method binding.
2
+ //
3
+ // The native entrypoint. The imports name what this project contains and the
4
+ // binding names the methodology governing it. No YAML file participates.
5
+ package memo_examples_nested_architecture_dsm_project {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_enumerations::*;
9
+ private import memo_methodology_core::*;
10
+ private import memo_methodology_profiles::*;
11
+
12
+ // The project's own content, imported so the catalog is one reachable
13
+ // closure from a single entrypoint.
14
+ private import memo_examples_nested_architecture_dsm_architecture_logical_structure::*;
15
+ private import memo_examples_nested_architecture_dsm_architecture_functional_functions::*;
16
+ private import memo_examples_nested_architecture_dsm_assurance_requirements::*;
17
+ private import memo_examples_nested_architecture_dsm_assurance_requirements_needs::*;
18
+ private import memo_examples_nested_architecture_dsm_assurance_verification_validation::*;
19
+ private import memo_examples_nested_architecture_dsm_traces::*;
20
+
21
+ part projectBinding : ProjectMethodBinding {
22
+ attribute :>> id = "PMB-NESTED-DSM-001";
23
+ attribute :>> name = "NestedArchitectureDsmProjectMethodBinding";
24
+ attribute :>> projectName = "Nested Architecture DSM";
25
+ ref :>> selectedMethodology = mdDefaultDefinition;
26
+ attribute :>> scopeMode = ScopeModeKind::explicit;
27
+ }
28
+ }
@@ -0,0 +1,49 @@
1
+ // Cross-axis links: allocation and satisfaction.
2
+ //
3
+ // These are what make the two matrices show different things over the same
4
+ // model. The DSM reads allocation as a dependency between a function and the
5
+ // block that carries it; the traceability view reads satisfaction as coverage
6
+ // of a requirement. Keeping both in one file makes the cross-axis story easy
7
+ // to read, and easy to extend from the traceability view's editor.
8
+ package memo_examples_nested_architecture_dsm_traces {
9
+ private import ScalarValues::*;
10
+
11
+ private import memo_core_enumerations::*;
12
+ private import memo_core_relationships::*;
13
+ private import memo_examples_nested_architecture_dsm_architecture_functional_functions::*;
14
+ private import memo_examples_nested_architecture_dsm_architecture_logical_structure::*;
15
+ private import memo_examples_nested_architecture_dsm_assurance_requirements::*;
16
+
17
+ // ── Function → block allocation ──────────────────────────────
18
+ connection allocDrive : AllocatedTo connect function ::> fnDriveActuator to allocatedElement ::> lcPumpMechanism;
19
+ connection allocMeasure : AllocatedTo connect function ::> fnMeasureDelivered to allocatedElement ::> lcPumpMechanism;
20
+ connection allocComputeRate : AllocatedTo connect function ::> fnComputeRate to allocatedElement ::> lcDoseController;
21
+ connection allocValidate : AllocatedTo connect function ::> fnValidatePrescription to allocatedElement ::> lcDoseController;
22
+ connection allocOcclusion : AllocatedTo connect function ::> fnDetectOcclusion to allocatedElement ::> lcOcclusionChannel;
23
+ connection allocAirInLine : AllocatedTo connect function ::> fnDetectAirInLine to allocatedElement ::> lcOcclusionChannel;
24
+ // Two channels carry the same protective function — the redundancy shows
25
+ // up in the matrix as two marks on one row.
26
+ connection allocLimitsWatchdog : AllocatedTo connect function ::> fnEnforceDoseLimits to allocatedElement ::> lcWatchdogChannel;
27
+ connection allocLimitsPressure : AllocatedTo connect function ::> fnEnforceDoseLimits to allocatedElement ::> lcPressureIntegrityChannel;
28
+ connection allocRender : AllocatedTo connect function ::> fnRenderStatus to allocatedElement ::> lcDisplayManager;
29
+ connection allocAlarm : AllocatedTo connect function ::> fnAnnunciateAlarm to allocatedElement ::> lcAlarmAnnunciator;
30
+ connection allocInput : AllocatedTo connect function ::> fnAcceptInput to allocatedElement ::> lcKeypadHandler;
31
+ connection allocBattery : AllocatedTo connect function ::> fnMonitorBattery to allocatedElement ::> lcBatteryManager;
32
+ connection allocPowerSource : AllocatedTo connect function ::> fnSelectPowerSource to allocatedElement ::> lcPowerRailMonitor;
33
+ // A capability allocated at subsystem level rather than to one component:
34
+ // collapsed, it lands in the same cell as its children's allocations.
35
+ connection allocMeterFluid : AllocatedTo connect function ::> fnMeterFluid to allocatedElement ::> subFluidPath;
36
+
37
+ // ── Requirement → function satisfaction ──────────────────────
38
+ connection satDoseAccuracyRate : SatisfiedBy connect requiredElement ::> reqDoseAccuracy to satisfyingElement ::> fnComputeRate;
39
+ connection satDoseAccuracyDrive : SatisfiedBy connect requiredElement ::> reqDoseAccuracy to satisfyingElement ::> fnDriveActuator;
40
+ connection satOcclusion : SatisfiedBy connect requiredElement ::> reqOcclusionDetection to satisfyingElement ::> fnDetectOcclusion;
41
+ connection satOcclusionLimits : SatisfiedBy connect requiredElement ::> reqOcclusionDetection to satisfyingElement ::> fnEnforceDoseLimits;
42
+ connection satAirInLine : SatisfiedBy connect requiredElement ::> reqAirInLine to satisfyingElement ::> fnDetectAirInLine;
43
+ connection satAirInLineAlarm : SatisfiedBy connect requiredElement ::> reqAirInLine to satisfyingElement ::> fnAnnunciateAlarm;
44
+ connection satAlarm : SatisfiedBy connect requiredElement ::> reqAlarmAnnunciation to satisfyingElement ::> fnAnnunciateAlarm;
45
+ connection satBatteryMonitor : SatisfiedBy connect requiredElement ::> reqBatteryEndurance to satisfyingElement ::> fnMonitorBattery;
46
+ connection satBatterySource : SatisfiedBy connect requiredElement ::> reqBatteryEndurance to satisfyingElement ::> fnSelectPowerSource;
47
+ connection satConfirmation : SatisfiedBy connect requiredElement ::> reqPrescriptionConfirmation to satisfyingElement ::> fnAcceptInput;
48
+ connection satConfirmationValidate : SatisfiedBy connect requiredElement ::> reqPrescriptionConfirmation to satisfyingElement ::> fnValidatePrescription;
49
+ }
@@ -0,0 +1,24 @@
1
+ // Reusable Instrument — project identity and method binding.
2
+ //
3
+ // The native entrypoint. The imports name what this project contains and the
4
+ // binding names the methodology it is governed by. No YAML file participates.
5
+ package memo_examples_reusable_instrument_project {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_enumerations::*;
9
+ private import memo_methodology_core::*;
10
+ private import memo_methodology_profiles::*;
11
+
12
+ // The project's own content, imported so the catalog is one reachable
13
+ // closure from a single entrypoint.
14
+ private import memo_examples_reusable_instrument_viewpoints_unassigned::*;
15
+ private import memo_examples_reusable_instrument_viewpoints_unassigned_views_reusable_instrument_overview::*;
16
+
17
+ part projectBinding : ProjectMethodBinding {
18
+ attribute :>> id = "PMB-REUSABLE-INSTRUMENT-001";
19
+ attribute :>> name = "ReusableInstrumentProjectMethodBinding";
20
+ attribute :>> projectName = "Reusable Instrument";
21
+ ref :>> selectedMethodology = mdDefaultDefinition;
22
+ attribute :>> scopeMode = ScopeModeKind::explicit;
23
+ }
24
+ }
@@ -5,6 +5,7 @@ package memo_examples_reusable_instrument {
5
5
  private import ScalarValues::*;
6
6
 
7
7
  private import memo_core_enumerations::*;
8
+ private import memo_core_relationships::*;
8
9
  private import memo_architecture_operational_context_actors::*;
9
10
  private import memo_architecture_operational_use_cases::*;
10
11
  private import memo_architecture_operational_activities::*;
@@ -45,15 +46,15 @@ package memo_examples_reusable_instrument {
45
46
  attribute :>> id = "RI-ACT-003"; attribute :>> name = "PackAndAutoclave";
46
47
  attribute :>> criticality = CriticalityKind::high;
47
48
  }
48
- action wsClean : WorkflowStep { attribute :>> stepOrder = 1; ref :>> performedActivity = actClean; }
49
- action wsInspect : WorkflowStep { attribute :>> stepOrder = 2; ref :>> performedActivity = actInspect; }
50
- action wsSterilize : WorkflowStep { attribute :>> stepOrder = 3; ref :>> performedActivity = actSterilizeLoad; }
49
+ action wsClean : WorkflowStep { ref :>> performedActivity = actClean; }
50
+ action wsInspect : WorkflowStep { ref :>> performedActivity = actInspect; }
51
+ action wsSterilize : WorkflowStep { ref :>> performedActivity = actSterilizeLoad; }
51
52
  connection : Composes connect parent ::> wfReprocess to child ::> wsClean;
52
- connection : StepPrecedes connect predecessor ::> wsClean to successor ::> wsInspect;
53
- connection : StepPrecedes connect predecessor ::> wsInspect to successor ::> wsSterilize;
53
+ first wsClean then wsInspect;
54
+ first wsInspect then wsSterilize;
54
55
  connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfReprocess to supported ::> ucSterilize; }
55
56
 
56
- part scNominalCycle : OperativeScenario {
57
+ action scNominalCycle : OperativeScenario {
57
58
  attribute :>> id = "RI-SC-001"; attribute :>> name = "NominalReprocessingCycle";
58
59
  attribute :>> variantKind = ScenarioVariantKind::nominal;
59
60
  attribute :>> operationalCondition = OperationalConditionKind::normal;
@@ -0,0 +1,9 @@
1
+ // unassigned viewpoint.
2
+ //
3
+ // This project does not define its own viewpoint here; it binds the reusable
4
+ // MEMO viewpoint that frames these concerns. The views it governs sit beneath
5
+ // `views/`.
6
+ package memo_examples_reusable_instrument_viewpoints_unassigned {
7
+ // The reusable package declaring unassigned could not be resolved during
8
+ // conversion. Import it here so the views beneath this viewpoint resolve.
9
+ }
@@ -1,4 +1,4 @@
1
- package memo_examples_reusable_instrument_viewpoints {
1
+ package memo_examples_reusable_instrument_viewpoints_unassigned_views_reusable_instrument_overview {
2
2
  private import memo_examples_reusable_instrument::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
@@ -0,0 +1,24 @@
1
+ // Software Only Medical Device — project identity and method binding.
2
+ //
3
+ // The native entrypoint. The imports name what this project contains and the
4
+ // binding names the methodology it is governed by. No YAML file participates.
5
+ package memo_examples_software_only_medical_device_project {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_enumerations::*;
9
+ private import memo_methodology_core::*;
10
+ private import memo_methodology_profiles::*;
11
+
12
+ // The project's own content, imported so the catalog is one reachable
13
+ // closure from a single entrypoint.
14
+ private import memo_examples_software_only_medical_device_viewpoints_unassigned::*;
15
+ private import memo_examples_software_only_medical_device_viewpoints_unassigned_views_software_only_medical_device_overview::*;
16
+
17
+ part projectBinding : ProjectMethodBinding {
18
+ attribute :>> id = "PMB-MEDICAL-DEVICE-001";
19
+ attribute :>> name = "SoftwareOnlyMedicalDeviceProjectMethodBinding";
20
+ attribute :>> projectName = "Software Only Medical Device";
21
+ ref :>> selectedMethodology = mdDefaultDefinition;
22
+ attribute :>> scopeMode = ScopeModeKind::explicit;
23
+ }
24
+ }
@@ -0,0 +1,9 @@
1
+ // unassigned viewpoint.
2
+ //
3
+ // This project does not define its own viewpoint here; it binds the reusable
4
+ // MEMO viewpoint that frames these concerns. The views it governs sit beneath
5
+ // `views/`.
6
+ package memo_examples_software_only_medical_device_viewpoints_unassigned {
7
+ // The reusable package declaring unassigned could not be resolved during
8
+ // conversion. Import it here so the views beneath this viewpoint resolve.
9
+ }
@@ -1,4 +1,4 @@
1
- package memo_examples_software_only_medical_device_viewpoints {
1
+ package memo_examples_software_only_medical_device_viewpoints_unassigned_views_software_only_medical_device_overview {
2
2
  private import memo_examples_software_only_medical_device::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
@@ -0,0 +1,24 @@
1
+ // Surgical Closure Workflow — project identity and method binding.
2
+ //
3
+ // The native entrypoint. The imports name what this project contains and the
4
+ // binding names the methodology it is governed by. No YAML file participates.
5
+ package memo_examples_surgical_closure_workflow_project {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_enumerations::*;
9
+ private import memo_methodology_core::*;
10
+ private import memo_methodology_profiles::*;
11
+
12
+ // The project's own content, imported so the catalog is one reachable
13
+ // closure from a single entrypoint.
14
+ private import memo_examples_surgical_closure_workflow_viewpoints_unassigned::*;
15
+ private import memo_examples_surgical_closure_workflow_viewpoints_unassigned_views_surgical_closure_workflow_overview::*;
16
+
17
+ part projectBinding : ProjectMethodBinding {
18
+ attribute :>> id = "PMB-CLOSURE-WORKFLOW-001";
19
+ attribute :>> name = "SurgicalClosureWorkflowProjectMethodBinding";
20
+ attribute :>> projectName = "Surgical Closure Workflow";
21
+ ref :>> selectedMethodology = mdDefaultDefinition;
22
+ attribute :>> scopeMode = ScopeModeKind::explicit;
23
+ }
24
+ }
@@ -5,6 +5,7 @@ package memo_examples_surgical_closure_workflow {
5
5
  private import ScalarValues::*;
6
6
 
7
7
  private import memo_core_enumerations::*;
8
+ private import memo_core_relationships::*;
8
9
  private import memo_architecture_operational_context_actors::*;
9
10
  private import memo_architecture_operational_context_use_context::*;
10
11
  private import memo_assurance_requirements_needs::*;
@@ -73,10 +74,13 @@ package memo_examples_surgical_closure_workflow {
73
74
  attribute :>> potentialHarm = "bleeding or staple-line complication not recognized before handover";
74
75
  attribute :>> severityIfFailed = SeverityKind::serious;
75
76
  }
76
- action stConfirmAnatomy : TaskStep { attribute :>> id = "LSG-ST-001"; attribute :>> name = "ConfirmAnatomy"; attribute :>> stepOrder = 1; }
77
- action stCreateStapleLine : TaskStep { attribute :>> id = "LSG-ST-002"; attribute :>> name = "CreateStapleLine"; attribute :>> stepOrder = 2; }
78
- action stInspectBleeding : TaskStep { attribute :>> id = "LSG-ST-003"; attribute :>> name = "InspectForBleeding"; attribute :>> stepOrder = 3; }
79
- action stAssessIntegrity : TaskStep { attribute :>> id = "LSG-ST-004"; attribute :>> name = "AssessStapleLineIntegrity"; attribute :>> stepOrder = 4; }
77
+ action stConfirmAnatomy : TaskStep { attribute :>> id = "LSG-ST-001"; attribute :>> name = "ConfirmAnatomy"; }
78
+ action stCreateStapleLine : TaskStep { attribute :>> id = "LSG-ST-002"; attribute :>> name = "CreateStapleLine"; }
79
+ action stInspectBleeding : TaskStep { attribute :>> id = "LSG-ST-003"; attribute :>> name = "InspectForBleeding"; }
80
+ action stAssessIntegrity : TaskStep { attribute :>> id = "LSG-ST-004"; attribute :>> name = "AssessStapleLineIntegrity"; }
81
+ first stConfirmAnatomy then stCreateStapleLine;
82
+ first stCreateStapleLine then stInspectBleeding;
83
+ first stInspectBleeding then stAssessIntegrity;
80
84
  connection : Composes connect parent ::> actSizeAndCreateSleeve to child ::> taskCreateStapleLine;
81
85
  connection : Composes connect parent ::> taskCreateStapleLine to child ::> stConfirmAnatomy;
82
86
  connection : Composes connect parent ::> taskCreateStapleLine to child ::> stCreateStapleLine;
@@ -91,13 +95,13 @@ package memo_examples_surgical_closure_workflow {
91
95
  attribute :>> completionCondition = "staple line assessed; postoperative handover complete";
92
96
  attribute :>> clinicalObjective = "create a gastric sleeve after controlled mobilisation and staple-line assessment";
93
97
  }
94
- action wsTimeOut : WorkflowStep { attribute :>> stepOrder = 1; ref :>> performedActivity = actTimeOutAndPosition; }
95
- action wsAccess : WorkflowStep { attribute :>> stepOrder = 2; ref :>> performedActivity = actEstablishAccess; }
96
- action wsMobilize : WorkflowStep { attribute :>> stepOrder = 3; ref :>> performedActivity = actMobilizeStomach; }
97
- action wsSleeve : WorkflowStep { attribute :>> stepOrder = 4; ref :>> performedActivity = actSizeAndCreateSleeve; }
98
- action wsAssess : WorkflowStep { attribute :>> stepOrder = 5; ref :>> performedActivity = actAssessStapleLine; }
99
- action wsClose : WorkflowStep { attribute :>> stepOrder = 6; ref :>> performedActivity = actExtractSpecimenAndClose; }
100
- action wsHandover : WorkflowStep { attribute :>> stepOrder = 7; ref :>> performedActivity = actHandover; }
98
+ action wsTimeOut : WorkflowStep { ref :>> performedActivity = actTimeOutAndPosition; }
99
+ action wsAccess : WorkflowStep { ref :>> performedActivity = actEstablishAccess; }
100
+ action wsMobilize : WorkflowStep { ref :>> performedActivity = actMobilizeStomach; }
101
+ action wsSleeve : WorkflowStep { ref :>> performedActivity = actSizeAndCreateSleeve; }
102
+ action wsAssess : WorkflowStep { ref :>> performedActivity = actAssessStapleLine; }
103
+ action wsClose : WorkflowStep { ref :>> performedActivity = actExtractSpecimenAndClose; }
104
+ action wsHandover : WorkflowStep { ref :>> performedActivity = actHandover; }
101
105
  connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsTimeOut;
102
106
  connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsAccess;
103
107
  connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsMobilize;
@@ -105,12 +109,12 @@ package memo_examples_surgical_closure_workflow {
105
109
  connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsAssess;
106
110
  connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsClose;
107
111
  connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsHandover;
108
- connection : StepPrecedes connect predecessor ::> wsTimeOut to successor ::> wsAccess;
109
- connection : StepPrecedes connect predecessor ::> wsAccess to successor ::> wsMobilize;
110
- connection : StepPrecedes connect predecessor ::> wsMobilize to successor ::> wsSleeve;
111
- connection : StepPrecedes connect predecessor ::> wsSleeve to successor ::> wsAssess;
112
- connection : StepPrecedes connect predecessor ::> wsAssess to successor ::> wsClose;
113
- connection : StepPrecedes connect predecessor ::> wsClose to successor ::> wsHandover;
112
+ first wsTimeOut then wsAccess;
113
+ first wsAccess then wsMobilize;
114
+ first wsMobilize then wsSleeve;
115
+ first wsSleeve then wsAssess;
116
+ first wsAssess then wsClose;
117
+ first wsClose then wsHandover;
114
118
  connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfSleeveGastrectomy to supported ::> ucPerformSleeveGastrectomy; }
115
119
 
116
120
  // ── Scenario paths, each with its own activity/action flow ──
@@ -124,7 +128,7 @@ package memo_examples_surgical_closure_workflow {
124
128
  action recognizeBleeding; action controlBleeding; action reassessStapleLine; action escalateIfNeeded;
125
129
  first start then recognizeBleeding; first recognizeBleeding then controlBleeding; first controlBleeding then reassessStapleLine; first reassessStapleLine then escalateIfNeeded; first escalateIfNeeded then done;
126
130
  }
127
- part scNominalSleeveProcedure : OperativeScenario {
131
+ action scNominalSleeveProcedure : OperativeScenario {
128
132
  attribute :>> id = "LSG-SC-001"; attribute :>> name = "NominalSleeveGastrectomy";
129
133
  attribute :>> variantKind = ScenarioVariantKind::nominal;
130
134
  attribute :>> operationalCondition = OperationalConditionKind::normal;
@@ -133,7 +137,7 @@ package memo_examples_surgical_closure_workflow {
133
137
  ref :>> parentUseCase = ucPerformSleeveGastrectomy;
134
138
  ref :>> activities = oaCompleteSleeveProcedure;
135
139
  }
136
- part scStapleLineBleeding : OperativeScenario {
140
+ action scStapleLineBleeding : OperativeScenario {
137
141
  attribute :>> id = "LSG-SC-002"; attribute :>> name = "StapleLineBleedingRecovery";
138
142
  attribute :>> variantKind = ScenarioVariantKind::recovery;
139
143
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
@@ -0,0 +1,9 @@
1
+ // unassigned viewpoint.
2
+ //
3
+ // This project does not define its own viewpoint here; it binds the reusable
4
+ // MEMO viewpoint that frames these concerns. The views it governs sit beneath
5
+ // `views/`.
6
+ package memo_examples_surgical_closure_workflow_viewpoints_unassigned {
7
+ // The reusable package declaring unassigned could not be resolved during
8
+ // conversion. Import it here so the views beneath this viewpoint resolve.
9
+ }
@@ -1,4 +1,4 @@
1
- package memo_examples_surgical_closure_workflow_viewpoints {
1
+ package memo_examples_surgical_closure_workflow_viewpoints_unassigned_views_surgical_closure_workflow_overview {
2
2
  private import memo_examples_surgical_closure_workflow::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
@@ -0,0 +1,24 @@
1
+ // Surgical Robot — project identity and method binding.
2
+ //
3
+ // The native entrypoint. The imports name what this project contains and the
4
+ // binding names the methodology it is governed by. No YAML file participates.
5
+ package memo_examples_surgical_robot_project {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_enumerations::*;
9
+ private import memo_methodology_core::*;
10
+ private import memo_methodology_profiles::*;
11
+
12
+ // The project's own content, imported so the catalog is one reachable
13
+ // closure from a single entrypoint.
14
+ private import memo_examples_surgical_robot_viewpoints_unassigned::*;
15
+ private import memo_examples_surgical_robot_viewpoints_unassigned_views_surgical_robot_overview::*;
16
+
17
+ part projectBinding : ProjectMethodBinding {
18
+ attribute :>> id = "PMB-SURGICAL-ROBOT-001";
19
+ attribute :>> name = "SurgicalRobotProjectMethodBinding";
20
+ attribute :>> projectName = "Surgical Robot";
21
+ ref :>> selectedMethodology = mdDefaultDefinition;
22
+ attribute :>> scopeMode = ScopeModeKind::explicit;
23
+ }
24
+ }
@@ -49,10 +49,12 @@ package memo_examples_surgical_robot {
49
49
  attribute :>> contactDuration = "limited (<24 h)";
50
50
  }
51
51
 
52
- // Surgeon console: haptic feedback element.
53
- part elHapticGrip : UIElement {
52
+ // Surgeon console: haptic feedback element. The grip is hardware the
53
+ // surgeon holds, so it is an OperatorInterfaceElement (a PhysicalComponent)
54
+ // rather than a UIElement — UIElement is software.
55
+ part elHapticGrip : OperatorInterfaceElement {
54
56
  attribute :>> id = "SR-UI-001"; attribute :>> name = "HapticMasterGrip";
55
- attribute :>> formKind = UIElementFormKind::hapticIndicator;
57
+ attribute :>> formKind = OperatorInterfaceFormKind::hapticIndicator;
56
58
  attribute :>> guardedAgainstInadvertentActuation = true;
57
59
  }
58
60
  }
@@ -0,0 +1,9 @@
1
+ // unassigned viewpoint.
2
+ //
3
+ // This project does not define its own viewpoint here; it binds the reusable
4
+ // MEMO viewpoint that frames these concerns. The views it governs sit beneath
5
+ // `views/`.
6
+ package memo_examples_surgical_robot_viewpoints_unassigned {
7
+ // The reusable package declaring unassigned could not be resolved during
8
+ // conversion. Import it here so the views beneath this viewpoint resolve.
9
+ }
@@ -1,4 +1,4 @@
1
- package memo_examples_surgical_robot_viewpoints {
1
+ package memo_examples_surgical_robot_viewpoints_unassigned_views_surgical_robot_overview {
2
2
  private import memo_examples_surgical_robot::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
@@ -15,11 +15,18 @@ Each view is a `MemoDiagramView` declared in `model/samples/`, exposing its own
15
15
  dummy elements. The Architect explorer groups each authored view by the layer
16
16
  of its model content.
17
17
 
18
+ `model/sysml_v2_activity_example.sysml` is the SysML v2 activity-diagram
19
+ acceptance fixture, and is the single copy — it sits with the rest of the
20
+ model's SysML rather than in a parallel `reference/` tree. The bundled parser
21
+ accepts its decision, merge, accept/send, termination and guard syntax, and
22
+ `standard_activity_view.sysml` is the view that draws it.
23
+
18
24
  | View | Diagram type | View kind | Renders |
19
25
  | --- | --- | --- | --- |
20
26
  | `tree_view.sysml` | `bdd` | general | Block Definition Diagram — a decomposition hierarchy. |
21
27
  | `interconnection_view.sysml` | `ibd` | interconnection | Internal Block Diagram — nested parts, boundary ports, typed connectors. |
22
28
  | `action_flow_view.sysml` | `afd` | actionflow | Activity / action flow — actions, item flows, successions. |
29
+ | `standard_activity_view.sysml` | `afd` | actionflow | Standard SysML v2 activity — decision, merge, fork, join, accept, send, terminate, guarded successions. |
23
30
  | `functional_flow_view.sysml` | `ffd` | actionflow | Functional flow — swimlanes per realising component, typed data/energy flows. |
24
31
  | `operational_behaviour_view.sysml` | `ofd` | actionflow | Operational flow — clinical-role swimlanes, concurrent preparation, and a composite therapy step. |
25
32
  | `context_view.sysml` | `context` | general | Operational system context — a black-box system of interest inside an explicit boundary, with actors, peer systems, environment, and typed interactions outside it. |
@@ -0,0 +1,11 @@
1
+ ---
2
+ id: DOC-HAR-001
3
+ title: Hazard Analysis Report
4
+ template: iso-14971/har
5
+ group: Risk Management
6
+ created: 1785896600558
7
+ ---
8
+
9
+ # Hazard Analysis Report
10
+
11
+ _[TODO: Add content]_
@@ -1,5 +1,11 @@
1
- name: "sysml-diagram-samples"
2
- version: "0.1.0"
3
- type: device
4
- extends: "@memoarchitect/medical-modeling-profile"
5
- description: "MEMO Architect diagram rendering samples — one openable view per standard SysML v2 diagram type. Open with: memo-architect --example standard-sysml-diagrams"
1
+ # Application/distribution descriptor for this MEMO package.
2
+ #
3
+ # Identity and location only. It records what this package is called, what
4
+ # version it is, and where its SysML source sits so a resolver can find it.
5
+ # It does not select model content: the project's native SysML imports and its
6
+ # ProjectMethodBinding decide what is in the model. Semantic fields
7
+ # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
+ # removed at the native semantic flip and are now rejected if present.
9
+ name: sysml-diagram-samples
10
+ version: 0.1.0
11
+ description: "MEMO Architect diagram rendering samples \u2014 one openable view per standard SysML v2 diagram type. Open with: memo-architect --example standard-sysml-diagrams"