@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,18 @@
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: '@memoarchitect/extension-ros'
10
+ version: 0.8.22
11
+ description: ROS 2 nodes, messages, topic/service/action interfaces, QoS, and containerized deployment
12
+ license: MIT
13
+ tags:
14
+ - memo
15
+ - methodology
16
+ - extension
17
+ - ros
18
+ sysmlDir: ./src
@@ -0,0 +1,25 @@
1
+ package memo_extension_ros_methodology {
2
+ private import ScalarValues::*;
3
+ private import memo_methodology_core::*;
4
+ private import memo_methodology_profiles::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ // An extension that builds on other extensions names them all here.
8
+ // `baseMethodology` is [0..1] — single inheritance, deliberate — but
9
+ // `includedModule` is [0..*], so this is how a dependency between
10
+ // extensions is expressed. There is no chaining and no second base.
11
+ part rosExtensionMethod : MethodologyDefinition {
12
+ attribute :>> id = "EXT-ROS-001";
13
+ attribute :>> name = "Ros2Extension";
14
+ attribute :>> version = "0.7.0";
15
+ attribute :>> domain = "ROS 2 robotics middleware";
16
+ attribute :>> description = "Adds ROS 2 nodes, messages, directional ports, topic/service/action interfaces, QoS, and containerized deployment.";
17
+ ref :>> baseMethodology = mdDefaultDefinition;
18
+ attribute :>> scopeMode = ScopeModeKind::explicit;
19
+ attribute :>> includedModule = (
20
+ "memo_extension_messaging",
21
+ "memo_extension_container",
22
+ "memo_extension_ros"
23
+ );
24
+ }
25
+ }
@@ -0,0 +1,200 @@
1
+ // ROS 2 (Robot Operating System 2).
2
+ //
3
+ // The acceptance test for MEMO's extension point (plan §10.3): a whole
4
+ // technology stack — nodes, messages, topics, quality of service, services,
5
+ // actions, and
6
+ // containerized deployment — landing without a single change to a base
7
+ // relation. `BuildsInto`, `DeploysTo`, and `ProvidesEnvironment` are reused
8
+ // exactly as the base declares them.
9
+ //
10
+ // Composition is by MODULE LIST, not by chaining. `baseMethodology` is [0..1],
11
+ // but `includedModule` is [0..*], so this extension's methodology names
12
+ // `memo_extension_messaging` and `memo_extension_container` alongside its own
13
+ // module. ROS communication specializes native MEMO item, port, and interface
14
+ // families; it does not invent publish/subscribe relations.
15
+ package memo_extension_ros {
16
+ private import ScalarValues::*;
17
+
18
+ private import memo_core_common::*;
19
+ private import memo_architecture_functional_behavior::*;
20
+ private import memo_architecture_logical_interfaces::*;
21
+ private import memo_architecture_implementation_software_structure::*;
22
+ private import memo_architecture_implementation_software_runtime::*;
23
+ private import memo_extension_messaging::*;
24
+ private import memo_extension_container::*;
25
+
26
+ // ── Quality of service ──────────────────────────────────────────────
27
+ //
28
+ // QoS is the first real customer for "where do per-technology properties
29
+ // live" (plan C3, open question §14.6). The answer is a typed
30
+ // `attribute def` on the extension's own types — NOT the base's
31
+ // `PropertySet` stub, which was one String field and could not say what a
32
+ // reliability setting is. A typed profile can be validated, compared
33
+ // between a publisher and a subscriber, and read by a tool; a property bag
34
+ // cannot. `PropertySet` is deleted in this session for that reason.
35
+
36
+ // ROS 2 RELIABLE resends until delivery; BEST_EFFORT does not. This is
37
+ // the delivery guarantee, so it maps onto MessagingDeliveryKind:
38
+ // bestEffort is atMostOnce, reliable is atLeastOnce.
39
+ enum def RosReliabilityKind {
40
+ enum bestEffort;
41
+ enum reliable;
42
+ }
43
+ // TRANSIENT_LOCAL replays the last samples to a late-joining subscriber;
44
+ // VOLATILE does not. The difference decides whether a node that restarts
45
+ // sees the current state or waits for the next publication — which is a
46
+ // safety-relevant fact when the topic carries a latched mode or setpoint.
47
+ enum def RosDurabilityKind {
48
+ enum volatile;
49
+ enum transientLocal;
50
+ }
51
+
52
+ attribute def RosQosProfile {
53
+ attribute reliability : RosReliabilityKind;
54
+ attribute durability : RosDurabilityKind;
55
+ // The QoS contract: a sample is expected at least this often.
56
+ attribute deadlineMs : Real;
57
+ // How long a publisher may be silent before subscribers treat it as
58
+ // lost — ROS 2 liveliness lease duration.
59
+ attribute livelinessLeaseMs : Real;
60
+ // Depth of the history buffer, KEEP_LAST(n) / KEEP_ALL.
61
+ attribute historyDepth : Integer;
62
+ }
63
+
64
+ // ── Nodes, messages, topics, and endpoint roles ────────────────────
65
+
66
+ // A ROS node. `runtimeKind` is deliberately NOT bound: a node may run as
67
+ // its own process or be composed with others into a single container
68
+ // process, and which one it is is a design decision the model should
69
+ // record rather than a fact the type can assert.
70
+ part def RosNode specializes SoftwareComponent {
71
+ attribute nodeNamespace : String;
72
+ // Whether the node implements the managed-node lifecycle
73
+ // (unconfigured / inactive / active / finalized). A lifecycle-managed
74
+ // node can be brought up in a defined order and held inactive until
75
+ // its preconditions hold, which is how a robot reaches a safe state.
76
+ attribute lifecycleManaged : Boolean;
77
+ attribute executorModel : String;
78
+ }
79
+
80
+ // A definition is the ROS message contract (`LaserScan`, `Twist`, ...).
81
+ // A named item usage of that definition is a deployed topic (`/scan`).
82
+ // Individual deliveries are native flows/messages between ports that
83
+ // reference the same topic usage.
84
+ abstract item def RosMessage specializes MessagingMessage {
85
+ attribute rosTypeName : String;
86
+ }
87
+
88
+ port def RosPublisher specializes MessagingPublisher {
89
+ attribute offeredQos : RosQosProfile;
90
+ }
91
+
92
+ port def RosSubscriber specializes MessagingSubscriber {
93
+ attribute requestedQos : RosQosProfile;
94
+ }
95
+
96
+ interface def RosTopicInterface specializes MessagingTopicInterface {
97
+ end rosPublisher : RosPublisher :>> publisher;
98
+ end rosSubscriber : RosSubscriber :>> subscriber;
99
+ }
100
+
101
+ // ── Services: one correlated request/reply contract ────────────────
102
+ abstract item def RosServiceRequest specializes RosMessage;
103
+ abstract item def RosServiceResponse specializes RosMessage;
104
+
105
+ port def RosServiceClient specializes SoftwarePort {
106
+ out item request : RosServiceRequest;
107
+ in item response : RosServiceResponse;
108
+ attribute serviceName : String;
109
+ attribute timeoutMs : Real;
110
+ }
111
+
112
+ port def RosServiceServer specializes SoftwarePort {
113
+ in item request : RosServiceRequest;
114
+ out item response : RosServiceResponse;
115
+ attribute serviceName : String;
116
+ }
117
+
118
+ interface def RosServiceInterface specializes SoftwareInterface {
119
+ end client : RosServiceClient :>> source;
120
+ end server : RosServiceServer :>> target;
121
+ flow of RosServiceRequest from client.request to server.request;
122
+ flow of RosServiceResponse from server.response to client.response;
123
+ }
124
+
125
+ // ── Actions: long-running goal protocol ─────────────────────────────
126
+ // ROS 2 realizes an action through goal/result/cancel services plus
127
+ // feedback/status topics. The port exposes those distinct native message
128
+ // features, so an action cannot be mistaken for a two-message service.
129
+ abstract item def RosActionGoal specializes RosMessage;
130
+ abstract item def RosActionAcceptance specializes RosMessage;
131
+ abstract item def RosActionFeedback specializes RosMessage;
132
+ abstract item def RosActionResult specializes RosMessage;
133
+ abstract item def RosActionCancel specializes RosMessage;
134
+ abstract item def RosActionStatus specializes RosMessage;
135
+
136
+ port def RosActionClient specializes SoftwarePort {
137
+ out item goal : RosActionGoal;
138
+ in item acceptance : RosActionAcceptance;
139
+ in item feedback : RosActionFeedback;
140
+ in item result : RosActionResult;
141
+ out item cancel : RosActionCancel;
142
+ in item actionStatus : RosActionStatus;
143
+ attribute actionName : String;
144
+ }
145
+
146
+ port def RosActionServer specializes SoftwarePort {
147
+ in item goal : RosActionGoal;
148
+ out item acceptance : RosActionAcceptance;
149
+ out item feedback : RosActionFeedback;
150
+ out item result : RosActionResult;
151
+ in item cancel : RosActionCancel;
152
+ out item actionStatus : RosActionStatus;
153
+ attribute actionName : String;
154
+ }
155
+
156
+ interface def RosActionInterface specializes SoftwareInterface {
157
+ end client : RosActionClient :>> source;
158
+ end server : RosActionServer :>> target;
159
+ flow of RosActionGoal from client.goal to server.goal;
160
+ flow of RosActionAcceptance from server.acceptance to client.acceptance;
161
+ flow of RosActionFeedback from server.feedback to client.feedback;
162
+ flow of RosActionCancel from client.cancel to server.cancel;
163
+ flow of RosActionResult from server.result to client.result;
164
+ flow of RosActionStatus from server.actionStatus to client.actionStatus;
165
+ }
166
+
167
+ abstract state def RosActionExecution specializes MemoState;
168
+ state def RosActionAccepted specializes RosActionExecution;
169
+ state def RosActionExecuting specializes RosActionExecution;
170
+ state def RosActionCanceling specializes RosActionExecution;
171
+ state def RosActionSucceeded specializes RosActionExecution;
172
+ state def RosActionCanceled specializes RosActionExecution;
173
+ state def RosActionAborted specializes RosActionExecution;
174
+
175
+ // ── Deployment ──────────────────────────────────────────────────────
176
+ //
177
+ // Nothing below declares a relation. The base's three deployment
178
+ // relations already say everything a ROS deployment needs:
179
+ // BuildsInto SoftwareModule -> RosContainerImage
180
+ // DeploysTo RosContainerImage -> ProcessingNode
181
+ // ProvidesEnvironment ProcessingNode -> RosContainerRuntime
182
+ // That is the proof the base is factored correctly.
183
+ part def RosContainerImage specializes ContainerImage {
184
+ // humble, iron, jazzy, rolling.
185
+ attribute rosDistribution : String;
186
+ // The workspace overlay the image was built from.
187
+ attribute workspaceOverlay : String;
188
+ }
189
+
190
+ part def RosContainerRuntime specializes ContainerRuntime {
191
+ attribute rosDistribution : String;
192
+ // The RMW implementation below ROS 2 — rmw_fastrtps_cpp,
193
+ // rmw_cyclonedds_cpp. QoS is enforced here, so it is part of any
194
+ // argument that a QoS profile is actually honoured.
195
+ attribute rmwImplementation : String;
196
+ // ROS_DOMAIN_ID. Two robots sharing a domain see each other's topics,
197
+ // which is a hazard on a shared network and not visible in any node.
198
+ attribute rosDomainId : Integer;
199
+ }
200
+ }
@@ -0,0 +1,17 @@
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: '{{name}}'
10
+ version: 0.1.0
11
+ description: MEMO methodology extension
12
+ license: MIT
13
+ tags:
14
+ - memo
15
+ - methodology
16
+ - extension
17
+ sysmlDir: ./src
@@ -0,0 +1,37 @@
1
+ // Skeleton for a new MEMO extension. Copy the directory, rename the packages,
2
+ // and replace the prefix.
3
+ //
4
+ // Two conventions this file follows and every extension must (extensions/README.md):
5
+ //
6
+ // 1. Every definition an extension declares is prefixed with the PascalCase
7
+ // form of the extension's directory name — `template/` gives `Template`.
8
+ // Extension names share one flat namespace with the base and with each
9
+ // other, so the prefix is what keeps two independent extensions from both
10
+ // declaring `Node`.
11
+ // 2. A relation an extension declares specializes a base relation. It never
12
+ // roots independently.
13
+ //
14
+ // This package used to bind `baseMethodName = "MedicalDeviceLightDefault"` — a
15
+ // pre-flip spelling that resolves to nothing. It went unnoticed for as long as
16
+ // extensions lived under `examples/`, where the build did not check them; the
17
+ // build checks `extensions/` now, and reported it on the first run.
18
+ package memo_extension_template {
19
+ private import ScalarValues::*;
20
+ private import memo_core_enumerations::*;
21
+ private import memo_methodology_core::*;
22
+ private import memo_methodology_profiles::*;
23
+
24
+ part extensionMethod : MethodologyDefinition {
25
+ attribute :>> id = "EXT-METH-001";
26
+ attribute :>> name = "ExtensionMethod";
27
+ attribute :>> version = "0.1.0";
28
+ attribute :>> domain = "project extension";
29
+ attribute :>> description = "Adds a project or domain package to the selected MEMO methodology.";
30
+ // The base is a typed SysML reference, not a name held in sync by hand.
31
+ ref :>> baseMethodology = mdDefaultDefinition;
32
+ // An extension adds its own module to whatever its base selected;
33
+ // saying so explicitly is required now that an empty list means empty.
34
+ attribute :>> scopeMode = ScopeModeKind::explicit;
35
+ attribute :>> includedModule = "replace_with_extension_package";
36
+ }
37
+ }
@@ -17,5 +17,18 @@ templates:
17
17
  examples:
