@memoarchitect/ontology 0.8.22 → 0.10.9

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 (240) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  4. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  5. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
  8. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  9. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
  12. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  13. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  15. package/examples/gpca-pump/memo.package.yaml +3 -0
  16. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  17. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  18. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  33. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
  35. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
  37. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
  38. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
  39. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
  40. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
  41. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
  42. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
  47. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
  50. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
  51. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
  52. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
  53. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
  54. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
  55. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
  56. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
  57. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
  58. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
  59. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
  60. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  61. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
  62. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  63. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  64. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  65. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
  66. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  67. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  68. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  69. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  70. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  71. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  72. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  73. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  74. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  75. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  76. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  77. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  78. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  79. package/examples/reusable-instrument/memo.package.yaml +3 -0
  80. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  81. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
  82. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  83. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  84. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  85. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  86. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  87. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  88. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  89. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
  90. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  91. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  92. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  93. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
  94. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  95. package/examples/surgical-robot/memo.package.yaml +3 -0
  96. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  97. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  98. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  99. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  100. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  101. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
  102. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
  103. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
  104. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
  105. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
  106. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
  107. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
  108. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
  109. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
  110. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
  111. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  112. package/examples/temperature-alarm/memo.package.yaml +3 -0
  113. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  114. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
  115. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  116. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  117. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  118. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  119. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  120. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  121. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  122. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  123. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  124. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  125. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  126. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  127. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  128. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  129. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  130. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  131. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
  132. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
  133. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
  134. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
  135. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
  136. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
  137. package/extensions/aadl/memo.package.yaml +1 -1
  138. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  139. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  140. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  141. package/extensions/cloud/memo.package.yaml +1 -1
  142. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  143. package/extensions/container/memo.package.yaml +1 -1
  144. package/extensions/container/src/container_extension.sysml +2 -2
  145. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  146. package/extensions/messaging/memo.package.yaml +1 -1
  147. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  148. package/extensions/ros/memo.package.yaml +1 -1
  149. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  150. package/extensions/template/src/extension.sysml +3 -1
  151. package/methodologies/default/memo.package.yaml +1 -1
  152. package/methodologies/gpca/memo.package.yaml +1 -1
  153. package/ontology/memo.package.yaml +1 -1
  154. package/package.json +2 -2
  155. package/profile/memo.package.yaml +1 -1
  156. package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
  157. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  158. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  159. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  160. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  161. package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
  162. package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
  163. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  164. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  165. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  166. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  167. package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
  168. package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
  169. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  170. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
  171. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
  172. package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
  173. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  174. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  175. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  176. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  177. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  178. package/src/artifacts/standards/iec_60812.sysml +21 -22
  179. package/src/artifacts/standards/iec_62304.sysml +150 -169
  180. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  181. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  182. package/src/artifacts/standards/iso_13485.sysml +80 -89
  183. package/src/artifacts/standards/iso_14971.sysml +66 -73
  184. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  185. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  186. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  187. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  188. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  189. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  190. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  191. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  192. package/src/core/common/memo_common.sysml +59 -55
  193. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  194. package/src/core/relationships/memo_relationships.sysml +29 -56
  195. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  196. package/src/methodology/core/memo_core.sysml +0 -10
  197. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  198. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  199. package/src/rules/closure/closure_rules.sysml +22 -20
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  201. package/src/rules/ontology/ontology_invariants.sysml +121 -48
  202. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  203. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
  204. package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
  205. package/src/viewpoints/context/context_viewpoint.sysml +6 -5
  206. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
  207. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
  208. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
  209. package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
  210. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
  211. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
  212. package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
  213. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
  214. package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
  215. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
  216. package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
  217. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
  218. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
  219. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  220. package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
  221. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
  222. package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
  223. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
  224. package/src/viewpoints/software/software_viewpoint.sysml +5 -4
  225. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
  226. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
  227. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  228. package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
  229. package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
  230. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
  231. package/templates/connected-device/memo.package.yaml +2 -0
  232. package/templates/connected-device/model/catalog/project.sysml +3 -1
  233. package/templates/default/memo.package.yaml +2 -0
  234. package/templates/default/model/catalog/project.sysml +3 -1
  235. package/templates/infusion-pump/memo.package.yaml +2 -0
  236. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  237. package/templates/monitoring-device/memo.package.yaml +2 -0
  238. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  239. package/templates/samd/memo.package.yaml +2 -0
  240. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -13,13 +13,14 @@ package memo_examples_gpca_pump_viewpoints_software_views_software_software_arch
13
13
  private import memo_viewpoints_verification_verification_viewpoint::*;
14
14
  private import memo_core_enumerations::*;
15
15
 
