@memoarchitect/ontology 0.4.6 → 0.6.1

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 (278) hide show
  1. package/README.md +7 -6
  2. package/examples/connected-patient-monitor/README.md +7 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
  4. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
  5. package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
  6. package/examples/embedded-infusion-pump/README.md +7 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
  8. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
  9. package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
  10. package/examples/extensions/README.md +16 -0
  11. package/examples/extensions/clinical/memo.package.yaml +9 -0
  12. package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
  13. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
  14. package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
  15. package/examples/extensions/template/memo.package.yaml +9 -0
  16. package/examples/extensions/template/src/extension.sysml +15 -0
  17. package/examples/functional-logical-physical/README.md +7 -0
  18. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
  19. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
  20. package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
  21. package/examples/gpca-pump/README.md +26 -0
  22. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
  23. package/examples/gpca-pump/memo.config.yaml +2 -2
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
  25. package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
  30. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
  31. package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
  32. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  33. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
  34. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
  35. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +145 -27
  36. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
  38. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
  42. package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
  43. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
  44. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
  45. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
  46. package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
  47. package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
  48. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
  49. package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
  50. package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
  51. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
  52. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
  53. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
  54. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
  55. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
  56. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
  57. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
  58. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
  59. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
  60. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
  61. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
  62. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
  63. package/examples/ivd-laboratory-system/README.md +7 -0
  64. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
  65. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
  66. package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
  67. package/examples/manual-surgical-instrument/README.md +7 -0
  68. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
  69. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
  70. package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
  71. package/examples/multidimensional-layers/README.md +7 -0
  72. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
  73. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
  74. package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
  75. package/examples/reusable-instrument/README.md +7 -0
  76. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
  77. package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
  78. package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
  79. package/examples/software-only-medical-device/README.md +7 -0
  80. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
  81. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
  82. package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
  83. package/examples/surgical-closure-workflow/README.md +8 -0
  84. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
  85. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
  86. package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
  87. package/examples/surgical-robot/README.md +7 -0
  88. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
  89. package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
  90. package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
  91. package/examples/sysml-diagram-samples/README.md +32 -0
  92. package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
  93. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
  94. package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
  95. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
  96. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
  97. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
  98. package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
  99. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
  100. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
  101. package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
  102. package/examples/temperature-alarm/README.md +7 -0
  103. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
  104. package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
  105. package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
  106. package/memo.manifest.yaml +12 -4
  107. package/methodologies/default/memo.package.yaml +1 -1
  108. package/methodologies/gpca/memo.package.yaml +4 -4
  109. package/ontology/memo.package.yaml +1 -1
  110. package/ontology/memo.rendering.yaml +37 -0
  111. package/package.json +19 -11
  112. package/profile/memo.package.yaml +3 -3
  113. package/src/architecture/decisions/memo_decisions.sysml +1 -1
  114. package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
  115. package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
  116. package/src/architecture/functional/functions/memo_functions.sysml +81 -0
  117. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
  118. package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
  119. package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
  120. package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
  121. package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
  122. package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
  123. package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
  124. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
  125. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
  126. package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
  127. package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
  128. package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
  129. package/src/architecture/operational/activities/memo_activities.sysml +86 -0
  130. package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
  131. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
  132. package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
  133. package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
  134. package/src/architecture/operational/structure/memo_operational.sysml +31 -0
  135. package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
  136. package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
  137. package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
  138. package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
  139. package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
  140. package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
  141. package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
  142. package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
  143. package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
  144. package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
  145. package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
  146. package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
  147. package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
  148. package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
  149. package/src/compliance/change/memo_change.sysml +2 -2
  150. package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
  151. package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
  152. package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
  153. package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
  154. package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
  155. package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
  156. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
  157. package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
  158. package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
  159. package/src/compliance/iso14971/risk_management_file.sysml +1 -1
  160. package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
  161. package/src/core/common/memo_common.sysml +123 -14
  162. package/src/core/consistency_rules/consistency_rules.sysml +2 -2
  163. package/src/core/dimensions/dimensions.sysml +45 -24
  164. package/src/core/enumerations/memo_enumerations.sysml +11 -16
  165. package/src/core/methodology_scope/methodology_scope.sysml +10 -28
  166. package/src/core/relationships/memo_relationships.sysml +178 -146
  167. package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
  168. package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
  169. package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
  170. package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
  171. package/src/core/terminology/terminology.sysml +35 -0
  172. package/src/memo_namespaces.sysml +247 -302
  173. package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
  174. package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
  175. package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
  176. package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
  177. package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
  178. package/src/rules/closure/closure_rules.sysml +11 -11
  179. package/src/rules/coverage/coverage_rules.sysml +8 -8
  180. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  181. package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
  182. package/src/rules/ontology/ontology_invariants.sysml +133 -0
  183. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -2
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
  189. package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
  190. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  191. package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
  192. package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
  193. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
  194. package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
  195. package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
  196. package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
  197. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  198. package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
  199. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  200. package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
  201. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  202. package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
  203. package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
  204. package/templates/connected-device/memo.package.yaml +5 -0
  205. package/templates/connected-device/src/architecture/system.sysml +5 -0
  206. package/templates/connected-device/src/artifacts/artifacts.sysml +5 -0
  207. package/templates/connected-device/src/assurance/requirements.sysml +7 -0
  208. package/templates/default/memo.package.yaml +5 -0
  209. package/templates/default/src/architecture/system.sysml +7 -0
  210. package/templates/default/src/artifacts/artifacts.sysml +5 -0
  211. package/templates/default/src/assurance/requirements.sysml +8 -0
  212. package/templates/infusion-pump/memo.package.yaml +5 -0
  213. package/templates/infusion-pump/src/architecture/system.sysml +5 -0
  214. package/templates/infusion-pump/src/artifacts/artifacts.sysml +5 -0
  215. package/templates/infusion-pump/src/assurance/requirements.sysml +7 -0
  216. package/templates/monitoring-device/memo.package.yaml +5 -0
  217. package/templates/monitoring-device/src/architecture/system.sysml +5 -0
  218. package/templates/monitoring-device/src/artifacts/artifacts.sysml +5 -0
  219. package/templates/monitoring-device/src/assurance/requirements.sysml +7 -0
  220. package/templates/samd/memo.package.yaml +5 -0
  221. package/templates/samd/src/architecture/system.sysml +5 -0
  222. package/templates/samd/src/artifacts/artifacts.sysml +5 -0
  223. package/templates/samd/src/assurance/requirements.sysml +7 -0
  224. package/examples/gpca-pump/model/samples/README.md +0 -24
  225. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
  226. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
  227. package/profile/archetypes.yaml +0 -36
  228. package/profile/templates/connected-device/starter.sysml +0 -8
  229. package/profile/templates/infusion-pump/starter.sysml +0 -8
  230. package/profile/templates/monitoring-device/starter.sysml +0 -8
  231. package/profile/templates/samd/starter.sysml +0 -8
  232. package/src/architecture/assurance/memo_assurance.sysml +0 -29
  233. package/src/architecture/context/memo_context.sysml +0 -58
  234. package/src/architecture/functions/memo_functions.sysml +0 -30
  235. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
  236. package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
  237. package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
  238. package/src/architecture/operational/memo_operational.sysml +0 -51
  239. package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
  240. package/src/architecture/system/memo_system_analysis.sysml +0 -54
  241. package/src/artifacts/clinical_safety_report.sysml +0 -12
  242. package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
  243. package/src/artifacts/design_change_log.sysml +0 -12
  244. package/src/artifacts/design_history_file_index.sysml +0 -12
  245. package/src/artifacts/design_input_plan.sysml +0 -12
  246. package/src/artifacts/design_output_plan.sysml +0 -12
  247. package/src/artifacts/evidence_record.sysml +0 -12
  248. package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
  249. package/src/artifacts/hazard_analysis_report.sysml +0 -12
  250. package/src/artifacts/labeling_specification.sysml +0 -12
  251. package/src/artifacts/requirements_specification.sysml +0 -12
  252. package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
  253. package/src/artifacts/risk_management_plan.sysml +0 -12
  254. package/src/artifacts/software_design_description.sysml +0 -12
  255. package/src/artifacts/software_development_plan.sysml +0 -12
  256. package/src/artifacts/soup_list.sysml +0 -12
  257. package/src/artifacts/system_architecture_description.sysml +0 -12
  258. package/src/artifacts/test_protocol.sysml +0 -12
  259. package/src/artifacts/test_report.sysml +0 -12
  260. package/src/artifacts/threat_model_report.sysml +0 -12
  261. package/src/artifacts/usability_engineering_report.sysml +0 -12
  262. package/src/medical_device_library.sysml +0 -100
  263. package/template/memo.package.yaml +0 -5
  264. package/template/src/catalog/starter.sysml +0 -12
  265. package/template/src/documents/.gitkeep +0 -1
  266. package/template/src/views/.gitkeep +0 -1
  267. /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
  268. /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
  269. /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
  270. /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
  271. /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
  272. /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
  273. /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
  274. /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
  275. /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
  276. /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
  277. /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
  278. /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
