@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
@@ -0,0 +1,189 @@
1
+ // Ontology-level viewpoint catalog (§22). Rendering-independent: each
2
+ // viewpoint states the concern it frames and the SysML v2 standard view kind
3
+ // it resolves to (general | interconnection | actionflow | statetransition |
4
+ // sequence | grid | browser | geometry). No renderer semantics here.
5
+ package memo_viewpoints_catalog {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_common::*;
9
+ private import memo_core_enumerations::*;
10
+ private import memo_viewpoints_definitions::*;
11
+
12
+ // A cataloged viewpoint: the Viewpoint descriptor plus its default
13
+ // resolution to a standard SysML v2 view kind.
14
+
15
+ // ── Content and context ─────────────────────────────────────
16
+ part vpModelContent : Viewpoint {
17
+ attribute :>> id = "VP-CAT-001"; attribute :>> name = "ModelContentViewpoint";
18
+ attribute :>> purpose = "Browse the model tree and package structure.";
19
+ attribute :>> defaultViewKind = DiagramViewKind::browser;
20
+ }
21
+ part vpSystemContext : Viewpoint {
22
+ attribute :>> id = "VP-CAT-002"; attribute :>> name = "SystemContextViewpoint";
23
+ attribute :>> purpose = "System of interest, actors, external systems, and context exchanges.";
24
+ attribute :>> defaultViewKind = DiagramViewKind::general;
25
+ }
26
+ // ── Operational world ───────────────────────────────────────
27
+ part vpUseCase : Viewpoint {
28
+ attribute :>> id = "VP-CAT-003"; attribute :>> name = "UseCaseViewpoint";
29
+ attribute :>> purpose = "Use cases, initiating users, supporting actors, and motivating needs.";
30
+ attribute :>> defaultViewKind = DiagramViewKind::general;
31
+ }
32
+ part vpClinicalWorkflow : Viewpoint {
33
+ attribute :>> id = "VP-CAT-004"; attribute :>> name = "ClinicalWorkflowViewpoint";
34
+ attribute :>> purpose = "Workflow steps, decisions, parallel work, handoffs, and roles.";
35
+ attribute :>> defaultViewKind = DiagramViewKind::actionflow;
36
+ }
37
+ part vpOperativeScenario : Viewpoint {
38
+ attribute :>> id = "VP-CAT-005"; attribute :>> name = "OperativeScenarioViewpoint";
39
+ attribute :>> purpose = "Selected paths through workflows: variants, conditions, variation points.";
40
+ attribute :>> defaultViewKind = DiagramViewKind::actionflow;
41
+ }
42
+ // ── Functional ──────────────────────────────────────────────
43
+ part vpFunctionalArchitecture : Viewpoint {
44
+ attribute :>> id = "VP-CAT-006"; attribute :>> name = "FunctionalArchitectureViewpoint";
45
+ attribute :>> purpose = "System functions, capabilities, and functional exchanges.";
46
+ attribute :>> defaultViewKind = DiagramViewKind::general;
47
+ }
48
+ part vpFunctionalFlow : Viewpoint {
49
+ attribute :>> id = "VP-CAT-007"; attribute :>> name = "FunctionalFlowViewpoint";
50
+ attribute :>> purpose = "Ordered functional flows and their steps.";
51
+ attribute :>> defaultViewKind = DiagramViewKind::actionflow;
52
+ }
53
+ // ── Logical ─────────────────────────────────────────────────
54
+ part vpLogicalArchitecture : Viewpoint {
55
+ attribute :>> id = "VP-CAT-008"; attribute :>> name = "LogicalArchitectureViewpoint";
56
+ attribute :>> purpose = "Logical components, channels, and allocations.";
57
+ attribute :>> defaultViewKind = DiagramViewKind::general;
58
+ }
59
+ part vpSystemDecomposition : Viewpoint {
60
+ attribute :>> id = "VP-CAT-009"; attribute :>> name = "SystemDecompositionViewpoint";
61
+ attribute :>> purpose = "Composition hierarchy of the system of interest.";
62
+ attribute :>> defaultViewKind = DiagramViewKind::browser;
63
+ }
64
+ part vpInternalInterconnection : Viewpoint {
65
+ attribute :>> id = "VP-CAT-010"; attribute :>> name = "InternalInterconnectionViewpoint";
66
+ attribute :>> purpose = "Ports, connectors, and exchanges inside a component boundary.";
67
+ attribute :>> defaultViewKind = DiagramViewKind::interconnection;
68
+ }
69
+ // ── Implementation ──────────────────────────────────────────
70
+ part vpSoftwareModule : Viewpoint {
71
+ attribute :>> id = "VP-CAT-011"; attribute :>> name = "SoftwareModuleViewpoint";
72
+ attribute :>> purpose = "IEC 62304 module structure: systems, items, units, SOUP.";
73
+ attribute :>> defaultViewKind = DiagramViewKind::general;
74
+ }
75
+ part vpSoftwareComponents : Viewpoint {
76
+ attribute :>> id = "VP-CAT-012"; attribute :>> name = "SoftwareComponentViewpoint";
77
+ attribute :>> purpose = "Runtime component-and-connector structure with concurrency and scheduling.";
78
+ attribute :>> defaultViewKind = DiagramViewKind::interconnection;
79
+ }
80
+ part vpHardwareArchitecture : Viewpoint {
81
+ attribute :>> id = "VP-CAT-013"; attribute :>> name = "HardwareArchitectureViewpoint";
82
+ attribute :>> purpose = "Electronic/electrical structure and processing platform.";
83
+ attribute :>> defaultViewKind = DiagramViewKind::general;
84
+ }
85
+ part vpPhysicalArchitecture : Viewpoint {
86
+ attribute :>> id = "VP-CAT-014"; attribute :>> name = "PhysicalArchitectureViewpoint";
87
+ attribute :>> purpose = "Mechanical, fluidic, optical, and other physical realization.";
88
+ attribute :>> defaultViewKind = DiagramViewKind::general;
89
+ }
90
+ part vpDeviceComposition : Viewpoint {
91
+ attribute :>> id = "VP-CAT-015"; attribute :>> name = "DeviceCompositionViewpoint";
92
+ attribute :>> purpose = "Device definitions, instances, accessories, and consumables.";
93
+ attribute :>> defaultViewKind = DiagramViewKind::browser;
94
+ }
95
+ part vpNetworkDeployment : Viewpoint {
96
+ attribute :>> id = "VP-CAT-016"; attribute :>> name = "NetworkDeploymentViewpoint";
97
+ attribute :>> purpose = "Deployment units on processing nodes and network topology.";
98
+ attribute :>> defaultViewKind = DiagramViewKind::interconnection;
99
+ }
100
+ // ── Interaction and behavior ────────────────────────────────
101
+ part vpUiFlow : Viewpoint {
102
+ attribute :>> id = "VP-CAT-017"; attribute :>> name = "UiFlowViewpoint";
103
+ attribute :>> purpose = "Interaction flows, UI states, and transitions.";
104
+ attribute :>> defaultViewKind = DiagramViewKind::statetransition;
105
+ }
106
+ part vpStateMode : Viewpoint {
107
+ attribute :>> id = "VP-CAT-018"; attribute :>> name = "StateModeViewpoint";
108
+ attribute :>> purpose = "System states, device modes, and transitions.";
109
+ attribute :>> defaultViewKind = DiagramViewKind::statetransition;
110
+ }
111
+ part vpSequenceInteraction : Viewpoint {
112
+ attribute :>> id = "VP-CAT-019"; attribute :>> name = "SequenceInteractionViewpoint";
113
+ attribute :>> purpose = "Ordered message exchanges between participants in a scenario.";
114
+ attribute :>> defaultViewKind = DiagramViewKind::sequence;
115
+ }
116
+ // ── Assurance ───────────────────────────────────────────────
117
+ part vpRequirementsTraceability : Viewpoint {
118
+ attribute :>> id = "VP-CAT-020"; attribute :>> name = "RequirementsTraceabilityViewpoint";
119
+ attribute :>> purpose = "Needs → requirements → architecture → verification trace matrix.";
120
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
121
+ }
122
+ part vpRiskChain : Viewpoint {
123
+ attribute :>> id = "VP-CAT-021"; attribute :>> name = "RiskChainViewpoint";
124
+ attribute :>> purpose = "ISO 14971 chain: hazard → hazardous situation → harm with controls.";
125
+ attribute :>> defaultViewKind = DiagramViewKind::general;
126
+ }
127
+ part vpCybersecurity : Viewpoint {
128
+ attribute :>> id = "VP-CAT-022"; attribute :>> name = "CybersecurityViewpoint";
129
+ attribute :>> purpose = "Assets, threats, trust boundaries, and security controls.";
130
+ attribute :>> defaultViewKind = DiagramViewKind::general;
131
+ }
132
+ part vpHumanFactors : Viewpoint {
133
+ attribute :>> id = "VP-CAT-023"; attribute :>> name = "HumanFactorsViewpoint";
134
+ attribute :>> purpose = "Users, tasks, use errors, and hazard-related use scenarios.";
135
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
136
+ }
137
+ part vpVerificationCoverage : Viewpoint {
138
+ attribute :>> id = "VP-CAT-024"; attribute :>> name = "VerificationCoverageViewpoint";
139
+ attribute :>> purpose = "Verification cases against requirements and functions.";
140
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
141
+ }
142
+ part vpValidationCoverage : Viewpoint {
143
+ attribute :>> id = "VP-CAT-025"; attribute :>> name = "ValidationCoverageViewpoint";
144
+ attribute :>> purpose = "Validation cases against use cases and critical tasks.";
145
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
146
+ }
147
+ part vpEvidenceTraceability : Viewpoint {
148
+ attribute :>> id = "VP-CAT-026"; attribute :>> name = "EvidenceTraceabilityViewpoint";
149
+ attribute :>> purpose = "Evidence records back to the cases and elements they support.";
150
+ attribute :>> defaultViewKind = DiagramViewKind::grid;
151
+ }
152
+ // A software sequence diagram is a VIEW conforming to this viewpoint
153
+ // (ISO/IEC/IEEE 42010): it frames the runtime message ordering between
154
+ // SoftwareComponents realizing a FunctionalScenario. The viewpoint is the
155
+ // reusable spec; the diagram of a specific model is the view.
156
+ part vpSoftwareSequence : Viewpoint {
157
+ attribute :>> id = "VP-CAT-027"; attribute :>> name = "SoftwareSequenceViewpoint";
158
+ attribute :>> purpose = "Runtime message ordering between software components along a functional scenario.";
159
+ attribute :>> defaultViewKind = DiagramViewKind::sequence;
160
+ }
161
+
162
+ // ── Compatibility mappings (§22): legacy diagram intents resolve to
163
+ // standard view kinds; C4 and AADL stay in examples/ mappings. ──
164
+ part def DiagramIntentMapping specializes MemoPart {
165
+ attribute legacyIntent : String;
166
+ attribute resolvesTo : DiagramViewKind;
167
+ }
168
+ part mapBdd : DiagramIntentMapping {
169
+ attribute :>> legacyIntent = "BDD"; attribute :>> resolvesTo = DiagramViewKind::general;
170
+ }
171
+ part mapIbd : DiagramIntentMapping {
172
+ attribute :>> legacyIntent = "IBD"; attribute :>> resolvesTo = DiagramViewKind::interconnection;
173
+ }
174
+ part mapActivity : DiagramIntentMapping {
175
+ attribute :>> legacyIntent = "activity/operational/functional flow"; attribute :>> resolvesTo = DiagramViewKind::actionflow;
176
+ }
177
+ part mapStateMachine : DiagramIntentMapping {
178
+ attribute :>> legacyIntent = "state machine"; attribute :>> resolvesTo = DiagramViewKind::statetransition;
179
+ }
180
+ part mapSequence : DiagramIntentMapping {
181
+ attribute :>> legacyIntent = "sequence"; attribute :>> resolvesTo = DiagramViewKind::sequence;
182
+ }
183
+ part mapAllocationMatrix : DiagramIntentMapping {
184
+ attribute :>> legacyIntent = "allocation/traceability/FMEA"; attribute :>> resolvesTo = DiagramViewKind::grid;
185
+ }
186
+ part mapHierarchy : DiagramIntentMapping {
187
+ attribute :>> legacyIntent = "hierarchy/content"; attribute :>> resolvesTo = DiagramViewKind::browser;
188
+ }
189
+ }
@@ -19,7 +19,6 @@ package memo_viewpoints_clinical_clinical_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::clinical);
20
20
  attribute :>> includedLayers = ("context", "assurance");
