@memoarchitect/ontology 0.4.4

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 (217) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +70 -0
  3. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +210 -0
  4. package/examples/gpca-pump/memo.config.yaml +9 -0
  5. package/examples/gpca-pump/methodology/gpca_methodology.sysml +11 -0
  6. package/examples/gpca-pump/methodology/gpca_profiles.sysml +25 -0
  7. package/examples/gpca-pump/methodology/gpca_scope.sysml +25 -0
  8. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +231 -0
  9. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +272 -0
  10. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +81 -0
  11. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +363 -0
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +205 -0
  13. package/examples/gpca-pump/model/catalog/gpca_context.sysml +113 -0
  14. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +172 -0
  15. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +173 -0
  16. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +1062 -0
  17. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +209 -0
  18. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +53 -0
  19. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1505 -0
  20. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +744 -0
  21. package/examples/gpca-pump/model/catalog/gpca_system.sysml +144 -0
  22. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +696 -0
  23. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +285 -0
  24. package/examples/gpca-pump/model/samples/README.md +24 -0
  25. package/examples/gpca-pump/model/samples/action_flow_view.sysml +72 -0
  26. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +9 -0
  27. package/examples/gpca-pump/model/samples/functional_flow_view.sysml +153 -0
  28. package/examples/gpca-pump/model/samples/interconnection_view.sysml +93 -0
  29. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +99 -0
  30. package/examples/gpca-pump/model/samples/operational_behaviour_view.sysml +145 -0
  31. package/examples/gpca-pump/model/samples/tree_view.sysml +56 -0
  32. package/examples/gpca-pump/model/views/behavior_action_flow_view.sysml +41 -0
  33. package/examples/gpca-pump/model/views/context_system_context_view.sysml +43 -0
  34. package/examples/gpca-pump/model/views/cybersecurity_cybersecurity_view.sysml +44 -0
  35. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +29 -0
  36. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +28 -0
  37. package/examples/gpca-pump/model/views/document_dhf_index_view.sysml +29 -0
  38. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +29 -0
  39. package/examples/gpca-pump/model/views/document_rmf_view.sysml +29 -0
  40. package/examples/gpca-pump/model/views/document_sdd_view.sysml +29 -0
  41. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +28 -0
  42. package/examples/gpca-pump/model/views/document_usability_view.sysml +28 -0
  43. package/examples/gpca-pump/model/views/document_vv_view.sysml +29 -0
  44. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +42 -0
  45. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +41 -0
  46. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +43 -0
  47. package/examples/gpca-pump/model/views/logical_logical_architecture_view.sysml +42 -0
  48. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +42 -0
  49. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +44 -0
  50. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +41 -0
  51. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +43 -0
  52. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +41 -0
  53. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +42 -0
  54. package/examples/gpca-pump/model/views/risk_fmea_view.sysml +42 -0
  55. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +44 -0
  56. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +43 -0
  57. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +42 -0
  58. package/memo.manifest.yaml +13 -0
  59. package/methodologies/default/memo.package.yaml +9 -0
  60. package/methodologies/gpca/memo.package.yaml +9 -0
  61. package/ontology/memo.package.yaml +8 -0
  62. package/ontology/memo.rendering.yaml +47 -0
  63. package/package.json +65 -0
  64. package/profile/archetypes.yaml +36 -0
  65. package/profile/memo.package.yaml +9 -0
  66. package/profile/templates/connected-device/starter.sysml +8 -0
  67. package/profile/templates/infusion-pump/starter.sysml +8 -0
  68. package/profile/templates/monitoring-device/starter.sysml +8 -0
  69. package/profile/templates/samd/starter.sysml +8 -0
  70. package/src/architecture/analysis/memo_fmea.sysml +91 -0
  71. package/src/architecture/assurance/memo_assurance.sysml +29 -0
  72. package/src/architecture/behavior/memo_behavior.sysml +65 -0
  73. package/src/architecture/constraints/memo_constraints.sysml +14 -0
  74. package/src/architecture/context/memo_context.sysml +58 -0
  75. package/src/architecture/cybersecurity/memo_cybersecurity.sysml +99 -0
  76. package/src/architecture/decisions/memo_decisions.sysml +12 -0
  77. package/src/architecture/functions/memo_functions.sysml +30 -0
  78. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +15 -0
  79. package/src/architecture/interfaces/memo_interfaces.sysml +103 -0
  80. package/src/architecture/logical_structure/memo_logical_structure.sysml +10 -0
  81. package/src/architecture/operational/memo_operational.sysml +51 -0
  82. package/src/architecture/physical/memo_physical_architecture.sysml +19 -0
  83. package/src/architecture/requirements/memo_requirements.sysml +69 -0
  84. package/src/architecture/risk/memo_arch_risk.sysml +7 -0
  85. package/src/architecture/risk/memo_risk.sysml +80 -0
  86. package/src/architecture/software_structure/memo_software_structure.sysml +44 -0
  87. package/src/architecture/system/memo_system_analysis.sysml +54 -0
  88. package/src/artifacts/clinical_safety_report.sysml +12 -0
  89. package/src/artifacts/cybersecurity_assessment_report.sysml +12 -0
  90. package/src/artifacts/definitions/memo_artifact_definitions.sysml +12 -0
  91. package/src/artifacts/design_change_log.sysml +12 -0
  92. package/src/artifacts/design_history_file_index.sysml +12 -0
  93. package/src/artifacts/design_input_plan.sysml +12 -0
  94. package/src/artifacts/design_output_plan.sysml +12 -0
  95. package/src/artifacts/evidence_record.sysml +12 -0
  96. package/src/artifacts/failure_mode_effects_analysis.sysml +12 -0
  97. package/src/artifacts/hazard_analysis_report.sysml +12 -0
  98. package/src/artifacts/labeling_specification.sysml +12 -0
  99. package/src/artifacts/requirements_specification.sysml +12 -0
  100. package/src/artifacts/requirements_traceability_matrix.sysml +12 -0
  101. package/src/artifacts/risk_management_plan.sysml +12 -0
  102. package/src/artifacts/software_design_description.sysml +12 -0
  103. package/src/artifacts/software_development_plan.sysml +12 -0
  104. package/src/artifacts/soup_list.sysml +12 -0
  105. package/src/artifacts/system_architecture_description.sysml +12 -0
  106. package/src/artifacts/test_protocol.sysml +12 -0
  107. package/src/artifacts/test_report.sysml +12 -0
  108. package/src/artifacts/threat_model_report.sysml +12 -0
  109. package/src/artifacts/usability_engineering_report.sysml +12 -0
  110. package/src/compliance/artifacts/memo_artifacts.sysml +13 -0
  111. package/src/compliance/change/memo_change.sysml +17 -0
  112. package/src/compliance/dhf-templates/21cfr820/change-record.md +45 -0
  113. package/src/compliance/dhf-templates/21cfr820/design-input.md +67 -0
  114. package/src/compliance/dhf-templates/21cfr820/design-output.md +80 -0
  115. package/src/compliance/dhf-templates/21cfr820/design-review.md +51 -0
  116. package/src/compliance/dhf-templates/21cfr820/design-validation.md +64 -0
  117. package/src/compliance/dhf-templates/21cfr820/design-verification.md +57 -0
  118. package/src/compliance/dhf-templates/21cfr820/dhf-index.md +111 -0
  119. package/src/compliance/dhf-templates/21cfr820/transfer-plan.md +50 -0
  120. package/src/compliance/dhf-templates/21cfr820/user-needs.md +81 -0
  121. package/src/compliance/dhf-templates/21cfr820/vv-plan.md +89 -0
  122. package/src/compliance/dhf-templates/21cfr820/vv-report.md +85 -0
  123. package/src/compliance/dhf-templates/fda-cybersecurity/incident-response.md +66 -0
  124. package/src/compliance/dhf-templates/fda-cybersecurity/postmarket-surveillance.md +63 -0
  125. package/src/compliance/dhf-templates/fda-cybersecurity/security-arch.md +83 -0
  126. package/src/compliance/dhf-templates/fda-cybersecurity/threat-model.md +100 -0
  127. package/src/compliance/dhf-templates/fda-cybersecurity/vuln-assessment.md +77 -0
  128. package/src/compliance/dhf-templates/iec-62304/change-control.md +40 -0
  129. package/src/compliance/dhf-templates/iec-62304/detailed-design.md +69 -0
  130. package/src/compliance/dhf-templates/iec-62304/integration-test.md +68 -0
  131. package/src/compliance/dhf-templates/iec-62304/sad.md +115 -0
  132. package/src/compliance/dhf-templates/iec-62304/sbom.md +67 -0
  133. package/src/compliance/dhf-templates/iec-62304/sdp.md +108 -0
  134. package/src/compliance/dhf-templates/iec-62304/soup.md +77 -0
  135. package/src/compliance/dhf-templates/iec-62304/srs.md +138 -0
  136. package/src/compliance/dhf-templates/iec-62304/sw-traceability.md +111 -0
  137. package/src/compliance/dhf-templates/iec-62304/system-test.md +67 -0
  138. package/src/compliance/dhf-templates/iec-62366/formative-eval.md +47 -0
  139. package/src/compliance/dhf-templates/iec-62366/summative-eval.md +69 -0
  140. package/src/compliance/dhf-templates/iec-62366/task-analysis.md +57 -0
  141. package/src/compliance/dhf-templates/iec-62366/ue-plan.md +81 -0
  142. package/src/compliance/dhf-templates/iec-62366/ui-spec.md +61 -0
  143. package/src/compliance/dhf-templates/iec-62366/urra.md +74 -0
  144. package/src/compliance/dhf-templates/iec-62366/use-spec.md +61 -0
  145. package/src/compliance/dhf-templates/iso-14971/fmea.md +93 -0
  146. package/src/compliance/dhf-templates/iso-14971/fta.md +70 -0
  147. package/src/compliance/dhf-templates/iso-14971/har.md +165 -0
  148. package/src/compliance/dhf-templates/iso-14971/risk-benefit.md +51 -0
  149. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +51 -0
  150. package/src/compliance/dhf-templates/iso-14971/rmp.md +169 -0
  151. package/src/compliance/dhf-templates/iso-14971/rmr.md +101 -0
  152. package/src/compliance/dhf-templates/shared/snippets/approval-block.md +16 -0
  153. package/src/compliance/dhf-templates/shared/snippets/document-control-header.md +15 -0
  154. package/src/compliance/dhf-templates/shared/snippets/references-section.md +16 -0
  155. package/src/compliance/dhf-templates/shared/snippets/revision-history-table.md +11 -0
  156. package/src/compliance/document_views/memo_document_views.sysml +7 -0
  157. package/src/compliance/iso14971/risk_management_file.sysml +16 -0
  158. package/src/compliance/postmarket/memo_postmarket.sysml +16 -0
  159. package/src/core/common/memo_common.sysml +50 -0
  160. package/src/core/consistency_rules/consistency_rules.sysml +41 -0
  161. package/src/core/dimensions/dimensions.sysml +37 -0
  162. package/src/core/enumerations/memo_enumerations.sysml +562 -0
  163. package/src/core/methodology_scope/methodology_scope.sysml +46 -0
  164. package/src/core/relationships/memo_relationships.sysml +230 -0
  165. package/src/core/semantics/semantics.sysml +20 -0
  166. package/src/core/stdlib/collections.sysml +6 -0
  167. package/src/core/stdlib/functions.sysml +6 -0
  168. package/src/core/stdlib/scalars.sysml +6 -0
  169. package/src/core/stdlib/time.sysml +6 -0
  170. package/src/medical_device_library.sysml +100 -0
  171. package/src/memo_namespaces.sysml +668 -0
  172. package/src/methodology/LICENSES/MIT.txt +19 -0
  173. package/src/methodology/memo_archetypes.sysml +93 -0
  174. package/src/methodology/memo_core.sysml +53 -0
  175. package/src/methodology/memo_gates.sysml +11 -0
  176. package/src/methodology/memo_patterns.sysml +12 -0
  177. package/src/methodology/memo_profiles.sysml +218 -0
  178. package/src/methodology/memo_rules.sysml +15 -0
  179. package/src/methodology/memo_viewpoints.sysml +5 -0
  180. package/src/methodology/memo_workflow.sysml +14 -0
  181. package/src/rules/closure/closure_rules.sysml +180 -0
  182. package/src/rules/coverage/coverage_rules.sysml +258 -0
  183. package/src/rules/crosslayer/cross_layer_rules.sysml +38 -0
  184. package/src/rules/lifecycle/lifecycle_rules.sysml +41 -0
  185. package/src/rules/quantitative/quantitative_rules.sysml +34 -0
  186. package/src/viewpoints/clinical/clinical_evidence_view.sysml +13 -0
  187. package/src/viewpoints/clinical/clinical_viewpoint.sysml +25 -0
  188. package/src/viewpoints/context/context_viewpoint.sysml +25 -0
  189. package/src/viewpoints/context/system_context_view.sysml +29 -0
  190. package/src/viewpoints/cybersecurity/cybersecurity_assessment_view.sysml +13 -0
  191. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +27 -0
  192. package/src/viewpoints/cybersecurity/threat_model_view.sysml +13 -0
  193. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +82 -0
  194. package/src/viewpoints/functional/function_allocation_view.sysml +29 -0
  195. package/src/viewpoints/functional/functional_viewpoint.sysml +25 -0
  196. package/src/viewpoints/functional/system_functional_tree_view.sysml +29 -0
  197. package/src/viewpoints/logical/logical_architecture_view.sysml +29 -0
  198. package/src/viewpoints/logical/logical_viewpoint.sysml +25 -0
  199. package/src/viewpoints/operational/operational_viewpoint.sysml +25 -0
  200. package/src/viewpoints/operational/use_case_view.sysml +29 -0
  201. package/src/viewpoints/physical/network_topology_view.sysml +29 -0
  202. package/src/viewpoints/physical/physical_bom_view.sysml +29 -0
  203. package/src/viewpoints/physical/physical_viewpoint.sysml +25 -0
  204. package/src/viewpoints/requirements/requirements_traceability_view.sysml +29 -0
  205. package/src/viewpoints/requirements/requirements_viewpoint.sysml +25 -0
  206. package/src/viewpoints/risk/risk_chain_view.sysml +30 -0
  207. package/src/viewpoints/risk/risk_viewpoint.sysml +25 -0
  208. package/src/viewpoints/software/software_architecture_view.sysml +29 -0
  209. package/src/viewpoints/software/software_viewpoint.sysml +25 -0
  210. package/src/viewpoints/usability/usability_engineering_view.sysml +13 -0
  211. package/src/viewpoints/usability/usability_viewpoint.sysml +25 -0
  212. package/src/viewpoints/verification/verification_coverage_view.sysml +29 -0
  213. package/src/viewpoints/verification/verification_viewpoint.sysml +25 -0
  214. package/template/memo.package.yaml +5 -0
  215. package/template/src/catalog/starter.sysml +12 -0
  216. package/template/src/documents/.gitkeep +1 -0
  217. package/template/src/views/.gitkeep +1 -0