@@ -0,0 +1,189 @@
1
+ // Ontology-level viewpoint catalog (§22). Rendering-independent: each
2
+ // viewpoint states the concern it frames and the SysML v2 standard view kind
3
+ // it resolves to (general | interconnection | actionflow | statetransition |
4
+ // sequence | grid | browser | geometry). No renderer semantics here.
5
+ package memo_viewpoints_catalog {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_common::*;
9
+ private import memo_core_enumerations::*;
10
+ private import memo_viewpoints_definitions::*;
11
+
12
+ // A cataloged viewpoint: the Viewpoint descriptor plus its default
13
+ // resolution to a standard SysML v2 view kind.
14
+
15
+ // ── Content and context ─────────────────────────────────────
16
+ part vpModelContent : Viewpoint {
17
+ attribute :>> id = "VP-CAT-001"; attribute :>> name = "ModelContentViewpoint";
18
+ attribute :>> purpose = "Browse the model tree and package structure.";
19
+ attribute :>> defaultViewKind = DiagramViewKind::browser;
20
+ }
21
+ part vpSystemContext : Viewpoint {
22
+ attribute :>> id = "VP-CAT-002"; attribute :>> name = "SystemContextViewpoint";
23
+ attribute :>> purpose = "System of interest, actors, external systems, and context exchanges.";
24
+ attribute :>> defaultViewKind = DiagramViewKind::general;
25
+ }
26
+ // ── Operational world ───────────────────────────────────────
27
+ part vpUseCase : Viewpoint {
28
+ attribute :>> id = "VP-CAT-003"; attribute :>> name = "UseCaseViewpoint";
29
+ attribute :>> purpose = "Use cases, initiating users, supporting actors, and motivating needs.";
30
+ attribute :>> defaultViewKind = DiagramViewKind::general;
31
+ }
32
+ part vpClinicalWorkflow : Viewpoint {
33
+ attribute :>> id = "VP-CAT-004"; attribute :>> name = "ClinicalWorkflowViewpoint";
34
+ attribute :>> purpose = "Workflow steps, decisions, parallel work, handoffs, and roles.";
35
+ attribute :>> defaultViewKind = DiagramViewKind::actionflow;
36
+ }
37
+ part vpOperativeScenario : Viewpoint {
38
+ attribute :>> id = "VP-CAT-005"; attribute :>> name = "OperativeScenarioViewpoint";
39
+ attribute :>> purpose = "Selected paths through workflows: variants, conditions, variation points.";
40
+ attribute :>> defaultViewKind = DiagramViewKind::actionflow;
41
+ }
42
+ // ── Functional ──────────────────────────────────────────────
43
+ part vpFunctionalArchitecture : Viewpoint {
44
+ attribute :>> id = "VP-CAT-006"; attribute :>> name = "FunctionalArchitectureViewpoint";
45
+ attribute :>> purpose = "System functions, capabilities, and functional exchanges.";
46
+ attribute :>> defaultViewKind = DiagramViewKind::general;
47
+ }
48
+ part vpFunctionalFlow : Viewpoint {
49
+ attribute :>> id = "VP-CAT-007"; attribute :>> name = "FunctionalFlowViewpoint";
50
+ attribute :>> purpose = "Ordered functional flows and their steps.";
51
+ attribute :>> defaultViewKind = DiagramViewKind::actionflow;
52
+ }
53
+ // ── Logical ─────────────────────────────────────────────────
54
+ part vpLogicalArchitecture : Viewpoint {
55
+ attribute :>> id = "VP-CAT-008"; attribute :>> name = "LogicalArchitectureViewpoint";
56
+ attribute :>> purpose = "Logical components, channels, and allocations.";
57
+ attribute :>> defaultViewKind = DiagramViewKind::general;
58
+ }
59
+ part vpSystemDecomposition : Viewpoint {
60
+ attribute :>> id = "VP-CAT-009"; attribute :>> name = "SystemDecompositionViewpoint";
61
+ attribute :>> purpose = "Composition hierarchy of the system of interest.";
62
+ attribute :>> defaultViewKind = DiagramViewKind::browser;
63
+ }
64
+ part vpInternalInterconnection : Viewpoint {
65
+ attribute :>> id = "VP-CAT-010"; attribute :>> name = "InternalInterconnectionViewpoint";
66
+ attribute :>> purpose = "Ports, connectors, and exchanges inside a component boundary.";
67
+ attribute :>> defaultViewKind = DiagramViewKind::interconnection;
68
+ }
69
+ // ── Implementation ──────────────────────────────────────────
70
+ part vpSoftwareModule : Viewpoint {
71
+ attribute :>> id = "VP-CAT-011"; attribute :>> name = "SoftwareModuleViewpoint";
72
+ attribute :>> purpose = "IEC 62304 module structure: systems, items, units, SOUP.";
73
+ attribute :>> defaultViewKind = DiagramViewKind::general;
74
+ }
75
+ part vpSoftwareComponents : Viewpoint {
76
+ attribute :>> id = "VP-CAT-012"; attribute :>> name = "SoftwareComponentViewpoint";
77
+ attribute :>> purpose = "Runtime component-and-connector structure with concurrency and scheduling.";
78
+ attribute :>> defaultViewKind = DiagramViewKind::interconnection;
79
+ }
80
+ part vpHardwareArchitecture : Viewpoint {
81
+ attribute :>> id = "VP-CAT-013"; attribute :>> name = "HardwareArchitectureViewpoint";
82
+ attribute :>> purpose = "Electronic/electrical structure and processing platform.";
83
+ attribute :>> defaultViewKind = DiagramViewKind::general;
84
+ }
85
+ part vpPhysicalArchitecture : Viewpoint {
86
+ attribute :>> id = "VP-CAT-014"; attribute :>> name = "PhysicalArchitectureViewpoint";
87
+ attribute :>> purpose = "Mechanical, fluidic, optical, and other physical realization.";
88
+ attribute :>> defaultViewKind = DiagramViewKind::general;
89
+ }
90
+ part vpDeviceComposition : Viewpoint {
91
+ attribute :>> id = "VP-CAT-015"; attribute :>> name = "DeviceCompositionViewpoint";
92
+ attribute :>> purpose = "Device definitions, instances, accessories, and consumables.";
93
+ attribute :>> defaultViewKind = DiagramViewKind::browser;
94
+ }
95
+ part vpNetworkDeployment : Viewpoint {
96
+ attribute :>> id = "VP-CAT-016"; attribute :>> name = "NetworkDeploymentViewpoint";
97
+ attribute :>> purpose = "Deployment units on processing nodes and network topology.";
98
+ attribute :>> defaultViewKind = DiagramViewKind::interconnection;
99
+ }
100
+ // ── Interaction and behavior ────────────────────────────────
101
+ part vpUiFlow : Viewpoint {
102
+ attribute :>> id = "VP-CAT-017"; attribute :>> name = "UiFlowViewpoint";
103
+ attribute :>> purpose = "Interaction flows, UI states, and transitions.";
104
+ attribute :>> defaultViewKind = DiagramViewKind::statetransition;
105
+ }
106
+ part vpStateMode : Viewpoint {
107
+ attribute :>> id = "VP-CAT-018"; attribute :>> name = "StateModeViewpoint";
108
+ attribute :>> purpose = "System states, device modes, and transitions.";
109
+ attribute :>> defaultViewKind = DiagramViewKind::statetransition;
110
+ }
111
+ part vpSequenceInteraction : Viewpoint {
112
+ attribute :>> id = "VP-CAT-019"; attribute :>> name = "SequenceInteractionViewpoint";
113
+ attribute :>> purpose = "Ordered message exchanges between participants in a scenario.";
114
+ attribute :>> defaultViewKind = DiagramViewKind::sequence;
115
+ }
116
+ // ── Assurance ───────────────────────────────────────────────
117
+ part vpRequirementsTraceability : Viewpoint {
118
+ attribute :>> id = "VP-CAT-020"; attribute :>> name = "RequirementsTraceabilityViewpoint";
119
+ attribute :>> purpose = "Needs → requirements → architecture → verification trace matrix.";
120
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
121
+ }
122
+ part vpRiskChain : Viewpoint {
123
+ attribute :>> id = "VP-CAT-021"; attribute :>> name = "RiskChainViewpoint";
124
+ attribute :>> purpose = "ISO 14971 chain: hazard → hazardous situation → harm with controls.";
125
+ attribute :>> defaultViewKind = DiagramViewKind::general;
126
+ }
127
+ part vpCybersecurity : Viewpoint {
128
+ attribute :>> id = "VP-CAT-022"; attribute :>> name = "CybersecurityViewpoint";
129
+ attribute :>> purpose = "Assets, threats, trust boundaries, and security controls.";
130
+ attribute :>> defaultViewKind = DiagramViewKind::general;
131
+ }
132
+ part vpHumanFactors : Viewpoint {
133
+ attribute :>> id = "VP-CAT-023"; attribute :>> name = "HumanFactorsViewpoint";
134
+ attribute :>> purpose = "Users, tasks, use errors, and hazard-related use scenarios.";
135
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
136
+ }
137
+ part vpVerificationCoverage : Viewpoint {
138
+ attribute :>> id = "VP-CAT-024"; attribute :>> name = "VerificationCoverageViewpoint";
139
+ attribute :>> purpose = "Verification cases against requirements and functions.";
140
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
141
+ }
142
+ part vpValidationCoverage : Viewpoint {
143
+ attribute :>> id = "VP-CAT-025"; attribute :>> name = "ValidationCoverageViewpoint";
144
+ attribute :>> purpose = "Validation cases against use cases and critical tasks.";
145
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
146
+ }
147
+ part vpEvidenceTraceability : Viewpoint {
148
+ attribute :>> id = "VP-CAT-026"; attribute :>> name = "EvidenceTraceabilityViewpoint";
149
+ attribute :>> purpose = "Evidence records back to the cases and elements they support.";
150
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
151
+ }
152
+ // A software sequence diagram is a VIEW conforming to this viewpoint
153
+ // (ISO/IEC/IEEE 42010): it frames the runtime message ordering between
154
+ // SoftwareComponents realizing a FunctionalScenario. The viewpoint is the
155
+ // reusable spec; the diagram of a specific model is the view.
156
+ part vpSoftwareSequence : Viewpoint {
157
+ attribute :>> id = "VP-CAT-027"; attribute :>> name = "SoftwareSequenceViewpoint";
158
+ attribute :>> purpose = "Runtime message ordering between software components along a functional scenario.";
159
+ attribute :>> defaultViewKind = DiagramViewKind::sequence;
160
+ }
161
+
162
+ // ── Compatibility mappings (§22): legacy diagram intents resolve to
163
+ // standard view kinds; C4 and AADL stay in examples/ mappings. ──
164
+ part def DiagramIntentMapping specializes MemoPart {
165
+ attribute legacyIntent : String;
166
+ attribute resolvesTo : DiagramViewKind;
167
+ }
168
+ part mapBdd : DiagramIntentMapping {
169
+ attribute :>> legacyIntent = "BDD"; attribute :>> resolvesTo = DiagramViewKind::general;
170
+ }
171
+ part mapIbd : DiagramIntentMapping {
172
+ attribute :>> legacyIntent = "IBD"; attribute :>> resolvesTo = DiagramViewKind::interconnection;
173
+ }
174
+ part mapActivity : DiagramIntentMapping {
175
+ attribute :>> legacyIntent = "activity/operational/functional flow"; attribute :>> resolvesTo = DiagramViewKind::actionflow;
176
+ }
177
+ part mapStateMachine : DiagramIntentMapping {
178
+ attribute :>> legacyIntent = "state machine"; attribute :>> resolvesTo = DiagramViewKind::statetransition;
179
+ }
180
+ part mapSequence : DiagramIntentMapping {
181
+ attribute :>> legacyIntent = "sequence"; attribute :>> resolvesTo = DiagramViewKind::sequence;
182
+ }
183
+ part mapAllocationMatrix : DiagramIntentMapping {
184
+ attribute :>> legacyIntent = "allocation/traceability/FMEA"; attribute :>> resolvesTo = DiagramViewKind::grid;
185
+ }
186
+ part mapHierarchy : DiagramIntentMapping {
187
+ attribute :>> legacyIntent = "hierarchy/content"; attribute :>> resolvesTo = DiagramViewKind::browser;
188
+ }
189
+ }
@@ -19,7 +19,6 @@ package memo_viewpoints_clinical_clinical_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::clinical);
20
20
  attribute :>> includedLayers = ("context", "assurance");