21
21
  attribute :>> allowedElementKinds = ("Actor", "UseContext", "Evidence");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -18,8 +18,7 @@ package memo_viewpoints_context_context_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::interoperability);
20
20
  attribute :>> includedLayers = ("context");
21
- attribute :>> allowedElementKinds = ("Actor", "UseContext", "IntendedUse", "OperationalEntity", "TrustBoundary", "LogicalComponent");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
21
+ attribute :>> allowedElementKinds = ("Actor", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity", "TrustBoundary", "LogicalComponent");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -19,8 +19,7 @@ package memo_viewpoints_cybersecurity_cybersecurity_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::cybersecurity, ConcernKind::privacy, ConcernKind::safety);
20
20
  attribute :>> includedLayers = ("cybersecurity", "software_structure", "hardware_structure", "interfaces", "risk", "assurance");
21
21
  attribute :>> allowedElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "ThreatScenario");
22
- attribute :>> allowedRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "MitigatesVulnerability", "DerivesCyberRequirement", "ImpactsSafety", "CrossesTrustBoundary");
23
- attribute :>> methodologyReference = ("stride-default", "fda-cybersecurity-default");
22
+ attribute :>> allowedRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "Mitigates", "DerivesCyberRequirement", "ImpactsSafety", "CrossesTrustBoundary");
24
23
  attribute :>> documentUsage = ("Secure Product Development", "Threat Model", "Cybersecurity Risk Assessment", "QMSR");
