@memoarchitect/ontology 0.4.6 → 0.6.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 (255) hide show
  1. package/README.md +5 -4
  2. package/examples/connected-patient-monitor/README.md +7 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
  4. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
  5. package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
  6. package/examples/embedded-infusion-pump/README.md +7 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
  8. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
  9. package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
  10. package/examples/extensions/README.md +16 -0
  11. package/examples/extensions/clinical/memo.package.yaml +9 -0
  12. package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
  13. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
  14. package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
  15. package/examples/extensions/template/memo.package.yaml +9 -0
  16. package/examples/extensions/template/src/extension.sysml +15 -0
  17. package/examples/functional-logical-physical/README.md +7 -0
  18. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
  19. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
  20. package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
  21. package/examples/gpca-pump/README.md +26 -0
  22. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
  23. package/examples/gpca-pump/memo.config.yaml +2 -2
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
  25. package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
  30. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
  31. package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
  32. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  33. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
  34. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
  35. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +139 -21
  36. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
  38. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
  42. package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
  43. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
  44. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
  45. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
  46. package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
  47. package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
  48. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
  49. package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
  50. package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
  51. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
  52. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
  53. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
  54. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
  55. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
  56. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
  57. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
  58. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
  59. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
  60. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
  61. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
  62. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
  63. package/examples/ivd-laboratory-system/README.md +7 -0
  64. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
  65. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
  66. package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
  67. package/examples/manual-surgical-instrument/README.md +7 -0
  68. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
  69. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
  70. package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
  71. package/examples/multidimensional-layers/README.md +7 -0
  72. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
  73. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
  74. package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
  75. package/examples/reusable-instrument/README.md +7 -0
  76. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
  77. package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
  78. package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
  79. package/examples/software-only-medical-device/README.md +7 -0
  80. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
  81. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
  82. package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
  83. package/examples/surgical-closure-workflow/README.md +8 -0
  84. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
  85. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
  86. package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
  87. package/examples/surgical-robot/README.md +7 -0
  88. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
  89. package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
  90. package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
  91. package/examples/sysml-diagram-samples/README.md +32 -0
  92. package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
  93. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
  94. package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
  95. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
  96. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
  97. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
  98. package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
  99. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
  100. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
  101. package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
  102. package/examples/temperature-alarm/README.md +7 -0
  103. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
  104. package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
  105. package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
  106. package/memo.manifest.yaml +4 -1
  107. package/methodologies/default/memo.package.yaml +1 -1
  108. package/methodologies/gpca/memo.package.yaml +4 -4
  109. package/ontology/memo.package.yaml +1 -1
  110. package/ontology/memo.rendering.yaml +37 -0
  111. package/package.json +17 -7
  112. package/profile/memo.package.yaml +1 -1
  113. package/profile/templates/connected-device/starter.sysml +3 -3
  114. package/profile/templates/infusion-pump/starter.sysml +3 -3
  115. package/profile/templates/monitoring-device/starter.sysml +3 -3
  116. package/profile/templates/samd/starter.sysml +3 -3
  117. package/src/architecture/decisions/memo_decisions.sysml +1 -1
  118. package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
  119. package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
  120. package/src/architecture/functional/functions/memo_functions.sysml +81 -0
  121. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
  122. package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
  123. package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
  124. package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
  125. package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
  126. package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
  127. package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
  128. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
  129. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
  130. package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
  131. package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
  132. package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
  133. package/src/architecture/operational/activities/memo_activities.sysml +86 -0
  134. package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
  135. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
  136. package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
  137. package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
  138. package/src/architecture/operational/structure/memo_operational.sysml +26 -0
  139. package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
  140. package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
  141. package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
  142. package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
  143. package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
  144. package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
  145. package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
  146. package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
  147. package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
  148. package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
  149. package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
  150. package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
  151. package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
  152. package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
  153. package/src/compliance/change/memo_change.sysml +2 -2
  154. package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
  155. package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
  156. package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
  157. package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
  158. package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
  159. package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
  160. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
  161. package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
  162. package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
  163. package/src/compliance/iso14971/risk_management_file.sysml +1 -1
  164. package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
  165. package/src/core/common/memo_common.sysml +123 -14
  166. package/src/core/consistency_rules/consistency_rules.sysml +2 -2
  167. package/src/core/dimensions/dimensions.sysml +45 -24
  168. package/src/core/enumerations/memo_enumerations.sysml +11 -16
  169. package/src/core/methodology_scope/methodology_scope.sysml +10 -28
  170. package/src/core/relationships/memo_relationships.sysml +178 -146
  171. package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
  172. package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
  173. package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
  174. package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
  175. package/src/core/terminology/terminology.sysml +35 -0
  176. package/src/memo_namespaces.sysml +247 -302
  177. package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
  178. package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
  179. package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
  180. package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
  181. package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
  182. package/src/rules/closure/closure_rules.sysml +11 -11
  183. package/src/rules/coverage/coverage_rules.sysml +8 -8
  184. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  185. package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
  186. package/src/rules/ontology/ontology_invariants.sysml +133 -0
  187. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  188. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
  189. package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
  190. package/src/viewpoints/context/context_viewpoint.sysml +1 -2
  191. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
  192. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
  193. package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
  194. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  195. package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
  196. package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
  197. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
  198. package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
  199. package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
  200. package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
  201. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  202. package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
  203. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  204. package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
  205. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  206. package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
  207. package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
  208. package/template/memo.package.yaml +1 -1
  209. package/template/src/catalog/starter.sysml +3 -3
  210. package/examples/gpca-pump/model/samples/README.md +0 -24
  211. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
  212. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
  213. package/src/architecture/assurance/memo_assurance.sysml +0 -29
  214. package/src/architecture/context/memo_context.sysml +0 -58
  215. package/src/architecture/functions/memo_functions.sysml +0 -30
  216. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
  217. package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
  218. package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
  219. package/src/architecture/operational/memo_operational.sysml +0 -51
  220. package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
  221. package/src/architecture/system/memo_system_analysis.sysml +0 -54
  222. package/src/artifacts/clinical_safety_report.sysml +0 -12
  223. package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
  224. package/src/artifacts/design_change_log.sysml +0 -12
  225. package/src/artifacts/design_history_file_index.sysml +0 -12
  226. package/src/artifacts/design_input_plan.sysml +0 -12
  227. package/src/artifacts/design_output_plan.sysml +0 -12
  228. package/src/artifacts/evidence_record.sysml +0 -12
  229. package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
  230. package/src/artifacts/hazard_analysis_report.sysml +0 -12
  231. package/src/artifacts/labeling_specification.sysml +0 -12
  232. package/src/artifacts/requirements_specification.sysml +0 -12
  233. package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
  234. package/src/artifacts/risk_management_plan.sysml +0 -12
  235. package/src/artifacts/software_design_description.sysml +0 -12
  236. package/src/artifacts/software_development_plan.sysml +0 -12
  237. package/src/artifacts/soup_list.sysml +0 -12
  238. package/src/artifacts/system_architecture_description.sysml +0 -12
  239. package/src/artifacts/test_protocol.sysml +0 -12
  240. package/src/artifacts/test_report.sysml +0 -12
  241. package/src/artifacts/threat_model_report.sysml +0 -12
  242. package/src/artifacts/usability_engineering_report.sysml +0 -12
  243. package/src/medical_device_library.sysml +0 -100
  244. /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
  245. /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
  246. /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
  247. /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
  248. /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
  249. /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
  250. /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
  251. /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
  252. /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
  253. /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
  254. /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
  255. /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