16
+ private import memo_core_common::*;
17
+ private import memo_core_common::MemoIdentity;
16
18
  view gpcaSoftwareArchitectureView : MemoDiagramView {
17
19
  expose memo_examples_gpca_pump_viewpoints_software_views_software_software_architecture_view::*;
18
20
  attribute depth = 2;
19
- attribute :>> id = "VIEW-SW-101";
21
+ @MemoIdentity { :>> providedId = "VIEW-SW-101"; }
20
22
  attribute :>> name = "GPCA_SoftwareArchitectureView";
21
- attribute :>> title = "GPCA Software Architecture View";
22
- attribute :>> shortDescription = "The eight AADL GPCA_SW.Impl subcomponents, top-level ports, and the full inter-component connection topology.";
23
+ @MemoIdentity { :>> shortDescription = "The eight AADL GPCA_SW.Impl subcomponents, top-level ports, and the full inter-component connection topology."; }
23
24
  attribute :>> description = "Top_Level_Mode, System_Status, Alarm, Config, Infusion_Manager, System_Monitor, Logging, and OutputBus inside the GPCA_Software system, wired per GPCA_SW.Impl with the seven top-level ports (OP_CMD_IN, PRES_IN, PATIENT_IN, SENSOR_IN, CONST_IN, DB_IN, GPCA_SW_OUT). Connections are synchronous with AADL immediate port semantics.";
24
25
  attribute :>> outputKind = (ViewOutputKind::diagram);
25
26
  attribute :>> presentationKind = (PresentationKind::internalDiagram);
@@ -28,9 +29,8 @@ package memo_examples_gpca_pump_viewpoints_software_views_software_software_arch
28
29
  attribute :>> dataSourceDescription = "GPCA software structure, top-level ports, and the GPCA_SW.Impl connection set (CE-101..CE-142)";
29
30
  attribute :>> autoPopulate = true;
30
31
  attribute :>> queryDescription = "Include the software system, its eight components, its boundary ports, and the flow and delegation topology between them.";
31
- attribute :>> documentUsage = ("SDD", "QMSR");
32
32
  part :>> selectionQuery {
33
- attribute :>> id = "QRY-SW-101";
33
+ @MemoIdentity { :>> providedId = "QRY-SW-101"; }
34
34
  attribute :>> name = "GPCA_SoftwareArchitectureQuery";
35
35
  attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "SoftwarePort");
36
36
  attribute :>> includeRelationshipKinds = ("flow", "bind", "Composes");
@@ -38,6 +38,6 @@ package memo_examples_gpca_pump_viewpoints_software_views_software_software_arch
38
38
  attribute :>> selectionExpression = "product == 'GPCA'";
39
39
  attribute :>> rationaleText = "Render the real GPCA_SW.Impl topology: components and boundary ports as nodes, AADL connections as edges.";
40
40
  }
41
- part :>> viewpointDefinition = softwareViewpoint;
41
+ ref :>> viewpointDefinition = softwareViewpoint;
42
42
  }
43
43
  }
@@ -7,25 +7,24 @@ package memo_examples_gpca_pump_viewpoints_usability_views_document_usability_vi
7
7
  private import memo_core_enumerations::*;
8
8
  private import memo_examples_gpca_pump_gpca_verification::*;
9
9
 
10
+ private import memo_core_common::*;
11
+ private import memo_core_common::MemoIdentity;
10
12
  view usabilityView : MemoUsabilityEngineeringView {
11
13
  expose memo_examples_gpca_pump_viewpoints_usability_views_document_usability_view::*;
12
14
  expose evidenceUsability;
13
- attribute :>> id = "DOC-008";
15
+ @MemoIdentity { :>> providedId = "DOC-008"; }
14
16
  attribute :>> name = "UsabilityEngineeringFileView";
15
- attribute :>> title = "GPCA Usability Engineering File View";
16
- attribute :>> shortDescription = "IEC 62366-1 usability engineering file content for GPCA.";
17
+ @MemoIdentity { :>> shortDescription = "IEC 62366-1 usability engineering file content for GPCA."; }
17
18
  attribute :>> description = "Aggregates intended use, use contexts, actors, foreseeable use errors, related risk chains, usability requirements, and the summative usability validation case.";
18
19
  attribute :>> version = "0.1";
19
20
  attribute :>> lifecycleState = LifecycleStateKind::development;
20
21
  attribute :>> marketScope = "generic";
21
- attribute :>> documentUsage = ("Usability Engineering File", "DHF");
22
- attribute :>> sectionIdentifier = "UEF";
23
- part :>> viewpointDefinition = usabilityViewpoint;
22
+ ref :>> viewpointDefinition = usabilityViewpoint;
24
23
  part :>> selectionQuery {
25
- attribute :>> id = "QRY-DOC-002";
24
+ @MemoIdentity { :>> providedId = "QRY-DOC-002"; }
26
25
  attribute :>> name = "usabilityViewQuery";
27
- attribute :>> includeElementKinds = ("UseError", "UseContext", "Actor", "ValidationCase", "MemoScenario[scenarioKind=operative]", "IntendedUse", "ReasonablyForeseeableMisuse");
28
- attribute :>> includeRelationshipKinds = ("TestedByUsability", "RealizedByScenario", "InteractsWith");
26
+ attribute :>> includeElementKinds = ("UseError", "UseContext", "Actor", "ValidationCase", "OperativeScenario[scenarioKind=operative]", "IntendedUse", "ReasonablyForeseeableMisuse");
27
+ attribute :>> includeRelationshipKinds = ("TestedByUsability", "RealizedByScenario", "connect");
29
28
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
30
29
  }
31
30
  }