18
18
  gpca: ./examples/gpca-pump
19
19
  standard-sysml-diagrams: ./examples/sysml-diagram-samples
20
- extension-template: ./examples/extensions/template
21
- clinical-extension: ./examples/extensions/clinical
20
+ ui-screen-regions: ./examples/ui-screen-regions
21
+ nested-architecture-dsm: ./examples/nested-architecture-dsm
22
+ ros-mobile-robot: ./examples/ros-mobile-robot
23
+ # Extensions are a way to MODEL, not a thing to copy. They are reusable
24
+ # ontology packages that specialize the base, selected by a methodology or a
25
+ # project binding — so they sit beside the ontology, not under examples/.
26
+ # `examples/ros-mobile-robot` demonstrates using one; it is not the extension.
27
+ extensions:
28
+ template: ./extensions/template
29
+ clinical: ./extensions/clinical
30
+ aadl: ./extensions/aadl
31
+ cloud: ./extensions/cloud
32
+ container: ./extensions/container
33
+ messaging: ./extensions/messaging
34
+ ros: ./extensions/ros
@@ -1,9 +1,19 @@
1
- name: "@memoarchitect/methodology-default"
2
- version: "0.6.4"
3
- type: methodology
4
- extends: "@memoarchitect/ontology"
5
- sysmlDir: "../../src/methodology"
6
- description: "MEMO default medical-device methodology — selects viewpoints/views/DHF documents from @memoarchitect/ontology and adds rules, gates, patterns, profiles, and workflow."
7
- license: "MIT"
8
- tags: ["methodology", "medical-device", "iso-14971", "iec-62304", "memo"]
9
- usage: ["viewpoints", "views", "rules", "gates", "patterns", "profiles", "workflow", "dhf"]
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: '@memoarchitect/methodology-default'
10
+ version: 0.8.22
11
+ description: "MEMO default medical-device methodology \u2014 selects viewpoints/views/DHF documents from @memoarchitect/ontology and adds rules, gates, patterns, profiles, and workflow."
12
+ license: MIT
13
+ tags:
14
+ - methodology
15
+ - medical-device
16
+ - iso-14971
17
+ - iec-62304
18
+ - memo
19
+ sysmlDir: ../../src/methodology
@@ -1,9 +1,18 @@
1
- name: "@memoarchitect/methodology-gpca"
2
- version: "0.6.4"
3
- type: methodology
4
- extends: "@memoarchitect/methodology-default"
5
- sysmlDir: "../../examples/gpca-pump/methodology"
6
- description: "GPCA infusion pump methodology — subtraction-based tailoring of @memoarchitect/methodology-default for the non-networked prototype variant. Excludes cybersecurity and SOUP."
7
- license: "MIT"
8
- tags: ["methodology", "medical-device", "gpca", "tailoring"]
9
- usage: ["viewpoints", "views", "rules", "gates", "patterns", "profiles", "workflow", "dhf"]
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: '@memoarchitect/methodology-gpca'
10
+ version: 0.8.22
11
+ description: "GPCA infusion pump methodology \u2014 subtraction-based tailoring of @memoarchitect/methodology-default for the non-networked prototype variant. Excludes cybersecurity and SOUP."
12
+ license: MIT
13
+ tags:
14
+ - methodology
15
+ - medical-device
16
+ - gpca
17
+ - tailoring
18
+ sysmlDir: ../../examples/gpca-pump/methodology
@@ -1,8 +1,23 @@
1
- name: "@memoarchitect/ontology"
2
- version: "0.6.4"
3
- type: ontology
4
- description: "MEMO — the single canonical medical-device ontology: core semantics, the Arcadia-inspired architecture layers (context, requirements, behavior, structure, interfaces, risk, cybersecurity, assurance, …), compliance, viewpoints, views, and invariant rules. One namespace (memo::), one src/ tree."
5
- license: "MIT"
6
- tags: ["mbse", "sysml-v2", "arcadia", "iso-42010", "medical-device", "ontology", "iso-14971", "iec-62304"]
7
- usage: ["kinds", "relationships"]
8
- sysmlDir: "../src"
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: '@memoarchitect/ontology'
10
+ version: 0.8.22
11
+ description: "MEMO \u2014 the single canonical medical-device ontology: core semantics, the Arcadia-inspired architecture layers (context, requirements, behavior, structure, interfaces, risk, cybersecurity,\
12
+ \ assurance, \u2026), compliance, viewpoints, views, and invariant rules. One namespace (memo::), one src/ tree."
13
+ license: MIT
14
+ tags:
15
+ - mbse
16
+ - sysml-v2
17
+ - arcadia
18
+ - iso-42010
19
+ - medical-device
20
+ - ontology
21
+ - iso-14971
22
+ - iec-62304
23
+ sysmlDir: ../src
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@memoarchitect/ontology",
3
- "version": "0.6.5",
3
+ "version": "0.8.22",
4
4
  "packageManager": "pnpm@9.15.0",