25
24
  attribute :>> userExtensible = true;
26
25
  }
@@ -17,19 +17,20 @@ package memo_viewpoints_definitions {
17
17
  attribute allowedElementKinds : String[*];
18
18
  attribute allowedRelationshipKinds : String[*];
19
19
  attribute filterExpression : String;
20
- attribute methodologyReference : String[*];
21
20
  attribute extendsViewpointIds : String[*];
22
21
  attribute userExtensible : Boolean;
22
+ // default diagram kind for a catalog viewpoint (optional)
23
+ attribute defaultViewKind : DiagramViewKind[0..1];
23
24
  }
24
25
 
25
- part def ViewRule specializes TraceableElement {
26
+ part def ViewRule specializes MemoPart {
26
27
  attribute elementTypeName : String;
27
28
  attribute relationTypeName : String;
28
29
  attribute strength : RuleStrengthKind;
29
30
  attribute rationaleText : String;
30
31
  }
31
32
 
32
- part def ViewSelectionQuery specializes TraceableElement {
33
+ part def ViewSelectionQuery specializes MemoPart {
33
34
  attribute includeElementKinds : String[*];
34
35
  attribute includeRelationshipKinds : String[*];
35
36
  attribute includeLayers : String[*];
@@ -47,9 +48,9 @@ package memo_viewpoints_definitions {
47
48
  attribute dataSourceDescription : String;
48
49
  attribute autoPopulate : Boolean;
49
50
  part viewpointDefinition : Viewpoint;
50
- ref subjectElement : TraceableElement[*];
51
- ref exposesElement : TraceableElement[*];
52
- ref exposesRelationship : SemanticLink[*];
51
+ ref subjectElement : MemoPart[*];
52
+ ref exposesElement : MemoPart[*];
53
+ ref exposesRelationship : MemoRelationship[*];
53
54
  part selectionQuery : ViewSelectionQuery[*];
54
55
  }
55
56
 
@@ -62,7 +63,6 @@ package memo_viewpoints_definitions {
62
63
 
63
64
  view def MemoDocumentBackedView :> MemoView {
64
65
  attribute version : String;
65
- attribute lifecycleState : LifecycleStateKind;
66
66
  attribute generationRule : String;
67
67
  attribute marketScope : String;
68
68
  }
@@ -71,7 +71,7 @@ package memo_viewpoints_definitions {
71
71
  attribute viewKind : DocumentViewKind;
72
72
  }
73
73
 
74
- part def ViewInclusionRule specializes TraceableElement {
74
+ part def ViewInclusionRule specializes MemoPart {
75
75
  attribute includeElementKinds : String[*];
76
76
  attribute includeRelationshipKinds : String[*];
77
77
  attribute includeLayers : String[*];
@@ -20,7 +20,7 @@ package memo_viewpoints_functional_function_allocation_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-FUNC-002";
22
22
  attribute :>> name = "FunctionAllocationQuery";
23
- attribute :>> includeElementKinds = ("LogicalFunction", "LogicalComponent");
23
+ attribute :>> includeElementKinds = ("SystemFunction", "LogicalComponent");
24
24
  attribute :>> includeLayers = ("functions", "logical_structure");
25
25
  attribute :>> rationaleText = "Auto-populate function-to-component allocation from the functions and logical structure layers.";
26
26
  }
@@ -17,9 +17,8 @@ package memo_viewpoints_functional_functional_viewpoint {
17
17
  attribute :>> outputKind = (ViewOutputKind::diagram);
18
18
  attribute :>> presentationKind = (PresentationKind::activityDiagram);
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::performance);
20
- attribute :>> includedLayers = ("functions", "behavior");
21
- attribute :>> allowedElementKinds = ("LogicalFunction", "LogicalFlow", "ModeState");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
20
+ attribute :>> includedLayers = ("functions");
21
+ attribute :>> allowedElementKinds = ("SystemFunction", "FunctionalFlow", "FunctionalFlowStep", "FunctionalScenario", "FunctionalExchange");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -20,7 +20,7 @@ package memo_viewpoints_functional_system_functional_tree_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-FUNC-001";
22
22
  attribute :>> name = "SystemFunctionalTreeQuery";
23
- attribute :>> includeElementKinds = ("LogicalFunction");
23
+ attribute :>> includeElementKinds = ("SystemFunction");
24
24
  attribute :>> includeLayers = ("functions");
25
25
  attribute :>> rationaleText = "Auto-populate the functional tree from the functions layer.";
26
26
  }
@@ -19,7 +19,6 @@ package memo_viewpoints_logical_logical_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::performance);
20
20
  attribute :>> includedLayers = ("logical_structure", "interfaces");
21
21
  attribute :>> allowedElementKinds = ("LogicalComponent", "Interface");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -18,8 +18,7 @@ package memo_viewpoints_operational_operational_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::custom);
19
19
  attribute :>> concernKinds = (ConcernKind::performance, ConcernKind::interoperability);
20
20
  attribute :>> includedLayers = ("context", "operational", "system");
21
- attribute :>> allowedElementKinds = ("Actor", "UseContext", "OperationalActivity", "OperationalScenario", "SystemCapability", "FunctionalChain");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
21
+ attribute :>> allowedElementKinds = ("Actor", "UseContext", "OperationalActivity", "OperativeScenario");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -20,7 +20,7 @@ package memo_viewpoints_operational_use_case_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-OPS-001";
22
22
  attribute :>> name = "UseCaseQuery";
23
- attribute :>> includeElementKinds = ("Actor", "UseContext", "OperationalScenario");
23
+ attribute :>> includeElementKinds = ("Actor", "UseContext", "OperativeScenario");
24
24
  attribute :>> includeLayers = ("context", "operational");
25
25
  attribute :>> rationaleText = "Auto-populate the use case view from the context and operational layers.";
26
26
  }
@@ -19,7 +19,6 @@ package memo_viewpoints_physical_physical_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::reliability, ConcernKind::interoperability);
20
20
  attribute :>> includedLayers = ("hardware_structure", "physical");