@@ -6,24 +6,23 @@ package memo_examples_gpca_pump_viewpoints_verification_views_document_vv_view {
6
6
  private import memo_core_enumerations::*;
7
7
  private import memo_examples_gpca_pump_gpca_verification::*;
8
8
 
9
+ private import memo_core_common::*;
10
+ private import memo_core_common::MemoIdentity;
9
11
  view vvView : MemoDocumentView {
10
12
  expose memo_examples_gpca_pump_viewpoints_verification_views_document_vv_view::*;
11
13
  expose evidenceSafetyAlarmSuite;
12
- attribute :>> id = "DOC-006";
14
+ @MemoIdentity { :>> providedId = "DOC-006"; }
13
15
  attribute :>> name = "VerificationValidationView";
14
- attribute :>> title = "GPCA Verification and Validation View";
15
- attribute :>> shortDescription = "V&V plan and coverage for requirements and risk controls.";
16
+ @MemoIdentity { :>> shortDescription = "V&V plan and coverage for requirements and risk controls."; }
16
17
  attribute :>> description = "Aggregates verification cases, validation cases, test artifacts, and evidence with their coverage of requirements, risk controls, behavior properties, and timing constraints.";
17
18
  attribute :>> version = "0.1";
18
19
  attribute :>> lifecycleState = LifecycleStateKind::development;
19
20
  attribute :>> viewKind = DocumentViewKind::VV;
20
21
  attribute :>> generationRule = "Include all VerifiedBy, Validates, and ProducesEvidence chains with status";
21
22
  attribute :>> marketScope = "generic";
22
- attribute :>> documentUsage = ("VV", "DHF", "QMSR");
23
- attribute :>> sectionIdentifier = "VV";
24
- part :>> viewpointDefinition = verificationViewpoint;
23
+ ref :>> viewpointDefinition = verificationViewpoint;
25
24
  part :>> selectionQuery {
26
- attribute :>> id = "QRY-DOC-006";
25
+ @MemoIdentity { :>> providedId = "QRY-DOC-006"; }
27
26
  attribute :>> name = "vvViewQuery";
28
27
  attribute :>> includeElementKinds = ("VerificationCase", "ValidationCase", "MemoEvidence", "Requirement", "RiskControlMeasure");
29
28
  attribute :>> includeRelationshipKinds = ("VerifiedBy", "Validates", "TestedByUsability", "ProducesEvidence");
@@ -13,13 +13,14 @@ package memo_examples_gpca_pump_viewpoints_verification_views_verification_verif
13
13
  private import memo_viewpoints_verification_verification_viewpoint::*;
14
14
  private import memo_core_enumerations::*;
15
15
 
16
+ private import memo_core_common::*;
17
+ private import memo_core_common::MemoIdentity;
16
18
  view gpcaVerificationCoverageView : MemoDiagramView {
17
19
  expose memo_examples_gpca_pump_viewpoints_verification_views_verification_verification_coverage_view::*;
18
20
  attribute depth = 2;
19
- attribute :>> id = "VIEW-VER-101";
21
+ @MemoIdentity { :>> providedId = "VIEW-VER-101"; }
20
22
  attribute :>> name = "GPCA_VerificationCoverageView";
21
- attribute :>> title = "GPCA Verification and Validation Coverage View";
22
- attribute :>> shortDescription = "Requirements and risk controls against verification cases, validation cases, and evidence.";
23
+ @MemoIdentity { :>> shortDescription = "Requirements and risk controls against verification cases, validation cases, and evidence."; }
23
24
  attribute :>> outputKind = (ViewOutputKind::matrix);
24
25
  attribute :>> presentationKind = (PresentationKind::traceMatrix);
25
26
  attribute :>> viewKind = DiagramViewKind::grid;
@@ -27,9 +28,8 @@ package memo_examples_gpca_pump_viewpoints_verification_views_verification_verif
27
28
  attribute :>> dataSourceDescription = "VerifiedBy, Validates, and ProducesEvidence links in the GPCA model";
28
29
  attribute :>> autoPopulate = true;
29
30
  attribute :>> queryDescription = "Include every requirement and risk control with its verification/validation status and produced evidence.";
30
- attribute :>> documentUsage = ("VV", "DHF", "QMSR");
31
31
  part :>> selectionQuery {
32
- attribute :>> id = "QRY-VER-101";
32
+ @MemoIdentity { :>> providedId = "QRY-VER-101"; }
33
33
  attribute :>> name = "GPCA_VerificationCoverageQuery";
34
34
  attribute :>> includeElementKinds = ("Requirement", "RiskControlMeasure", "VerificationCase", "ValidationCase", "MemoEvidence");
35
35
  attribute :>> includeRelationshipKinds = ("VerifiedBy", "Validates", "ProducesEvidence");
@@ -37,6 +37,6 @@ package memo_examples_gpca_pump_viewpoints_verification_views_verification_verif
37
37
  attribute :>> selectionExpression = "product == 'GPCA'";
38
38
  attribute :>> rationaleText = "Coverage gaps surface as requirements or controls without linked cases or evidence.";
39
39
  }
40
- part :>> viewpointDefinition = verificationViewpoint;
40
+ ref :>> viewpointDefinition = verificationViewpoint;
41
41
  }
42
42
  }
@@ -0,0 +1,3 @@
1
+ name: ivd-laboratory-system
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -11,34 +11,36 @@ package memo_examples_ivd_laboratory_system {
11
11
  private import memo_architecture_logical_structure::*;
12
12
  private import memo_architecture_implementation_hardware_structure::*;
13
13
 
14
+ private import memo_core_common::*;
15
+ private import memo_core_common::MemoIdentity;
14
16
  part analyzer : PhysicalAssembly {
15
- attribute :>> id = "IVD-DEV-001"; attribute :>> name = "ChemAnalyzer";
17
+ @MemoIdentity { :>> providedId = "IVD-DEV-001"; } attribute :>> name = "ChemAnalyzer";
16
18
  attribute :>> responsibility = "automate clinical chemistry measurements";
17
19
  }
18
20
 
19
21
  // Specimen path: material flow through fluidic hardware.
20
22
  part fluidSampleProbe : FluidicComponent {
21
- attribute :>> id = "IVD-HW-001"; attribute :>> name = "SampleProbe";
23
+ @MemoIdentity { :>> providedId = "IVD-HW-001"; } attribute :>> name = "SampleProbe";
22
24
  attribute :>> fluidPathRole = "aspirates specimen from primary tube";
23
25
  }
24
26
  part fluidReactionCuvette : FluidicComponent {
25
- attribute :>> id = "IVD-HW-002"; attribute :>> name = "ReactionCuvette";
27
+ @MemoIdentity { :>> providedId = "IVD-HW-002"; } attribute :>> name = "ReactionCuvette";
26
28
  attribute :>> fluidPathRole = "holds specimen-reagent reaction mix";
27
29
  }
28
30
  part optPhotometer : OpticalComponent {
29
- attribute :>> id = "IVD-HW-003"; attribute :>> name = "PhotometerAssembly";
31
+ @MemoIdentity { :>> providedId = "IVD-HW-003"; } attribute :>> name = "PhotometerAssembly";
30
32
  attribute :>> opticalFunction = "absorbance measurement";
31
33
  attribute :>> wavelengthRange = "340-800 nm";
32
34
  }
33
35
  part exSpecimenFlow : LogicalExchange {
34
- attribute :>> id = "IVD-EX-001"; attribute :>> name = "SpecimenTransfer";
36
+ @MemoIdentity { :>> providedId = "IVD-EX-001"; } attribute :>> name = "SpecimenTransfer";
35
37
  attribute :>> contentKind = FlowContentKind::material;
36
38
  attribute :>> direction = DirectionKind::output;
37
39
  }
38
40
 
39
41
  // Result item coded with LOINC.
40
42
  item glucoseResult : LogicalExchangeItem {
41
- attribute :>> id = "IVD-IT-001"; attribute :>> name = "GlucoseResult";
43
+ @MemoIdentity { :>> providedId = "IVD-IT-001"; } attribute :>> name = "GlucoseResult";
42
44
  attribute :>> contentKind = FlowContentKind::measurement;
43
45
  attribute :>> unit = "mg/dL";
44
46
  attribute :>> timestampRequired = true;
@@ -51,8 +53,8 @@ package memo_examples_ivd_laboratory_system {
51
53
  }
52
54
 
53
55
  // Operating activity for the analyzer.
54
- action actRunPanel : OperationalActivity {
55
- attribute :>> id = "IVD-ACT-001"; attribute :>> name = "RunChemistryPanel";
56
+ action actRunPanel : OperativeAction {
57
+ @MemoIdentity { :>> providedId = "IVD-ACT-001"; } attribute :>> name = "RunChemistryPanel";
56
58
  attribute :>> criticality = CriticalityKind::high;
57
59
  }
58
60
  }
@@ -14,8 +14,10 @@ package memo_examples_ivd_laboratory_system_project {
14
14
  private import memo_examples_ivd_laboratory_system_viewpoints_unassigned::*;
15
15
  private import memo_examples_ivd_laboratory_system_viewpoints_unassigned_views_ivd_laboratory_system_overview::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  part projectBinding : ProjectMethodBinding {
18
- attribute :>> id = "PMB-LABORATORY-SYSTEM-001";
20
+ @MemoIdentity { :>> providedId = "PMB-LABORATORY-SYSTEM-001"; }
19
21
  attribute :>> name = "IvdLaboratorySystemProjectMethodBinding";
20
22
  attribute :>> projectName = "Ivd Laboratory System";
21
23
  ref :>> selectedMethodology = mdDefaultDefinition;
@@ -2,5 +2,5 @@ package memo_examples_ivd_laboratory_system_viewpoints_unassigned_views_ivd_labo
2
2
  private import memo_examples_ivd_laboratory_system::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
5
- view ivdLaboratorySystemOverview : MemoDiagramView { expose memo_examples_ivd_laboratory_system::*; attribute depth = 2; attribute :>> title = "IVD Laboratory System Overview"; attribute :>> viewKind = DiagramViewKind::interconnection; attribute :>> diagramType = "ibd"; }
5
+ view ivdLaboratorySystemOverview : MemoDiagramView { expose memo_examples_ivd_laboratory_system::*; attribute depth = 2; attribute :>> viewKind = DiagramViewKind::interconnection; attribute :>> diagramType = "ibd"; }
6
6
  }
@@ -0,0 +1,3 @@
1
+ name: manual-surgical-instrument
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -10,14 +10,16 @@ package memo_examples_manual_surgical_instrument {
10
10
  private import memo_architecture_operational_activities::*;
11
11
  private import memo_architecture_implementation_hardware_structure::*;
12
12
 
13
+ private import memo_core_common::*;
14
+ private import memo_core_common::MemoIdentity;
13
15
  // ── Modeled product and physical structure ──────────────────
14
16
  part needleHolder : PhysicalAssembly {
15
- attribute :>> id = "MSI-DEV-001";
17
+ @MemoIdentity { :>> providedId = "MSI-DEV-001"; }
16
18
  attribute :>> name = "NeedleHolder";
17
19
  attribute :>> responsibility = "grasp and drive a suture needle";
18
20
  }
19
21
  part jawAssembly : MechanicalPart {
20
- attribute :>> id = "MSI-PART-001";
22
+ @MemoIdentity { :>> providedId = "MSI-PART-001"; }
21
23
  attribute :>> name = "TungstenCarbideJaws";
22
24
  attribute :>> mechanicalFunction = "serrated needle grip";
23
25
  attribute :>> patientContact = true;
@@ -25,7 +27,7 @@ package memo_examples_manual_surgical_instrument {
25
27
  attribute :>> contactDuration = "limited (<24 h)";
26
28
  }
27
29
  part ratchetLock : MechanicalPart {
28
- attribute :>> id = "MSI-PART-002";
30
+ @MemoIdentity { :>> providedId = "MSI-PART-002"; }
29
31
  attribute :>> name = "RatchetLock";
30
32
  attribute :>> mechanicalFunction = "maintains jaw clamping force without continuous grip";
31
33
  attribute :>> patientContact = false;
@@ -35,8 +37,8 @@ package memo_examples_manual_surgical_instrument {
35
37
 
36
38
  // A task may be traced to the architecture later when the project has a
37
39
  // specific allocation or interaction claim to make.
38
- action taskPlaceSutures : UserTask {
39
- attribute :>> id = "MSI-TASK-001";
40
+ action taskPlaceSutures : OperativeAction {
41
+ @MemoIdentity { :>> providedId = "MSI-TASK-001"; }
40
42
  attribute :>> name = "PlaceSutures";
41
43
  attribute :>> taskGoal = "place interrupted sutures";
42
44
  }
@@ -14,8 +14,10 @@ package memo_examples_manual_surgical_instrument_project {
14
14
  private import memo_examples_manual_surgical_instrument_viewpoints_unassigned::*;
15
15
  private import memo_examples_manual_surgical_instrument_viewpoints_unassigned_views_manual_surgical_instrument_overview::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  part projectBinding : ProjectMethodBinding {
18
- attribute :>> id = "PMB-SURGICAL-INSTRUMENT-001";
20
+ @MemoIdentity { :>> providedId = "PMB-SURGICAL-INSTRUMENT-001"; }
19
21
  attribute :>> name = "ManualSurgicalInstrumentProjectMethodBinding";
20
22
  attribute :>> projectName = "Manual Surgical Instrument";
21
23
  ref :>> selectedMethodology = mdDefaultDefinition;
@@ -2,5 +2,5 @@ package memo_examples_manual_surgical_instrument_viewpoints_unassigned_views_man
2
2
  private import memo_examples_manual_surgical_instrument::*;
3
3
  private import memo_viewpoints_definitions::*;
4
4
  private import memo_core_enumerations::*;
5
- view manualSurgicalInstrumentOverview : MemoDiagramView { expose memo_examples_manual_surgical_instrument::*; attribute depth = 2; attribute :>> title = "Manual Surgical Instrument Overview"; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
5
+ view manualSurgicalInstrumentOverview : MemoDiagramView { expose memo_examples_manual_surgical_instrument::*; attribute depth = 2; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
6
6
  }
@@ -0,0 +1,3 @@
1
+ name: multidimensional-layers
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -17,8 +17,10 @@ package memo_examples_multidimensional_layers {
17
17
  private import memo_assurance_verification_validation::*;
18
18
  private import memo_core_relationships::*;
19
19
 
20
+ private import memo_core_common::*;
21
+ private import memo_core_common::MemoIdentity;
20
22
  part doseLimitChecker : SoftwareModule {
21
- attribute :>> id = "MDL-SW-001";
23
+ @MemoIdentity { :>> providedId = "MDL-SW-001"; }
22
24
  attribute :>> name = "DoseLimitChecker";
23
25
  attribute :>> responsibility = "Reject therapy parameters outside the drug library's hard limits.";
24
26
  attribute :>> safetyClass = SafetyClassKind::C;
@@ -33,7 +35,7 @@ package memo_examples_multidimensional_layers {
33
35
  // The SAME identity progresses through realization stages — a deployed
34
36
  // configuration is a stage of the element, not a second element.
35
37
  part doseLimitCheckerRuntime : SoftwareComponent {
36
- attribute :>> id = "MDL-RT-001";
38
+ @MemoIdentity { :>> providedId = "MDL-RT-001"; }
37
39
  attribute :>> name = "DoseLimitCheckerTask";
38
40
  attribute :>> periodMs = 50.0;
39
41
  attribute :>> deadlineMs = 50.0;
@@ -45,8 +47,8 @@ package memo_examples_multidimensional_layers {
45
47
  #refinement dependency doseLimitCheckerRuntime to doseLimitChecker;
46
48
 
47
49
  verification vcLimitEnforcement : VerificationCase {
48
- attribute :>> id = "MDL-VC-001"; attribute :>> name = "VerifyHardLimitEnforcement";
49
- attribute :>> methodKind = VerificationMethodKind::test;
50
+ @MemoIdentity { :>> providedId = "MDL-VC-001"; } attribute :>> name = "VerifyHardLimitEnforcement";
51
+ attribute :>> methodKind = MemoVerificationMethodKind::test;
50
52
  attribute :>> acceptanceCriteria = "all out-of-limit programs rejected across the equivalence classes";
51
53
 
52
54
  subject verified : Base::Anything[*] = (doseLimitChecker);
@@ -14,8 +14,10 @@ package memo_examples_multidimensional_layers_project {
14
14
  private import memo_examples_multidimensional_layers_viewpoints_unassigned::*;
15
15
  private import memo_examples_multidimensional_layers_viewpoints_unassigned_views_multidimensional_layers_overview::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  part projectBinding : ProjectMethodBinding {
18
- attribute :>> id = "PMB-MULTIDIMENSIONAL-LAYERS-001";
20
+ @MemoIdentity { :>> providedId = "PMB-MULTIDIMENSIONAL-LAYERS-001"; }
19
21
  attribute :>> name = "MultidimensionalLayersProjectMethodBinding";
20
22
  attribute :>> projectName = "Multidimensional Layers";
21
23
  ref :>> selectedMethodology = mdDefaultDefinition;
@@ -6,7 +6,6 @@ package memo_examples_multidimensional_layers_viewpoints_unassigned_views_multid
6
6
  view multidimensionalLayersOverview : MemoDiagramView {
7
7
  expose memo_examples_multidimensional_layers::*;
8
8
  attribute depth = 2;
9
- attribute :>> title = "Multidimensional Layers Overview";
10
9
  attribute :>> viewKind = DiagramViewKind::general;
11
10
  attribute :>> diagramType = "bdd";
12
11
  }
@@ -0,0 +1,3 @@
1
+ name: nested-architecture-dsm
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -14,30 +14,32 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
14
14
  private import memo_architecture_functional_functions::*;
15
15
  private import memo_architecture_operational_context_use_context::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  // ── Deliver therapy ──────────────────────────────────────────
18
20
  action fnDeliverTherapy : SystemFunction {
19
- attribute :>> id = "NDS-FN-001"; attribute :>> name = "DeliverTherapy";
21
+ @MemoIdentity { :>> providedId = "NDS-FN-001"; } attribute :>> name = "DeliverTherapy";
20
22
  attribute :>> functionCategory = "therapy";
21
23
  attribute :>> criticality = CriticalityKind::catastrophic;
22
24
  attribute :>> concernKind = ConcernKind::safety;
23
25
  attribute :>> outputSummary = "fluid delivered to the patient line at the prescribed rate";
24
26
 
25
27
  action fnMeterFluid : SystemFunction {
26
- attribute :>> id = "NDS-FN-002"; attribute :>> name = "MeterFluid";
28
+ @MemoIdentity { :>> providedId = "NDS-FN-002"; } attribute :>> name = "MeterFluid";
27
29
  attribute :>> functionCategory = "therapy";
28
30
  attribute :>> criticality = CriticalityKind::catastrophic;
29
31
  attribute :>> concernKind = ConcernKind::safety;
30
32
  attribute :>> outputSummary = "measured volume displaced per control period";
31
33
 
32
34
  action fnDriveActuator : SystemFunction {
33
- attribute :>> id = "NDS-FN-003"; attribute :>> name = "DriveActuator";
35
+ @MemoIdentity { :>> providedId = "NDS-FN-003"; } attribute :>> name = "DriveActuator";
34
36
  attribute :>> functionCategory = "therapy";
35
37
  attribute :>> criticality = CriticalityKind::catastrophic;
36
38
  attribute :>> trigger = "rate command from the dose control loop";
37
39
  attribute :>> concernKind = ConcernKind::safety;
38
40
  }
39
41
  action fnMeasureDelivered : SystemFunction {
40
- attribute :>> id = "NDS-FN-004"; attribute :>> name = "MeasureDeliveredVolume";
42
+ @MemoIdentity { :>> providedId = "NDS-FN-004"; } attribute :>> name = "MeasureDeliveredVolume";
41
43
  attribute :>> functionCategory = "therapy";
42
44
  attribute :>> criticality = CriticalityKind::high;
43
45
  attribute :>> concernKind = ConcernKind::safety;
@@ -45,20 +47,20 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
45
47
  }
46
48
  }
47
49
  action fnControlDose : SystemFunction {
48
- attribute :>> id = "NDS-FN-005"; attribute :>> name = "ControlDose";
50
+ @MemoIdentity { :>> providedId = "NDS-FN-005"; } attribute :>> name = "ControlDose";
49
51
  attribute :>> functionCategory = "therapy";
50
52
  attribute :>> criticality = CriticalityKind::catastrophic;
51
53
  attribute :>> concernKind = ConcernKind::safety;
52
54
 
53
55
  action fnComputeRate : SystemFunction {
54
- attribute :>> id = "NDS-FN-006"; attribute :>> name = "ComputeInfusionRate";
56
+ @MemoIdentity { :>> providedId = "NDS-FN-006"; } attribute :>> name = "ComputeInfusionRate";
55
57
  attribute :>> functionCategory = "therapy";
56
58
  attribute :>> criticality = CriticalityKind::catastrophic;
57
59
  attribute :>> concernKind = ConcernKind::safety;
58
60
  attribute :>> outputSummary = "rate command, saturated at the prescribed ceiling";
59
61
  }
60
62
  action fnValidatePrescription : SystemFunction {
61
- attribute :>> id = "NDS-FN-007"; attribute :>> name = "ValidatePrescription";
63
+ @MemoIdentity { :>> providedId = "NDS-FN-007"; } attribute :>> name = "ValidatePrescription";
62
64
  attribute :>> functionCategory = "therapy";
63
65
  attribute :>> criticality = CriticalityKind::high;
64
66
  attribute :>> concernKind = ConcernKind::clinical;
@@ -69,27 +71,27 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
69
71
 
70
72
  // ── Ensure safety ────────────────────────────────────────────
71
73
  action fnEnsureSafety : SystemFunction {
72
- attribute :>> id = "NDS-FN-008"; attribute :>> name = "EnsureSafety";
74
+ @MemoIdentity { :>> providedId = "NDS-FN-008"; } attribute :>> name = "EnsureSafety";
73
75
  attribute :>> functionCategory = "protection";
74
76
  attribute :>> criticality = CriticalityKind::catastrophic;
75
77
  attribute :>> concernKind = ConcernKind::safety;
76
78
 
77
79
  action fnDetectOcclusion : SystemFunction {
78
- attribute :>> id = "NDS-FN-009"; attribute :>> name = "DetectOcclusion";
80
+ @MemoIdentity { :>> providedId = "NDS-FN-009"; } attribute :>> name = "DetectOcclusion";
79
81
  attribute :>> functionCategory = "protection";
80
82
  attribute :>> criticality = CriticalityKind::catastrophic;
81
83
  attribute :>> trigger = "line pressure above the occlusion threshold";
82
84
  attribute :>> concernKind = ConcernKind::safety;
83
85
  }
84
86
  action fnDetectAirInLine : SystemFunction {
85
- attribute :>> id = "NDS-FN-010"; attribute :>> name = "DetectAirInLine";
87
+ @MemoIdentity { :>> providedId = "NDS-FN-010"; } attribute :>> name = "DetectAirInLine";
86
88
  attribute :>> functionCategory = "protection";
87
89
  attribute :>> criticality = CriticalityKind::catastrophic;
88
90
  attribute :>> trigger = "air bolus detected in the patient line";
89
91
  attribute :>> concernKind = ConcernKind::safety;
90
92
  }
91
93
  action fnEnforceDoseLimits : SystemFunction {
92
- attribute :>> id = "NDS-FN-011"; attribute :>> name = "EnforceDoseLimits";
94
+ @MemoIdentity { :>> providedId = "NDS-FN-011"; } attribute :>> name = "EnforceDoseLimits";
93
95
  attribute :>> functionCategory = "protection";
94
96
  attribute :>> criticality = CriticalityKind::catastrophic;
95
97
  attribute :>> concernKind = ConcernKind::safety;
@@ -99,27 +101,27 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
99
101
 
100
102
  // ── Inform the user ──────────────────────────────────────────
101
103
  action fnInformUser : SystemFunction {
102
- attribute :>> id = "NDS-FN-012"; attribute :>> name = "InformUser";
104
+ @MemoIdentity { :>> providedId = "NDS-FN-012"; } attribute :>> name = "InformUser";
103
105
  attribute :>> functionCategory = "interaction";
104
106
  attribute :>> criticality = CriticalityKind::high;
105
107
  attribute :>> concernKind = ConcernKind::usability;
106
108
 
107
109
  action fnRenderStatus : SystemFunction {
108
- attribute :>> id = "NDS-FN-013"; attribute :>> name = "RenderTherapyStatus";
110
+ @MemoIdentity { :>> providedId = "NDS-FN-013"; } attribute :>> name = "RenderTherapyStatus";
109
111
  attribute :>> functionCategory = "interaction";
110
112
  attribute :>> criticality = CriticalityKind::high;
111
113
  attribute :>> concernKind = ConcernKind::usability;
112
114
  attribute :>> outputSummary = "rate, volume delivered and time remaining";
113
115
  }
114
116
  action fnAnnunciateAlarm : SystemFunction {
115
- attribute :>> id = "NDS-FN-014"; attribute :>> name = "AnnunciateAlarm";
117
+ @MemoIdentity { :>> providedId = "NDS-FN-014"; } attribute :>> name = "AnnunciateAlarm";
116
118
  attribute :>> functionCategory = "interaction";
117
119
  attribute :>> criticality = CriticalityKind::catastrophic;
118
120
  attribute :>> trigger = "any active alarm condition";
119
121
  attribute :>> concernKind = ConcernKind::safety;
120
122
  }
121
123
  action fnAcceptInput : SystemFunction {
122
- attribute :>> id = "NDS-FN-015"; attribute :>> name = "AcceptClinicianInput";
124
+ @MemoIdentity { :>> providedId = "NDS-FN-015"; } attribute :>> name = "AcceptClinicianInput";
123
125
  attribute :>> functionCategory = "interaction";
124
126
  attribute :>> criticality = CriticalityKind::high;
125
127
  attribute :>> concernKind = ConcernKind::usability;
@@ -129,20 +131,20 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
129
131
 
130
132
  // ── Manage power ─────────────────────────────────────────────
131
133
  action fnManagePower : SystemFunction {
132
- attribute :>> id = "NDS-FN-016"; attribute :>> name = "ManagePower";
134
+ @MemoIdentity { :>> providedId = "NDS-FN-016"; } attribute :>> name = "ManagePower";
133
135
  attribute :>> functionCategory = "platform";
134
136
  attribute :>> criticality = CriticalityKind::high;
135
137
  attribute :>> concernKind = ConcernKind::reliability;
136
138
 
137
139
  action fnMonitorBattery : SystemFunction {
138
- attribute :>> id = "NDS-FN-017"; attribute :>> name = "MonitorBatteryState";
140
+ @MemoIdentity { :>> providedId = "NDS-FN-017"; } attribute :>> name = "MonitorBatteryState";
139
141
  attribute :>> functionCategory = "platform";
140
142
  attribute :>> criticality = CriticalityKind::high;
141
143
  attribute :>> concernKind = ConcernKind::reliability;
142
144
  attribute :>> outputSummary = "state of charge and remaining run time";
143
145
  }
144
146
  action fnSelectPowerSource : SystemFunction {
145
- attribute :>> id = "NDS-FN-018"; attribute :>> name = "SelectPowerSource";
147
+ @MemoIdentity { :>> providedId = "NDS-FN-018"; } attribute :>> name = "SelectPowerSource";
146
148
  attribute :>> functionCategory = "platform";
147
149
  attribute :>> criticality = CriticalityKind::high;
148
150
  attribute :>> trigger = "mains loss or rail brownout";