@memoarchitect/ontology 0.13.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +5 -3
  2. package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
  3. package/examples/connected-patient-monitor/memo.package.yaml +3 -1
  4. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
  5. package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
  8. package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
  9. package/examples/functional-logical-physical/memo.identity.yaml +28 -0
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -1
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  12. package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
  13. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
  14. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
  15. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
  16. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
  17. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
  18. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
  19. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
  20. package/examples/gpca-pump/analysis/Samples/README.md +15 -9
  21. package/examples/gpca-pump/analysis/memo_model.py +243 -0
  22. package/examples/gpca-pump/memo.identity.yaml +521 -26
  23. package/examples/gpca-pump/memo.package.yaml +3 -1
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
  38. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
  47. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
  50. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
  54. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
  55. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
  56. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
  57. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
  58. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
  59. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
  60. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
  61. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  62. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
  64. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  65. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
  66. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
  67. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  68. package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
  69. package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
  70. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
  71. package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
  72. package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
  73. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
  74. package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
  75. package/examples/multidimensional-layers/memo.package.yaml +3 -1
  76. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
  77. package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
  78. package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
  79. package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
  80. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
  81. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
  83. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
  86. package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
  87. package/examples/reusable-instrument/memo.package.yaml +3 -1
  88. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
  89. package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
  90. package/examples/robot-cell-family/README.md +34 -0
  91. package/examples/robot-cell-family/memo.identity.yaml +142 -0
  92. package/examples/robot-cell-family/memo.package.yaml +7 -0
  93. package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
  94. package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
  95. package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
  96. package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
  97. package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
  98. package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
  99. package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
  100. package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
  101. package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
  102. package/examples/robot-platform/memo.package.yaml +3 -0
  103. package/examples/robot-platform/model/platform.sysml +15 -0
  104. package/examples/ros-mobile-robot/README.md +5 -4
  105. package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
  106. package/examples/ros-mobile-robot/memo.package.yaml +3 -1
  107. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
  108. package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
  109. package/examples/software-only-medical-device/memo.package.yaml +3 -1
  110. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
  111. package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
  112. package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
  113. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
  114. package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
  115. package/examples/surgical-robot/memo.package.yaml +3 -1
  116. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
  117. package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
  118. package/examples/sysml-diagram-samples/README.md +1 -0
  119. package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
  120. package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
  137. package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
  138. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  139. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  140. package/examples/temperature-alarm/memo.package.yaml +3 -1
  141. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  142. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  143. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  144. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  145. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  146. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  147. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  148. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  152. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  154. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  155. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  159. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  160. package/extensions/README.md +65 -16
  161. package/extensions/aadl/memo.package.yaml +1 -1
  162. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  163. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  164. package/extensions/clinical/memo.package.yaml +1 -1
  165. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  166. package/extensions/cloud/memo.package.yaml +1 -1
  167. package/extensions/container/memo.package.yaml +1 -1
  168. package/extensions/messaging/memo.package.yaml +1 -1
  169. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  170. package/extensions/ros/memo.package.yaml +1 -1
  171. package/extensions/ros/src/ros_extension.sysml +25 -24
  172. package/extensions/template/memo.package.yaml +1 -1
  173. package/extensions/template/model/extension.sysml +25 -0
  174. package/memo.manifest.yaml +1 -7
  175. package/methodologies/default/memo.package.yaml +1 -1
  176. package/methodologies/gpca/memo.package.yaml +1 -1
  177. package/ontology/memo.package.yaml +1 -1
  178. package/package.json +6 -4
  179. package/profile/memo.package.yaml +1 -1
  180. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  181. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  182. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  183. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  184. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  185. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  186. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  187. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  188. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  189. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  190. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  191. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  192. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  193. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  194. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  195. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  196. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  197. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  198. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  199. package/src/architecture/variability/memo_variability.sysml +87 -0
  200. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  201. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  202. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  203. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  204. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  205. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  206. package/src/artifacts/standards/iec_60812.sysml +4 -8
  207. package/src/artifacts/standards/iec_62304.sysml +607 -47
  208. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  209. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  210. package/src/artifacts/standards/iso_13485.sysml +12 -24
  211. package/src/artifacts/standards/iso_14971.sysml +118 -20
  212. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  213. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  214. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  216. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  220. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  221. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  222. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  223. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  224. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  225. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  226. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  227. package/src/core/common/memo_common.sysml +51 -68
  228. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  229. package/src/core/relationships/memo_relationships.sysml +17 -11
  230. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  231. package/src/core/semantics/semantics.sysml +58 -0
  232. package/src/core/terminology/terminology.sysml +7 -0
  233. package/src/memo_namespaces.sysml +6 -0
  234. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  235. package/src/methodology/core/memo_core.sysml +85 -29
  236. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  237. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  238. package/src/rules/closure/closure_rules.sysml +250 -4
  239. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  240. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  241. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  242. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  243. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  244. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  245. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  246. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
  247. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  248. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
  249. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  250. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  251. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  252. package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
  253. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  254. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  255. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  256. package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
  257. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  258. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  259. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  260. package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
  261. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  262. package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
  263. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  264. package/src/viewpoints/software/software_viewpoint.sysml +2 -3
  265. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  266. package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
  267. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  268. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  269. package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
  270. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  271. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  272. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  274. package/templates/default/memo.package.yaml +6 -1
  275. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  276. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  277. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  278. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  280. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  281. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  282. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  283. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  284. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  285. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  286. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  287. package/extensions/template/src/extension.sysml +0 -39
  288. package/templates/connected-device/memo.package.yaml +0 -13
  289. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  290. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  291. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  292. package/templates/connected-device/model/catalog/project.sysml +0 -30
  293. package/templates/connected-device/package.json +0 -8
  294. package/templates/connected-device/syside.toml +0 -13
  295. package/templates/infusion-pump/memo.package.yaml +0 -13
  296. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  297. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  298. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  299. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  300. package/templates/infusion-pump/package.json +0 -8
  301. package/templates/infusion-pump/syside.toml +0 -13
  302. package/templates/monitoring-device/memo.package.yaml +0 -13
  303. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  304. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  305. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  306. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  307. package/templates/monitoring-device/package.json +0 -8
  308. package/templates/monitoring-device/syside.toml +0 -13
  309. package/templates/samd/memo.package.yaml +0 -13
  310. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  311. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  312. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  313. package/templates/samd/model/catalog/project.sysml +0 -30
  314. package/templates/samd/package.json +0 -8
  315. package/templates/samd/syside.toml +0 -13