21
21
  attribute :>> allowedElementKinds = ("Actor", "UseContext", "Evidence");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -18,8 +18,7 @@ package memo_viewpoints_context_context_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::interoperability);
20
20
  attribute :>> includedLayers = ("context");
21
- attribute :>> allowedElementKinds = ("Actor", "UseContext", "IntendedUse", "OperationalEntity", "TrustBoundary", "LogicalComponent");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
21
+ attribute :>> allowedElementKinds = ("Actor", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity", "TrustBoundary", "LogicalComponent");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -19,8 +19,7 @@ package memo_viewpoints_cybersecurity_cybersecurity_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::cybersecurity, ConcernKind::privacy, ConcernKind::safety);
20
20
  attribute :>> includedLayers = ("cybersecurity", "software_structure", "hardware_structure", "interfaces", "risk", "assurance");
21
21
  attribute :>> allowedElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "ThreatScenario");
22
- attribute :>> allowedRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "MitigatesVulnerability", "DerivesCyberRequirement", "ImpactsSafety", "CrossesTrustBoundary");
23
- attribute :>> methodologyReference = ("stride-default", "fda-cybersecurity-default");
22
+ attribute :>> allowedRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "Mitigates", "DerivesCyberRequirement", "ImpactsSafety", "CrossesTrustBoundary");
24
23
  attribute :>> documentUsage = ("Secure Product Development", "Threat Model", "Cybersecurity Risk Assessment", "QMSR");
