@memoarchitect/ontology 0.6.5 → 0.8.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  5. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  7. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  8. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  9. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  11. package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
  12. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  13. package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
  15. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  16. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
  17. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
  18. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
  33. package/examples/gpca-pump/model/catalog/project.sysml +26 -0
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
  35. package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
  37. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
  38. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
  39. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
  40. package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  41. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
  42. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
  44. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
  45. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
  47. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
  48. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
  49. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
  50. package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
  51. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
  53. package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
  54. package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
  55. package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  56. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
  57. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
  58. package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  59. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
  61. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
  62. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
  64. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
  66. package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
  67. package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
  68. package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
  69. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
  71. package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
  72. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  73. package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
  74. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
  75. package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
  76. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  77. package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
  78. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  79. package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
  80. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  81. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  82. package/examples/nested-architecture-dsm/README.md +49 -0
  83. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
  84. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  86. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  87. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
  88. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  89. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
  90. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  91. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
  92. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  93. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  94. package/examples/ros-mobile-robot/README.md +40 -0
  95. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  96. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  97. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  98. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  99. package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
  100. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  101. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  102. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  103. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  104. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
  105. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  106. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  107. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  108. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
  109. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  110. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  111. package/examples/sysml-diagram-samples/README.md +7 -0
  112. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  113. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  114. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  115. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  116. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
  118. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  119. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
  120. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  124. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
  128. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
  129. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  130. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  131. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
  132. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  133. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  134. package/examples/ui-screen-regions/README.md +117 -0
  135. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
  136. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
  137. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  138. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  139. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  140. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  141. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  142. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  143. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  144. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  145. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  146. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  147. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  148. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
  149. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  150. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  151. package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -0
  152. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  153. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
  154. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  155. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
  159. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
  160. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
  161. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
  162. package/extensions/LICENSES/MIT.txt +19 -0
  163. package/extensions/README.md +94 -0
  164. package/extensions/aadl/memo.package.yaml +18 -0
  165. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  166. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  167. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  168. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  169. package/extensions/clinical/memo.package.yaml +18 -0
  170. package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -0
  171. package/extensions/cloud/memo.package.yaml +18 -0
  172. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  173. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  174. package/extensions/container/memo.package.yaml +18 -0
  175. package/extensions/container/src/container_extension.sysml +37 -0
  176. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  177. package/extensions/messaging/memo.package.yaml +18 -0
  178. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  179. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  180. package/extensions/ros/memo.package.yaml +18 -0
  181. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  182. package/extensions/ros/src/ros_extension.sysml +200 -0
  183. package/extensions/template/memo.package.yaml +17 -0
  184. package/extensions/template/src/extension.sysml +37 -0
  185. package/memo.manifest.yaml +15 -2
  186. package/methodologies/default/memo.package.yaml +19 -9
  187. package/methodologies/gpca/memo.package.yaml +18 -9
  188. package/ontology/memo.package.yaml +23 -8
  189. package/package.json +6 -6
  190. package/profile/memo.package.yaml +18 -9
  191. package/src/architecture/decisions/memo_decisions.sysml +28 -0
  192. package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
  193. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  194. package/src/architecture/functional/functions/memo_functions.sysml +93 -43
  195. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
  196. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
  197. package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
  198. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
  199. package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
  200. package/src/architecture/operational/activities/memo_activities.sysml +10 -4
  201. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  202. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  203. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  204. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  205. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  206. package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
  207. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  208. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  209. package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
  210. package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
  211. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  212. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  213. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  214. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  215. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  216. package/src/artifacts/standards/iec_60812.sysml +51 -0
  217. package/src/artifacts/standards/iec_62304.sysml +210 -0
  218. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  219. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  220. package/src/artifacts/standards/iso_13485.sysml +113 -0
  221. package/src/artifacts/standards/iso_14971.sysml +94 -0
  222. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  223. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  224. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
  225. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
  226. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
  227. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
  228. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
  229. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
  230. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
  231. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
  232. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
  233. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
  234. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
  235. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
  236. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
  237. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
  238. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
  239. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  240. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
  241. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
  242. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
  243. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
  244. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
  245. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
  246. package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
  247. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
  248. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
  249. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
  250. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
  251. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
  252. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
  253. package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
  254. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
  255. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +2 -2
  256. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  257. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  258. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  259. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  260. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  261. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  262. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  263. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  264. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  265. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  266. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
  267. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  268. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  269. package/src/core/annotations/memo_annotations.sysml +96 -0
  270. package/src/core/common/memo_common.sysml +140 -18
  271. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  272. package/src/core/dimensions/dimensions.sysml +17 -1
  273. package/src/core/enumerations/memo_enumerations.sysml +101 -20
  274. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  275. package/src/core/relationships/memo_relationships.sysml +199 -194
  276. package/src/memo_namespaces.sysml +127 -67
  277. package/src/methodology/core/memo_core.sysml +69 -2
  278. package/src/methodology/profiles/memo_profiles.sysml +31 -41
  279. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  280. package/src/rules/closure/closure_rules.sysml +104 -31
  281. package/src/rules/coverage/coverage_rules.sysml +4 -256
  282. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  283. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  284. package/src/rules/ontology/ontology_invariants.sysml +243 -74
  285. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  286. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
  287. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  288. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  289. package/src/viewpoints/context/context_viewpoint.sysml +4 -2
  290. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  291. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  292. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  293. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  294. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
  295. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  296. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
  297. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
  298. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  299. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  300. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  301. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
  302. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  303. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  304. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  305. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  306. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  307. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  308. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  309. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  310. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  311. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  312. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  313. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  314. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  315. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  316. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  317. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
  318. package/templates/connected-device/memo.package.yaml +11 -5
  319. package/templates/connected-device/model/catalog/project.sysml +28 -0
  320. package/templates/connected-device/syside.toml +1 -1
  321. package/templates/default/memo.package.yaml +11 -5
  322. package/templates/default/model/catalog/project.sysml +28 -0
  323. package/templates/default/syside.toml +1 -1
  324. package/templates/infusion-pump/memo.package.yaml +11 -5
  325. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  326. package/templates/infusion-pump/syside.toml +1 -1
  327. package/templates/monitoring-device/memo.package.yaml +11 -5
  328. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  329. package/templates/monitoring-device/syside.toml +1 -1
  330. package/templates/samd/memo.package.yaml +11 -5
  331. package/templates/samd/model/catalog/project.sysml +28 -0
  332. package/templates/samd/syside.toml +1 -1
  333. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  334. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  335. package/examples/extensions/README.md +0 -16
  336. package/examples/extensions/clinical/memo.package.yaml +0 -9
  337. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
  338. package/examples/extensions/template/memo.package.yaml +0 -9
  339. package/examples/extensions/template/src/extension.sysml +0 -15
  340. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  341. package/examples/gpca-pump/memo.config.yaml +0 -9
  342. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  343. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  344. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  345. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  346. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  347. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  348. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  349. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  350. package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
  351. package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
  352. package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
  353. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
  354. package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
  355. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  356. package/ontology/memo.rendering.yaml +0 -84
  357. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  358. package/src/compliance/change/memo_change.sysml +0 -17
  359. package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
  360. package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
  361. package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
  362. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  363. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  364. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  365. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  366. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  367. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  368. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  369. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  370. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  371. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  372. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  373. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  374. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  375. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  376. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  377. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  378. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  379. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  380. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  381. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  382. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  383. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  384. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  385. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  386. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  387. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  388. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  389. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  390. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  391. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  392. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  393. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  394. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -0,0 +1,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