21
21
  attribute :>> allowedElementKinds = ("ProcessingNode", "HardwareAssembly", "PhysicalPort");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -20,7 +20,7 @@ package memo_viewpoints_requirements_requirements_traceability_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-REQ-001";
22
22
  attribute :>> name = "RequirementsTraceabilityQuery";
23
- attribute :>> includeElementKinds = ("StakeholderNeed", "Requirement", "SystemRequirement", "SoftwareRequirement", "HardwareRequirement");
23
+ attribute :>> includeElementKinds = ("Need", "Requirement");
24
24
  attribute :>> includeLayers = ("requirements");
25
25
  attribute :>> rationaleText = "Auto-populate requirements traceability from the requirements layer.";
26
26
  }
@@ -18,8 +18,7 @@ package memo_viewpoints_requirements_requirements_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::traceMatrix);
19
19
  attribute :>> concernKinds = (ConcernKind::regulatory, ConcernKind::safety);
20
20
  attribute :>> includedLayers = ("requirements");
21
- attribute :>> allowedElementKinds = ("StakeholderNeed", "Requirement", "SystemRequirement", "SoftwareRequirement", "HardwareRequirement");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
21
+ attribute :>> allowedElementKinds = ("Need", "Requirement");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -16,11 +16,11 @@ package memo_viewpoints_risk_risk_chain_view {
16
16
  attribute :>> presentationKind = (PresentationKind::riskTable);
17
17
  attribute :>> diagramType = "risk";
18
18
  attribute :>> autoPopulate = true;
19
- attribute :>> queryDescription = "Include hazards, hazardous situations, harms, controls, and verification evidence.";
19
+ attribute :>> queryDescription = "Include the explicit ISO 14971 chain, risk controls, residual risks, benefits, and verification evidence.";
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-RISK-001";
22
22
  attribute :>> name = "RiskChainQuery";
23
- attribute :>> includeElementKinds = ("Hazard", "HazardousSituation", "Harm", "RiskControl", "VerificationCase");
23
+ attribute :>> includeElementKinds = ("SafetyRelatedCharacteristic", "HazardCause", "Hazard", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation", "VerificationCase");
24
24
  attribute :>> includeLayers = ("risk", "assurance");
25
25
  attribute :>> includeConcerns = (ConcernKind::safety);
26
26
  attribute :>> rationaleText = "Auto-populate the risk chain view from the risk and assurance layers.";
@@ -18,8 +18,7 @@ package memo_viewpoints_risk_risk_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::riskTable);
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::regulatory);
20
20
  attribute :>> includedLayers = ("risk", "assurance");