25
24
  attribute :>> userExtensible = true;
26
25
  }
@@ -17,19 +17,20 @@ package memo_viewpoints_definitions {
17
17
  attribute allowedElementKinds : String[*];
18
18
  attribute allowedRelationshipKinds : String[*];
19
19
  attribute filterExpression : String;
20
- attribute methodologyReference : String[*];
21
20
  attribute extendsViewpointIds : String[*];
22
21
  attribute userExtensible : Boolean;
22
+ // default diagram kind for a catalog viewpoint (optional)
23
+ attribute defaultViewKind : DiagramViewKind[0..1];
23
24
  }
24
25
 
25
- part def ViewRule specializes TraceableElement {
26
+ part def ViewRule specializes MemoPart {
26
27
  attribute elementTypeName : String;
27
28
  attribute relationTypeName : String;
28
29
  attribute strength : RuleStrengthKind;
29
30
  attribute rationaleText : String;
30
31
  }
31
32
 
32
- part def ViewSelectionQuery specializes TraceableElement {
33
+ part def ViewSelectionQuery specializes MemoPart {
33
34
  attribute includeElementKinds : String[*];
34
35
  attribute includeRelationshipKinds : String[*];
35
36
  attribute includeLayers : String[*];
@@ -47,9 +48,9 @@ package memo_viewpoints_definitions {
47
48
  attribute dataSourceDescription : String;
48
49
  attribute autoPopulate : Boolean;
49
50
  part viewpointDefinition : Viewpoint;
50
- ref subjectElement : TraceableElement[*];
51
- ref exposesElement : TraceableElement[*];
52
- ref exposesRelationship : SemanticLink[*];
51
+ ref subjectElement : MemoPart[*];
52
+ ref exposesElement : MemoPart[*];
53
+ ref exposesRelationship : MemoRelationship[*];
53
54
  part selectionQuery : ViewSelectionQuery[*];
54
55
  }
55
56
 
@@ -62,7 +63,6 @@ package memo_viewpoints_definitions {
62
63
 
63
64
  view def MemoDocumentBackedView :> MemoView {
64
65
  attribute version : String;
65
- attribute lifecycleState : LifecycleStateKind;
66
66
  attribute generationRule : String;
67
67
  attribute marketScope : String;
68
68
  }
@@ -71,7 +71,7 @@ package memo_viewpoints_definitions {
71
71
  attribute viewKind : DocumentViewKind;
72
72
  }
73
73
 
74
- part def ViewInclusionRule specializes TraceableElement {
74
+ part def ViewInclusionRule specializes MemoPart {
75
75
  attribute includeElementKinds : String[*];
76
76
  attribute includeRelationshipKinds : String[*];
77
77
  attribute includeLayers : String[*];
@@ -20,7 +20,7 @@ package memo_viewpoints_functional_function_allocation_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-FUNC-002";
22
22
  attribute :>> name = "FunctionAllocationQuery";
23
- attribute :>> includeElementKinds = ("LogicalFunction", "LogicalComponent");
23
+ attribute :>> includeElementKinds = ("SystemFunction", "LogicalComponent");
24
24
  attribute :>> includeLayers = ("functions", "logical_structure");
25
25
  attribute :>> rationaleText = "Auto-populate function-to-component allocation from the functions and logical structure layers.";
26
26
  }
@@ -17,9 +17,8 @@ package memo_viewpoints_functional_functional_viewpoint {
17
17
  attribute :>> outputKind = (ViewOutputKind::diagram);
18
18
  attribute :>> presentationKind = (PresentationKind::activityDiagram);
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::performance);
20
- attribute :>> includedLayers = ("functions", "behavior");
21
- attribute :>> allowedElementKinds = ("LogicalFunction", "LogicalFlow", "ModeState");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
20
+ attribute :>> includedLayers = ("functions");
21
+ attribute :>> allowedElementKinds = ("SystemFunction", "FunctionalFlow", "FunctionalFlowStep", "FunctionalScenario", "FunctionalExchange");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -20,7 +20,7 @@ package memo_viewpoints_functional_system_functional_tree_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-FUNC-001";
22
22
  attribute :>> name = "SystemFunctionalTreeQuery";
23
- attribute :>> includeElementKinds = ("LogicalFunction");
23
+ attribute :>> includeElementKinds = ("SystemFunction");
24
24
  attribute :>> includeLayers = ("functions");
25
25
  attribute :>> rationaleText = "Auto-populate the functional tree from the functions layer.";
26
26
  }
@@ -19,7 +19,6 @@ package memo_viewpoints_logical_logical_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::performance);
20
20
  attribute :>> includedLayers = ("logical_structure", "interfaces");
21
21
  attribute :>> allowedElementKinds = ("LogicalComponent", "Interface");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -18,8 +18,7 @@ package memo_viewpoints_operational_operational_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::custom);
19
19
  attribute :>> concernKinds = (ConcernKind::performance, ConcernKind::interoperability);
20
20
  attribute :>> includedLayers = ("context", "operational", "system");
21
- attribute :>> allowedElementKinds = ("Actor", "UseContext", "OperationalActivity", "OperationalScenario", "SystemCapability", "FunctionalChain");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
21
+ attribute :>> allowedElementKinds = ("Actor", "UseContext", "OperationalActivity", "OperativeScenario");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -20,7 +20,7 @@ package memo_viewpoints_operational_use_case_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-OPS-001";
22
22
  attribute :>> name = "UseCaseQuery";
23
- attribute :>> includeElementKinds = ("Actor", "UseContext", "OperationalScenario");
23
+ attribute :>> includeElementKinds = ("Actor", "UseContext", "OperativeScenario");
24
24
  attribute :>> includeLayers = ("context", "operational");
25
25
  attribute :>> rationaleText = "Auto-populate the use case view from the context and operational layers.";
26
26
  }
@@ -19,7 +19,6 @@ package memo_viewpoints_physical_physical_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::reliability, ConcernKind::interoperability);
20
20
  attribute :>> includedLayers = ("hardware_structure", "physical");