@@ -2,6 +2,7 @@ package memo_examples_gpca_pump_gpca_verification {
2
2
  private import memo_examples_gpca_pump_gpca_requirements::*;
3
3
  private import memo_examples_gpca_pump_gpca_formal_behavior::*;
4
4
  private import memo_examples_gpca_pump_gpca_architecture::*;
5
+ private import memo_examples_gpca_pump_gpca_behavior_subsystems::*;
5
6
  private import memo_examples_gpca_pump_gpca_risk::*;
6
7
  private import memo_examples_gpca_pump_gpca_behavior_modes::*;
7
8
  private import ScalarValues::*;
@@ -13,59 +14,60 @@ package memo_examples_gpca_pump_gpca_verification {
13
14
 
14
15
  private import memo_core_common::MemoIdentity;
15
16
  // ── Verification cases ──────────────────────────────────────
17
+ // A safety-critical function is verified when a test traces to it
18
+ // (CR-ONT-040), which is not the same as the requirement it satisfies being
19
+ // verified or the module it is allocated to being tested. Each function is
20
+ // named as a subject of the case whose acceptance criteria exercise the
21
+ // output its `outputSummary` describes. AcquireSensorData and
22
+ // AggregateSensorStatus are not: no case here tests the debounced,
23
+ // range-checked status vector, and naming one would claim a test that
24
+ // does not exist.
16
25
  verification vcModeRange : VerificationCase {
17
- @MemoIdentity { :>> providedId = "VER-001"; }
18
- attribute :>> name = "VerifyModeRange";
26
+ @MemoIdentity { :>> providedId = "VER-001"; :>> label = "VerifyModeRange"; }
19
27
  attribute :>> methodKind = MemoVerificationMethodKind::formalProof;
20
28
  attribute :>> acceptanceCriteria = "Current_System_mode only takes valid exclusive values";
21
29
  attribute :>> status = ElementStatusKind::approved;
22
30
 
23
- objective { verify reqCs01; }
24
- subject verified : Base::Anything[*] = (guaranteeExclusiveMode, gpcaDevice.gpcaSoftware.tlm, gpcaDevice.gpcaSoftware.outputBus);
31
+ objective { verify reqCs01; verify guaranteeExclusiveMode; }
32
+ subject verified : Base::Anything[*] = (gpcaSoftware.tlm, gpcaSoftware.outputBus, fnManageInfusion);
25
33
  }
26
34
  verification vcLockout : VerificationCase {
27
- @MemoIdentity { :>> providedId = "VER-002"; }
28
- attribute :>> name = "VerifyBolusLockout";
35
+ @MemoIdentity { :>> providedId = "VER-002"; :>> label = "VerifyBolusLockout"; }
29
36
  attribute :>> methodKind = MemoVerificationMethodKind::test;
30
37
  attribute :>> acceptanceCriteria = "No patient bolus initiated when lockout or max bolus constraints active";
31
38
  attribute :>> status = ElementStatusKind::approved;
32
39
 
33
- objective { verify reqCs25; }
34
- subject verified : Base::Anything[*] = (lockoutControl, guaranteeLockoutPreventsBolus, tcBolusResponse, gpcaDevice.gpcaSoftware.infusionMgr);
40
+ objective { verify reqCs25; verify guaranteeLockoutPreventsBolus; verify tcBolusResponse; }
41
+ subject verified : Base::Anything[*] = (lockoutControl, gpcaSoftware.infusionMgr, fnEnforceLimits);
35
42
  }
36
43
  verification vcSameStepAlarm : VerificationCase {
37
- @MemoIdentity { :>> providedId = "VER-003"; }
38
- attribute :>> name = "VerifySameStepAlarmStop";
44
+ @MemoIdentity { :>> providedId = "VER-003"; :>> label = "VerifySameStepAlarmStop"; }
39
45
  attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
40
46
  attribute :>> acceptanceCriteria = "Alarm output affects infusion in same execution step";
41
47
  attribute :>> status = ElementStatusKind::approved;
42
48
 
43
- objective { verify reqCs19; }
44
- subject verified : Base::Anything[*] = (propAlarmStopsSameStep, guaranteeAlarmStopsSameStep, tcAlarmLatency, gpcaDevice.gpcaSoftware.alarm);
49
+ objective { verify reqCs19; verify propAlarmStopsSameStep; verify guaranteeAlarmStopsSameStep; verify tcAlarmLatency; }
50
+ subject verified : Base::Anything[*] = (gpcaSoftware.alarm, fnMonitorAlarm);
45
51
  }
46
52
  verification vcTemporalModeSafety : VerificationCase {
47
- @MemoIdentity { :>> providedId = "VER-004"; }
48
- attribute :>> name = "VerifyTemporalModeSafety";
53
+ @MemoIdentity { :>> providedId = "VER-004"; :>> label = "VerifyTemporalModeSafety"; }
49
54
  attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
50
55
  attribute :>> acceptanceCriteria = "No invalid transitions and pause on critical alarms";
51
56
  attribute :>> status = ElementStatusKind::approved;
52
57
 
53
- objective { verify reqCs75; verify reqDoorOpen; }
54
- subject verified : Base::Anything[*] = (propLockoutTimerMonotonic, temporalNoInvalidTransition);
58
+ objective { verify reqCs75; verify reqDoorOpen; verify propLockoutTimerMonotonic; verify temporalNoInvalidTransition; }
55
59
  }
56
60
  verification vcAirInLine : VerificationCase {
57
- @MemoIdentity { :>> providedId = "VER-005"; }
58
- attribute :>> name = "VerifyAirInLineStop";
61
+ @MemoIdentity { :>> providedId = "VER-005"; :>> label = "VerifyAirInLineStop"; }
59
62
  attribute :>> methodKind = MemoVerificationMethodKind::test;
60
63
  attribute :>> acceptanceCriteria = "Injected air above threshold pauses infusion and annunciates per the REQ 59 High-priority actions (REQ-CS-21)";
61
64
  attribute :>> status = ElementStatusKind::approved;
62
65
 
63
66
  objective { verify reqCs21; }
64
- subject verified : Base::Anything[*] = (airDetectionControl);
67
+ subject verified : Base::Anything[*] = (airDetectionControl, fnAcquireSensors.cfnDetectAirInLine);
65
68
  }
66
69
  verification vcOcclusion : VerificationCase {
67
- @MemoIdentity { :>> providedId = "VER-006"; }
68
- attribute :>> name = "VerifyOcclusionDetection";
70
+ @MemoIdentity { :>> providedId = "VER-006"; :>> label = "VerifyOcclusionDetection"; }
69
71
  attribute :>> methodKind = MemoVerificationMethodKind::test;
70
72
  attribute :>> acceptanceCriteria = "Clamped line above pressure threshold pauses infusion and annunciates (REQ-X-04)";
71
73
  attribute :>> status = ElementStatusKind::approved;
@@ -74,47 +76,43 @@ package memo_examples_gpca_pump_gpca_verification {
74
76
  subject verified : Base::Anything[*] = (occlusionAlarmControl);
75
77
  }
76
78
  verification vcEmptyReservoir : VerificationCase {
77
- @MemoIdentity { :>> providedId = "VER-007"; }
78
- attribute :>> name = "VerifyEmptyReservoirStop";
79
+ @MemoIdentity { :>> providedId = "VER-007"; :>> label = "VerifyEmptyReservoirStop"; }
79
80
  attribute :>> methodKind = MemoVerificationMethodKind::test;
80
81
  attribute :>> acceptanceCriteria = "Reservoir-empty assertion transitions to PAUSED (KVO flow) and annunciates per the REQ 59 High-priority actions (REQ-CS-23)";
81
82
  attribute :>> status = ElementStatusKind::approved;
82
83
 
83
84
  objective { verify reqCs23; }
84
- subject verified : Base::Anything[*] = (reservoirMonitorControl, gpcaDevice.gpcaSoftware.systemStatus);
85
+ subject verified : Base::Anything[*] = (reservoirMonitorControl, gpcaSoftware.systemStatus);
85
86
  }
86
87
  verification vcPost : VerificationCase {
87
- @MemoIdentity { :>> providedId = "VER-008"; }
88
- attribute :>> name = "VerifyPowerOnSelfTest";
88
+ @MemoIdentity { :>> providedId = "VER-008"; :>> label = "VerifyPowerOnSelfTest"; }
89
89
  attribute :>> methodKind = MemoVerificationMethodKind::test;
90
90
  attribute :>> acceptanceCriteria = "Each injected POST fault (CPU, RAM, ROM, watchdog, sensors) blocks therapy and alarms (REQ-X-02)";
91
91
  attribute :>> status = ElementStatusKind::approved;
92
92
 
93
93
  objective { verify reqPost; }
94
- subject verified : Base::Anything[*] = (gpcaDevice.gpcaSoftware.systemMonitor);
94
+ subject verified : Base::Anything[*] = (gpcaSoftware.systemMonitor, fnSelfTest);
95
95
  }
96
96
  verification vcPowerLoss : VerificationCase {
97
- @MemoIdentity { :>> providedId = "VER-009"; }
98
- attribute :>> name = "VerifyPowerLossRetentionAndResume";
97
+ @MemoIdentity { :>> providedId = "VER-009"; :>> label = "VerifyPowerLossRetentionAndResume"; }
99
98
  attribute :>> methodKind = MemoVerificationMethodKind::test;
100
99
  attribute :>> acceptanceCriteria = "Prescription and log intact after power cycle; therapy resumes only after confirmation (REQ-X-03)";
101
100
  attribute :>> status = ElementStatusKind::approved;
102
101
 
103
102
  objective { verify reqPowerLossRetention; verify reqBatteryBackup; }
103
+ subject verified : Base::Anything[*] = (fnManagePower);
104
104
  }
105
105
  verification vcWatchdog : VerificationCase {
106
- @MemoIdentity { :>> providedId = "VER-010"; }
107
- attribute :>> name = "VerifyWatchdogSafeState";
106
+ @MemoIdentity { :>> providedId = "VER-010"; :>> label = "VerifyWatchdogSafeState"; }
108
107
  attribute :>> methodKind = MemoVerificationMethodKind::test;
109
108
  attribute :>> acceptanceCriteria = "Induced CPU hang forces zero flow and continuous alarm within 60 ms (REQ-X-08, TC-003)";
110
109
  attribute :>> status = ElementStatusKind::approved;
111
110
 
112
- objective { verify reqWatchdogSafeState; }
113
- subject verified : Base::Anything[*] = (watchdogControl, tcWatchdogTimeout);
111
+ objective { verify reqWatchdogSafeState; verify tcWatchdogTimeout; }
112
+ subject verified : Base::Anything[*] = watchdogControl;
114
113
  }
115
114
  verification vcHourlyMax : VerificationCase {
116
- @MemoIdentity { :>> providedId = "VER-011"; }
117
- attribute :>> name = "VerifyHourlyDoseCeiling";
115
+ @MemoIdentity { :>> providedId = "VER-011"; :>> label = "VerifyHourlyDoseCeiling"; }
118
116
  attribute :>> methodKind = MemoVerificationMethodKind::simulation;
119
117
  attribute :>> acceptanceCriteria = "Randomized bolus/basal schedules never exceed hourly maximum in sliding window (REQ-X-06)";
120
118
  attribute :>> status = ElementStatusKind::approved;
@@ -122,26 +120,25 @@ package memo_examples_gpca_pump_gpca_verification {
122
120
  objective { verify reqMaxHourlyDose; }
123
121
  }
124
122
  verification vcPumpAccuracy : VerificationCase {
125
- @MemoIdentity { :>> providedId = "VER-012"; }
126
- attribute :>> name = "VerifyDeliveryAccuracy";
123
+ @MemoIdentity { :>> providedId = "VER-012"; :>> label = "VerifyDeliveryAccuracy"; }
127
124
  attribute :>> methodKind = MemoVerificationMethodKind::test;
128
125
  attribute :>> acceptanceCriteria = "Gravimetric bench measurement within ±5% (Tolerance_Min_const) across rate range (REQ-X-11)";
129
126
  attribute :>> status = ElementStatusKind::approved;
130
127
 
131
128
  objective { verify reqPumpAccuracy; }
129
+ subject verified : Base::Anything[*] = (fnCommandPump);
132
130
  }
133
131
  verification vcAlarmLoudness : VerificationCase {
134
- @MemoIdentity { :>> providedId = "VER-013"; }
135
- attribute :>> name = "VerifyAlarmSoundPressure";
132
+ @MemoIdentity { :>> providedId = "VER-013"; :>> label = "VerifyAlarmSoundPressure"; }
136
133
  attribute :>> methodKind = MemoVerificationMethodKind::test;
137
134
  attribute :>> acceptanceCriteria = "Each priority tone meets Audio_level_const, 50 db for 2 s per I 8 (REQ-X-12)";
138
135
  attribute :>> status = ElementStatusKind::approved;
139
136
 
140
137
  objective { verify reqCs72; verify reqAlarmLoudness; }
138
+ subject verified : Base::Anything[*] = (fnAnnunciate);
141
139
  }
142
140
  verification vcFreeFlow : VerificationCase {
143
- @MemoIdentity { :>> providedId = "VER-014"; }
144
- attribute :>> name = "VerifyAntiFreeFlowValve";
141
+ @MemoIdentity { :>> providedId = "VER-014"; :>> label = "VerifyAntiFreeFlowValve"; }
145
142
  attribute :>> methodKind = MemoVerificationMethodKind::test;
146
143
  attribute :>> acceptanceCriteria = "No gravity flow with set disengaged under worst-case head height (REQ-X-14)";
147
144
  attribute :>> status = ElementStatusKind::approved;
@@ -150,8 +147,7 @@ package memo_examples_gpca_pump_gpca_verification {
150
147
  subject verified : Base::Anything[*] = (freeFlowValveControl);
151
148
  }
152
149
  verification vcStuckButton : VerificationCase {
153
- @MemoIdentity { :>> providedId = "VER-015"; }
154
- attribute :>> name = "VerifyStuckButtonDetection";
150
+ @MemoIdentity { :>> providedId = "VER-015"; :>> label = "VerifyStuckButtonDetection"; }
155
151
  attribute :>> methodKind = MemoVerificationMethodKind::test;
156
152
  attribute :>> acceptanceCriteria = "Shorted pendant input yields no bolus and Medium-priority notification after 60 s (REQ-X-09)";
157
153
  attribute :>> status = ElementStatusKind::approved;
@@ -159,48 +155,44 @@ package memo_examples_gpca_pump_gpca_verification {
159
155
  objective { verify reqStuckButton; }
160
156
  }
161
157
  verification vcFlowCrossCheck : VerificationCase {
162
- @MemoIdentity { :>> providedId = "VER-016"; }
163
- attribute :>> name = "VerifyFlowCrossCheck";
158
+ @MemoIdentity { :>> providedId = "VER-016"; :>> label = "VerifyFlowCrossCheck"; }
164
159
  attribute :>> methodKind = MemoVerificationMethodKind::test;
165
160
  attribute :>> acceptanceCriteria = "Injected deviation beyond Tolerance_Min_const sustained past Max_Duration_OverInfusion_const pauses therapy and annunciates (REQ-X-10)";
166
161
  attribute :>> status = ElementStatusKind::approved;
167
162
 
168
163
  objective { verify reqFlowCrossCheck; }
169
- subject verified : Base::Anything[*] = (flowCrossCheckControl);
164
+ subject verified : Base::Anything[*] = (flowCrossCheckControl, fnAcquireSensors.cfnMeasureFlowRate);
170
165
  }
171
166
 
172
167
  verification vcDrugLibrary : VerificationCase {
173
- @MemoIdentity { :>> providedId = "VER-017"; }
174
- attribute :>> name = "VerifyDrugLibraryEnforcement";
168
+ @MemoIdentity { :>> providedId = "VER-017"; :>> label = "VerifyDrugLibraryEnforcement"; }
175
169
  attribute :>> methodKind = MemoVerificationMethodKind::test;
176
170
  attribute :>> acceptanceCriteria = "Hard-limit entries rejected, soft-limit entries require confirmation, both logged (REQ-X-01)";
177
171
  attribute :>> status = ElementStatusKind::approved;
178
172
 
179
173
  objective { verify reqDrugLibraryLimits; }
180
- subject verified : Base::Anything[*] = (drugLibraryControl, gpcaDevice.gpcaSoftware.config);
174
+ subject verified : Base::Anything[*] = (drugLibraryControl, gpcaSoftware.config, fnValidatePrescription);
181
175
  }
182
176
  verification vcPrescriptionConfirm : VerificationCase {
183
- @MemoIdentity { :>> providedId = "VER-018"; }
184
- attribute :>> name = "VerifyPrescriptionConfirmation";
177
+ @MemoIdentity { :>> providedId = "VER-018"; :>> label = "VerifyPrescriptionConfirmation"; }
185
178
  attribute :>> methodKind = MemoVerificationMethodKind::demonstration;
186
179
  attribute :>> acceptanceCriteria = "Therapy cannot start without distinct confirmation; displayed values equal stored values (REQ-CS-09)";
187
180
  attribute :>> status = ElementStatusKind::approved;
188
181
 
189
182
  objective { verify reqCs09; }
183
+ subject verified : Base::Anything[*] = (fnPresentStatus);
190
184
  }
191
185
  verification vcEventLog : VerificationCase {
192
- @MemoIdentity { :>> providedId = "VER-019"; }
193
- attribute :>> name = "VerifyEventLogIntegrity";
186
+ @MemoIdentity { :>> providedId = "VER-019"; :>> label = "VerifyEventLogIntegrity"; }
194
187
  attribute :>> methodKind = MemoVerificationMethodKind::test;
195
188
  attribute :>> acceptanceCriteria = "Operational/error log entries per REQ-CS-78..81; tampering detectable (REQ-X-07)";
196
189
  attribute :>> status = ElementStatusKind::approved;
197
190
 
198
191
  objective { verify reqCs78; verify reqEventLogging; }
199
- subject verified : Base::Anything[*] = (gpcaDevice.gpcaSoftware.logging);
192
+ subject verified : Base::Anything[*] = (gpcaSoftware.logging);
200
193
  }
201
194
  verification vcReverseDeliveryPause : VerificationCase {
202
- @MemoIdentity { :>> providedId = "VER-020"; }
203
- attribute :>> name = "VerifyReverseDeliveryPause";
195
+ @MemoIdentity { :>> providedId = "VER-020"; :>> label = "VerifyReverseDeliveryPause"; }
204
196
  attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
205
197
  attribute :>> acceptanceCriteria = "Continuous or cumulative reverse delivery beyond the REQ-CS-22 duration limits transitions to PAUSED and raises the Reverse Delivery notification (NOTIF-04)";
206
198
  attribute :>> status = ElementStatusKind::approved;
@@ -208,8 +200,7 @@ package memo_examples_gpca_pump_gpca_verification {
208
200
  subject verified : Base::Anything[*] = (reverseDeliveryPauseControl);
209
201
  }
210
202
  verification vcAntiRefluxMechanism : VerificationCase {
211
- @MemoIdentity { :>> providedId = "VER-021"; }
212
- attribute :>> name = "VerifyContinuousReverseDeliveryPrevention";
203
+ @MemoIdentity { :>> providedId = "VER-021"; :>> label = "VerifyContinuousReverseDeliveryPrevention"; }
213
204
  attribute :>> methodKind = MemoVerificationMethodKind::test;
214
205
  attribute :>> acceptanceCriteria = "During normal use and single fault condition, continuous reverse delivery is not possible (IEC 601-2-24 basis per GPCA safety requirements)";
215
206
  attribute :>> status = ElementStatusKind::approved;
@@ -217,8 +208,7 @@ package memo_examples_gpca_pump_gpca_verification {
217
208
  subject verified : Base::Anything[*] = (antiRefluxDesignControl);
218
209
  }
219
210
  verification vcVtbiCeiling : VerificationCase {
220
- @MemoIdentity { :>> providedId = "VER-022"; }
221
- attribute :>> name = "VerifyVtbiCeilingPause";
211
+ @MemoIdentity { :>> providedId = "VER-022"; :>> label = "VerifyVtbiCeilingPause"; }
222
212
  attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
223
213
  attribute :>> acceptanceCriteria = "Actual volume infused above the drug-database maximum VTBI transitions to PAUSED with flow at most KVO (REQ-CS-20, AGREE GP-008) and raises NOTIF-06";
224
214
  attribute :>> status = ElementStatusKind::approved;
@@ -226,8 +216,7 @@ package memo_examples_gpca_pump_gpca_verification {
226
216
  subject verified : Base::Anything[*] = (vtbiLimitPauseControl);
227
217
  }
228
218
  verification vcInfusionComplete : VerificationCase {
229
- @MemoIdentity { :>> providedId = "VER-023"; }
230
- attribute :>> name = "VerifyInfusionCompleteStop";
219
+ @MemoIdentity { :>> providedId = "VER-023"; :>> label = "VerifyInfusionCompleteStop"; }
231
220
  attribute :>> methodKind = MemoVerificationMethodKind::test;
232
221
  attribute :>> acceptanceCriteria = "Reaching prescribed total duration or maximum VTBI transitions ACTIVE to IDLE with Infusion Complete actions (REQ-CS-28)";
233
222
  attribute :>> status = ElementStatusKind::approved;
@@ -235,8 +224,7 @@ package memo_examples_gpca_pump_gpca_verification {
235
224
  subject verified : Base::Anything[*] = (infusionCompleteControl);
236
225
  }
237
226
  verification vcDoorInterlock : VerificationCase {
238
- @MemoIdentity { :>> providedId = "VER-024"; }
239
- attribute :>> name = "VerifyDoorOpenDeliveryInhibit";
227
+ @MemoIdentity { :>> providedId = "VER-024"; :>> label = "VerifyDoorOpenDeliveryInhibit"; }
240
228
  attribute :>> methodKind = MemoVerificationMethodKind::test;
241
229
  attribute :>> acceptanceCriteria = "Door open during THERAPY limits flow to at most KVO and raises a notification (AGREE GP-011; REQ-X-05)";
242
230
  attribute :>> status = ElementStatusKind::approved;
@@ -246,16 +234,14 @@ package memo_examples_gpca_pump_gpca_verification {
246
234
 
247
235
  // ── Validation cases (design validation / IEC 62366) ────────
248
236
  verification valSimulatedWard : ValidationCase {
249
- @MemoIdentity { :>> providedId = "VAL-001"; }
250
- attribute :>> name = "SimulatedWardTherapyValidation";
237
+ @MemoIdentity { :>> providedId = "VAL-001"; :>> label = "SimulatedWardTherapyValidation"; }
251
238
  attribute :>> validationMethod = ValidationMethodKind::simulatedUse;
252
239
  attribute :>> userParticipation = "nurses and physicians on a simulated ward";
253
240
  attribute :>> acceptanceCriteria = "Complete therapy scenarios OS-001..OS-006 executed without unresolved use difficulty";
254
241
  attribute :>> clinicalContext = "post-operative PCA therapy in acute care";
255
242
  }
256
243
  verification valSummativeUsability : ValidationCase {
257
- @MemoIdentity { :>> providedId = "VAL-002"; }
258
- attribute :>> name = "SummativeUsabilityTest";
244
+ @MemoIdentity { :>> providedId = "VAL-002"; :>> label = "SummativeUsabilityTest"; }
259
245
  attribute :>> validationMethod = ValidationMethodKind::summativeUsabilityTest;
260
246
  attribute :>> userParticipation = "15 representative clinical users per user group";
261
247
  attribute :>> acceptanceCriteria = "No critical use errors (UE-001..UE-004) observed on safety-related tasks; residual difficulty acceptable per IEC 62366-1";
@@ -265,8 +251,7 @@ package memo_examples_gpca_pump_gpca_verification {
265
251
  // ── Test artifacts and evidence ─────────────────────────────
266
252
  part testReportLockout : MemoEvidence {
267
253
  attribute :>> evidenceKind = EvidenceKind::testArtifact;
268
- @MemoIdentity { :>> providedId = "TEST-001"; }
269
- attribute :>> name = "BolusLockoutTestReport";
254
+ @MemoIdentity { :>> providedId = "TEST-001"; :>> label = "BolusLockoutTestReport"; }
270
255
  attribute :>> version = "0.1";
271
256
  attribute :>> lifecycleState = LifecycleStateKind::development;
272
257
  attribute :>> artifactKind = ArtifactKind::testReport;
@@ -274,8 +259,7 @@ package memo_examples_gpca_pump_gpca_verification {
274
259
  }
275
260
  part testProtocolSafetySuite : MemoEvidence {
276
261
  attribute :>> evidenceKind = EvidenceKind::testArtifact;
277
- @MemoIdentity { :>> providedId = "TEST-002"; }
278
- attribute :>> name = "SafetyAlarmTestProtocol";
262
+ @MemoIdentity { :>> providedId = "TEST-002"; :>> label = "SafetyAlarmTestProtocol"; }
279
263
  attribute :>> version = "0.1";
280
264
  attribute :>> lifecycleState = LifecycleStateKind::development;
281
265
  attribute :>> artifactKind = ArtifactKind::testProtocol;
@@ -283,8 +267,7 @@ package memo_examples_gpca_pump_gpca_verification {
283
267
  }
284
268
  part evidenceLockout : MemoEvidence {
285
269
  attribute :>> evidenceKind = EvidenceKind::evidence;
286
- @MemoIdentity { :>> providedId = "EVD-001"; }
287
- attribute :>> name = "BolusLockoutEvidence";
270
+ @MemoIdentity { :>> providedId = "EVD-001"; :>> label = "BolusLockoutEvidence"; }
288
271
  attribute :>> version = "0.1";
289
272
  attribute :>> lifecycleState = LifecycleStateKind::development;
290
273
  attribute :>> evidenceType = "verification evidence";
@@ -292,8 +275,7 @@ package memo_examples_gpca_pump_gpca_verification {
292
275
  }
293
276
  part evidenceModeRange : MemoEvidence {
294
277
  attribute :>> evidenceKind = EvidenceKind::evidence;
295
- @MemoIdentity { :>> providedId = "EVD-002"; }
296
- attribute :>> name = "ModeRangeEvidence";
278
+ @MemoIdentity { :>> providedId = "EVD-002"; :>> label = "ModeRangeEvidence"; }
297
279
  attribute :>> version = "0.1";
298
280
  attribute :>> lifecycleState = LifecycleStateKind::development;
299
281
  attribute :>> evidenceType = "formal proof evidence";
@@ -301,8 +283,7 @@ package memo_examples_gpca_pump_gpca_verification {
301
283
  }
302
284
  part evidenceSameStepAlarm : MemoEvidence {
303
285
  attribute :>> evidenceKind = EvidenceKind::evidence;
304
- @MemoIdentity { :>> providedId = "EVD-003"; }
305
- attribute :>> name = "SameStepAlarmEvidence";
286
+ @MemoIdentity { :>> providedId = "EVD-003"; :>> label = "SameStepAlarmEvidence"; }
306
287
  attribute :>> version = "0.1";
307
288
  attribute :>> lifecycleState = LifecycleStateKind::development;
308
289
  attribute :>> evidenceType = "model checking evidence";
@@ -310,8 +291,7 @@ package memo_examples_gpca_pump_gpca_verification {
310
291
  }
311
292
  part evidenceTemporalModeSafety : MemoEvidence {
312
293
  attribute :>> evidenceKind = EvidenceKind::evidence;
313
- @MemoIdentity { :>> providedId = "EVD-004"; }
314
- attribute :>> name = "TemporalModeSafetyEvidence";
294
+ @MemoIdentity { :>> providedId = "EVD-004"; :>> label = "TemporalModeSafetyEvidence"; }
315
295
  attribute :>> version = "0.1";
316
296
  attribute :>> lifecycleState = LifecycleStateKind::development;
317
297
  attribute :>> evidenceType = "model checking evidence";
@@ -319,8 +299,7 @@ package memo_examples_gpca_pump_gpca_verification {
319
299
  }
320
300
  part evidenceSafetyAlarmSuite : MemoEvidence {
321
301
  attribute :>> evidenceKind = EvidenceKind::evidence;
322
- @MemoIdentity { :>> providedId = "EVD-005"; }
323
- attribute :>> name = "SafetyAlarmSuiteEvidence";
302
+ @MemoIdentity { :>> providedId = "EVD-005"; :>> label = "SafetyAlarmSuiteEvidence"; }
324
303
  attribute :>> version = "0.1";
325
304
  attribute :>> lifecycleState = LifecycleStateKind::development;
326
305
  attribute :>> evidenceType = "bench test evidence for alarm-driven safe states";
@@ -328,8 +307,7 @@ package memo_examples_gpca_pump_gpca_verification {
328
307
  }
329
308
  part evidenceUsability : MemoEvidence {
330
309
  attribute :>> evidenceKind = EvidenceKind::evidence;
331
- @MemoIdentity { :>> providedId = "EVD-006"; }
332
- attribute :>> name = "SummativeUsabilityEvidence";
310
+ @MemoIdentity { :>> providedId = "EVD-006"; :>> label = "SummativeUsabilityEvidence"; }
333
311
  attribute :>> version = "0.1";
334
312
  attribute :>> lifecycleState = LifecycleStateKind::development;
335
313
  attribute :>> evidenceType = "summative usability report per IEC 62366-1";
@@ -337,8 +315,7 @@ package memo_examples_gpca_pump_gpca_verification {
337
315
  }
338
316
  part evidenceHardwareBench : MemoEvidence {
339
317
  attribute :>> evidenceKind = EvidenceKind::evidence;
340
- @MemoIdentity { :>> providedId = "EVD-008"; }
341
- attribute :>> name = "HardwareBenchEvidence";
318
+ @MemoIdentity { :>> providedId = "EVD-008"; :>> label = "HardwareBenchEvidence"; }
342
319
  attribute :>> version = "0.1";
343
320
  attribute :>> lifecycleState = LifecycleStateKind::development;
344
321
  attribute :>> evidenceType = "bench evidence for alarm loudness and anti-free-flow valve";
@@ -346,8 +323,7 @@ package memo_examples_gpca_pump_gpca_verification {
346
323
  }
347
324
  part evidenceDoseProgramming : MemoEvidence {
348
325
  attribute :>> evidenceKind = EvidenceKind::evidence;
349
- @MemoIdentity { :>> providedId = "EVD-009"; }
350
- attribute :>> name = "DoseProgrammingEvidence";
326
+ @MemoIdentity { :>> providedId = "EVD-009"; :>> label = "DoseProgrammingEvidence"; }
351
327
  attribute :>> version = "0.1";
352
328
  attribute :>> lifecycleState = LifecycleStateKind::development;
353
329
  attribute :>> evidenceType = "test evidence for prescription limits, confirmation, dose ceiling, and event log";
@@ -355,8 +331,7 @@ package memo_examples_gpca_pump_gpca_verification {
355
331
  }
356
332
  part evidenceDeliveryAccuracy : MemoEvidence {
357
333
  attribute :>> evidenceKind = EvidenceKind::evidence;
358
- @MemoIdentity { :>> providedId = "EVD-007"; }
359
- attribute :>> name = "DeliveryAccuracyEvidence";
334
+ @MemoIdentity { :>> providedId = "EVD-007"; :>> label = "DeliveryAccuracyEvidence"; }
360
335
  attribute :>> version = "0.1";
361
336
  attribute :>> lifecycleState = LifecycleStateKind::development;
362
337
  attribute :>> evidenceType = "gravimetric bench test evidence";
@@ -18,10 +18,9 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
18
18
  view gpcaSystemContextView : MemoDiagramView {
19
19
  expose memo_examples_gpca_pump_viewpoints_context_views_context_system_context_view::*;
20
20
  attribute depth = 2;
21
- @MemoIdentity { :>> providedId = "VIEW-CTX-101"; }
22
- attribute :>> name = "GPCA_SystemContextView";
21
+ @MemoIdentity { :>> providedId = "VIEW-CTX-101"; :>> label = "GPCA_SystemContextView"; }
23
22
  @MemoIdentity { :>> shortDescription = "Actors, use contexts, and external entities at the GPCA system boundary."; }
24
- attribute :>> description = "Shows the CriSys Fig 2.1 boundary: patient, clinician, prescription, drug reservoir, needle, hospital pharmacy database, and hospital environment around the pump, with directional data flows, physical drug-path connections, and the intended use anchoring the boundary.";
23
+ doc /* Shows the CriSys Fig 2.1 boundary: patient, clinician, prescription, drug reservoir, needle, hospital pharmacy database, and hospital environment around the pump, with directional data flows, physical drug-path connections, and the intended use anchoring the boundary. */
25
24
  attribute :>> outputKind = (ViewOutputKind::diagram);
26
25
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
27
26
  attribute :>> viewKind = DiagramViewKind::general;
@@ -30,9 +29,8 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
30
29
  attribute :>> autoPopulate = true;
31
30
  attribute :>> queryDescription = "Include actors, use contexts, intended use, and external operational entities.";
32
31
  part :>> selectionQuery {
33
- @MemoIdentity { :>> providedId = "QRY-CTX-101"; }
34
- attribute :>> name = "GPCA_SystemContextQuery";
35
- attribute :>> includeElementKinds = ("Actor", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity");
32
+ @MemoIdentity { :>> providedId = "QRY-CTX-101"; :>> label = "GPCA_SystemContextQuery"; }
33
+ attribute :>> includeElementKinds = ("OperationalParticipant", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity");
36
34
  attribute :>> includeRelationshipKinds = ("connect", "flow", "Governs", "AppliesInContext");
37
35
  attribute :>> includeLayers = ("context", "operational");
38
36
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -19,10 +19,9 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
19
19
  view gpcaCybersecurityView : MemoDiagramView {
20
20
  expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cybersecurity_view::*;
21
21
  attribute depth = 2;
22
- @MemoIdentity { :>> providedId = "VIEW-CYB-001"; }
23
- attribute :>> name = "GPCA_CybersecurityView";
22
+ @MemoIdentity { :>> providedId = "VIEW-CYB-001"; :>> label = "GPCA_CybersecurityView"; }
24
23
  @MemoIdentity { :>> shortDescription = "Shows GPCA assets, trust boundaries, threats, vulnerabilities, and mitigations."; }
25
- attribute :>> description = "Product-specific cybersecurity view intended for secure product development and cross-reference into cybersecurity risk documentation.";
24
+ doc /* Product-specific cybersecurity view intended for secure product development and cross-reference into cybersecurity risk documentation. */
26
25
  attribute :>> outputKind = (ViewOutputKind::diagram);
27
26
  attribute :>> presentationKind = (PresentationKind::custom);
28
27
  attribute :>> viewKind = DiagramViewKind::general;
@@ -31,9 +30,8 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
31
30
  attribute :>> autoPopulate = true;
32
31
  attribute :>> queryDescription = "Include cyber assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, mitigations, security requirements, and verification.";
33
32
  part :>> selectionQuery {
34
- @MemoIdentity { :>> providedId = "QRY-CYB-001"; }
35
- attribute :>> name = "GPCA_CybersecurityQuery";
36
- attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "OperativeScenario[scenarioKind=threat]");
33
+ @MemoIdentity { :>> providedId = "QRY-CYB-001"; :>> label = "GPCA_CybersecurityQuery"; }
34
+ attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "OperativeScenario");
37
35
  attribute :>> includeLayers = ("cybersecurity", "risk", "assurance");
38
36
  attribute :>> includeConcerns = (ConcernKind::cybersecurity, ConcernKind::privacy, ConcernKind::safety);
39
37
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -10,18 +10,16 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_cyber_as
10
10
  private import memo_core_common::MemoIdentity;
11
11
  view cyberAssessmentView : MemoCybersecurityAssessmentView {
12
12
  expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_cyber_assessment_view::*;
13
- @MemoIdentity { :>> providedId = "DOC-003"; }
14
- attribute :>> name = "GPCAMemoCybersecurityAssessmentView";
13
+ @MemoIdentity { :>> providedId = "DOC-003"; :>> label = "GPCAMemoCybersecurityAssessmentView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Cybersecurity risk-assessment-oriented document view for GPCA."; }
16
- attribute :>> description = "Captures GPCA cyber risks, mitigations, security requirements, verification, and safety/privacy traceability for cybersecurity assessment records.";
15
+ doc /* Captures GPCA cyber risks, mitigations, security requirements, verification, and safety/privacy traceability for cybersecurity assessment records. */
17
16
  attribute :>> version = "0.1";
18
17
  attribute :>> lifecycleState = LifecycleStateKind::development;
19
18
  attribute :>> marketScope = "generic";
20
19
  ref :>> viewpointDefinition = cybersecurityViewpoint;
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-DOC-009"; }
23
- attribute :>> name = "cyberAssessmentViewQuery";
24
- attribute :>> includeElementKinds = ("CyberRisk", "CyberHazard", "CybersecurityAsset", "CyberMitigation", "SecurityRequirement", "SecurityClaim", "SBOMEntry", "SoftwareModule[moduleKind=soup]");
21
+ @MemoIdentity { :>> providedId = "QRY-DOC-009"; :>> label = "cyberAssessmentViewQuery"; }
22
+ attribute :>> includeElementKinds = ("CyberRisk", "CyberHazard", "CybersecurityAsset", "CyberMitigation", "SecurityRequirement", "SBOMEntry", "SoftwareModule");
25
23
  attribute :>> includeRelationshipKinds = ("ImpactsSafety", "Mitigates", "DerivesCyberRequirement", "AssessedAgainst", "DependsOnSoup");
26
24
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
27
25
  }
@@ -10,18 +10,16 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_m
10
10
  private import memo_core_common::MemoIdentity;
11
11
  view threatModelView : MemoCybersecurityThreatModelView {
12
12
  expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_model_view::*;
13
- @MemoIdentity { :>> providedId = "DOC-002"; }
14
- attribute :>> name = "GPCACyberThreatModelView";
13
+ @MemoIdentity { :>> providedId = "DOC-002"; :>> label = "GPCACyberThreatModelView"; }
15
14
  @MemoIdentity { :>> shortDescription = "Threat-model-oriented document view for GPCA."; }
16
- attribute :>> description = "Captures GPCA cyber assets, trust boundaries, threats, threat scenarios, vulnerabilities, and mitigations for secure product development records.";
15
+ doc /* Captures GPCA cyber assets, trust boundaries, threats, threat scenarios, vulnerabilities, and mitigations for secure product development records. */
17
16
  attribute :>> version = "0.1";
18
17
  attribute :>> lifecycleState = LifecycleStateKind::development;
19
18
  attribute :>> marketScope = "generic";
20
19
  ref :>> viewpointDefinition = cybersecurityViewpoint;
21
20
  part :>> selectionQuery {
22
- @MemoIdentity { :>> providedId = "QRY-DOC-008"; }
23
- attribute :>> name = "threatModelViewQuery";
24
- attribute :>> includeElementKinds = ("Threat", "OperativeScenario[scenarioKind=threat]", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
21
+ @MemoIdentity { :>> providedId = "QRY-DOC-008"; :>> label = "threatModelViewQuery"; }
22
+ attribute :>> includeElementKinds = ("Threat", "OperativeScenario", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
25
23
  attribute :>> includeRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "CrossesTrustBoundary", "Mitigates", "DerivesCyberRequirement");
26
24
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
27
25
  }
@@ -18,8 +18,7 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
18
18
  view gpcaFunctionAllocationView : MemoDiagramView {
19
19
  expose memo_examples_gpca_pump_viewpoints_functional_views_functional_function_allocation_view::*;
20
20
  attribute depth = 2;
21
- @MemoIdentity { :>> providedId = "VIEW-FUN-102"; }
22
- attribute :>> name = "GPCA_FunctionAllocationView";
21
+ @MemoIdentity { :>> providedId = "VIEW-FUN-102"; :>> label = "GPCA_FunctionAllocationView"; }
23
22
  @MemoIdentity { :>> shortDescription = "Allocation of logical functions to software components and hardware assemblies."; }
24
23
  attribute :>> outputKind = (ViewOutputKind::matrix);
25
24
  attribute :>> presentationKind = (PresentationKind::traceMatrix);
@@ -29,8 +28,7 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
29
28
  attribute :>> autoPopulate = true;
30
29
  attribute :>> queryDescription = "Include logical functions with their AllocatedTo targets.";
31
30
  part :>> selectionQuery {
32
- @MemoIdentity { :>> providedId = "QRY-FUN-102"; }
33
- attribute :>> name = "GPCA_FunctionAllocationQuery";
31
+ @MemoIdentity { :>> providedId = "QRY-FUN-102"; :>> label = "GPCA_FunctionAllocationQuery"; }
34
32
  attribute :>> includeElementKinds = ("SystemFunction", "SoftwareModule", "HardwareAssembly");
35
33
  attribute :>> includeRelationshipKinds = ("AllocatedTo");
36
34
  attribute :>> includeLayers = ("functions", "software_structure", "hardware_structure");
@@ -18,10 +18,9 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
18
18
  view gpcaFunctionBrowserView : MemoDiagramView {
19
19
  expose memo_examples_gpca_pump_viewpoints_functional_views_functional_function_browser_view::*;
20
20
  attribute depth = 2;
21
- @MemoIdentity { :>> providedId = "VIEW-FUN-103"; }
22
- attribute :>> name = "GPCA_FunctionBrowserView";
21
+ @MemoIdentity { :>> providedId = "VIEW-FUN-103"; :>> label = "GPCA_FunctionBrowserView"; }
23
22
  @MemoIdentity { :>> shortDescription = "Membership tree over the functions layer: logical functions, flows, and the exchange item definitions, grouped by kind."; }
24
- attribute :>> description = "Browser view (SysML v2 browser view kind) exposing the functions-layer membership hierarchy as a first-class view: the eleven logical functions, the logical flows connecting them, and the data/control definitions they exchange — with kind icons, expand/collapse, and filtering.";
23
+ doc /* Browser view (SysML v2 browser view kind) exposing the functions-layer membership hierarchy as a first-class view: the eleven logical functions, the logical flows connecting them, and the data/control definitions they exchange — with kind icons, expand/collapse, and filtering. */
25
24
  attribute :>> outputKind = (ViewOutputKind::diagram);
26
25
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
27
26
  attribute :>> viewKind = DiagramViewKind::browser;
@@ -29,9 +28,11 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
29
28
  attribute :>> autoPopulate = true;
30
29
  attribute :>> queryDescription = "Include the functions layer's functions, flows, and exchange item definitions.";
31
30
  part :>> selectionQuery {
32
- @MemoIdentity { :>> providedId = "QRY-FUN-103"; }
33
- attribute :>> name = "GPCA_FunctionBrowserQuery";
34
- attribute :>> includeElementKinds = ("SystemFunction", "FunctionalExchange", "InterfaceItem");
31
+ @MemoIdentity { :>> providedId = "QRY-FUN-103"; :>> label = "GPCA_FunctionBrowserQuery"; }
32
+ // No "FunctionalExchange": an exchange is a flow between two
33
+ // functions, not an element, so it is drawn as the edge between
34
+ // the selected functions rather than selected by kind.
35
+ attribute :>> includeElementKinds = ("SystemFunction", "InterfaceItem");
35
36
  attribute :>> includeLayers = ("functions");
36
37
  attribute :>> selectionExpression = "product == 'GPCA'";
37
38
  attribute :>> rationaleText = "Auto-populate the function browser from the functions layer.";
@@ -18,10 +18,9 @@ package memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_vi
18
18
  view gpcaActionFlowView : MemoDiagramView {
19
19
  expose memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_view::*;
20
20
  attribute depth = 2;
21
- @MemoIdentity { :>> providedId = "VIEW-BHV-003"; }
22
- attribute :>> name = "GPCA_InfusionDeliveryActionFlowView";
21
+ @MemoIdentity { :>> providedId = "VIEW-BHV-003"; :>> label = "GPCA_InfusionDeliveryActionFlowView"; }
23
22
  @MemoIdentity { :>> shortDescription = "The 20 ms execution-step pipeline from sensor acquisition through alarm evaluation and dose limiting to pump actuation and event logging."; }
24
- attribute :>> description = "Action flow over the infusionDeliveryFlow composite action: typed action steps with in/out parameters, item flows carrying the DD/CD exchange items, succession ordering from start to done, and swimlane allocation onto the logical architecture (sensors, alarm, infusion manager, pump motor, logging).";
23
+ doc /* Action flow over the infusionDeliveryFlow composite action: typed action steps with in/out parameters, item flows carrying the DD/CD exchange items, succession ordering from start to done, and swimlane allocation onto the logical architecture (sensors, alarm, infusion manager, pump motor, logging). */
25
24
  attribute :>> outputKind = (ViewOutputKind::diagram);
26
25
  attribute :>> presentationKind = (PresentationKind::activityDiagram);
27
26
  attribute :>> viewKind = DiagramViewKind::actionflow;
@@ -30,9 +29,8 @@ package memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_vi
30
29
  attribute :>> autoPopulate = true;
31
30
  attribute :>> queryDescription = "Include the nested action usages of the infusion delivery flow with their flows and successions.";
32
31
  part :>> selectionQuery {
33
- @MemoIdentity { :>> providedId = "QRY-BHV-103"; }
34
- attribute :>> name = "GPCA_ActionFlowQuery";
35
- attribute :>> includeElementKinds = ("ActionUsage");
32
+ @MemoIdentity { :>> providedId = "QRY-BHV-103"; :>> label = "GPCA_ActionFlowQuery"; }
33
+ attribute :>> includeElementKinds = ("MemoAction");
36
34
  attribute :>> selectionExpression = "product == 'GPCA'";
37
35
  attribute :>> rationaleText = "Auto-populate the action flow view from the behavior layer's action usages.";
38
36
  }