package/README.md CHANGED
@@ -18,7 +18,7 @@ pin an exact release; the package has no repository or runtime dependency on Mem
18
18
  Tools or Memo Architect.
19
19
 
20
20
  ```bash
21
- pnpm add @memoarchitect/ontology@0.4.6
21
+ pnpm add @memoarchitect/ontology@0.6.0
22
22
  ```
23
23
 
24
24
  For coordinated development, the private `memo-meta` workspace checks out
@@ -50,16 +50,17 @@ methodologies/gpca/ @memoarchitect/methodology-gpca descriptor
50
50
  template/ complete starter project copied by memo init
51
51
  examples/gpca-pump/ reference model (not a scaffold template)
52
52
  src/ all reusable .sysml content (namespace = directory)
53
- medical_device_library.sysml public import surface
53
+ memo_namespaces.sysml public memo import and nested namespace map
54
54
  core/ common/ enumerations/ relationships/
55
55
  dimensions/ semantics/ + stdlib/* (KerML wrapper)
56
- architecture/ one folder per layer: context/ requirements/ functions/ behavior/
57
- logical_structure/ software_structure/ … risk/ cybersecurity/ assurance/ …
56
+ architecture/ operational/ functional/ logical/ implementation/ realization/
57
+ assurance/ requirements/ safety_risk/ cybersecurity/ human_factors/ verification_validation/
58
58
  compliance/ artifacts/ change/ document_views/ postmarket/ iso14971/
59
59
  viewpoints/ reusable viewpoint and view definitions
60
60
  rules/ closure/ coverage/ crosslayer/ lifecycle/ quantitative/ (native constraint defs)
61
61
  artifacts/ artifact kinds (memo::artifacts)
62
62
  methodology/ default methodology
63
+ examples/extensions/ optional domain modules selected by methodology
63
64
  ```
64
65
 
65
66
  ## Build / verify
@@ -0,0 +1,7 @@
1
+ # Connected patient monitor
2
+
3
+ A focused MEMO example for a connected patient monitor.
4
+
5
+ - `model/connected_patient_monitor.sysml` is the public parent package.
6
+ - `model/catalog/` holds the canonical model elements.
7
+ - `model/viewpoints/` holds diagram views of that catalog.
@@ -0,0 +1,70 @@
1
+ // Focused example: connected, distributed device system. Bedside monitor →
2
+ // gateway → hospital system, with typed network interfaces, a trust boundary
3
+ // at the hospital network edge, and an ISO/IEEE 11073-coded measurement item.
4
+ package memo_examples_connected_patient_monitor {
5
+ private import ScalarValues::*;
6
+
7
+ private import memo_core_enumerations::*;
8
+ private import memo_core_terminology::*;
9
+ private import memo_core_relationships::*;
10
+ private import memo_architecture_logical_structure::*;
11
+ private import memo_architecture_logical_interfaces::*;
12
+ private import memo_assurance_cybersecurity::*;
13
+
14
+ part lcMonitor : LogicalComponent {
15
+ attribute :>> id = "CPM-LC-001"; attribute :>> name = "BedsideMonitor";
16
+ attribute :>> responsibility = "Acquire and display vitals; publish measurements.";
17
+ }
18
+ part lcGateway : LogicalComponent {
19
+ attribute :>> id = "CPM-LC-002"; attribute :>> name = "WardGateway";
20
+ attribute :>> responsibility = "Aggregate device data; bridge device LAN to hospital network.";
21
+ }
22
+ part lcCdrService : LogicalComponent {
23
+ attribute :>> id = "CPM-LC-003"; attribute :>> name = "ClinicalDataRepository";
24
+ attribute :>> externalOwner = "hospital IT";
25
+ }
26
+
27
+ // Typed measurement item, coded against ISO/IEEE 11073-10101.
28
+ item spo2Item : LogicalExchangeItem {
29
+ attribute :>> id = "CPM-IT-001"; attribute :>> name = "SpO2Measurement";
30
+ attribute :>> contentKind = FlowContentKind::measurement;
31
+ attribute :>> unit = "%";
32
+ attribute :>> timestampRequired = true;
33
+ attribute :>> codes = mdcSpo2;
34
+ }
35
+ attribute mdcSpo2 : TerminologyCode {
36
+ attribute :>> systemUri = "urn:iso:std:iso:11073:10101";
37
+ attribute :>> code = "150456";
38
+ attribute :>> display = "MDC_PULS_OXIM_SAT_O2";
39
+ }
40
+
41
+ part exSpo2ToGateway : LogicalExchange {
42
+ attribute :>> id = "CPM-EX-001"; attribute :>> name = "SpO2ToGateway";
43
+ attribute :>> contentKind = FlowContentKind::measurement;
44
+ attribute :>> direction = DirectionKind::output;
45
+ ref :>> exchangedItem = spo2Item;
46
+ }
47
+ connection : LogicalConnector connect sourceComponent ::> lcMonitor to targetComponent ::> lcGateway {
48
+ attribute :>> contentKind = FlowContentKind::measurement;
49
+ attribute :>> direction = DirectionKind::output;
50
+ }
51
+ connection : LogicalConnector connect sourceComponent ::> lcGateway to targetComponent ::> lcCdrService {
52
+ attribute :>> contentKind = FlowContentKind::information;
53
+ attribute :>> direction = DirectionKind::output;
54
+ }
55
+
56
+ // Network interface with cybersecurity properties; trust boundary at the
57
+ // hospital network edge.
58
+ interface ifHl7Feed : Interface {
59
+ attribute :>> id = "CPM-IF-001"; attribute :>> name = "GatewayToCdrFeed";
60
+ attribute :>> protocol = "HL7 FHIR REST over TLS 1.3";
61
+ attribute :>> securityCriticality = CriticalityKind::high;
62
+ attribute :>> patientContactInterface = false;
63
+ }
64
+ item tbHospitalEdge : TrustBoundary {
65
+ attribute :>> id = "CPM-TB-001"; attribute :>> name = "DeviceLanToHospitalNetwork";
66
+ }
67
+ connection : CrossesTrustBoundary connect boundary ::> tbHospitalEdge to crossingItem ::> ifHl7Feed {
68
+ attribute :>> crossingKind = InterfaceKind::network;
69
+ }
70
+ }
@@ -0,0 +1,3 @@
1
+ package memo_examples_connected_patient_monitor_parent {
2
+ public import memo_examples_connected_patient_monitor::*;
3
+ }
@@ -0,0 +1,6 @@
1
+ package memo_examples_connected_patient_monitor_viewpoints {
2
+ private import memo_examples_connected_patient_monitor::*;
3
+ private import memo_viewpoints_definitions::*;
4
+ private import memo_core_enumerations::*;
5
+ view connectedPatientMonitorOverview : MemoDiagramView { expose memo_examples_connected_patient_monitor::*; attribute depth = 2; attribute :>> title = "Connected Patient Monitor Overview"; attribute :>> viewKind = DiagramViewKind::interconnection; attribute :>> diagramType = "ibd"; }
6
+ }
@@ -0,0 +1,7 @@
1
+ # Embedded infusion pump
2
+
3
+ A focused MEMO example for an embedded infusion pump.
4
+
5
+ - `model/embedded_infusion_pump.sysml` is the public parent package.
6
+ - `model/catalog/` holds the canonical model elements.
7
+ - `model/viewpoints/` holds diagram views of that catalog.
@@ -0,0 +1,66 @@
1
+ // Focused example: embedded programmable device — the three software views
2
+ // (module / runtime / deployment) on a minimal infusion pump.
3
+ // SoftwareItem buildsInto DeploymentUnit deploysTo ProcessingNode;
4
+ // SoftwareComponent hostedBy ProcessingNode with scheduling properties.
5
+ package memo_examples_embedded_infusion_pump {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_enumerations::*;
9
+ private import memo_core_relationships::*;
10
+ private import memo_architecture_implementation_software_structure::*;
11
+ private import memo_architecture_implementation_software_runtime::*;
12
+ private import memo_architecture_realization_deployment::*;
13
+ private import memo_architecture_realization_physical::*;
14
+
15
+ // Module view (IEC 62304).
16
+ part swInfusionControl : SoftwareModule {
17
+ attribute :>> moduleKind = ModuleKind::item;
18
+ attribute :>> id = "EIP-SW-001"; attribute :>> name = "InfusionControlItem";
19
+ attribute :>> iec62304Role = "software item, class C";
20
+ attribute :>> safetyClass = SafetyClassKind::C;
21
+ }
22
+ part swMotorDriver : SoftwareModule {
23
+ attribute :>> moduleKind = ModuleKind::unit;
24
+ attribute :>> id = "EIP-SW-002"; attribute :>> name = "MotorDriverUnit";
25
+ attribute :>> implementationLanguage = "C";
26
+ attribute :>> safetyClass = SafetyClassKind::C;
27
+ }
28
+ connection : Realizes connect realizing ::> swMotorDriver to realized ::> swInfusionControl;
29
+
30
+ // Runtime view.
31
+ part rtControlLoop : SoftwareComponent {
32
+ attribute :>> runtimeKind = RuntimeKind::task;
33
+ attribute :>> id = "EIP-RT-001"; attribute :>> name = "ControlLoopTask";
34
+ attribute :>> periodMs = 10.0;
35
+ attribute :>> deadlineMs = 10.0;
36
+ attribute :>> wcetMs = 2.5;
37
+ attribute :>> schedulingPolicy = SchedulingPolicyKind::rateMonotonic;
38
+ attribute :>> restartPolicy = "watchdog reset to safe state (pump stopped)";
39
+ attribute :>> faultContainment = "MPU-protected region; safe-state on overrun";
40
+ }
41
+ connection : Realizes connect realizing ::> rtControlLoop to realized ::> swInfusionControl;
42
+
43
+ // Deployment view.
44
+ part duControlImage : DeploymentUnit {
45
+ attribute :>> id = "EIP-DU-001"; attribute :>> name = "ControlFirmwareImage";
46
+ attribute :>> unitKind = "signed firmware image";
47
+ attribute :>> version = "3.1.0";
48
+ attribute :>> integrityProtection = "signature verified by boot loader";
49
+ }
50
+ part mcuSafety : ProcessingNode {
51
+ attribute :>> id = "EIP-HW-001"; attribute :>> name = "SafetyMCU";
52
+ attribute :>> nodeKind = ProcessingNodeKind::microcontroller;
53
+ attribute :>> realTimeCapable = true;
54
+ attribute :>> supportsContainerization = false;
55
+ }
56
+ part rteBareMetal : RuntimeEnvironment {
57
+ attribute :>> id = "EIP-RTE-001"; attribute :>> name = "StaticRTOS";
58
+ attribute :>> osOrRtos = "static-priority RTOS, no dynamic allocation";
59
+ }
60
+ connection : BuildsInto connect module ::> swInfusionControl to deploymentUnit ::> duControlImage;
61
+ connection : DeploysTo connect deploymentUnit ::> duControlImage to node ::> mcuSafety {
62
+ attribute :>> deploymentKind = DeploymentKind::embedded;
63
+ }
64
+ connection : HostedBy connect hostAssembly ::> mcuSafety to processingNode ::> rtControlLoop;
65
+ connection : ProvidesEnvironment connect node ::> mcuSafety to environment ::> rteBareMetal;
66
+ }
@@ -0,0 +1,3 @@
1
+ package memo_examples_embedded_infusion_pump_parent {
2
+ public import memo_examples_embedded_infusion_pump::*;
3
+ }
@@ -0,0 +1,6 @@
1
+ package memo_examples_embedded_infusion_pump_viewpoints {
2
+ private import memo_examples_embedded_infusion_pump::*;
3
+ private import memo_viewpoints_definitions::*;
4
+ private import memo_core_enumerations::*;
5
+ view embeddedInfusionPumpOverview : MemoDiagramView { expose memo_examples_embedded_infusion_pump::*; attribute depth = 2; attribute :>> title = "Embedded Infusion Pump Overview"; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
6
+ }
@@ -0,0 +1,16 @@
1
+ # Extension examples
2
+
3
+ An extension is a regular SysML package selected by a MEMO methodology. MEMO
4
+ does not define a separate extension metaclass. `MethodologyDefinition` and
5
+ `ProjectMethodBinding` already accept packages through `includedModule`.
6
+
7
+ - `template/` is the starting structure for an extension.
8
+ - `clinical/` specializes `OperationalWorkflow` with clinical procedure data.
9
+
10
+ Extensions specialize or reference base types. They do not redefine
11
+ activities, workflows, architecture elements, relationships, or constraints
12
+ already expressed by the base ontology.
13
+
14
+ Extension packages remain outside `src/` and outside the `memo::` namespace.
15
+ Projects import an extension package directly and include it in their selected
16
+ methodology.
@@ -0,0 +1,9 @@
1
+ name: "@memoarchitect/example-extension-clinical"
2
+ version: "0.6.0"
3
+ type: methodology
4
+ extends: "@memoarchitect/methodology-default"
5
+ sysmlDir: "./src"
6
+ description: "Example methodology extension for clinical-procedure vocabulary"
7
+ license: "MIT"
8
+ tags: ["memo", "methodology", "extension", "clinical"]
9
+ usage: ["extension", "clinical-procedures"]
@@ -0,0 +1,3 @@
1
+ package memo_extension_clinical {
2
+ public import memo_extension_clinical_procedures::*;
3
+ }
@@ -0,0 +1,14 @@
1
+ package memo_extension_clinical_methodology {
2
+ private import ScalarValues::*;
3
+ private import memo_methodology_core::*;
4
+
5
+ part clinicalExtensionMethod : MethodologyDefinition {
6
+ attribute :>> id = "EXT-CLINICAL-001";
7
+ attribute :>> name = "ClinicalProcedureExtension";
8
+ attribute :>> version = "0.6.0";
9
+ attribute :>> domain = "clinical procedures";
10
+ attribute :>> description = "Adds optional clinical-procedure vocabulary to a MEMO project.";
11
+ attribute :>> baseMethodName = "MedicalDeviceLightDefault";
12
+ attribute :>> includedModule = "memo_extension_clinical";
13
+ }
14
+ }
@@ -0,0 +1,16 @@
1
+ // Clinical data added to the base operational workflow. Activities, tasks,
2
+ // techniques, variants, and resources continue to use the base ontology.
3
+ package memo_extension_clinical_procedures {
4
+ private import ScalarValues::*;
5
+
6
+ private import memo_core_terminology::*;
7
+ private import memo_architecture_operational_workflows::*;
8
+
9
+ action def ClinicalProcedureWorkflow specializes OperationalWorkflow {
10
+ attribute procedureCode : TerminologyCode[0..1];
11
+ attribute bodySiteCode : TerminologyCode[0..1];
12
+ attribute clinicalObjective : String;
13
+ attribute anesthesiaRequirement : String;
14
+ attribute typicalDuration : String;
15
+ }
16
+ }
@@ -0,0 +1,9 @@
1
+ name: "{{name}}"
2
+ version: "0.1.0"
3
+ type: methodology
4
+ extends: "@memoarchitect/methodology-default"
5
+ sysmlDir: "./src"
6
+ description: "MEMO methodology extension"
7
+ license: "MIT"
8
+ tags: ["memo", "methodology", "extension"]
9
+ usage: ["extension"]
@@ -0,0 +1,15 @@
1
+ // Replace the package name and included module with extension-specific names.
2
+ package memo_extension_template {
3
+ private import ScalarValues::*;
4
+ private import memo_methodology_core::*;
5
+
6
+ part extensionMethod : MethodologyDefinition {
7
+ attribute :>> id = "EXT-METH-001";
8
+ attribute :>> name = "ExtensionMethod";
9
+ attribute :>> version = "0.1.0";
10
+ attribute :>> domain = "project extension";
11
+ attribute :>> description = "Adds a project or domain package to the selected MEMO methodology.";
12
+ attribute :>> baseMethodName = "MedicalDeviceLightDefault";
13
+ attribute :>> includedModule = "replace_with_extension_package";
14
+ }
15
+ }
@@ -0,0 +1,7 @@
1
+ # Functional, logical, physical
2
+
3
+ A focused MEMO example separating functional, logical, and physical design.
4
+
5
+ - `model/functional_logical_physical.sysml` is the public parent package.
6
+ - `model/catalog/` holds the canonical model elements.
7
+ - `model/viewpoints/` holds diagram views of that catalog.
@@ -0,0 +1,50 @@
1
+ // Focused example: the realization graph across perspectives.
2
+ // One function is allocated to a logical component and realized by BOTH a
3
+ // software module and a mechanical part — realization is a many-to-many
4
+ // graph, and no layer is a mandatory pipeline stage.
5
+ package memo_examples_functional_logical_physical {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_enumerations::*;
9
+ private import memo_core_relationships::*;
10
+ private import memo_architecture_operational_activities::*;
11
+ private import memo_architecture_functional_functions::*;
12
+ private import memo_architecture_logical_structure::*;
13
+ private import memo_architecture_implementation_software_structure::*;
14
+ private import memo_architecture_implementation_hardware_structure::*;
15
+
16
+ // Operational world: what the clinician does.
17
+ action actOcclusionResponse : OperationalActivity {
18
+ attribute :>> id = "FLP-ACT-001"; attribute :>> name = "RespondToLineOcclusion";
19
+ attribute :>> criticality = CriticalityKind::high;
20
+ }
21
+
22
+ // Functional: technology-independent responsibility.
23
+ part fnLimitLinePressure : SystemFunction {
24
+ attribute :>> id = "FLP-FN-001"; attribute :>> name = "LimitLinePressure";
25
+ attribute :>> criticality = CriticalityKind::high;
26
+ }
27
+ connection : Enables connect enabling ::> fnLimitLinePressure to enabled ::> actOcclusionResponse;
28
+
29
+ // Logical: solution structure, still technology-independent.
30
+ part lcPressureProtection : LogicalComponent {
31
+ attribute :>> id = "FLP-LC-001"; attribute :>> name = "PressureProtectionElement";
32
+ attribute :>> controlledVariable = "line pressure";
33
+ }
34
+ connection : AllocatedTo connect function ::> fnLimitLinePressure to allocatedElement ::> lcPressureProtection;
35
+
36
+ // Implementation: the SAME logical element is realized by software
37
+ // (pressure-limit supervision) AND mechanics (mechanical relief valve).
38
+ part swPressureSupervisor : SoftwareModule {
39
+ attribute :>> id = "FLP-SW-001"; attribute :>> name = "PressureSupervisor";
40
+ attribute :>> responsibility = "Pause pumping when measured pressure exceeds threshold.";
41
+ attribute :>> safetyClass = SafetyClassKind::C;
42
+ }
43
+ part mechReliefValve : MechanicalPart {
44
+ attribute :>> id = "FLP-HW-001"; attribute :>> name = "MechanicalReliefValve";
45
+ attribute :>> mechanicalFunction = "vents line pressure above mechanical set point, independent of software";
46
+ attribute :>> patientContact = false;
47
+ }
48
+ connection : Realizes connect realizing ::> swPressureSupervisor to realized ::> lcPressureProtection;
49
+ connection : Realizes connect realizing ::> mechReliefValve to realized ::> lcPressureProtection;
50
+ }
@@ -0,0 +1,3 @@
1
+ package memo_examples_functional_logical_physical_parent {
2
+ public import memo_examples_functional_logical_physical::*;
3
+ }
@@ -0,0 +1,6 @@
1
+ package memo_examples_functional_logical_physical_viewpoints {
2
+ private import memo_examples_functional_logical_physical::*;
3
+ private import memo_viewpoints_definitions::*;
4
+ private import memo_core_enumerations::*;
5
+ view functionalLogicalPhysicalOverview : MemoDiagramView { expose memo_examples_functional_logical_physical::*; attribute depth = 2; attribute :>> title = "Function to Physical Realization"; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
6
+ }
@@ -0,0 +1,26 @@
1
+ # GPCA Pump Reference Example
2
+
3
+ This is the complete MEMO reference model. It demonstrates scenario-driven
4
+ modelling for a generic patient-controlled analgesia infusion pump.
5
+
6
+ Start with `ucDeliverPcaTherapy` in `model/catalog/gpca_operational.sysml`:
7
+
8
+ 1. The use case states the clinical goal.
9
+ 2. `wfPrepareAndStartTherapy`, `wfManageActiveTherapy`, and
10
+ `wfRespondToTherapyAlarm` are the workflows that support it.
11
+ 3. The operational scenarios select normal, alternate, exception, and recovery
12
+ paths through those workflows.
13
+ 4. The selected path connects to the explicit ISO 14971 chain
14
+ (`HazardCause` → `Hazard` → `SequenceOfEvents` →
15
+ `HazardousSituation` → `Harm`), initial and residual risk,
16
+ `RiskControlMeasure`, architecture, verification, and evidence.
17
+
18
+ ## Layout
19
+
20
+ - `model/catalog/` — canonical model elements, grouped by concern.
21
+ - `model/views/` — diagram and document views; each answers a review question.
22
+ - `methodology/` — GPCA-specific methodology and profile content.
23
+ - `dhf/` — document templates and generated-document material.
24
+
25
+ Read the detailed walkthrough at `docs/examples/gpca-walkthrough.md` before
26
+ browsing the full catalog.
@@ -131,7 +131,7 @@ empty: "No hazardous situations defined."
131
131
  ### 5.3 Risk Control Measures
132
132
 
133
133
  ```memo-query
134
- kind: RiskControl
134
+ kind: RiskControlMeasure
135
135
  display: table
136
136
  columns: name, layer, doc
137
137
  sort: name
@@ -4,6 +4,6 @@ projectName: gpca-pump
4
4
  projectType: device
5
5
 
6
6
  # Phase H: project pins the GPCA-specific methodology.
7
- # @memo/methodology-gpca extends @memo/methodology-default and subtracts
7
+ # @memoarchitect/methodology-gpca extends @memoarchitect/methodology-default and subtracts
8
8
  # cybersecurity and SOUP for the non-networked prototype variant.
9
- methodology: "@memo/methodology-gpca@^0.4.6"
9
+ methodology: "@memoarchitect/methodology-gpca@^0.6.0"
@@ -10,7 +10,7 @@ package memo_examples_gpca_pump_methodology_gpca_profiles {
10
10
  attribute :>> name = "GPCAPrototypeMethodology";
11
11
  attribute :>> version = "1.0";
12
12
  attribute :>> domain = "medical device modeling";
13
- attribute :>> description = "GPCA infusion pump methodology — subtraction-based tailoring for non-networked prototype. Excludes cybersecurity layer and SOUPComponent.";
13
+ attribute :>> description = "GPCA infusion pump methodology — subtraction-based tailoring for non-networked prototype. Excludes cybersecurity layer and SOUP modules.";
14
14
  attribute :>> baseMethodName = "MedicalDeviceLightDefault";
15
15
  }
16
16
 
@@ -18,8 +18,8 @@ package memo_examples_gpca_pump_methodology_gpca_scope {
18
18
 
19
19
  attribute :>> includedViewpointType = "VP-CTX; VP-LOG; VP-RISK";
20
20
 
21
- attribute :>> excludedKind = "CybersecurityAsset; AttackSurface; Threat; Vulnerability; ThreatScenario; CyberHazard; CyberRisk; CyberMitigation; SecurityRequirement; TrustBoundary; SecurityClaim; SOUPComponent";
21
+ attribute :>> excludedKind = "CybersecurityAsset; AttackSurface; Threat; Vulnerability; ThreatScenario; CyberHazard; CyberRisk; CyberMitigation; SecurityRequirement; TrustBoundary; SecurityClaim; SoftwareModule[moduleKind=soup]";
22
22
 
23
- attribute :>> description = "GPCA prototype methodology — subtracts cybersecurity layer (non-networked device) and SOUPComponent (no SOUP in prototype). Derived from default methodology by exclusion.";
23
+ attribute :>> description = "GPCA prototype methodology — subtracts cybersecurity layer (non-networked device) and SOUP modules (no SOUP in prototype). Derived from default methodology by exclusion.";
24
24
  }
25
25
  }
@@ -1,7 +1,7 @@
1
1
  package memo_examples_gpca_pump_model_catalog_gpca_analysis {
2
2
  private import ScalarValues::*;
3
3
 
4
- private import memo_architecture_analysis::*;
4
+ private import memo_assurance_safety_risk_analysis::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
7
  // ── FMEA (IEC 60812) ────────────────────────────────────────
@@ -1,8 +1,8 @@
1
1
  package memo_examples_gpca_pump_model_catalog_gpca_architecture {
2
2
  private import ScalarValues::*;
3
3
 
4
- private import memo_architecture_hardware_structure::*;
5
- private import memo_architecture_software_structure::*;
4
+ private import memo_architecture_implementation_hardware_structure::*;
5
+ private import memo_architecture_implementation_software_structure::*;
6
6
  private import memo_architecture_logical_structure::*;
7
7
  private import memo_core_relationships::*;
8
8
  private import memo_core_enumerations::*;
@@ -190,49 +190,49 @@ package memo_examples_gpca_pump_model_catalog_gpca_architecture {
190
190
  attribute :>> complexity = ComplexityKind::high;
191
191
  attribute :>> operatingSystem = "synchronous data-flow execution; AADL immediate port semantics (source specifies no timing)";
192
192
  }
193
- part tlm : SoftwareComponent {
193
+ part tlm : SoftwareModule {
194
194
  attribute :>> id = "SW-001";
195
195
  attribute :>> name = "Top_Level_Mode";
196
196
  attribute :>> responsibility = "Ensure system ON/OFF behavior and startup/shutdown checks.";
197
197
  attribute :>> safetyClass = SafetyClassKind::C;
198
198
  attribute :>> complexity = ComplexityKind::medium;
199
199
  }
200
- part config : SoftwareComponent {
200
+ part config : SoftwareModule {
201
201
  attribute :>> id = "SW-002";
202
202
  attribute :>> name = "Config";
203
203
  attribute :>> responsibility = "Prescription entry, drug-library limit checking, confirmation, and persistent storage.";
204
204
  attribute :>> safetyClass = SafetyClassKind::C;
205
205
  attribute :>> complexity = ComplexityKind::high;
206
206
  }
207
- part alarm : SoftwareComponent {
207
+ part alarm : SoftwareModule {
208
208
  attribute :>> id = "SW-003";
209
209
  attribute :>> name = "Alarm";
210
210
  attribute :>> responsibility = "Monitor and notify exceptional conditions.";
211
211
  attribute :>> safetyClass = SafetyClassKind::C;
212
212
  attribute :>> complexity = ComplexityKind::high;
213
213
  }
214
- part logging : SoftwareComponent {
214
+ part logging : SoftwareModule {
215
215
  attribute :>> id = "SW-004";
216
216
  attribute :>> name = "Logging";
217
217
  attribute :>> responsibility = "Append-only event log of doses, mode changes, alarms, and configuration changes.";
218
218
  attribute :>> safetyClass = SafetyClassKind::B;
219
219
  attribute :>> complexity = ComplexityKind::medium;
220
220
  }
221
- part infusionMgr : SoftwareComponent {
221
+ part infusionMgr : SoftwareModule {
222
222
  attribute :>> id = "SW-005";
223
223
  attribute :>> name = "Infusion_Manager";
224
224
  attribute :>> responsibility = "Handle drug infusion commands and therapy parameters.";
225
225
  attribute :>> safetyClass = SafetyClassKind::C;
226
226
  attribute :>> complexity = ComplexityKind::high;
227
227
  }
228
- part systemMonitor : SoftwareComponent {
228
+ part systemMonitor : SoftwareModule {
229
229
  attribute :>> id = "SW-006";
230
230
  attribute :>> name = "System_Monitor";
231
231
  attribute :>> responsibility = "POST, periodic CPU/RAM/ROM checks, watchdog kicking, and battery supervision.";
232
232
  attribute :>> safetyClass = SafetyClassKind::C;
233
233
  attribute :>> complexity = ComplexityKind::medium;
234
234
  }
235
- part systemStatus : SoftwareComponent {
235
+ part systemStatus : SoftwareModule {
236
236
  attribute :>> id = "SW-007";
237
237
  attribute :>> name = "System_Status";
238
238
  attribute :>> responsibility = "Maintain the shared system status vector (Reservoir_Volume, Volume_Infused, Reservoir_Empty, In_Therapy) consumed by Alarm, Config, and Infusion_Manager.";
@@ -240,7 +240,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_architecture {
240
240
  attribute :>> complexity = ComplexityKind::medium;
241
241
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/System_Status.aadl";
242
242
  }
243
- part outputBus : SoftwareComponent {
243
+ part outputBus : SoftwareModule {
244
244
  attribute :>> id = "SW-008";
245
245
  attribute :>> name = "OutputBus";
246
246
  attribute :>> responsibility = "Aggregate all subsystem outputs into the single GPCA_SW_OUT output vector (mode, commanded flow rate, notifications, prescription echo, status).";
@@ -2,7 +2,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_actions {
2
2
  private import ScalarValues::*;
3
3
  private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
4
4
 
5
- private import memo_architecture_behavior::*;
5
+ private import memo_architecture_functional_behavior::*;
6
+ private import memo_architecture_logical_interfaces::*;
6
7
  private import memo_core_enumerations::*;
7
8
 
8
9
  // ═════════════════════════════════════════════════════════════
@@ -16,11 +17,21 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_actions {
16
17
  // ═════════════════════════════════════════════════════════════
17
18
 
18
19
  // ── Action definitions (typed steps with parameters) ────────
19
- item def SensorStatusVector;
20
- item def AlarmSignal;
21
- item def BolusRequestSignal;
22
- item def FlowCommand;
23
- item def TherapyEventRecord;
20
+ item def SensorStatusVector specializes InterfaceItem {
21
+ attribute :>> itemKind = InterfaceItemKind::data;
22
+ }
23
+ item def AlarmSignal specializes InterfaceItem {
24
+ attribute :>> itemKind = InterfaceItemKind::signal;
25
+ }
26
+ item def BolusRequestSignal specializes InterfaceItem {
27
+ attribute :>> itemKind = InterfaceItemKind::signal;
28
+ }
29
+ item def FlowCommand specializes InterfaceItem {
30
+ attribute :>> itemKind = InterfaceItemKind::command;
31
+ }
32
+ item def TherapyEventRecord specializes InterfaceItem {
33
+ attribute :>> itemKind = InterfaceItemKind::event;
34
+ }
24
35
 
25
36
  action def AcquireSensorData {
26
37
  out sensorStatus : SensorStatusVector;