21
21
  attribute :>> allowedElementKinds = ("ProcessingNode", "HardwareAssembly", "PhysicalPort");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -20,7 +20,7 @@ package memo_viewpoints_requirements_requirements_traceability_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-REQ-001";
22
22
  attribute :>> name = "RequirementsTraceabilityQuery";
23
- attribute :>> includeElementKinds = ("StakeholderNeed", "Requirement", "SystemRequirement", "SoftwareRequirement", "HardwareRequirement");
23
+ attribute :>> includeElementKinds = ("Need", "Requirement");
24
24
  attribute :>> includeLayers = ("requirements");
25
25
  attribute :>> rationaleText = "Auto-populate requirements traceability from the requirements layer.";
26
26
  }
@@ -18,8 +18,7 @@ package memo_viewpoints_requirements_requirements_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::traceMatrix);
19
19
  attribute :>> concernKinds = (ConcernKind::regulatory, ConcernKind::safety);
20
20
  attribute :>> includedLayers = ("requirements");
21
- attribute :>> allowedElementKinds = ("StakeholderNeed", "Requirement", "SystemRequirement", "SoftwareRequirement", "HardwareRequirement");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
21
+ attribute :>> allowedElementKinds = ("Need", "Requirement");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -16,11 +16,11 @@ package memo_viewpoints_risk_risk_chain_view {
16
16
  attribute :>> presentationKind = (PresentationKind::riskTable);
17
17
  attribute :>> diagramType = "risk";
18
18
  attribute :>> autoPopulate = true;
19
- attribute :>> queryDescription = "Include hazards, hazardous situations, harms, controls, and verification evidence.";
19
+ attribute :>> queryDescription = "Include the explicit ISO 14971 chain, risk controls, residual risks, benefits, and verification evidence.";
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-RISK-001";
22
22
  attribute :>> name = "RiskChainQuery";
23
- attribute :>> includeElementKinds = ("Hazard", "HazardousSituation", "Harm", "RiskControl", "VerificationCase");
23
+ attribute :>> includeElementKinds = ("SafetyRelatedCharacteristic", "HazardCause", "Hazard", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation", "VerificationCase");
24
24
  attribute :>> includeLayers = ("risk", "assurance");
25
25
  attribute :>> includeConcerns = (ConcernKind::safety);
26
26
  attribute :>> rationaleText = "Auto-populate the risk chain view from the risk and assurance layers.";
@@ -18,8 +18,7 @@ package memo_viewpoints_risk_risk_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::riskTable);
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::regulatory);
20
20
  attribute :>> includedLayers = ("risk", "assurance");