+ }
@@ -23,7 +23,7 @@ package memo_examples_surgical_robot {
23
23
  connection : IndependentOf connect channel ::> chMotionMonitor to otherChannel ::> chMotionPrimary {
24
24
  attribute :>> independenceBasis = "separate sensing, power, and processing; common-cause analysis SR-CCA-01";
25
25
  }
26
- connection : MonitorsChannel connect monitorChannel ::> chMotionMonitor to monitoredComponent ::> chMotionPrimary;
26
+ dependency chMotionMonitor to chMotionPrimary;
27
27
 
28
28
  // Interlock: instrument exchange blocked while arm is in motion.
29
29
  part chExchangeInterlock : LogicalComponent {
@@ -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"
@@ -0,0 +1,33 @@
1
+ // Sysml Diagram Samples — 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_sysml_diagram_samples_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_sysml_diagram_samples_viewpoints_unassigned::*;
15
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_flow_view::*;
16
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_view::*;
17
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_functional_flow_view::*;
18
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_interconnection_view::*;
19
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operational_behaviour_view::*;
20
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirements_view::*;
21
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_standard_activity_view::*;
22
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_transition_view::*;
23
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_tree_view::*;
24
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case_view::*;
25
+
26
+ part projectBinding : ProjectMethodBinding {
27
+ attribute :>> id = "PMB-DIAGRAM-SAMPLES-001";
28
+ attribute :>> name = "SysmlDiagramSamplesProjectMethodBinding";
29
+ attribute :>> projectName = "Sysml Diagram Samples";
30
+ ref :>> selectedMethodology = mdDefaultDefinition;
31
+ attribute :>> scopeMode = ScopeModeKind::explicit;
32
+ }
33
+ }
@@ -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_sysml_diagram_samples_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,10 +1,13 @@
1
- package memo_examples_sysml_diagram_samples_model_samples_action_flow_view {
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_flow_view {
2
2
  private import ScalarValues::*;
3
3
  private import memo_core_relationships::*;
4
+ private import ModelingMetadata::*;
4
5
 
5
6
  private import memo_architecture_logical_structure::*;
6
7
  private import memo_architecture_logical_interfaces::*;
8
+ private import memo_architecture_functional_functions::*;
7
9
  private import memo_viewpoints_definitions::*;
10
+ private import memo_viewpoints_functional_functional_viewpoint::*;
8
11
  private import memo_core_enumerations::*;
9
12
 
10
13
  item def DataPacket specializes InterfaceItem {
@@ -17,15 +20,15 @@ package memo_examples_sysml_diagram_samples_model_samples_action_flow_view {
17
20
  attribute :>> itemKind = InterfaceItemKind::material;
18
21
  }
19
22
 
20
- action def ReceiveInput { out received : DataPacket; }
21
- action def ValidateInput { in received : DataPacket; out validated : EnergyToken; }
22
- action def ProcessInput { in validated : EnergyToken; out result : MaterialBatch; }
23
- action def RecordResult { in result : MaterialBatch; }
23
+ action def ReceiveInput specializes SystemFunction { out item received : DataPacket; }
24
+ action def ValidateInput specializes SystemFunction { in item received : DataPacket; out item validated : EnergyToken; }
25
+ action def ProcessInput specializes SystemFunction { in item validated : EnergyToken; out item result : MaterialBatch; }
26
+ action def RecordResult specializes SystemFunction { in item result : MaterialBatch; }
24
27
 
25
28
  part laneA : LogicalComponent { attribute :>> name = "Lane A"; }
26
29
  part laneB : LogicalComponent { attribute :>> name = "Lane B"; }
27
30
 
28
- action sampleActionFlow {
31
+ action sampleActionFlow : SystemFunction {
29
32
  action receive : ReceiveInput;
30
33
  action validate : ValidateInput;
31
34
  action process : ProcessInput {
@@ -60,13 +63,20 @@ package memo_examples_sysml_diagram_samples_model_samples_action_flow_view {
60
63
 
61
64
  // MemoLink sample — the universal relation, exercised where nothing else
62
65
  // reaches. laneB is a `part` (LogicalComponent :> ArchitectureElement) and
63
- // ProcessInput is an `action def` (:> MemoAction). Those foundations share
64
- // no supertype, so every typed relation in the ontology is unavailable
65
- // here: legalRelationshipTypes returns MemoLink and nothing else.
66
+ // `sampleActionFlow.process` is an action usage (:> MemoAction). Those
67
+ // foundations share no supertype, so every typed relation in the ontology
68
+ // is unavailable here: legalRelationshipTypes returns MemoLink and nothing
69
+ // else.
70
+ //
71
+ // The target is the action *usage*, not the `ProcessInput` definition.
72
+ // Binding a value to a definition is not portable — SysIDE rejects it,
73
+ // because a value must be a feature and a definition is not.
66
74
  connection linkLaneBProcessesInput : MemoLink
67
- connect linkSource ::> laneB to linkTarget ::> ProcessInput {
68
- attribute :>> linkRationale =
69
- "Lane B is the swimlane that carries the ProcessInput behaviour. The association crosses the part/action metaclass boundary, so no typed relation can express it.";
75
+ connect linkSource ::> laneB to linkTarget ::> sampleActionFlow.process {
76
+ @Rationale {
77
+ :>> text =
78
+ "Lane B is the swimlane that carries the ProcessInput behaviour. The association crosses the part/action metaclass boundary, so no typed relation can express it.";
79
+ }
70
80
  }
71
81
 
72
82
  view sampleActionFlowView : MemoDiagramView {
@@ -78,13 +88,6 @@ package memo_examples_sysml_diagram_samples_model_samples_action_flow_view {
78
88
  attribute :>> shortDescription = "Dummy actions, typed item flows, successions, and a composite action for renderer development.";
79
89
  attribute :>> viewKind = DiagramViewKind::actionflow;
80
90
  attribute :>> diagramType = "afd";
91
+ part :>> viewpointDefinition = functionalViewpoint;
81
92
  }
82
-
83
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.receive to targetView ::> sampleActionFlowView;
84
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.validate to targetView ::> sampleActionFlowView;
85
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.process to targetView ::> sampleActionFlowView;
86
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.process.processStepA to targetView ::> sampleActionFlowView;
87
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.process.processStepB to targetView ::> sampleActionFlowView;
88
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.process.processStepC to targetView ::> sampleActionFlowView;
89
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.record to targetView ::> sampleActionFlowView;
90
93
  }
@@ -1,7 +1,7 @@
1
1
  // System context sample (general view kind, `context` diagram type). The system
2
2
  // under consideration is one block; every other element is an external actor,
3
3
  // neighbouring system, or use context it interacts with across its boundary.
4
- package memo_examples_sysml_diagram_samples_model_samples_context_view {
4
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_view {
5
5
  private import ScalarValues::*;
6
6
 
7
7
  private import memo_architecture_operational_context_actors::*;
@@ -9,6 +9,7 @@ package memo_examples_sysml_diagram_samples_model_samples_context_view {
9
9
  private import memo_architecture_operational_structure::*;
10
10
  private import memo_core_relationships::*;
11
11
  private import memo_viewpoints_definitions::*;
12
+ private import memo_viewpoints_context_context_viewpoint::*;
12
13
  private import memo_core_enumerations::*;
13
14
 
14
15
  // The operational system of interest is intentionally represented as one
@@ -17,7 +18,7 @@ package memo_examples_sysml_diagram_samples_model_samples_context_view {
17
18
  part infusionSystem : OperationalEntity {
18
19
  attribute :>> name = "Infusion Pump System";
19
20
  attribute :>> entityKind = OperationalEntityKind::device;
20
- attribute :>> contextRole = "systemOfInterest";
21
+ attribute :>> responsibility = "System of interest for this context view.";
21
22
  }
22
23
  part clinician : User { attribute :>> name = "Clinician"; }
23
24
  part patient : User { attribute :>> name = "Patient"; }
@@ -31,25 +32,24 @@ package memo_examples_sysml_diagram_samples_model_samples_context_view {
31
32
  connection : InteractsWith connect contextParticipant ::> clinician to target ::> infusionSystem;
32
33
  connection : InteractsWith connect contextParticipant ::> patient to target ::> infusionSystem;
33
34
  connection : InteractsWith connect contextParticipant ::> biomedTech to target ::> infusionSystem;
34
- connection : ExchangesWith connect source ::> infusionSystem to target ::> pharmacySystem;
35
+ flow from infusionSystem to pharmacySystem;
35
36
  connection : AppliesInContext connect useContext ::> homeContext to subjectElement ::> infusionSystem;
36
37
 
37
38
  view sampleContextView : MemoDiagramView {
38
39
  expose infusionSystem::**;
40
+ expose clinician;
41
+ expose patient;
42
+ expose biomedTech;
43
+ expose pharmacySystem;
44
+ expose homeContext;
39
45
  attribute depth = 1;
40
46
  attribute :>> title = "Sample · System Context";
41
47
  attribute :>> shortDescription = "Operational system context: one black-box system boundary, its external people, peer systems, operating environment, and named boundary-crossing interactions.";
42
48
  attribute :>> viewKind = DiagramViewKind::general;
43
49
  attribute :>> diagramType = "context";
50
+ part :>> viewpointDefinition = contextViewpoint;
44
51
  part :>> selectionQuery {
45
- attribute :>> includeRelationshipKinds = ("InteractsWith", "ExchangesWith", "AppliesInContext");
52
+ attribute :>> includeRelationshipKinds = ("InteractsWith", "flow", "AppliesInContext");
46
53
  }
47
54
  }
48
-
49
- connection : IncludedIn connect sourceElement ::> infusionSystem to targetView ::> sampleContextView;
50
- connection : IncludedIn connect sourceElement ::> clinician to targetView ::> sampleContextView;
51
- connection : IncludedIn connect sourceElement ::> patient to targetView ::> sampleContextView;
52
- connection : IncludedIn connect sourceElement ::> biomedTech to targetView ::> sampleContextView;
53
- connection : IncludedIn connect sourceElement ::> pharmacySystem to targetView ::> sampleContextView;
54
- connection : IncludedIn connect sourceElement ::> homeContext to targetView ::> sampleContextView;
55
55
  }
@@ -0,0 +1,47 @@
1
+ format: memo.viewlayout/v1
2
+ viewSource: model/catalog/viewpoints/unassigned/views/context_view.sysml
3
+ layouts:
4
+ diag-sample-sampleContextView:
5
+ nodes:
6
+ __context_boundary__:
7
+ x: 327.4
8
+ y: 109
9
+ ports: {}
10
+ infusionSystem:
11
+ x: 92
12
+ y: 74
13
+ ports: {}
14
+ biomedTech:
15
+ x: 40
16
+ y: 40
17
+ ports: {}
18
+ clinician:
19
+ x: 53.400000000000006
20
+ y: 146
21
+ ports: {}
22
+ patient:
23
+ x: 53.400000000000006
24
+ y: 252
25
+ ports: {}
26
+ homeContext:
27
+ x: 440
28
+ y: 600
29
+ ports: {}
30
+ pharmacySystem:
31
+ x: 855.4
32
+ y: 199
33
+ ports: {}
34
+ edges:
35
+ rel-8: {}
36
+ rel-9: {}
37
+ rel-10: {}
38
+ rel-11: {}
39
+ rel-12: {}
40
+ annotations: {}
41
+ canvas:
42
+ autoLayout: false
43
+ zoom: 0.7154088050314465
44
+ pan:
45
+ x: 50.15487421383642
46
+ y: -9.616352201257882
47
+ coordinateSpace: context-child-v1
@@ -0,0 +1,143 @@
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_functional_flow_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_architecture_logical_structure::*;
5
+ private import memo_architecture_logical_interfaces::*;
6
+ private import memo_architecture_functional_functions::*;
7
+ private import memo_core_relationships::*;
8
+ private import memo_viewpoints_definitions::*;
9
+ private import memo_viewpoints_functional_functional_viewpoint::*;
10
+ private import memo_core_enumerations::*;
11
+
12
+ // ─────────────────────────────────────────────────────────────────────────
13
+ // Sample · Functional flow — component behaviour of dose delivery
14
+ //
15
+ // Demonstrates an Action Flow (activity) diagram of *functional/component*
16
+ // behaviour: how the architecture components collaborate to deliver a dose.
17
+ // Swimlanes group functions by the component that realises them; typed item
18
+ // flows show data (blue), energy (orange) and material (green) moving
19
+ // between functions; a fork/join runs occlusion monitoring concurrently
20
+ // with drive/deliver; and `fxDeliver` is a composite (double-click to
21
+ // drill into its valve sub-flow, then "← Parent" to return).
22
+ // ─────────────────────────────────────────────────────────────────────────
23
+
24
+ // Typed flow payloads
25
+ item def FxSensorReading specializes InterfaceItem {
26
+ attribute :>> itemKind = InterfaceItemKind::data;
27
+ }
28
+ item def FxRateCommand specializes InterfaceItem {
29
+ attribute :>> itemKind = InterfaceItemKind::command;
30
+ }
31
+ item def FxMotorEnergy specializes InterfaceItem {
32
+ attribute :>> itemKind = InterfaceItemKind::energy;
33
+ }
34
+ item def FxMedicationFluid specializes InterfaceItem {
35
+ attribute :>> itemKind = InterfaceItemKind::fluid;
36
+ }
37
+ item def FxOcclusionSignal specializes InterfaceItem {
38
+ attribute :>> itemKind = InterfaceItemKind::signal;
39
+ }
40
+
41
+ // Functions with typed in/out pins
42
+ action def FxAcquire specializes SystemFunction { out item reading : FxSensorReading; }
43
+ action def FxCompute specializes SystemFunction { in item reading : FxSensorReading; out item command : FxRateCommand; }
44
+ action def FxEnforce specializes SystemFunction { in item command : FxRateCommand; out item safeCommand : FxRateCommand; }
45
+ action def FxDrive specializes SystemFunction { in item command : FxRateCommand; out item energy : FxMotorEnergy; }
46
+ action def FxDeliverMedication specializes SystemFunction { in item energy : FxMotorEnergy; out item fluid : FxMedicationFluid; }
47
+ action def FxMonitor specializes SystemFunction { out item signal : FxOcclusionSignal; }
48
+ action def FxDetect specializes SystemFunction { in item signal : FxOcclusionSignal; }
49
+
50
+ // Component hierarchy used by the Level control:
51
+ // L1 system → L2 subsystems → L3 allocated components.
52
+ part fxPumpSystem : LogicalComponent {
53
+ attribute :>> name = "Infusion Pump System";
54
+ part fxSensingSubsystem : LogicalComponent {
55
+ attribute :>> name = "Sensing Subsystem";
56
+ part fxSensor : LogicalComponent { attribute :>> name = "Sensor Subsystem"; }
57
+ }
58
+ part fxControlSubsystem : LogicalComponent {
59
+ attribute :>> name = "Control Subsystem";
60
+ part fxController : LogicalComponent { attribute :>> name = "Infusion Controller"; }
61
+ }
62
+ part fxDeliverySubsystem : LogicalComponent {
63
+ attribute :>> name = "Delivery Subsystem";
64
+ part fxActuator : LogicalComponent { attribute :>> name = "Pump Actuator"; }
65
+ }
66
+ part fxSafetySubsystem : LogicalComponent {
67
+ attribute :>> name = "Safety Subsystem";
68
+ part fxSafety : LogicalComponent { attribute :>> name = "Safety Monitor"; }
69
+ }
70
+ }
71
+
72
+ action fxDeliveryFlow : SystemFunction {
73
+ action fxAcquire : FxAcquire { attribute :>> name = "Acquire Sensor Data"; }
74
+ action fxCompute : FxCompute { attribute :>> name = "Compute Infusion Rate"; }
75
+
76
+ // Split: enforce/drive/deliver runs concurrently with occlusion monitoring
77
+ fork fxForkDeliver;
78
+ action fxEnforce : FxEnforce { attribute :>> name = "Enforce Dose Limits"; }
79
+ action fxDrive : FxDrive { attribute :>> name = "Drive Pump Motor"; }
80
+ action fxMonitor : FxMonitor { attribute :>> name = "Monitor Occlusion"; }
81
+ action fxDetect : FxDetect { attribute :>> name = "Detect Occlusion"; }
82
+ join fxJoinDeliver;
83
+
84
+ // Composite function — valve sub-flow (drill-in)
85
+ action fxDeliver : FxDeliverMedication {
86
+ attribute :>> name = "Deliver Medication";
87
+ action fxOpenValve : SystemFunction { attribute :>> name = "Open Valve"; }
88
+ action fxHoldDose : SystemFunction { attribute :>> name = "Hold Metered Dose"; }
89
+ action fxCloseValve : SystemFunction { attribute :>> name = "Close Valve"; }
90
+
91
+ flow of FxMedicationFluid from fxDeliveryFlow.fxDeliver.fxHoldDose to fxCloseValve;
92
+
93
+ first start then fxOpenValve;
94
+ first fxOpenValve then fxHoldDose;
95
+ first fxHoldDose then fxCloseValve;
96
+ first fxCloseValve then done;
97
+ }
98
+
99
+ action fxLog : SystemFunction { attribute :>> name = "Log Delivery"; }
100
+
101
+ flow of FxSensorReading from fxAcquire.reading to fxCompute.reading;
102
+ flow of FxRateCommand from fxEnforce.safeCommand to fxDrive.command;
103
+ flow of FxMotorEnergy from fxDrive.energy to fxDeliver.energy;
104
+ flow of FxOcclusionSignal from fxMonitor.signal to fxDetect.signal;
105
+
106
+ first start then fxAcquire;
107
+ first fxAcquire then fxCompute;
108
+ first fxCompute then fxForkDeliver;
109
+ first fxForkDeliver then fxEnforce;
110
+ first fxForkDeliver then fxMonitor;
111
+ first fxEnforce then fxDrive;
112
+ first fxDrive then fxDeliver;
113
+ first fxMonitor then fxDetect;
114
+ first fxDeliver then fxJoinDeliver;
115
+ first fxDetect then fxJoinDeliver;
116
+ first fxJoinDeliver then fxLog;
117
+ first fxLog then done;
118
+ }
119
+
120
+ // Swimlane allocation — which component realises each function
121
+ allocate fxDeliveryFlow.fxAcquire to fxPumpSystem.fxSensingSubsystem.fxSensor;
122
+ allocate fxDeliveryFlow.fxCompute to fxPumpSystem.fxControlSubsystem.fxController;
123
+ allocate fxDeliveryFlow.fxEnforce to fxPumpSystem.fxSafetySubsystem.fxSafety;
124
+ allocate fxDeliveryFlow.fxDrive to fxPumpSystem.fxDeliverySubsystem.fxActuator;
125
+ allocate fxDeliveryFlow.fxDeliver to fxPumpSystem.fxDeliverySubsystem.fxActuator;
126
+ allocate fxDeliveryFlow.fxMonitor to fxPumpSystem.fxSafetySubsystem.fxSafety;
127
+ allocate fxDeliveryFlow.fxDetect to fxPumpSystem.fxSafetySubsystem.fxSafety;
128
+ allocate fxDeliveryFlow.fxLog to fxPumpSystem.fxControlSubsystem.fxController;
129
+ allocate fxDeliveryFlow.fxDeliver.fxOpenValve to fxPumpSystem.fxDeliverySubsystem.fxActuator;
130
+ allocate fxDeliveryFlow.fxDeliver.fxHoldDose to fxPumpSystem.fxDeliverySubsystem.fxActuator;
131
+ allocate fxDeliveryFlow.fxDeliver.fxCloseValve to fxPumpSystem.fxDeliverySubsystem.fxActuator;
132
+
133
+ view fxDeliveryView : MemoDiagramView {
134
+ expose fxDeliveryFlow::**;
135
+ expose fxPumpSystem::**;
136
+ attribute depth = 2;
137
+ attribute :>> title = "Sample · Dose Delivery (Functional Flow)";
138
+ attribute :>> shortDescription = "Component behaviour: functions in swimlanes per realising component, typed data/energy/material flows, a fork/join for concurrent occlusion monitoring, and a composite 'Deliver Medication' valve sub-flow (double-click to drill in).";
139
+ attribute :>> viewKind = DiagramViewKind::actionflow;
140
+ attribute :>> diagramType = "ffd";
141
+ part :>> viewpointDefinition = functionalViewpoint;
142
+ }
143
+ }
@@ -0,0 +1,87 @@
1
+ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_interconnection_view {
2
+ private import ScalarValues::*;
3
+ private import memo_architecture_operational_context_actors::*;
4
+ private import memo_architecture_operational_context_use_context::*;
5
+
6
+ private import memo_architecture_logical_interfaces::*;
7
+ private import memo_architecture_logical_structure::*;
8
+ private import memo_core_common::*;
9
+ private import memo_core_relationships::*;
10
+ private import memo_viewpoints_definitions::*;
11
+ private import memo_viewpoints_logical_logical_viewpoint::*;
12
+ private import memo_core_enumerations::*;
13
+
14
+ // Ports are owned by the part whose boundary they are, which is what lets
15
+ // a delegation be written at all: SysML v2 checks a flow's source for
16
+ // `out`-ness relative to the owner, so a boundary port only reads as a
17
+ // source from INSIDE its part. The subassemblies are nested the same way —
18
+ // real containment, not a port-to-port `Composes` edge, which is what
19
+ // CR-ONT-065 used to forbid before nesting made the rule unnecessary.
20
+ part coffeeMachine : LogicalComponent {
21
+ attribute :>> name = "Coffee Machine";
22
+ in port mainsWaterIn : DataPort { in item payload : MemoItem; }
23
+ out port beverageOut : DataPort { out item payload : MemoItem; }
24
+ inout port serviceInterface : DataPort {
25
+ inout item payload : MemoItem;
26
+ out port diagnostics : DataPort { out item payload : MemoItem; }
27
+ }
28
+
29
+ part waterTank : LogicalComponent {
30
+ attribute :>> name = "Water Reservoir";
31
+ out port tankWaterOut : DataPort { out item payload : MemoItem; }
32
+ in port tankWaterIn : DataPort { in item payload : MemoItem; }
33
+ }
34
+ part heaterAssembly : LogicalComponent {
35
+ attribute :>> name = "Thermal Control Assembly";
36
+ in port heaterWaterIn : DataPort { in item payload : MemoItem; }
37
+ out port heatedWaterOut : DataPort { out item payload : MemoItem; }
38
+
39
+ part heatingElement : LogicalComponent {
40
+ attribute :>> name = "Water Heating Element";
41
+ out port heaterStatusOut : DataPort { out item payload : MemoItem; }
42
+ }
43
+ }
44
+ part brewGroup : LogicalComponent {
45
+ attribute :>> name = "Brew Group";
46
+ in port brewWaterIn : DataPort { in item payload : MemoItem; }
47
+ out port brewedCoffeeOut : DataPort { out item payload : MemoItem; }
48
+ }
49
+ }
50
+ part waterSupply : LogicalComponent {
51
+ attribute :>> name = "Water Supply";
52
+ out port supplyWaterOut : DataPort { out item payload : MemoItem; }
53
+ }
54
+ part cup : LogicalComponent {
55
+ attribute :>> name = "Cup";
56
+ in port cupBeverageIn : DataPort { in item payload : MemoItem; }
57
+ }
58
+
59
+ // Transport between two components: `out` to `in`, one item moving.
60
+ flow from waterSupply.supplyWaterOut to coffeeMachine.mainsWaterIn;
61
+ flow from coffeeMachine.waterTank.tankWaterOut to coffeeMachine.heaterAssembly.heaterWaterIn;
62
+ flow from coffeeMachine.heaterAssembly.heatedWaterOut to coffeeMachine.brewGroup.brewWaterIn;
63
+ flow from coffeeMachine.beverageOut to cup.cupBeverageIn;
64
+
65
+ // Delegation between a boundary port and the interior it stands for. These
66
+ // are `in`-to-`in` and `out`-to-`out`, because nothing travels: the two
67
+ // features are the same feature. SysML v2 spells that `bind` (training
68
+ // ch. 12), not `flow` (ch. 13).
69
+ bind coffeeMachine.mainsWaterIn = coffeeMachine.waterTank.tankWaterIn;
70
+ bind coffeeMachine.brewGroup.brewedCoffeeOut = coffeeMachine.beverageOut;
71
+ bind coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut = coffeeMachine.serviceInterface.diagnostics;
72
+
73
+ view sampleInterconnectionView : MemoDiagramView {
74
+ expose coffeeMachine::**;
75
+ expose waterSupply::**;
76
+ expose cup::**;
77
+ attribute depth = 2;
78
+ attribute :>> title = "Coffee Machine · Thermal & Fluid IBD";
79
+ attribute :>> shortDescription = "Balanced internal architecture with readable boundary ports, nested service diagnostics, and external water and beverage interfaces.";
80
+ attribute :>> viewKind = DiagramViewKind::interconnection;
81
+ attribute :>> diagramType = "ibd";
82
+ part :>> viewpointDefinition = logicalArchitectureViewpoint;
83
+ part :>> selectionQuery {
84
+ attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
85
+ }
86
+ }
87
+ }