@memoarchitect/ontology 0.7.0 → 0.8.22

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 (204) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  4. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  5. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  6. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  7. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  8. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  9. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  10. package/examples/gpca-pump/model/catalog/gpca_context.sysml +9 -0
  11. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +9 -5
  12. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  13. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +82 -58
  14. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  15. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  16. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  17. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -2
  18. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -331
  19. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  20. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  21. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -1
  22. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +1 -1
  23. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +1 -1
  24. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +1 -1
  25. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +1 -1
  28. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +2 -2
  30. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -2
  31. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -2
  32. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -1
  33. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +2 -2
  35. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -2
  36. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +4 -2
  37. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -1
  38. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +3 -2
  39. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  40. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  41. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  42. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  43. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  44. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -5
  45. package/examples/ros-mobile-robot/README.md +40 -0
  46. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  47. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  48. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  49. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  50. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  51. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  52. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -60
  53. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  54. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -15
  55. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -9
  56. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +42 -66
  57. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +56 -66
  58. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +26 -55
  59. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -6
  60. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +0 -18
  61. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +51 -82
  62. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +21 -31
  63. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -8
  64. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -21
  65. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  66. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  67. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  68. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  69. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  70. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  71. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -1
  72. package/extensions/LICENSES/MIT.txt +19 -0
  73. package/extensions/README.md +94 -0
  74. package/extensions/aadl/memo.package.yaml +18 -0
  75. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  76. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  77. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  78. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  79. package/extensions/cloud/memo.package.yaml +18 -0
  80. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  81. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  82. package/extensions/container/memo.package.yaml +18 -0
  83. package/extensions/container/src/container_extension.sysml +37 -0
  84. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  85. package/extensions/messaging/memo.package.yaml +18 -0
  86. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  87. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  88. package/extensions/ros/memo.package.yaml +18 -0
  89. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  90. package/extensions/ros/src/ros_extension.sysml +200 -0
  91. package/extensions/template/src/extension.sysml +37 -0
  92. package/memo.manifest.yaml +13 -2
  93. package/methodologies/default/memo.package.yaml +1 -1
  94. package/methodologies/gpca/memo.package.yaml +1 -1
  95. package/ontology/memo.package.yaml +1 -1
  96. package/package.json +5 -3
  97. package/profile/memo.package.yaml +1 -1
  98. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  99. package/src/architecture/functional/behavior/memo_behavior.sysml +49 -21
  100. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  101. package/src/architecture/functional/functions/memo_functions.sysml +91 -34
  102. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  103. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +37 -10
  104. package/src/architecture/implementation/ui/memo_ui.sysml +78 -38
  105. package/src/architecture/logical/interfaces/memo_interfaces.sysml +63 -11
  106. package/src/architecture/logical/structure/memo_logical_structure.sysml +21 -20
  107. package/src/architecture/operational/activities/memo_activities.sysml +10 -3
  108. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  109. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  110. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  111. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  112. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  113. package/src/architecture/operational/workflows/memo_workflows.sysml +29 -10
  114. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  115. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  116. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  117. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  118. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  119. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  120. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  121. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  122. package/src/artifacts/standards/iec_60812.sysml +51 -0
  123. package/src/artifacts/standards/iec_62304.sysml +210 -0
  124. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  125. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  126. package/src/artifacts/standards/iso_13485.sysml +113 -0
  127. package/src/artifacts/standards/iso_14971.sysml +94 -0
  128. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  129. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  130. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  131. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  132. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  133. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  134. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  135. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  136. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  137. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  138. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  139. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  140. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  141. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  142. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  143. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  144. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  145. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  146. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  147. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  148. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  149. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  150. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  151. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  152. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  153. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  154. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  155. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  156. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  157. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  158. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  159. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  160. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  161. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  162. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  163. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  164. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  165. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  166. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  167. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  168. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  169. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  170. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  171. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  172. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  173. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  174. package/src/core/annotations/memo_annotations.sysml +25 -6
  175. package/src/core/common/memo_common.sysml +121 -16
  176. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  177. package/src/core/dimensions/dimensions.sysml +12 -0
  178. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  179. package/src/core/relationships/memo_relationships.sysml +199 -196
  180. package/src/memo_namespaces.sysml +30 -0
  181. package/src/methodology/core/memo_core.sysml +24 -0
  182. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  183. package/src/rules/ontology/ontology_invariants.sysml +213 -1
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +3 -3
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -1
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -1
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +1 -0
  189. package/src/viewpoints/functional/functional_viewpoint.sysml +1 -1
  190. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -1
  191. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -1
  192. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -1
  193. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +1 -1
  194. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -1
  195. package/src/viewpoints/verification/verification_viewpoint.sysml +1 -1
  196. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -1
  197. package/examples/extensions/README.md +0 -16
  198. package/examples/extensions/template/src/extension.sysml +0 -15
  199. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  200. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  201. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  202. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  203. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  204. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -1,8 +1,16 @@