21
- attribute :>> allowedElementKinds = ("Hazard", "HazardousSituation", "Harm", "Risk", "RiskControl", "VerificationCase");
22
- attribute :>> methodologyReference = ("iso14971-default");
21
+ attribute :>> allowedElementKinds = ("SafetyRelatedCharacteristic", "HazardCause", "Hazard", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation", "VerificationCase");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -20,7 +20,7 @@ package memo_viewpoints_software_software_architecture_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-SW-001";
22
22
  attribute :>> name = "SoftwareArchitectureQuery";
23
- attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareComponent", "SOUPComponent");
23
+ attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "SoftwareModule[moduleKind=soup]");
24
24
  attribute :>> includeLayers = ("software_structure");
25
25
  attribute :>> rationaleText = "Auto-populate the software architecture view from the software structure layer.";
26
26
  }
@@ -18,8 +18,7 @@ package memo_viewpoints_software_software_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::reliability);
20
20
  attribute :>> includedLayers = ("software_structure", "interfaces");
21
- attribute :>> allowedElementKinds = ("SoftwareSystem", "SoftwareComponent", "SOUPComponent", "SoftwareInterface");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
21
+ attribute :>> allowedElementKinds = ("SoftwareSystem", "SoftwareModule", "SoftwareModule[moduleKind=soup]", "Interface");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -19,7 +19,6 @@ package memo_viewpoints_usability_usability_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::usability, ConcernKind::safety);
20
20
  attribute :>> includedLayers = ("context", "requirements");