21
- attribute :>> allowedElementKinds = ("Hazard", "HazardousSituation", "Harm", "Risk", "RiskControl", "VerificationCase");
22
- attribute :>> methodologyReference = ("iso14971-default");
21
+ attribute :>> allowedElementKinds = ("SafetyRelatedCharacteristic", "HazardCause", "Hazard", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation", "VerificationCase");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -20,7 +20,7 @@ package memo_viewpoints_software_software_architecture_view {
20
20
  part :>> selectionQuery {
21
21
  attribute :>> id = "QRY-SW-001";
22
22
  attribute :>> name = "SoftwareArchitectureQuery";
23
- attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareComponent", "SOUPComponent");
23
+ attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "SoftwareModule[moduleKind=soup]");
24
24
  attribute :>> includeLayers = ("software_structure");
25
25
  attribute :>> rationaleText = "Auto-populate the software architecture view from the software structure layer.";
26
26
  }
@@ -18,8 +18,7 @@ package memo_viewpoints_software_software_viewpoint {
18
18
  attribute :>> presentationKind = (PresentationKind::blockDiagram);
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::reliability);
20
20
  attribute :>> includedLayers = ("software_structure", "interfaces");
21
- attribute :>> allowedElementKinds = ("SoftwareSystem", "SoftwareComponent", "SOUPComponent", "SoftwareInterface");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
21
+ attribute :>> allowedElementKinds = ("SoftwareSystem", "SoftwareModule", "SoftwareModule[moduleKind=soup]", "Interface");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -19,7 +19,6 @@ package memo_viewpoints_usability_usability_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::usability, ConcernKind::safety);
20
20
  attribute :>> includedLayers = ("context", "requirements");