1
1
  package memo_examples_gpca_pump_gpca_verification {
2
+ private import memo_examples_gpca_pump_gpca_requirements::*;
3
+ private import memo_examples_gpca_pump_gpca_formal_behavior::*;
4
+ private import memo_examples_gpca_pump_gpca_architecture::*;
5
+ private import memo_examples_gpca_pump_gpca_risk::*;
6
+ private import memo_examples_gpca_pump_gpca_behavior_modes::*;
7
+ private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirements_view::*;
2
8
  private import ScalarValues::*;
9
+ private import memo_core_dimensions::*; // ElementStatusKind
3
10
 
4
11
  private import memo_assurance_verification_validation::*;
5
12
  private import memo_core_enumerations::*;
13
+ private import memo_core_common::*;
6
14
 
7
15
  // ── Verification cases ──────────────────────────────────────
8
16
  verification vcModeRange : VerificationCase {
@@ -10,112 +18,155 @@ package memo_examples_gpca_pump_gpca_verification {
10
18
  attribute :>> name = "VerifyModeRange";
11
19
  attribute :>> methodKind = VerificationMethodKind::formalProof;
12
20
  attribute :>> acceptanceCriteria = "Current_System_mode only takes valid exclusive values";
13
- attribute :>> status = "planned";
21
+ attribute :>> status = ElementStatusKind::approved;
22
+
23
+ objective { verify reqCs01; }
24
+ subject verified : Base::Anything[*] = (guaranteeExclusiveMode, gpcaDevice.gpcaSoftware.tlm, gpcaDevice.gpcaSoftware.outputBus);
14
25
  }
15
26
  verification vcLockout : VerificationCase {
16
27
  attribute :>> id = "VER-002";
17
28
  attribute :>> name = "VerifyBolusLockout";
18
29
  attribute :>> methodKind = VerificationMethodKind::test;
19
30
  attribute :>> acceptanceCriteria = "No patient bolus initiated when lockout or max bolus constraints active";
20
- attribute :>> status = "planned";
31
+ attribute :>> status = ElementStatusKind::approved;
32
+
33
+ objective { verify reqCs25; }
34
+ subject verified : Base::Anything[*] = (lockoutControl, guaranteeLockoutPreventsBolus, tcBolusResponse, gpcaDevice.gpcaSoftware.infusionMgr);
21
35
  }
22
36
  verification vcSameStepAlarm : VerificationCase {
23
37
  attribute :>> id = "VER-003";
24
38
  attribute :>> name = "VerifySameStepAlarmStop";
25
39
  attribute :>> methodKind = VerificationMethodKind::modelChecking;
26
40
  attribute :>> acceptanceCriteria = "Alarm output affects infusion in same execution step";
27
- attribute :>> status = "planned";
41
+ attribute :>> status = ElementStatusKind::approved;
42
+
43
+ objective { verify reqCs19; }
44
+ subject verified : Base::Anything[*] = (propAlarmStopsSameStep, guaranteeAlarmStopsSameStep, tcAlarmLatency, gpcaDevice.gpcaSoftware.alarm);
28
45
  }
29
46
  verification vcTemporalModeSafety : VerificationCase {
30
47
  attribute :>> id = "VER-004";
31
48
  attribute :>> name = "VerifyTemporalModeSafety";
32
49
  attribute :>> methodKind = VerificationMethodKind::modelChecking;
33
50
  attribute :>> acceptanceCriteria = "No invalid transitions and pause on critical alarms";
34
- attribute :>> status = "planned";
51
+ attribute :>> status = ElementStatusKind::approved;
52
+
53
+ objective { verify reqCs75; verify reqDoorOpen; }
54
+ subject verified : Base::Anything[*] = (propLockoutTimerMonotonic, temporalNoInvalidTransition);
35
55
  }
36
56
  verification vcAirInLine : VerificationCase {
37
57
  attribute :>> id = "VER-005";
38
58
  attribute :>> name = "VerifyAirInLineStop";
39
59
  attribute :>> methodKind = VerificationMethodKind::test;
40
60
  attribute :>> acceptanceCriteria = "Injected air above threshold pauses infusion and annunciates per the REQ 59 High-priority actions (REQ-CS-21)";
41
- attribute :>> status = "planned";
61
+ attribute :>> status = ElementStatusKind::approved;
62
+
63
+ objective { verify reqCs21; }
64
+ subject verified : Base::Anything[*] = (airDetectionControl);
42
65
  }
43
66
  verification vcOcclusion : VerificationCase {
44
67
  attribute :>> id = "VER-006";
45
68
  attribute :>> name = "VerifyOcclusionDetection";
46
69
  attribute :>> methodKind = VerificationMethodKind::test;
47
70
  attribute :>> acceptanceCriteria = "Clamped line above pressure threshold pauses infusion and annunciates (REQ-X-04)";
48
- attribute :>> status = "planned";
71
+ attribute :>> status = ElementStatusKind::approved;
72
+
73
+ objective { verify reqOcclusion; }
74
+ subject verified : Base::Anything[*] = (occlusionAlarmControl);
49
75
  }
50
76
  verification vcEmptyReservoir : VerificationCase {
51
77
  attribute :>> id = "VER-007";
52
78
  attribute :>> name = "VerifyEmptyReservoirStop";
53
79
  attribute :>> methodKind = VerificationMethodKind::test;
54
80
  attribute :>> acceptanceCriteria = "Reservoir-empty assertion transitions to PAUSED (KVO flow) and annunciates per the REQ 59 High-priority actions (REQ-CS-23)";
55
- attribute :>> status = "planned";
81
+ attribute :>> status = ElementStatusKind::approved;
82
+
83
+ objective { verify reqCs23; }
84
+ subject verified : Base::Anything[*] = (reservoirMonitorControl, gpcaDevice.gpcaSoftware.systemStatus);
56
85
  }
57
86
  verification vcPost : VerificationCase {
58
87
  attribute :>> id = "VER-008";
59
88
  attribute :>> name = "VerifyPowerOnSelfTest";
60
89
  attribute :>> methodKind = VerificationMethodKind::test;
61
90
  attribute :>> acceptanceCriteria = "Each injected POST fault (CPU, RAM, ROM, watchdog, sensors) blocks therapy and alarms (REQ-X-02)";
62
- attribute :>> status = "planned";
91
+ attribute :>> status = ElementStatusKind::approved;
92
+
93
+ objective { verify reqPost; }
94
+ subject verified : Base::Anything[*] = (gpcaDevice.gpcaSoftware.systemMonitor);
63
95
  }
64
96
  verification vcPowerLoss : VerificationCase {
65
97
  attribute :>> id = "VER-009";
66
98
  attribute :>> name = "VerifyPowerLossRetentionAndResume";
67
99
  attribute :>> methodKind = VerificationMethodKind::test;
68
100
  attribute :>> acceptanceCriteria = "Prescription and log intact after power cycle; therapy resumes only after confirmation (REQ-X-03)";
69
- attribute :>> status = "planned";
101
+ attribute :>> status = ElementStatusKind::approved;
102
+
103
+ objective { verify reqPowerLossRetention; verify reqBatteryBackup; }
70
104
  }
71
105
  verification vcWatchdog : VerificationCase {
72
106
  attribute :>> id = "VER-010";
73
107
  attribute :>> name = "VerifyWatchdogSafeState";
74
108
  attribute :>> methodKind = VerificationMethodKind::test;
75
109
  attribute :>> acceptanceCriteria = "Induced CPU hang forces zero flow and continuous alarm within 60 ms (REQ-X-08, TC-003)";
76
- attribute :>> status = "planned";
110
+ attribute :>> status = ElementStatusKind::approved;
111
+
112
+ objective { verify reqWatchdogSafeState; }
113
+ subject verified : Base::Anything[*] = (watchdogControl, tcWatchdogTimeout);
77
114
  }
78
115
  verification vcHourlyMax : VerificationCase {
79
116
  attribute :>> id = "VER-011";
80
117
  attribute :>> name = "VerifyHourlyDoseCeiling";
81
118
  attribute :>> methodKind = VerificationMethodKind::simulation;
82
119
  attribute :>> acceptanceCriteria = "Randomized bolus/basal schedules never exceed hourly maximum in sliding window (REQ-X-06)";
83
- attribute :>> status = "planned";
120
+ attribute :>> status = ElementStatusKind::approved;
121
+
122
+ objective { verify reqMaxHourlyDose; }
84
123
  }
85
124
  verification vcPumpAccuracy : VerificationCase {
86
125
  attribute :>> id = "VER-012";
87
126
  attribute :>> name = "VerifyDeliveryAccuracy";
88
127
  attribute :>> methodKind = VerificationMethodKind::test;
89
128
  attribute :>> acceptanceCriteria = "Gravimetric bench measurement within ±5% (Tolerance_Min_const) across rate range (REQ-X-11)";
90
- attribute :>> status = "planned";
129
+ attribute :>> status = ElementStatusKind::approved;
130
+
131
+ objective { verify reqPumpAccuracy; }
91
132
  }
92
133
  verification vcAlarmLoudness : VerificationCase {
93
134
  attribute :>> id = "VER-013";
94
135
  attribute :>> name = "VerifyAlarmSoundPressure";
95
136
  attribute :>> methodKind = VerificationMethodKind::test;
96
137
  attribute :>> acceptanceCriteria = "Each priority tone meets Audio_level_const, 50 db for 2 s per I 8 (REQ-X-12)";
97
- attribute :>> status = "planned";
138
+ attribute :>> status = ElementStatusKind::approved;
139
+
140
+ objective { verify reqCs72; verify reqAlarmLoudness; }
98
141
  }
99
142
  verification vcFreeFlow : VerificationCase {
100
143
  attribute :>> id = "VER-014";
101
144
  attribute :>> name = "VerifyAntiFreeFlowValve";
102
145
  attribute :>> methodKind = VerificationMethodKind::test;
103
146
  attribute :>> acceptanceCriteria = "No gravity flow with set disengaged under worst-case head height (REQ-X-14)";
104
- attribute :>> status = "planned";
147
+ attribute :>> status = ElementStatusKind::approved;
148
+
149
+ objective { verify reqFreeFlowPrevention; }
150
+ subject verified : Base::Anything[*] = (freeFlowValveControl);
105
151
  }
106
152
  verification vcStuckButton : VerificationCase {
107
153
  attribute :>> id = "VER-015";
108
154
  attribute :>> name = "VerifyStuckButtonDetection";
109
155
  attribute :>> methodKind = VerificationMethodKind::test;
110
156
  attribute :>> acceptanceCriteria = "Shorted pendant input yields no bolus and Medium-priority notification after 60 s (REQ-X-09)";
111
- attribute :>> status = "planned";
157
+ attribute :>> status = ElementStatusKind::approved;
158
+
159
+ objective { verify reqStuckButton; }
112
160
  }
113
161
  verification vcFlowCrossCheck : VerificationCase {
114
162
  attribute :>> id = "VER-016";
115
163
  attribute :>> name = "VerifyFlowCrossCheck";
116
164
  attribute :>> methodKind = VerificationMethodKind::test;
117
165
  attribute :>> acceptanceCriteria = "Injected deviation beyond Tolerance_Min_const sustained past Max_Duration_OverInfusion_const pauses therapy and annunciates (REQ-X-10)";
118
- attribute :>> status = "planned";
166
+ attribute :>> status = ElementStatusKind::approved;
167
+
168
+ objective { verify reqFlowCrossCheck; }
169
+ subject verified : Base::Anything[*] = (flowCrossCheckControl);
119
170
  }
120
171
 
121
172
  verification vcDrugLibrary : VerificationCase {
@@ -123,56 +174,74 @@ package memo_examples_gpca_pump_gpca_verification {
123
174
  attribute :>> name = "VerifyDrugLibraryEnforcement";
124
175
  attribute :>> methodKind = VerificationMethodKind::test;
125
176
  attribute :>> acceptanceCriteria = "Hard-limit entries rejected, soft-limit entries require confirmation, both logged (REQ-X-01)";
126
- attribute :>> status = "planned";
177
+ attribute :>> status = ElementStatusKind::approved;
178
+
179
+ objective { verify reqDrugLibraryLimits; }
180
+ subject verified : Base::Anything[*] = (drugLibraryControl, gpcaDevice.gpcaSoftware.config);
127
181
  }
128
182
  verification vcPrescriptionConfirm : VerificationCase {
129
183
  attribute :>> id = "VER-018";
130
184
  attribute :>> name = "VerifyPrescriptionConfirmation";
131
185
  attribute :>> methodKind = VerificationMethodKind::demonstration;
132
186
  attribute :>> acceptanceCriteria = "Therapy cannot start without distinct confirmation; displayed values equal stored values (REQ-CS-09)";
133
- attribute :>> status = "planned";
187
+ attribute :>> status = ElementStatusKind::approved;
188
+
189
+ objective { verify reqCs09; }
134
190
  }
135
191
  verification vcEventLog : VerificationCase {
136
192
  attribute :>> id = "VER-019";
137
193
  attribute :>> name = "VerifyEventLogIntegrity";
138
194
  attribute :>> methodKind = VerificationMethodKind::test;
139
195
  attribute :>> acceptanceCriteria = "Operational/error log entries per REQ-CS-78..81; tampering detectable (REQ-X-07)";
140
- attribute :>> status = "planned";
196
+ attribute :>> status = ElementStatusKind::approved;
197
+
198
+ objective { verify reqCs78; verify reqEventLogging; }
199
+ subject verified : Base::Anything[*] = (gpcaDevice.gpcaSoftware.logging);
141
200
  }
142
201
  verification vcReverseDeliveryPause : VerificationCase {
143
202
  attribute :>> id = "VER-020";
144
203
  attribute :>> name = "VerifyReverseDeliveryPause";
145
204
  attribute :>> methodKind = VerificationMethodKind::modelChecking;
146
205
  attribute :>> acceptanceCriteria = "Continuous or cumulative reverse delivery beyond the REQ-CS-22 duration limits transitions to PAUSED and raises the Reverse Delivery notification (NOTIF-04)";
147
- attribute :>> status = "planned";
206
+ attribute :>> status = ElementStatusKind::approved;
207
+
208
+ subject verified : Base::Anything[*] = (reverseDeliveryPauseControl);
148
209
  }
149
210
  verification vcAntiRefluxMechanism : VerificationCase {
150
211
  attribute :>> id = "VER-021";
151
212
  attribute :>> name = "VerifyContinuousReverseDeliveryPrevention";
152
213
  attribute :>> methodKind = VerificationMethodKind::test;
153
214
  attribute :>> acceptanceCriteria = "During normal use and single fault condition, continuous reverse delivery is not possible (IEC 601-2-24 basis per GPCA safety requirements)";
154
- attribute :>> status = "planned";
215
+ attribute :>> status = ElementStatusKind::approved;
216
+
217
+ subject verified : Base::Anything[*] = (antiRefluxDesignControl);
155
218
  }
156
219
  verification vcVtbiCeiling : VerificationCase {
157
220
  attribute :>> id = "VER-022";
158
221
  attribute :>> name = "VerifyVtbiCeilingPause";
159
222
  attribute :>> methodKind = VerificationMethodKind::modelChecking;
160
223
  attribute :>> acceptanceCriteria = "Actual volume infused above the drug-database maximum VTBI transitions to PAUSED with flow at most KVO (REQ-CS-20, AGREE GP-008) and raises NOTIF-06";
161
- attribute :>> status = "planned";
224
+ attribute :>> status = ElementStatusKind::approved;
225
+
226
+ subject verified : Base::Anything[*] = (vtbiLimitPauseControl);
162
227
  }
163
228
  verification vcInfusionComplete : VerificationCase {
164
229
  attribute :>> id = "VER-023";
165
230
  attribute :>> name = "VerifyInfusionCompleteStop";
166
231
  attribute :>> methodKind = VerificationMethodKind::test;
167
232
  attribute :>> acceptanceCriteria = "Reaching prescribed total duration or maximum VTBI transitions ACTIVE to IDLE with Infusion Complete actions (REQ-CS-28)";
168
- attribute :>> status = "planned";
233
+ attribute :>> status = ElementStatusKind::approved;
234
+
235
+ subject verified : Base::Anything[*] = (infusionCompleteControl);
169
236
  }
170
237
  verification vcDoorInterlock : VerificationCase {
171
238
  attribute :>> id = "VER-024";
172
239
  attribute :>> name = "VerifyDoorOpenDeliveryInhibit";
173
240
  attribute :>> methodKind = VerificationMethodKind::test;
174
241
  attribute :>> acceptanceCriteria = "Door open during THERAPY limits flow to at most KVO and raises a notification (AGREE GP-011; REQ-X-05)";
175
- attribute :>> status = "planned";
242
+ attribute :>> status = ElementStatusKind::approved;
243
+
244
+ subject verified : Base::Anything[*] = (doorInterlockControl);
176
245
  }
177
246
 
178
247
  // ── Validation cases (design validation / IEC 62366) ────────
@@ -194,7 +263,8 @@ package memo_examples_gpca_pump_gpca_verification {
194
263
  }
195
264
 
196
265
  // ── Test artifacts and evidence ─────────────────────────────
197
- part testReportLockout : TestArtifact {
266
+ part testReportLockout : MemoEvidence {
267
+ attribute :>> evidenceKind = EvidenceKind::testArtifact;
198
268
  attribute :>> id = "TEST-001";
199
269
  attribute :>> name = "BolusLockoutTestReport";
200
270
  attribute :>> version = "0.1";
@@ -202,7 +272,8 @@ package memo_examples_gpca_pump_gpca_verification {
202
272
  attribute :>> artifactKind = ArtifactKind::testReport;
203
273
  attribute :>> resultSummary = "planned";
204
274
  }
205
- part testProtocolSafetySuite : TestArtifact {
275
+ part testProtocolSafetySuite : MemoEvidence {
276
+ attribute :>> evidenceKind = EvidenceKind::testArtifact;
206
277
  attribute :>> id = "TEST-002";
207
278
  attribute :>> name = "SafetyAlarmTestProtocol";
208
279
  attribute :>> version = "0.1";
@@ -210,7 +281,8 @@ package memo_examples_gpca_pump_gpca_verification {
210
281
  attribute :>> artifactKind = ArtifactKind::testProtocol;
211
282
  attribute :>> resultSummary = "covers VER-005..VER-010, VER-015, VER-016, VER-020, VER-022..VER-024";
212
283
  }
213
- part evidenceLockout : Evidence {
284
+ part evidenceLockout : MemoEvidence {
285
+ attribute :>> evidenceKind = EvidenceKind::evidence;
214
286
  attribute :>> id = "EVD-001";
215
287
  attribute :>> name = "BolusLockoutEvidence";
216
288
  attribute :>> version = "0.1";
@@ -218,7 +290,8 @@ package memo_examples_gpca_pump_gpca_verification {
218
290
  attribute :>> evidenceType = "verification evidence";
219
291
  attribute :>> integrityStatus = "draft";
220
292
  }
221
- part evidenceModeRange : Evidence {
293
+ part evidenceModeRange : MemoEvidence {
294
+ attribute :>> evidenceKind = EvidenceKind::evidence;
222
295
  attribute :>> id = "EVD-002";
223
296
  attribute :>> name = "ModeRangeEvidence";
224
297
  attribute :>> version = "0.1";
@@ -226,7 +299,8 @@ package memo_examples_gpca_pump_gpca_verification {
226
299
  attribute :>> evidenceType = "formal proof evidence";
227
300
  attribute :>> integrityStatus = "draft";
228
301
  }
229
- part evidenceSameStepAlarm : Evidence {
302
+ part evidenceSameStepAlarm : MemoEvidence {
303
+ attribute :>> evidenceKind = EvidenceKind::evidence;
230
304
  attribute :>> id = "EVD-003";
231
305
  attribute :>> name = "SameStepAlarmEvidence";
232
306
  attribute :>> version = "0.1";
@@ -234,7 +308,8 @@ package memo_examples_gpca_pump_gpca_verification {
234
308
  attribute :>> evidenceType = "model checking evidence";
235
309
  attribute :>> integrityStatus = "draft";
236
310
  }
237
- part evidenceTemporalModeSafety : Evidence {
311
+ part evidenceTemporalModeSafety : MemoEvidence {
312
+ attribute :>> evidenceKind = EvidenceKind::evidence;
238
313
  attribute :>> id = "EVD-004";
239
314
  attribute :>> name = "TemporalModeSafetyEvidence";
240
315
  attribute :>> version = "0.1";
@@ -242,7 +317,8 @@ package memo_examples_gpca_pump_gpca_verification {
242
317
  attribute :>> evidenceType = "model checking evidence";
243
318
  attribute :>> integrityStatus = "draft";
244
319
  }
245
- part evidenceSafetyAlarmSuite : Evidence {
320
+ part evidenceSafetyAlarmSuite : MemoEvidence {
321
+ attribute :>> evidenceKind = EvidenceKind::evidence;
246
322
  attribute :>> id = "EVD-005";
247
323
  attribute :>> name = "SafetyAlarmSuiteEvidence";
248
324
  attribute :>> version = "0.1";
@@ -250,7 +326,8 @@ package memo_examples_gpca_pump_gpca_verification {
250
326
  attribute :>> evidenceType = "bench test evidence for alarm-driven safe states";
251
327
  attribute :>> integrityStatus = "draft";
252
328
  }
253
- part evidenceUsability : Evidence {
329
+ part evidenceUsability : MemoEvidence {
330
+ attribute :>> evidenceKind = EvidenceKind::evidence;
254
331
  attribute :>> id = "EVD-006";
255
332
  attribute :>> name = "SummativeUsabilityEvidence";
256
333
  attribute :>> version = "0.1";
@@ -258,7 +335,8 @@ package memo_examples_gpca_pump_gpca_verification {
258
335
  attribute :>> evidenceType = "summative usability report per IEC 62366-1";
259
336
  attribute :>> integrityStatus = "draft";
260
337
  }
261
- part evidenceHardwareBench : Evidence {
338
+ part evidenceHardwareBench : MemoEvidence {
339
+ attribute :>> evidenceKind = EvidenceKind::evidence;
262
340
  attribute :>> id = "EVD-008";
263
341
  attribute :>> name = "HardwareBenchEvidence";
264
342
  attribute :>> version = "0.1";
@@ -266,7 +344,8 @@ package memo_examples_gpca_pump_gpca_verification {
266
344
  attribute :>> evidenceType = "bench evidence for alarm loudness and anti-free-flow valve";
267
345
  attribute :>> integrityStatus = "draft";
268
346
  }
269
- part evidenceDoseProgramming : Evidence {
347
+ part evidenceDoseProgramming : MemoEvidence {
348
+ attribute :>> evidenceKind = EvidenceKind::evidence;
270
349
  attribute :>> id = "EVD-009";
271
350
  attribute :>> name = "DoseProgrammingEvidence";
272
351
  attribute :>> version = "0.1";
@@ -274,7 +353,8 @@ package memo_examples_gpca_pump_gpca_verification {
274
353
  attribute :>> evidenceType = "test evidence for prescription limits, confirmation, dose ceiling, and event log";
275
354
  attribute :>> integrityStatus = "draft";
276
355
  }
277
- part evidenceDeliveryAccuracy : Evidence {
356
+ part evidenceDeliveryAccuracy : MemoEvidence {
357
+ attribute :>> evidenceKind = EvidenceKind::evidence;
278
358
  attribute :>> id = "EVD-007";
279
359
  attribute :>> name = "DeliveryAccuracyEvidence";
280
360
  attribute :>> version = "0.1";
@@ -17,5 +17,10 @@ package memo_examples_gpca_pump_project {
17
17
  ref :>> selectedMethodology = gpcaMethodDefinition;
18
18
  // The project adds nothing to the methodology's selection.
19
19
  attribute :>> scopeMode = ScopeModeKind::explicit;
20
+ // The submission regimes this device targets. `memo standards check`
21
+ // reads this to decide which standards are required: an EU + US launch
22
+ // pulls in both the harmonised IEC/ISO packs and 21 CFR Part 820,
23
+ // where a CE-only project would not be asked for the FDA clauses.
24
+ attribute :>> regulatoryRegime = (RegulatoryRegimeKind::CE, RegulatoryRegimeKind::MDR, RegulatoryRegimeKind::FDA_510k);
20
25
  }
21
26
  }
@@ -33,7 +33,7 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
33
33
  attribute :>> id = "QRY-CTX-101";
34
34
  attribute :>> name = "GPCA_SystemContextQuery";
35
35
  attribute :>> includeElementKinds = ("Actor", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity");
36
- attribute :>> includeRelationshipKinds = ("InteractsWith", "ExchangesWith", "ConnectsPhysically", "Governs", "AppliesInContext");
36
+ attribute :>> includeRelationshipKinds = ("InteractsWith", "flow", "connect", "Governs", "AppliesInContext");
37
37
  attribute :>> includeLayers = ("context", "operational");
38
38
  attribute :>> selectionExpression = "product == 'GPCA'";
39
39
  attribute :>> rationaleText = "Auto-populate the GPCA context view from the context layer.";
@@ -33,7 +33,7 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
33
33
  part :>> selectionQuery {
34
34
  attribute :>> id = "QRY-CYB-001";
35
35
  attribute :>> name = "GPCA_CybersecurityQuery";
36
- attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "ThreatScenario");
36
+ attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "MemoScenario[scenarioKind=threat]");
37
37
  attribute :>> includeLayers = ("cybersecurity", "risk", "assurance");
38
38
  attribute :>> includeConcerns = (ConcernKind::cybersecurity, ConcernKind::privacy, ConcernKind::safety);
39
39
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -22,7 +22,7 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_m
22
22
  part :>> selectionQuery {
23
23
  attribute :>> id = "QRY-DOC-008";
24
24
  attribute :>> name = "threatModelViewQuery";
25
- attribute :>> includeElementKinds = ("Threat", "ThreatScenario", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
25
+ attribute :>> includeElementKinds = ("Threat", "MemoScenario[scenarioKind=threat]", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
26
26
  attribute :>> includeRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "CrossesTrustBoundary", "Mitigates", "DerivesCyberRequirement");
27
27
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
28
28
  }
@@ -28,7 +28,7 @@ package memo_examples_gpca_pump_viewpoints_logical_views_document_architecture_d
28
28
  attribute :>> id = "QRY-DOC-005";
29
29
  attribute :>> name = "architectureDescriptionViewQuery";
30
30
  attribute :>> includeElementKinds = ("LogicalComponent", "SystemFunction", "ComponentExchange", "SoftwareSystem", "SoftwareModule", "HardwareAssembly", "ProcessingNode", "PhysicalPort", "FunctionalFlow", "FunctionalFlowStep");
31
- attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "Realizes", "BindsToInterface", "InvolvesFunction", "Precedes", "DeploysTo", "HostedBy");
31
+ attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "Realizes", "BindsToInterface", "Performs", "Succession", "DeploysTo", "HostedBy");
32
32
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
33
33
  }
34
34
  }
@@ -25,7 +25,7 @@ package memo_examples_gpca_pump_viewpoints_logical_views_logical_device_intercon
25
25
  attribute :>> presentationKind = (PresentationKind::internalDiagram);
26
26
  attribute :>> viewKind = DiagramViewKind::interconnection;
27
27
  attribute :>> diagramType = "ibd";
28
- attribute :>> dataSourceDescription = "GPCA hardware assemblies, software system, software components, boundary ports, and the ExchangesWith/Composes topology";
28
+ attribute :>> dataSourceDescription = "GPCA hardware assemblies, software system, software components, boundary ports, and the flow/bind/Composes topology";
29
29
  attribute :>> autoPopulate = true;
30
30
  attribute :>> queryDescription = "Include hardware assemblies, the software system with its components and boundary ports, and the exchange topology between them.";
31
31
  attribute :>> documentUsage = ("SDD", "Architecture Description", "QMSR");
@@ -33,7 +33,7 @@ package memo_examples_gpca_pump_viewpoints_logical_views_logical_device_intercon
33
33
  attribute :>> id = "QRY-LOG-003";
34
34
  attribute :>> name = "GPCA_DeviceInterconnectQuery";
35
35
  attribute :>> includeElementIds = ("gpcaDevice", "gpcaDeviceSensors", "gpcaSoftware", "gpcaActuators", "devOpCmdIn", "devDbIn", "devPresIn", "devPatientIn", "devGpcaOut", "snsOpCmdIn", "snsDbIn", "snsPresIn", "snsPatientIn", "snsOpCmdOut", "snsPresOut", "snsPatientOut", "snsSensorOut", "snsConstOut", "snsDbOut", "portOpCmdIn", "portPresIn", "portPatientIn", "portSensorIn", "portConstIn", "portDbIn", "portGpcaSwOut", "actGpcaSwIn", "actGpcaOut", "tlm", "systemStatus", "alarm", "config", "infusionMgr", "systemMonitor", "logging", "outputBus");
36
- attribute :>> includeRelationshipKinds = ("ExchangesWith", "Composes");
36
+ attribute :>> includeRelationshipKinds = ("flow", "bind", "Composes");
37
37
  attribute :>> includeLayers = ("logical_structure", "software_structure", "interfaces");
38
38
  attribute :>> selectionExpression = "product == 'GPCA'";
39
39
  attribute :>> rationaleText = "Render the device interconnect: parts with boundary ports as nodes, AADL connections as typed connectors, composition as nesting.";
@@ -32,7 +32,7 @@ package memo_examples_gpca_pump_viewpoints_logical_views_logical_mode_state_view
32
32
  part :>> selectionQuery {
33
33
  attribute :>> id = "QRY-BHV-101";
34
34
  attribute :>> name = "GPCA_ModeStateQuery";
35
- attribute :>> includeElementKinds = ("StateMachine", "ModeState", "Transition", "BehaviorProperty", "TimingConstraint");
35
+ attribute :>> includeElementKinds = ("StateMachine", "MemoState[stateKind=mode]", "Transition", "BehaviorProperty", "TimingConstraint");
36
36
  attribute :>> includeLayers = ("behavior");
37
37
  attribute :>> selectionExpression = "product == 'GPCA'";
38
38
  attribute :>> rationaleText = "Auto-populate the mode state view from the behavior layer.";
@@ -31,7 +31,7 @@ package memo_examples_gpca_pump_viewpoints_operational_views_operational_scenari
31
31
  part :>> selectionQuery {
32
32
  attribute :>> id = "QRY-BHV-102";
33
33
  attribute :>> name = "GPCA_ScenarioSequenceQuery";
34
- attribute :>> includeElementKinds = ("FunctionalScenario", "OperativeScenario", "FunctionalFlow", "FunctionalFlowStep");
34
+ attribute :>> includeElementKinds = ("MemoScenario[scenarioKind=functional]", "MemoScenario[scenarioKind=operative]", "FunctionalFlow", "FunctionalFlowStep");
35
35
  attribute :>> includeLayers = ("operational", "system");
36
36
  attribute :>> selectionExpression = "product == 'GPCA'";
37
37
  attribute :>> rationaleText = "Auto-populate scenario sequences from the system layer.";
@@ -33,7 +33,7 @@ package memo_examples_gpca_pump_viewpoints_operational_views_operational_use_cas
33
33
  attribute :>> id = "QRY-OPS-101";
34
34
  attribute :>> name = "GPCA_UseCaseQuery";
35
35
  attribute :>> includeElementKinds = ("Actor", "User", "UseCase");
36
- attribute :>> includeRelationshipKinds = ("Initiates", "ParticipatesIn");
36
+ attribute :>> includeRelationshipKinds = ("ParticipatesIn");
37
37
  attribute :>> includeLayers = ("context", "operational");
38
38
  attribute :>> selectionExpression = "product == 'GPCA'";
39
39
  attribute :>> rationaleText = "Auto-populate the GPCA use case view from the operational layer.";
@@ -27,8 +27,8 @@ package memo_examples_gpca_pump_viewpoints_requirements_views_document_dhf_index
27
27
  part :>> selectionQuery {
28
28
  attribute :>> id = "QRY-DOC-007";
29
29
  attribute :>> name = "dhfIndexViewQuery";
30
- attribute :>> includeElementKinds = ("MemoDocumentView", "MemoDiagramView", "MemoUsabilityEngineeringView", "MemoCybersecurityThreatModelView", "MemoCybersecurityAssessmentView", "Evidence", "Citation");
31
- attribute :>> includeRelationshipKinds = ("IncludedIn", "ProducesEvidence");
30
+ attribute :>> includeElementKinds = ("MemoDocumentView", "MemoDiagramView", "MemoUsabilityEngineeringView", "MemoCybersecurityThreatModelView", "MemoCybersecurityAssessmentView", "MemoEvidence", "Citation");
31
+ attribute :>> includeRelationshipKinds = ("ProducesEvidence");
32
32
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
33
33
  }
34
34
  }
@@ -4,9 +4,12 @@ package memo_examples_gpca_pump_viewpoints_risk_views_document_hazard_analysis_v
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_viewpoints_risk_risk_viewpoint::*;
6
6
  private import memo_core_enumerations::*;
7
+ private import memo_examples_gpca_pump_gpca_analysis::*;
7
8
 
8
9
  view hazardAnalysisView : MemoDocumentView {
9
10
  expose memo_examples_gpca_pump_viewpoints_risk_views_document_hazard_analysis_view::*;
11
+ expose fmeaDelivery;
12
+ expose ftaOverdose;
10
13
  attribute :>> id = "DOC-009";
11
14
  attribute :>> name = "HazardAnalysisReportView";
12
15
  attribute :>> title = "GPCA Hazard Analysis Report View";
@@ -23,8 +26,8 @@ package memo_examples_gpca_pump_viewpoints_risk_views_document_hazard_analysis_v
23
26
  part :>> selectionQuery {
24
27
  attribute :>> id = "QRY-DOC-003";
25
28
  attribute :>> name = "hazardAnalysisViewQuery";
26
- attribute :>> includeElementKinds = ("FMEAWorksheet", "FailureMode", "FailureCause", "FailureEffect", "DetectionMethod", "FMEAAction", "FaultTree", "FaultTreeEvent", "FaultTreeGate", "MinimalCutSet", "Hazard", "HazardCause", "SequenceOfEvents");
27
- attribute :>> includeRelationshipKinds = ("HasFailureMode", "Causes", "DetectedBy", "Mitigates", "InputToGate", "ContainsEvent", "Mitigates", "IncludedIn");
29
+ attribute :>> includeElementKinds = ("FMEAWorksheet", "FailureMode", "FailureCause", "FailureEffect", "DetectionMethod", "FMEAAction", "FaultTree", "FaultTreeNode", "MinimalCutSet", "Hazard", "HazardCause", "SequenceOfEvents");
30
+ attribute :>> includeRelationshipKinds = ("HasFailureMode", "Causes", "DetectedBy", "Mitigates", "InputToGate", "ContainsEvent", "Mitigates");
28
31
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
29
32
  }
30
33
  }
@@ -4,9 +4,11 @@ package memo_examples_gpca_pump_viewpoints_risk_views_document_rmf_view {
4
4
  private import memo_viewpoints_definitions::*;
5
5
  private import memo_viewpoints_risk_risk_viewpoint::*;
6
6
  private import memo_core_enumerations::*;
7
+ private import memo_examples_gpca_pump_gpca_verification::*;
7
8
 
8
9
  view rmfView : MemoDocumentView {
9
10
  expose memo_examples_gpca_pump_viewpoints_risk_views_document_rmf_view::*;
11
+ expose evidenceLockout;
10
12
  attribute :>> id = "DOC-001";
11
13
  attribute :>> name = "RiskManagementFileView";
12
14
  attribute :>> title = "GPCA Risk Management File View";
@@ -23,8 +25,8 @@ package memo_examples_gpca_pump_viewpoints_risk_views_document_rmf_view {
23
25
  part :>> selectionQuery {
24
26
  attribute :>> id = "QRY-DOC-001";
25
27
  attribute :>> name = "rmfViewQuery";
26
- attribute :>> includeElementKinds = ("IntendedUse", "ReasonablyForeseeableMisuse", "SafetyRelatedCharacteristic", "Hazard", "HazardCause", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation", "VerificationCase", "Evidence");
27
- attribute :>> includeRelationshipKinds = ("Causes", "Mitigates", "Mitigates", "TracesRisk", "AssessedAgainst", "VerifiedBy", "ProducesEvidence", "IncludedIn");
28
+ attribute :>> includeElementKinds = ("IntendedUse", "ReasonablyForeseeableMisuse", "SafetyRelatedCharacteristic", "Hazard", "HazardCause", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation", "VerificationCase", "MemoEvidence");
29
+ attribute :>> includeRelationshipKinds = ("Causes", "Mitigates", "Mitigates", "TracesRisk", "AssessedAgainst", "VerifiedBy", "ProducesEvidence");
28
30
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
29
31
  }
30
32
  }
@@ -31,7 +31,7 @@ package memo_examples_gpca_pump_viewpoints_risk_views_risk_fmea_view {
31
31
  part :>> selectionQuery {
32
32
  attribute :>> id = "QRY-RISK-102";
33
33
  attribute :>> name = "GPCA_FmeaQuery";
34
- attribute :>> includeElementKinds = ("FMEAWorksheet", "FailureMode", "FailureEffect", "FailureCause", "DetectionMethod", "FMEAAction", "FaultTree", "FaultTreeEvent", "FaultTreeGate", "MinimalCutSet");
34
+ attribute :>> includeElementKinds = ("FMEAWorksheet", "FailureMode", "FailureEffect", "FailureCause", "DetectionMethod", "FMEAAction", "FaultTree", "FaultTreeNode", "MinimalCutSet");
35
35
  attribute :>> includeLayers = ("analysis", "risk");
36
36
  attribute :>> includeConcerns = (ConcernKind::safety, ConcernKind::reliability);
37
37
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -23,7 +23,7 @@ package memo_examples_gpca_pump_viewpoints_software_views_document_sdd_view {
23
23
  part :>> selectionQuery {
24
24
  attribute :>> id = "QRY-DOC-004";
25
25
  attribute :>> name = "sddViewQuery";
26
- attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "ModeState", "Transition", "Interface", "SystemFunction", "TimingConstraint", "SoftwareModule[moduleKind=soup]");
26
+ attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "MemoState[stateKind=mode]", "Transition", "Interface", "SystemFunction", "TimingConstraint", "SoftwareModule[moduleKind=soup]");
27
27
  attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "BindsToInterface", "Realizes", "DependsOnSoup", "Changes");
28
28
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
29
29
  }
@@ -27,13 +27,13 @@ package memo_examples_gpca_pump_viewpoints_software_views_software_software_arch
27
27
  attribute :>> diagramType = "ibd";
28
28
  attribute :>> dataSourceDescription = "GPCA software structure, top-level ports, and the GPCA_SW.Impl connection set (CE-101..CE-142)";
29
29
  attribute :>> autoPopulate = true;
30
- attribute :>> queryDescription = "Include the software system, its eight components, its boundary ports, and the ExchangesWith topology between them.";
30
+ attribute :>> queryDescription = "Include the software system, its eight components, its boundary ports, and the flow and delegation topology between them.";
31
31
  attribute :>> documentUsage = ("SDD", "QMSR");
32
32
  part :>> selectionQuery {
33
33
  attribute :>> id = "QRY-SW-101";
34
34
  attribute :>> name = "GPCA_SoftwareArchitectureQuery";
35
35
  attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "SoftwarePort");
36
- attribute :>> includeRelationshipKinds = ("ExchangesWith", "Composes");
36
+ attribute :>> includeRelationshipKinds = ("flow", "bind", "Composes");
37
37
  attribute :>> includeLayers = ("software_structure", "interfaces");
38
38
  attribute :>> selectionExpression = "product == 'GPCA'";
39
39
  attribute :>> rationaleText = "Render the real GPCA_SW.Impl topology: components and boundary ports as nodes, AADL connections as edges.";
@@ -5,9 +5,11 @@ package memo_examples_gpca_pump_viewpoints_usability_views_document_usability_vi
5
5
  private import memo_viewpoints_usability_views_usability_engineering_view::*;
6
6
  private import memo_viewpoints_usability_usability_viewpoint::*;
7
7
  private import memo_core_enumerations::*;
8
+ private import memo_examples_gpca_pump_gpca_verification::*;
8
9
 
9
10
  view usabilityView : MemoUsabilityEngineeringView {
10
11
  expose memo_examples_gpca_pump_viewpoints_usability_views_document_usability_view::*;
12
+ expose evidenceUsability;
11
13
  attribute :>> id = "DOC-008";
12
14
  attribute :>> name = "UsabilityEngineeringFileView";
13
15
  attribute :>> title = "GPCA Usability Engineering File View";
@@ -22,8 +24,8 @@ package memo_examples_gpca_pump_viewpoints_usability_views_document_usability_vi
22
24
  part :>> selectionQuery {
23
25
  attribute :>> id = "QRY-DOC-002";
24
26
  attribute :>> name = "usabilityViewQuery";
25
- attribute :>> includeElementKinds = ("UseError", "UseContext", "Actor", "ValidationCase", "OperativeScenario", "IntendedUse", "ReasonablyForeseeableMisuse");
26
- attribute :>> includeRelationshipKinds = ("TestedByUsability", "RealizedByScenario", "InteractsWith", "IncludedIn");
27
+ attribute :>> includeElementKinds = ("UseError", "UseContext", "Actor", "ValidationCase", "MemoScenario[scenarioKind=operative]", "IntendedUse", "ReasonablyForeseeableMisuse");
28
+ attribute :>> includeRelationshipKinds = ("TestedByUsability", "RealizedByScenario", "InteractsWith");
27
29
  attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
28
30
  }
29
31
  }