21
21
  attribute :>> allowedElementKinds = ("Actor", "UseContext", "UseError", "Requirement");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -19,7 +19,6 @@ package memo_viewpoints_verification_verification_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::regulatory);
20
20
  attribute :>> includedLayers = ("requirements", "assurance");
21
21
  attribute :>> allowedElementKinds = ("Requirement", "VerificationCase", "ValidationCase", "Evidence", "TestArtifact");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -0,0 +1,5 @@
1
+ name: "{{name}}"
2
+ version: "0.1.0"
3
+ type: device
4
+ extends: "@memoarchitect/methodology-default"
5
+ description: "MEMO connected device model"
@@ -0,0 +1,5 @@
1
+ package connected_device_architecture {
2
+ private import memo::*;
3
+
4
+ part connectedDevice : PhysicalAssembly;
5
+ }
@@ -0,0 +1,5 @@
1
+ package connected_device_artifacts {
2
+ private import memo::*;
3
+
4
+ // Add project artifact usages here.
5
+ }
@@ -0,0 +1,7 @@
1
+ package connected_device_assurance {
2
+ private import memo::*;
3
+
4
+ requirement connectivityRequirement : Requirement {
5
+ attribute redefines statement = "Define connectivity and cybersecurity boundaries";
6
+ }
7
+ }
@@ -0,0 +1,5 @@
1
+ name: "{{name}}"
2
+ version: "0.1.0"
3
+ type: device
4
+ extends: "@memoarchitect/methodology-default"
5
+ description: "MEMO architecture and assurance model"
@@ -0,0 +1,7 @@
1
+ package project_architecture {
2
+ private import memo::*;
3
+
4
+ part system : MemoPart {
5
+ attribute redefines name = "{{name}}";
6
+ }
7
+ }
@@ -0,0 +1,5 @@
1
+ package project_artifacts {
2
+ private import memo::*;
3
+
4
+ // Add project artifact usages here.
5
+ }
@@ -0,0 +1,8 @@
1
+ package project_assurance {
2
+ private import memo::*;
3
+
4
+ requirement mainRequirement : Requirement {
5
+ attribute redefines statement = "TODO: state the first system requirement.";
6
+ doc /* TODO: define the first system requirement. */
7
+ }
8
+ }
@@ -0,0 +1,5 @@
1
+ name: "{{name}}"
2
+ version: "0.1.0"
3
+ type: device
4
+ extends: "@memoarchitect/methodology-default"
5
+ description: "MEMO infusion pump model"
@@ -0,0 +1,5 @@
1
+ package infusion_pump_architecture {
2
+ private import memo::*;
3
+
4
+ part infusionPump : PhysicalAssembly;
5
+ }
@@ -0,0 +1,5 @@
1
+ package infusion_pump_artifacts {
2
+ private import memo::*;
3
+
4
+ // Add project artifact usages here.
5
+ }
@@ -0,0 +1,7 @@
1
+ package infusion_pump_assurance {
2
+ private import memo::*;
3
+
4
+ requirement deliveryRequirement : Requirement {
5
+ attribute redefines statement = "Define safe therapy delivery behavior";
6
+ }
7
+ }
@@ -0,0 +1,5 @@
1
+ name: "{{name}}"
2
+ version: "0.1.0"
3
+ type: device
4
+ extends: "@memoarchitect/methodology-default"
5
+ description: "MEMO monitoring device model"
@@ -0,0 +1,5 @@
1
+ package monitoring_device_architecture {
2
+ private import memo::*;
3
+
4
+ part monitoringDevice : PhysicalAssembly;
5
+ }
@@ -0,0 +1,5 @@
1
+ package monitoring_device_artifacts {
2
+ private import memo::*;
3
+
4
+ // Add project artifact usages here.
5
+ }
@@ -0,0 +1,7 @@
1
+ package monitoring_device_assurance {
2
+ private import memo::*;
3
+
4
+ requirement monitoringRequirement : Requirement {
5
+ attribute redefines statement = "Define the monitored physiological parameter";
6
+ }
7
+ }
@@ -0,0 +1,5 @@
1
+ name: "{{name}}"
2
+ version: "0.1.0"
3
+ type: device
4
+ extends: "@memoarchitect/methodology-default"
5
+ description: "MEMO software as a medical device model"
@@ -0,0 +1,5 @@
1
+ package samd_architecture {
2
+ private import memo::*;
3
+
4
+ part samdDevice : SoftwareSystem;
5
+ }
@@ -0,0 +1,5 @@
1
+ package samd_artifacts {
2
+ private import memo::*;
3
+
4
+ // Add project artifact usages here.
5
+ }
@@ -0,0 +1,7 @@
1
+ package samd_assurance {
2
+ private import memo::*;
3
+
4
+ requirement clinicalPurpose : Requirement {
5
+ attribute redefines statement = "Define the clinical purpose and intended user";
6
+ }
7
+ }
@@ -1,24 +0,0 @@
1
- # Diagram rendering samples
2
-
3
- This folder backs MEMO Architect's **Samples** experience with small, disposable
4
- SysML v2 inputs. Each file exists only to exercise one renderer; together they
5
- do not describe a product or reference architecture.
6
-
7
- ## Action Flow samples
8
-
9
- | File | Shows |
10
- |------|-------|
11
- | `action_flow_view.sysml` | Minimal renderer smoke test — dummy actions, typed item flows, successions, one composite. |
12
- | `operational_behaviour_view.sysml` | **Operational** behaviour — swimlanes per clinical role (Physician/Nurse/Biomed Tech/Patient), a `fork`/`join` for concurrent prep, and a composite step (`Administer PCA Therapy`) with a drill-in sub-flow. |
13
- | `functional_flow_view.sysml` | **Functional/component** behaviour — swimlanes per realising component, typed data/energy/material flows, a `fork`/`join` for concurrent occlusion monitoring, and a composite `Deliver Medication` valve sub-flow. |
14
-
15
- `fork`/`join` are SysML v2 control nodes: a `fork` splits one control flow into
16
- concurrent flows, a `join` synchronises them back; the branches are declared by
17
- the surrounding `first … then …` successions that reference the node by name.
18
-
19
- The first rendering milestone covers interconnection, tree, and action flow.
20
- Run the supported example application from the repository root:
21
-
22
- ```sh
23
- pnpm example:dev
24
- ```