5
- "description": "MEMO — Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
5
+ "description": "MEMO \u2014 Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
6
6
  "scripts": {
7
7
  "build": "bash scripts/build-kpar.sh",
8
- "check": "bash scripts/build-kpar.sh",
8
+ "check": "bash scripts/build-kpar.sh && npm run lint",
9
+ "lint": "node ../memo-tools/packages/tools/lib/bin/memo.js dhf lint",
9
10
  "test": "node --test test/package.test.mjs",
10
11
  "docs:api": "node scripts/generate-sysml-api.mjs",
11
12
  "docs:diagrams": "node scripts/generate-reference-diagrams.mjs",
@@ -49,14 +50,12 @@
49
50
  "LICENSE",
50
51
  "memo.manifest.yaml",
51
52
  "ontology/memo.package.yaml",
52
- "ontology/memo.rendering.yaml",
53
53
  "profile/memo.package.yaml",
54
54
  "methodologies/default/memo.package.yaml",
55
55
  "methodologies/gpca/memo.package.yaml",
56
56
  "src/assurance/",
57
57
  "src/architecture/",
58
58
  "src/artifacts/",
59
- "src/compliance/",
60
59
  "src/core/",
61
60
  "src/methodology/archetypes/",
62
61
  "src/methodology/core/",
@@ -71,6 +70,7 @@
71
70
  "src/viewpoints/",
72
71
  "src/memo_namespaces.sysml",
73
72
  "templates/",
74
- "examples/"
73
+ "examples/",
74
+ "extensions/"
75
75
  ]