@@ -0,0 +1,99 @@
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
@@ -0,0 +1,145 @@
1
+ package memo_examples_gpca_pump_model_samples_operational_behaviour_view {
2
+ private import ScalarValues::*;
3
+ private import memo_architecture_system::*;
4
+
5
+ private import memo_architecture_context::*;
6
+ private import memo_core_relationships::*;
7
+ private import memo_viewpoints_definitions::*;
8
+ private import memo_core_enumerations::*;
9
+
10
+ // ─────────────────────────────────────────────────────────────────────────
11
+ // Sample · Operational behaviour — clinical PCA setup & therapy
12
+ //
13
+ // Demonstrates an Action Flow (activity) diagram of *operational* behaviour:
14
+ // who does what across clinical roles. Swimlanes group steps by the actor
15
+ // that performs them (allocate <action> to <role>); a fork/join captures
16
+ // preparation work that happens concurrently; and `opAdminister` is a
17
+ // composite action — double-click it to drill into its sub-flow, then use
18
+ // "← Parent" to return.
19
+ // ─────────────────────────────────────────────────────────────────────────
20
+
21
+ // Items exchanged between steps (typed flow payloads)
22
+ item def OpPrescription;
23
+ item def OpBolusRequest;
24
+ part def CareSystem;
25
+
26
+ // Action definitions give steps typed in/out pins
27
+ action def OpPrescribeTherapy { out prescription : OpPrescription; }
28
+ action def OpVerifyPrescription { in prescription : OpPrescription; }
29
+ action def OpRequestBolus { out bolusRequest : OpBolusRequest; }
30
+ action def OpCheckLockout { in bolusRequest : OpBolusRequest; }
31
+
32
+ // Responsibility hierarchy used by the Level control:
33
+ // L1 care system → L2 responsibility groups → L3 performing actors.
34
+ part opCareSystem : CareSystem { attribute name = "PCA Care System"; }
35
+ part opClinicalTeam : Actor { attribute :>> name = "Clinical Team"; }
36
+ part opPatientGroup : Actor { attribute :>> name = "Patient Interaction"; }
37
+
38
+ // L3 clinical roles — one natural-level swimlane each
39
+ part opRolePhysician : Actor { attribute :>> name = "Physician"; }
40
+ part opRoleNurse : Actor { attribute :>> name = "Nurse"; }
41
+ part opRoleBiomed : Actor { attribute :>> name = "Biomed Tech"; }
42
+ part opRolePatient : Actor { attribute :>> name = "Patient"; }
43
+
44
+ connection : Composes connect parent ::> opCareSystem to child ::> opClinicalTeam;
45
+ connection : Composes connect parent ::> opCareSystem to child ::> opPatientGroup;
46
+ connection : Composes connect parent ::> opClinicalTeam to child ::> opRolePhysician;
47
+ connection : Composes connect parent ::> opClinicalTeam to child ::> opRoleNurse;
48
+ connection : Composes connect parent ::> opClinicalTeam to child ::> opRoleBiomed;
49
+ connection : Composes connect parent ::> opPatientGroup to child ::> opRolePatient;
50
+
51
+ action opSetupFlow {
52
+ action opPrescribe : OpPrescribeTherapy { attribute name = "Prescribe Therapy"; }
53
+ action opVerify : OpVerifyPrescription { attribute name = "Verify Prescription"; }
54
+
55
+ // Concurrent preparation: prime the pump while the device self-tests
56
+ fork opForkPrep;
57
+ action opPrime { attribute name = "Prime Pump & Load Reservoir"; }
58
+ action opSelfTest { attribute name = "Run Device Self-Test"; }
59
+ join opJoinPrep;
60
+
61
+ action opProgram { attribute name = "Program Pump Parameters"; }
62
+ action opConnect { attribute name = "Connect to Patient"; }
63
+ action opStart { attribute name = "Start Infusion"; }
64
+
65
+ // Composite step — its own sub-flow (drill-in)
66
+ action opAdminister {
67
+ attribute name = "Administer PCA Therapy";
68
+ action opRequestBolus : OpRequestBolus { attribute name = "Request Bolus"; }
69
+ action opCheckLockout : OpCheckLockout { attribute name = "Check Lockout"; }
70
+ action opDeliverDose { attribute name = "Deliver Dose"; }
71
+ action opLogEvent { attribute name = "Log Dose Event"; }
72
+
73
+ flow of OpBolusRequest from opRequestBolus.bolusRequest to opCheckLockout.bolusRequest;
74
+
75
+ first start then opRequestBolus;
76
+ first opRequestBolus then opCheckLockout;
77
+ first opCheckLockout then opDeliverDose;
78
+ first opDeliverDose then opLogEvent;
79
+ first opLogEvent then done;
80
+ }
81
+
82
+ flow of OpPrescription from opPrescribe.prescription to opVerify.prescription;
83
+
84
+ first start then opPrescribe;
85
+ first opPrescribe then opVerify;
86
+ first opVerify then opForkPrep;
87
+ first opForkPrep then opPrime;
88
+ first opForkPrep then opSelfTest;
89
+ first opPrime then opJoinPrep;
90
+ first opSelfTest then opJoinPrep;
91
+ first opJoinPrep then opProgram;
92
+ first opProgram then opConnect;
93
+ first opConnect then opStart;
94
+ first opStart then opAdminister;
95
+ first opAdminister then done;
96
+ }
97
+
98
+ // Swimlane allocation — who performs each step
99
+ allocate opSetupFlow.opPrescribe to opRolePhysician;
100
+ allocate opSetupFlow.opVerify to opRoleNurse;
101
+ allocate opSetupFlow.opPrime to opRoleNurse;
102
+ allocate opSetupFlow.opSelfTest to opRoleBiomed;
103
+ allocate opSetupFlow.opProgram to opRoleNurse;
104
+ allocate opSetupFlow.opConnect to opRoleNurse;
105
+ allocate opSetupFlow.opStart to opRoleNurse;
106
+ allocate opSetupFlow.opAdminister to opRoleNurse;
107
+ allocate opSetupFlow.opAdminister.opRequestBolus to opRolePatient;
108
+ allocate opSetupFlow.opAdminister.opCheckLockout to opRoleNurse;
109
+ allocate opSetupFlow.opAdminister.opDeliverDose to opRoleNurse;
110
+ allocate opSetupFlow.opAdminister.opLogEvent to opRoleNurse;
111
+
112
+ view opSetupView : MemoDiagramView {
113
+ expose opSetupFlow::**;
114
+ expose opCareSystem::**;
115
+ expose opClinicalTeam::**;
116
+ expose opPatientGroup::**;
117
+ attribute depth = 2;
118
+ attribute :>> title = "Sample · Clinical PCA Setup (Operational)";
119
+ attribute :>> shortDescription = "Operational activity across clinical roles: swimlanes per actor, a fork/join for concurrent prep, and a composite 'Administer PCA Therapy' sub-flow (double-click to drill in).";
120
+ attribute :>> viewKind = DiagramViewKind::actionflow;
121
+ attribute :>> diagramType = "ofd";
122
+ }
123
+
124
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opPrescribe to targetView ::> opSetupView;
125
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opVerify to targetView ::> opSetupView;
126
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opForkPrep to targetView ::> opSetupView;
127
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opPrime to targetView ::> opSetupView;
128
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opSelfTest to targetView ::> opSetupView;
129
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opJoinPrep to targetView ::> opSetupView;
130
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opProgram to targetView ::> opSetupView;
131
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opConnect to targetView ::> opSetupView;
132
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opStart to targetView ::> opSetupView;
133
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister to targetView ::> opSetupView;
134
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister.opRequestBolus to targetView ::> opSetupView;
135
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister.opCheckLockout to targetView ::> opSetupView;
136
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister.opDeliverDose to targetView ::> opSetupView;
137
+ connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister.opLogEvent to targetView ::> opSetupView;
138
+ connection : IncludedIn connect sourceElement ::> opCareSystem to targetView ::> opSetupView;
139
+ connection : IncludedIn connect sourceElement ::> opClinicalTeam to targetView ::> opSetupView;
140
+ connection : IncludedIn connect sourceElement ::> opPatientGroup to targetView ::> opSetupView;
141
+ connection : IncludedIn connect sourceElement ::> opRolePhysician to targetView ::> opSetupView;
142
+ connection : IncludedIn connect sourceElement ::> opRoleNurse to targetView ::> opSetupView;
143
+ connection : IncludedIn connect sourceElement ::> opRoleBiomed to targetView ::> opSetupView;
144
+ connection : IncludedIn connect sourceElement ::> opRolePatient to targetView ::> opSetupView;
145
+ }
@@ -0,0 +1,56 @@
1
+ package memo_examples_gpca_pump_model_samples_tree_view {
2
+ private import ScalarValues::*;
3
+ private import memo_architecture_hardware_structure::*;
4
+
5
+ private import memo_architecture_physical::*;
6
+ private import memo_core_relationships::*;
7
+ private import memo_viewpoints_definitions::*;
8
+ private import memo_core_enumerations::*;
9
+
10
+ part rootA : HardwareAssembly { attribute :>> name = "Root A"; }
11
+ part rootB : HardwareAssembly { attribute :>> name = "Root B"; }
12
+ part branchA1 : HardwareAssembly { attribute :>> name = "Branch A.1"; }
13
+ part branchA2 : HardwareAssembly { attribute :>> name = "Branch A.2 With A Deliberately Long Label"; }
14
+ part branchB1 : HardwareAssembly { attribute :>> name = "Branch B.1"; }
15
+ part leafA11 : HardwareAssembly {
16
+ attribute :>> name = "Leaf A.1.1";
17
+ attribute :>> partNumber = "PN-001";
18
+ }
19
+ part leafA12 : HardwareAssembly { attribute :>> name = "Leaf A.1.2"; }
20
+ part leafA21 : HardwareAssembly { attribute :>> name = "Leaf A.2.1"; }
21
+ part leafB11 : HardwareAssembly { attribute :>> name = "Leaf B.1.1"; }
22
+
23
+ connection : Composes connect parent ::> rootA to child ::> branchA1;
24
+ connection : Composes connect parent ::> rootA to child ::> branchA2;
25
+ connection : Composes connect parent ::> rootA to child ::> rootB;
26
+ connection : Composes connect parent ::> branchA1 to child ::> leafA11;
27
+ connection : Composes connect parent ::> branchA1 to child ::> leafA12;
28
+ connection : Composes connect parent ::> branchA2 to child ::> leafA21;
29
+ connection : Composes connect parent ::> rootB to child ::> branchB1;
30
+ connection : Composes connect parent ::> branchB1 to child ::> leafB11;
31
+
32
+ view sampleTreeView : MemoDiagramView {
33
+ expose rootA::**;
34
+ expose rootB::**;
35
+ attribute depth = 2;
36
+ attribute :>> title = "Sample · Tree";
37
+ attribute :>> shortDescription = "One connected dummy hierarchy with varied branch depths for tree layout development.";
38
+ attribute :>> viewKind = DiagramViewKind::general;
39
+ attribute :>> diagramType = "bdd";
40
+ attribute :>> layoutHint = "tree";
41
+ attribute :>> styleHint = "expanded:rootA,rootB,branchA1,branchB1";
42
+ part :>> selectionQuery {
43
+ attribute :>> includeRelationshipKinds = ("Composes");
44
+ }
45
+ }
46
+
47
+ connection : IncludedIn connect sourceElement ::> rootA to targetView ::> sampleTreeView;
48
+ connection : IncludedIn connect sourceElement ::> rootB to targetView ::> sampleTreeView;
49
+ connection : IncludedIn connect sourceElement ::> branchA1 to targetView ::> sampleTreeView;
50
+ connection : IncludedIn connect sourceElement ::> branchA2 to targetView ::> sampleTreeView;
51
+ connection : IncludedIn connect sourceElement ::> branchB1 to targetView ::> sampleTreeView;
52
+ connection : IncludedIn connect sourceElement ::> leafA11 to targetView ::> sampleTreeView;
53
+ connection : IncludedIn connect sourceElement ::> leafA12 to targetView ::> sampleTreeView;
54
+ connection : IncludedIn connect sourceElement ::> leafA21 to targetView ::> sampleTreeView;
55
+ connection : IncludedIn connect sourceElement ::> leafB11 to targetView ::> sampleTreeView;
56
+ }
@@ -0,0 +1,41 @@
1
+ package memo_examples_gpca_pump_model_views_behavior_action_flow_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_viewpoints_context_context_viewpoint::*;
6
+ private import memo_viewpoints_operational_operational_viewpoint::*;
7
+ private import memo_viewpoints_functional_functional_viewpoint::*;
8
+ private import memo_viewpoints_logical_logical_viewpoint::*;
9
+ private import memo_viewpoints_software_software_viewpoint::*;
10
+ private import memo_viewpoints_physical_physical_viewpoint::*;
11
+ private import memo_viewpoints_requirements_requirements_viewpoint::*;
12
+ private import memo_viewpoints_risk_risk_viewpoint::*;
13
+ private import memo_viewpoints_verification_verification_viewpoint::*;
14
+ private import memo_core_enumerations::*;
15
+
16
+ view gpcaActionFlowView : MemoDiagramView {
17
+ expose memo_examples_gpca_pump_model_views_behavior_action_flow_view::*;
18
+ attribute depth = 2;
19
+ attribute :>> id = "VIEW-BHV-003";
20
+ attribute :>> name = "GPCA_InfusionDeliveryActionFlowView";
21
+ attribute :>> title = "GPCA Infusion Delivery Action Flow";
22
+ attribute :>> shortDescription = "The 20 ms execution-step pipeline from sensor acquisition through alarm evaluation and dose limiting to pump actuation and event logging.";
23
+ attribute :>> longDescription = "Action flow over the infusionDeliveryFlow composite action: typed action steps with in/out parameters, item flows carrying the DD/CD exchange items, succession ordering from start to done, and swimlane allocation onto the logical architecture (sensors, alarm, infusion manager, pump motor, logging).";
24
+ attribute :>> outputKind = (ViewOutputKind::diagram);
25
+ attribute :>> presentationKind = (PresentationKind::activityDiagram);
26
+ attribute :>> viewKind = DiagramViewKind::actionflow;
27
+ attribute :>> diagramType = "afd";
28
+ attribute :>> dataSourceDescription = "GPCA infusion delivery composite action, item flows, and successions";
29
+ attribute :>> autoPopulate = true;
30
+ attribute :>> queryDescription = "Include the nested action usages of the infusion delivery flow with their flows and successions.";
31
+ attribute :>> documentUsage = ("SDD");
32
+ part :>> selectionQuery {
33
+ attribute :>> id = "QRY-BHV-103";
34
+ attribute :>> name = "GPCA_ActionFlowQuery";
35
+ attribute :>> includeElementKinds = ("ActionUsage");
36
+ attribute :>> selectionExpression = "product == 'GPCA'";
37
+ attribute :>> rationaleText = "Auto-populate the action flow view from the behavior layer's action usages.";
38
+ }
39
+ part :>> viewpointDefinition = logicalArchitectureViewpoint;
40
+ }
41
+ }
@@ -0,0 +1,43 @@
1
+ package memo_examples_gpca_pump_model_views_context_system_context_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_viewpoints_context_context_viewpoint::*;
6
+ private import memo_viewpoints_operational_operational_viewpoint::*;
7
+ private import memo_viewpoints_functional_functional_viewpoint::*;
8
+ private import memo_viewpoints_logical_logical_viewpoint::*;
9
+ private import memo_viewpoints_software_software_viewpoint::*;
10
+ private import memo_viewpoints_physical_physical_viewpoint::*;
11
+ private import memo_viewpoints_requirements_requirements_viewpoint::*;
12
+ private import memo_viewpoints_risk_risk_viewpoint::*;
13
+ private import memo_viewpoints_verification_verification_viewpoint::*;
14
+ private import memo_core_enumerations::*;
15
+
16
+ view gpcaSystemContextView : MemoDiagramView {
17
+ expose memo_examples_gpca_pump_model_views_context_system_context_view::*;
18
+ attribute depth = 2;
19
+ attribute :>> id = "VIEW-CTX-101";
20
+ attribute :>> name = "GPCA_SystemContextView";
21
+ attribute :>> title = "GPCA System Context View";
22
+ attribute :>> shortDescription = "Actors, use contexts, and external entities at the GPCA system boundary.";
23
+ attribute :>> longDescription = "Shows the CriSys Fig 2.1 boundary: patient, clinician, prescription, drug reservoir, needle, hospital pharmacy database, and hospital environment around the pump, with directional data flows, physical drug-path connections, and the intended use anchoring the boundary.";
24
+ attribute :>> outputKind = (ViewOutputKind::diagram);
25
+ attribute :>> presentationKind = (PresentationKind::blockDiagram);
26
+ attribute :>> viewKind = DiagramViewKind::general;
27
+ attribute :>> diagramType = "bdd";
28
+ attribute :>> dataSourceDescription = "GPCA context layer: actors, use contexts, intended use, operational entities";
29
+ attribute :>> autoPopulate = true;
30
+ attribute :>> queryDescription = "Include actors, use contexts, intended use, and external operational entities.";
31
+ attribute :>> documentUsage = ("Architecture Description", "Usability Engineering File");
32
+ part :>> selectionQuery {
33
+ attribute :>> id = "QRY-CTX-101";
34
+ attribute :>> name = "GPCA_SystemContextQuery";
35
+ attribute :>> includeElementKinds = ("Actor", "UseContext", "IntendedUse", "OperationalEntity");
36
+ attribute :>> includeRelationshipKinds = ("InteractsWith", "ExchangesWith", "ConnectsPhysically", "GovernsUse", "AppliesInContext");
37
+ attribute :>> includeLayers = ("context", "operational");
38
+ attribute :>> selectionExpression = "product == 'GPCA'";
39
+ attribute :>> rationaleText = "Auto-populate the GPCA context view from the context layer.";
40
+ }
41
+ part :>> viewpointDefinition = contextViewpoint;
42
+ }
43
+ }
@@ -0,0 +1,44 @@
1
+ package memo_examples_gpca_pump_model_views_cybersecurity_cybersecurity_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_viewpoints_context_context_viewpoint::*;
6
+ private import memo_viewpoints_operational_operational_viewpoint::*;
7
+ private import memo_viewpoints_functional_functional_viewpoint::*;
8
+ private import memo_viewpoints_logical_logical_viewpoint::*;
9
+ private import memo_viewpoints_software_software_viewpoint::*;
10
+ private import memo_viewpoints_physical_physical_viewpoint::*;
11
+ private import memo_viewpoints_requirements_requirements_viewpoint::*;
12
+ private import memo_viewpoints_risk_risk_viewpoint::*;
13
+ private import memo_viewpoints_verification_verification_viewpoint::*;
14
+ private import memo_viewpoints_cybersecurity_cybersecurity_viewpoint::*;
15
+ private import memo_core_enumerations::*;
16
+
17
+ view gpcaCybersecurityView : MemoDiagramView {
18
+ expose memo_examples_gpca_pump_model_views_cybersecurity_cybersecurity_view::*;
19
+ attribute depth = 2;
20
+ attribute :>> id = "VIEW-CYB-001";
21
+ attribute :>> name = "GPCA_CybersecurityView";
22
+ attribute :>> title = "GPCA Cybersecurity View";
23
+ attribute :>> shortDescription = "Shows GPCA assets, trust boundaries, threats, vulnerabilities, and mitigations.";
24
+ attribute :>> longDescription = "Product-specific cybersecurity view intended for secure product development and cross-reference into cybersecurity risk documentation.";
25
+ attribute :>> outputKind = (ViewOutputKind::diagram);
26
+ attribute :>> presentationKind = (PresentationKind::custom);
27
+ attribute :>> viewKind = DiagramViewKind::general;
28
+ attribute :>> diagramType = "threat-model";
29
+ attribute :>> dataSourceDescription = "GPCA cyber assets, threat scenarios, and trace links";
30
+ attribute :>> autoPopulate = true;
31
+ attribute :>> queryDescription = "Include cyber assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, mitigations, security requirements, and verification.";
32
+ attribute :>> documentUsage = ("Threat Model", "Cybersecurity Risk Assessment", "QMSR");
33
+ part :>> selectionQuery {
34
+ attribute :>> id = "QRY-CYB-001";
35
+ attribute :>> name = "GPCA_CybersecurityQuery";
36
+ attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "ThreatScenario");
37
+ attribute :>> includeLayers = ("cybersecurity", "risk", "assurance");
38
+ attribute :>> includeConcerns = (ConcernKind::cybersecurity, ConcernKind::privacy, ConcernKind::safety);
39
+ attribute :>> selectionExpression = "product == 'GPCA'";
40
+ attribute :>> rationaleText = "Auto-populate the GPCA cybersecurity view from the cyber layer and cross-layer trace model.";
41
+ }
42
+ part :>> viewpointDefinition = cybersecurityViewpoint;
43
+ }
44
+ }
@@ -0,0 +1,29 @@
1
+ package memo_examples_gpca_pump_model_views_document_architecture_description_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ view architectureDescriptionView : MemoDocumentView {
8
+ expose memo_examples_gpca_pump_model_views_document_architecture_description_view::*;
9
+ attribute :>> id = "DOC-005";
10
+ attribute :>> name = "ArchitectureDescriptionView";
11
+ attribute :>> title = "GPCA System Architecture Description View";
12
+ attribute :>> shortDescription = "ISO/IEC/IEEE 42010 architecture description across all layers.";
13
+ attribute :>> longDescription = "Aggregates context, operational, functional, logical, software, and physical layers with their views and correspondences for the system architecture description.";
14
+ attribute :>> version = "0.1";
15
+ attribute :>> lifecycleState = LifecycleStateKind::development;
16
+ attribute :>> viewKind = DocumentViewKind::ArchitectureDescription;
17
+ attribute :>> generationRule = "Include all architecture layers, functional chains, interfaces, and the physical BOM with cross-layer allocations";
18
+ attribute :>> marketScope = "generic";
19
+ attribute :>> documentUsage = ("Architecture Description", "DHF");
20
+ attribute :>> sectionIdentifier = "AD";
21
+ part :>> selectionQuery {
22
+ attribute :>> id = "QRY-DOC-005";
23
+ attribute :>> name = "architectureDescriptionViewQuery";
24
+ attribute :>> includeElementKinds = ("LogicalComponent", "LogicalFunction", "ComponentExchange", "SoftwareSystem", "SoftwareComponent", "HardwareAssembly", "ProcessingNode", "PhysicalPort", "FunctionalChain", "FunctionalChainStep");
25
+ attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "AllocatesExchange", "RealizesInterface", "BindsToInterface", "InvolvesFunction", "SequencesStep", "DeploysOnto", "HostedBy");
26
+ attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,28 @@
1
+ package memo_examples_gpca_pump_model_views_document_cyber_assessment_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_viewpoints_cybersecurity_cybersecurity_assessment_view::*;
6
+ private import memo_core_enumerations::*;
7
+
8
+ view cyberAssessmentView : MemoCybersecurityAssessmentView {
9
+ expose memo_examples_gpca_pump_model_views_document_cyber_assessment_view::*;
10
+ attribute :>> id = "DOC-003";
11
+ attribute :>> name = "GPCAMemoCybersecurityAssessmentView";
12
+ attribute :>> title = "GPCA Cybersecurity Assessment View";
13
+ attribute :>> shortDescription = "Cybersecurity risk-assessment-oriented document view for GPCA.";
14
+ attribute :>> longDescription = "Captures GPCA cyber risks, mitigations, security requirements, verification, and safety/privacy traceability for cybersecurity assessment records.";
15
+ attribute :>> version = "0.1";
16
+ attribute :>> lifecycleState = LifecycleStateKind::development;
17
+ attribute :>> marketScope = "generic";
18
+ attribute :>> documentUsage = ("Cybersecurity Risk Assessment", "RMF", "QMSR");
19
+ attribute :>> sectionIdentifier = "CYB-RA";
20
+ part :>> selectionQuery {
21
+ attribute :>> id = "QRY-DOC-009";
22
+ attribute :>> name = "cyberAssessmentViewQuery";
23
+ attribute :>> includeElementKinds = ("CyberRisk", "CyberHazard", "CybersecurityAsset", "CyberMitigation", "SecurityRequirement", "SecurityClaim", "SBOMEntry", "SOUPComponent");
24
+ attribute :>> includeRelationshipKinds = ("ImpactsSafety", "MitigatesVulnerability", "DerivesCyberRequirement", "AssessedAgainst", "DependsOnSoup");
25
+ attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,29 @@
1
+ package memo_examples_gpca_pump_model_views_document_dhf_index_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ view dhfIndexView : MemoDocumentView {
8
+ expose memo_examples_gpca_pump_model_views_document_dhf_index_view::*;
9
+ attribute :>> id = "DOC-007";
10
+ attribute :>> name = "DesignHistoryFileIndexView";
11
+ attribute :>> title = "GPCA Design History File Index View";
12
+ attribute :>> shortDescription = "Index of design inputs, outputs, reviews, and V&V records for the DHF.";
13
+ attribute :>> longDescription = "Collects the document-backed views (requirements, architecture, SDD, RMF, VV, usability, cybersecurity) into the design history file index required by 21 CFR 820.30(j).";
14
+ attribute :>> version = "0.1";
15
+ attribute :>> lifecycleState = LifecycleStateKind::development;
16
+ attribute :>> viewKind = DocumentViewKind::DHF;
17
+ attribute :>> generationRule = "Index every document-backed view with version and lifecycle state";
18
+ attribute :>> marketScope = "generic";
19
+ attribute :>> documentUsage = ("DHF");
20
+ attribute :>> sectionIdentifier = "DHF";
21
+ part :>> selectionQuery {
22
+ attribute :>> id = "QRY-DOC-007";
23
+ attribute :>> name = "dhfIndexViewQuery";
24
+ attribute :>> includeElementKinds = ("MemoDocumentView", "MemoDiagramView", "MemoUsabilityEngineeringView", "MemoCybersecurityThreatModelView", "MemoCybersecurityAssessmentView", "Evidence", "Citation");
25
+ attribute :>> includeRelationshipKinds = ("IncludedIn", "ProducesEvidence");
26
+ attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,29 @@
1
+ package memo_examples_gpca_pump_model_views_document_hazard_analysis_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ view hazardAnalysisView : MemoDocumentView {
8
+ expose memo_examples_gpca_pump_model_views_document_hazard_analysis_view::*;
9
+ attribute :>> id = "DOC-009";
10
+ attribute :>> name = "HazardAnalysisReportView";
11
+ attribute :>> title = "GPCA Hazard Analysis Report View";
12
+ attribute :>> shortDescription = "Hazard analysis report aligned to the UMN CriSys GPCA hazard tables.";
13
+ attribute :>> longDescription = "Aggregates the five hazard chains, the FMEA worksheet, and the overdose fault tree with their controls and verification pointers.";
14
+ attribute :>> version = "0.1";
15
+ attribute :>> lifecycleState = LifecycleStateKind::development;
16
+ attribute :>> viewKind = DocumentViewKind::RMF;
17
+ attribute :>> generationRule = "Include hazards, sequences of events, situations, harms, FMEA rows, fault tree, and controls";
18
+ attribute :>> marketScope = "generic";
19
+ attribute :>> documentUsage = ("Hazard Analysis Report", "RMF");
20
+ attribute :>> sectionIdentifier = "HAZ";
21
+ part :>> selectionQuery {
22
+ attribute :>> id = "QRY-DOC-003";
23
+ attribute :>> name = "hazardAnalysisViewQuery";
24
+ attribute :>> includeElementKinds = ("FMEAWorksheet", "FailureMode", "FailureCause", "FailureEffect", "DetectionMethod", "FMEAAction", "FaultTree", "FaultTreeEvent", "FaultTreeGate", "MinimalCutSet", "Hazard", "HazardCause", "SequenceOfEvents");
25
+ attribute :>> includeRelationshipKinds = ("HasFailureMode", "CausedBy", "CausesEffect", "DetectedBy", "AddressedByAction", "InputToGate", "ContainsEvent", "OriginatesFrom", "ContributesToHazard", "BrokenByControl", "IncludedIn");
26
+ attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,29 @@
1
+ package memo_examples_gpca_pump_model_views_document_rmf_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ view rmfView : MemoDocumentView {
8
+ expose memo_examples_gpca_pump_model_views_document_rmf_view::*;
9
+ attribute :>> id = "DOC-001";
10
+ attribute :>> name = "RiskManagementFileView";
11
+ attribute :>> title = "GPCA Risk Management File View";
12
+ attribute :>> shortDescription = "Document-backed risk view for GPCA.";
13
+ attribute :>> longDescription = "Aggregates the risk chain, controls, verification, residual risk, and cybersecurity links needed for the GPCA risk management file.";
14
+ attribute :>> version = "0.2";
15
+ attribute :>> lifecycleState = LifecycleStateKind::development;
16
+ attribute :>> viewKind = DocumentViewKind::RMF;
17
+ attribute :>> generationRule = "Include risk chain, controls, verification, residual risk, and cybersecurity traceability";
18
+ attribute :>> marketScope = "generic";
19
+ attribute :>> documentUsage = ("RMF", "QMSR");
20
+ attribute :>> sectionIdentifier = "RMF";
21
+ part :>> selectionQuery {
22
+ attribute :>> id = "QRY-DOC-001";
23
+ attribute :>> name = "rmfViewQuery";
24
+ attribute :>> includeElementKinds = ("Hazard", "HazardCause", "HazardousSituation", "Harm", "SequenceOfEvents", "Risk", "RiskBeforeMitigation", "RiskAfterMitigation", "RiskControl", "OverallResidualRiskEvaluation", "VerificationCase", "Evidence");
25
+ attribute :>> includeRelationshipKinds = ("ContributesToHazard", "LeadsToHazard", "CausedBy", "MitigatesHazard", "MitigatedByControl", "TracesRisk", "AssessedAgainst", "VerifiedBy", "ProducesEvidence", "IncludedIn");
26
+ attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,29 @@
1
+ package memo_examples_gpca_pump_model_views_document_sdd_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ view sddView : MemoDocumentView {
8
+ expose memo_examples_gpca_pump_model_views_document_sdd_view::*;
9
+ attribute :>> id = "DOC-004";
10
+ attribute :>> name = "SoftwareDesignDescriptionView";
11
+ attribute :>> title = "GPCA Software Design Description View";
12
+ attribute :>> shortDescription = "IEC 62304 software design description for the GPCA software system.";
13
+ attribute :>> longDescription = "Aggregates the software system, its six components with safety classes and scheduling attributes, mode machine and transitions, interfaces, and function allocations for the SDD.";
14
+ attribute :>> version = "0.1";
15
+ attribute :>> lifecycleState = LifecycleStateKind::development;
16
+ attribute :>> viewKind = DocumentViewKind::SDD;
17
+ attribute :>> generationRule = "Include software structure, behavior machine with transitions, software interfaces, allocations, and timing constraints";
18
+ attribute :>> marketScope = "generic";
19
+ attribute :>> documentUsage = ("SDD", "QMSR");
20
+ attribute :>> sectionIdentifier = "SDD";
21
+ part :>> selectionQuery {
22
+ attribute :>> id = "QRY-DOC-004";
23
+ attribute :>> name = "sddViewQuery";
24
+ attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareComponent", "ModeState", "Transition", "SoftwareInterface", "LogicalFunction", "TimingConstraint", "SOUPComponent");
25
+ attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "BindsToInterface", "RealizesInterface", "DependsOnSoup", "Changes");
26
+ attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,28 @@
1
+ package memo_examples_gpca_pump_model_views_document_threat_model_view {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_viewpoints_definitions::*;
5
+ private import memo_viewpoints_cybersecurity_threat_model_view::*;
6
+ private import memo_core_enumerations::*;
7
+
8
+ view threatModelView : MemoCybersecurityThreatModelView {
9
+ expose memo_examples_gpca_pump_model_views_document_threat_model_view::*;
10
+ attribute :>> id = "DOC-002";
11
+ attribute :>> name = "GPCACyberThreatModelView";
12
+ attribute :>> title = "GPCA Cybersecurity Threat Model View";
13
+ attribute :>> shortDescription = "Threat-model-oriented document view for GPCA.";
14
+ attribute :>> longDescription = "Captures GPCA cyber assets, trust boundaries, threats, threat scenarios, vulnerabilities, and mitigations for secure product development records.";
15
+ attribute :>> version = "0.1";
16
+ attribute :>> lifecycleState = LifecycleStateKind::development;
17
+ attribute :>> marketScope = "generic";
18
+ attribute :>> documentUsage = ("Threat Model", "QMSR");
19
+ attribute :>> sectionIdentifier = "CYB-TM";
20
+ part :>> selectionQuery {
21
+ attribute :>> id = "QRY-DOC-008";
22
+ attribute :>> name = "threatModelViewQuery";
23
+ attribute :>> includeElementKinds = ("Threat", "ThreatScenario", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
24
+ attribute :>> includeRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "CrossesTrustBoundary", "MitigatesVulnerability", "DerivesCyberRequirement");
25
+ attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
26
+ }
27
+ }
28
+ }