21
21
  attribute :>> allowedElementKinds = ("Actor", "UseContext", "UseError", "Requirement");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -19,7 +19,6 @@ package memo_viewpoints_verification_verification_viewpoint {
19
19
  attribute :>> concernKinds = (ConcernKind::safety, ConcernKind::regulatory);
20
20
  attribute :>> includedLayers = ("requirements", "assurance");
21
21
  attribute :>> allowedElementKinds = ("Requirement", "VerificationCase", "ValidationCase", "Evidence", "TestArtifact");
22
- attribute :>> methodologyReference = ("default-layer-viewpoint");
23
22
  attribute :>> userExtensible = true;
24
23
  }
25
24
  }
@@ -1,5 +1,5 @@
1
1
  name: "{{name}}"
2
2
  version: "0.1.0"
3
3
  type: device
4
- extends: "@memo/medical-modeling-profile"
4
+ extends: "@memoarchitect/medical-modeling-profile"
5
5
  description: "MEMO medical device model project"
@@ -1,12 +1,12 @@
1
1
  package memo_starter_catalog {
2
- import memo_medical_device_library::*;
2
+ private import memo::*;
3
3
 
4
- part starterSystem : System {
4
+ part starterSystem : MemoPart {
5
5
  attribute redefines name = "{{name}}";
6
6
  }
7
7
 
8
8
  requirement mainRequirement : Requirement {
9
- attribute redefines title = "Main system requirement";
9
+ attribute redefines statement = "TODO: state the first system requirement.";
10
10
  doc /* TODO: define the first system requirement. */
11
11
  }
12
12
  }
@@ -1,24 +0,0 @@
1
- # Diagram rendering samples
2
-
3
- This folder backs MEMO Architect's **Samples** experience with small, disposable
4
- SysML v2 inputs. Each file exists only to exercise one renderer; together they
5
- do not describe a product or reference architecture.
6
-
7
- ## Action Flow samples
8
-
9
- | File | Shows |
10
- |------|-------|
11
- | `action_flow_view.sysml` | Minimal renderer smoke test — dummy actions, typed item flows, successions, one composite. |
12
- | `operational_behaviour_view.sysml` | **Operational** behaviour — swimlanes per clinical role (Physician/Nurse/Biomed Tech/Patient), a `fork`/`join` for concurrent prep, and a composite step (`Administer PCA Therapy`) with a drill-in sub-flow. |
13
- | `functional_flow_view.sysml` | **Functional/component** behaviour — swimlanes per realising component, typed data/energy/material flows, a `fork`/`join` for concurrent occlusion monitoring, and a composite `Deliver Medication` valve sub-flow. |
14
-
15
- `fork`/`join` are SysML v2 control nodes: a `fork` splits one control flow into
16
- concurrent flows, a `join` synchronises them back; the branches are declared by
17
- the surrounding `first … then …` successions that reference the node by name.
18
-
19
- The first rendering milestone covers interconnection, tree, and action flow.
20
- Run the supported example application from the repository root:
21
-
22
- ```sh
23
- pnpm example:dev
24
- ```
@@ -1,9 +0,0 @@
1
- format: memo.viewlayout/v1
2
- viewSource: model/samples/action_flow_view.sysml
3
- layouts:
4
- diag-sample-sampleActionFlowView:
5
- nodes:
6
- nodes: {}
7
- edges: {}
8
- canvas:
9
- autoLayout: true
@@ -1,99 +0,0 @@
1
- format: memo.viewlayout/v1
2
- viewSource: model/samples/interconnection_view.sysml
3
- layouts:
4
- diag-sample-sampleInterconnectionView:
5
- nodes:
6
- coffeeMachine:
7
- x: 364
8
- y: 0
9
- ports:
10
- mainsWaterIn:
11
- x: -12
12
- y: 273
13
- side: left
14
- beverageOut:
15
- x: 1253.1
16
- y: 137.70963541666669
17
- side: right
18
- serviceInterface:
19
- x: 1253.1
20
- y: 240.73784722222223
21
- side: right
22
- diagnostics:
23
- x: 1253.1
24
- y: 380.19422743055554
25
- side: right
26
- waterTank:
27
- x: 128
28
- y: 114
29
- ports:
30
- tankWaterOut:
31
- x: 376
32
- y: 72
33
- side: right
34
- tankWaterIn:
35
- x: -12
36
- y: 72
37
- side: left
38
- heaterAssembly:
39
- x: 570
40
- y: 70
41
- ports:
42
- heaterWaterIn:
43
- x: -12
44
- y: 116
45
- side: left
46
- heatedWaterOut:
47
- x: 555.1
48
- y: 116
49
- side: right
50
- heatingElement:
51
- x: 128
52
- y: 70
53
- ports:
54
- heaterStatusOut:
55
- x: 299.1
56
- y: 72
57
- side: right
58
- brewGroup:
59
- x: 659.55
60
- y: 384
61
- ports:
62
- brewWaterIn:
63
- x: -12
64
- y: 72
65
- side: left
66
- brewedCoffeeOut:
67
- x: 376
68
- y: 72
69
- side: right
70
- waterSupply:
71
- x: 0
72
- y: 201
73
- ports:
74
- supplyWaterOut:
75
- x: 262
76
- y: 72
77
- side: right
78
- cup:
79
- x: 1719.1
80
- y: 5
81
- ports:
82
- cupBeverageIn:
83
- x: -12
84
- y: 72
85
- side: left
86
- edges:
87
- rel-683: {}
88
- rel-684: {}
89
- rel-685: {}
90
- rel-686: {}
91
- rel-687: {}
92
- rel-688: {}
93
- rel-689: {}
94
- canvas:
95
- autoLayout: false
96
- zoom: 0.72
97
- pan:
98
- x: -201.51599999999996
99
- y: 59.80000000000001
@@ -1,29 +0,0 @@
1
- package memo_architecture_assurance {
2
- private import ScalarValues::*;
3
-
4
- private import memo_core_common::*;
5
- private import memo_core_enumerations::*;
6
- part def VerificationCase specializes VerifiableElement {
7
- attribute methodKind : VerificationMethodKind;
8
- attribute acceptanceCriteria : String;
9
- attribute status : String;
10
- }
11
- part def ValidationCase specializes VerifiableElement {
12
- attribute validationMethod : ValidationMethodKind;
13
- attribute userParticipation : String;
14
- attribute acceptanceCriteria : String;
15
- attribute clinicalContext : String;
16
- }
17
- part def TestArtifact specializes EvidenceElement {
18
- attribute version : String;
19
- attribute lifecycleState : LifecycleStateKind;
20
- attribute artifactKind : ArtifactKind;
21
- attribute resultSummary : String;
22
- }
23
- part def Evidence specializes EvidenceElement {
24
- attribute version : String;
25
- attribute lifecycleState : LifecycleStateKind;
26
- attribute evidenceType : String;
27
- attribute integrityStatus : String;
28
- }
29
- }