76
76
  }
@@ -1,9 +1,18 @@
1
- name: "@memoarchitect/medical-modeling-profile"
2
- version: "0.6.4"
3
- type: profile
4
- extends:
5
- - "@memoarchitect/ontology"
6
- description: "Closure rules and viewpoints for medical device modeling"
7
- license: "MIT"
8
- tags: ["medical-device", "iso-14971", "iec-62304", "iso-13485", "modeling-profile"]
9
- usage: ["rules", "viewpoints"]
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: '@memoarchitect/medical-modeling-profile'
10
+ version: 0.8.22
11
+ description: Closure rules and viewpoints for medical device modeling
12
+ license: MIT
13
+ tags:
14
+ - medical-device
15
+ - iso-14971
16
+ - iec-62304
17
+ - iso-13485
18
+ - modeling-profile
@@ -1,12 +1,40 @@
1
1
  package memo_architecture_decisions {
2
+ private import Metaobjects::SemanticMetadata;
2
3
  private import ScalarValues::*;
3
4
 
4
5
  private import memo_core_common::*;
5
6
  private import memo_core_enumerations::*;
7
+ private import memo_core_relationships::*;
8
+ private import memo_artifacts_core::*;
6
9
  part def DesignDecision specializes MemoPart {
7
10
  attribute decisionKind : String;
8
11
  attribute alternatives : String;
9
12
  attribute selectedOption : String;
10
13
  attribute decisionStatus : DesignDecisionStatusKind;
11
14
  }
15
+
16
+ connection def DecisionRecordedInADR :> MemoRelationship {
17
+ end decision : DesignDecision :>> source;
18
+ end adr : ADRArtifact :>> target;
19
+ }
20
+ abstract connection decisionRecordedInADRLinks : DecisionRecordedInADR[*];
21
+ metadata def <decisionRecordedInADR> DecisionRecordedInADRMetadata :> SemanticMetadata {
22
+ :> annotatedElement : SysML::ConnectionDefinition;
23
+ :> annotatedElement : SysML::ConnectionUsage;
24
+ :>> baseType = decisionRecordedInADRLinks meta SysML::Usage;
25
+ }
26
+
27
+ // ── Relations owned by this package ─────────────────────────────
28
+ // Moved out of memo_core_relationships: their ends are typed against
29
+ // types declared here, and core must not depend on a domain package.
30
+ connection def Decides :> MemoRelationship {
31
+ end decision : DesignDecision :>> source;
32
+ end affectedElement : MemoPart :>> target;
33
+ }
34
+ abstract connection decidesLinks : Decides[*];
35
+ metadata def <decides> DecidesMetadata :> SemanticMetadata {
36
+ :> annotatedElement : SysML::ConnectionDefinition;
37
+ :> annotatedElement : SysML::ConnectionUsage;
38
+ :>> baseType = decidesLinks meta SysML::Usage;
39
+ }
12
40
  }
@@ -3,29 +3,50 @@ package memo_architecture_functional_behavior {
3
3
 
4
4
  private import memo_core_common::*;
5
5
  private import memo_core_enumerations::*;
6
+
7
+ // Typed functional execution step. Project-specific action definitions
8
+ // specialize this rather than bypassing MemoAction; ActivityFlow remains
9
+ // the composite route that sequences such steps.
10
+ abstract action def FunctionalAction specializes MemoAction;
6
11
  // State machines and their mode states are SysML v2 states (behaviours), so
7
12
  // they derive from the MemoState foundation, not the part-based
8
13
  // ArchitectureElement. Transitions stay part-based (below) to keep their
9
14
  // traceable safety attributes.
10
- // State-machine vocabulary. ModeState denotes a state owned by this model.
15
+ // State machines retain their own execution semantics; individual modes
16
+ // are MemoState usages selected by stateKind.
11
17
  state def StateMachine :> MemoState {
12
18
  attribute machineKind : String;
13
19
  attribute executionSemantics : String;
14
20
  }
15
- state def ModeState :> MemoState {
16
- attribute modeKind : String;
17
- attribute entryCondition : String;
18
- attribute exitCondition : String;
21
+ // A configuration is the concrete selection made at a `variation` choice
22
+ // point. It remains separate from a mode state: it says which mode and
23
+ // elements are active in one selectable arrangement.
24
+ // The reference is typed to the shared native state family so a consumer
25
+ // can navigate from the selected configuration to its governing mode.
26
+ part def ModeConfiguration specializes ArchitectureElement {
27
+ ref activeMode : MemoState[1];
28
+ ref activeElement : MemoPart[0..*];
19
29
  }
20
- part def Transition specializes ArchitectureElement {
30
+ // Transitions are native SysML v2 `transition` usages inside the owning
31
+ // state — there is no `part def Transition`, and its `transition` keyword
32
+ // collision is why. A transition usage's definition is always implicit, so
33
+ // it has no MEMO supertype to carry the identification core; this record
34
+ // carries it instead, applied with `@TransitionRecord`.
35
+ //
36
+ // `trigger`, `guardSummary`, and `effectSummary` are prose summaries, not
37
+ // executable semantics: a guard reading "none in source (MEMO extension
38
+ // REQ-X-02 additionally gates therapy on POST)" is a citation. Formal
39
+ // triggers and guards belong in native `accept` and `if`; these stay
40
+ // records so the two are not confused.
41
+ metadata def TransitionRecord {
42
+ attribute id : String;
43
+ attribute name : String;
21
44
  attribute trigger : String;
22
45
  attribute guardSummary : String;
23
46
  attribute effectSummary : String;
24
- attribute priority : Integer;
25
- attribute sameStepCritical : Boolean;
26
- attribute sourceState : String;
27
- attribute targetState : String;
47
+ attribute sourceReference : String;
28
48
  }
49
+
29
50
  // A verifiable behavioural constraint, such as an invariant, transition
30
51
  // rule, temporal claim, assumption, or guarantee.
31
52
  part def BehaviorProperty specializes VerifiableElement {
@@ -34,7 +55,21 @@ package memo_architecture_functional_behavior {
34
55
  attribute formalExpression : String;
35
56
  }
36
57
  part def Contract specializes VerifiableElement { attribute contractScope : String; }
37
- part def PropertySet specializes VerifiableElement { attribute propertySetScope : String; }
58
+ // `part def PropertySet specializes VerifiableElement { attribute
59
+ // propertySetScope : String; }` stood here and is DELETED (plan C3,
60
+ // open question §14.6). It was AADL's property-set idea imported as a
61
+ // name: one String field, no typed content, no binding to whatever it
62
+ // annotated, and zero usages anywhere in the tree.
63
+ //
64
+ // Per-technology properties belong on the extension type that owns them,
65
+ // typed. ROS QoS was the first real customer and settled it:
66
+ // `attribute def RosQosProfile` has reliability, durability, deadline,
67
+ // liveliness and history depth as typed fields, so a publisher's offer and
68
+ // a subscriber's request can be compared. A `propertySetScope` String
69
+ // could not have expressed one of them. Where an extension needs to
70
+ // annotate a BASE element rather than declare its own type, the SysML-
71
+ // native answer is `metadata def` + `Metaobjects::SemanticMetadata`, which
72
+ // is what every MEMO relation already carries since A4.
38
73
  part def ActivityAction specializes ArchitectureElement {
39
74
  attribute actionKind : ActionKind;
40
75
  attribute inputSummary : String;
@@ -42,25 +77,18 @@ package memo_architecture_functional_behavior {
42
77
  attribute wcetMs : String;
43
78
  attribute safetyRelevant : Boolean;
44
79
  }
45
- part def ActivityFlow specializes ArchitectureElement {
80
+ action def ActivityFlow specializes MemoAction {
46
81
  attribute flowKind : ActivityFlowKind;
47
82
  attribute guardCondition : String;
48
83
  attribute weight : String;
49
84
  }
50
- // UIScenario now lives in memo_architecture_implementation_ui (:> MemoScenario).
51
- part def InteractionMessage specializes MemoPart {
52
- attribute messageKind : MessageKind;
53
- attribute sequenceOrder : Integer;
54
- attribute senderComponent : String;
55
- attribute receiverComponent : String;
56
- attribute exchangeItem : String;
57
- attribute timingConstraintMs : String;
58
- }
85
+ // UI scenarios are MemoScenario usages with scenarioKind `ui`.
86
+
59
87
  part def TimingConstraint specializes VerifiableElement {
60
88
  attribute constraintKind : TimingConstraintKind;
61
89
  attribute minMs : String;
62
90
  attribute maxMs : String;
63
- attribute referenceElement : String;
91
+ ref referenceElement : MemoPart[1];
64
92
  attribute verificationMethod : VerificationMethodKind;
65
93
  }
66
94
  }