@memoarchitect/ontology 0.8.24 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  2. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
  4. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  5. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
  6. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  7. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  8. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  9. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  10. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  11. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  13. package/examples/gpca-pump/model/catalog/gpca_context.sysml +22 -20
  14. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
  15. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  16. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  17. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
  18. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  19. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  20. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  21. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  22. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
  23. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
  24. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  25. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  26. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
  27. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
  28. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
  30. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
  31. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
  32. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
  39. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
  41. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
  42. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
  44. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
  47. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
  48. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
  50. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
  51. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
  52. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
  53. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  54. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
  55. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  56. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  57. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  58. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  59. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  60. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  61. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  62. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  63. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  64. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  65. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
  66. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  67. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  68. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  69. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
  70. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  71. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +51 -51
  72. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  73. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  74. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  75. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
  76. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
  77. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
  78. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
  79. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
  80. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +8 -6
  81. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
  82. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
  83. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
  84. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
  85. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  86. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  87. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
  88. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  89. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  90. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  91. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  92. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  93. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  94. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  95. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  96. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  97. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  98. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  99. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  100. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  101. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  102. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
  103. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
  104. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
  105. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
  106. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
  107. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
  108. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  109. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  110. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  111. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  112. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  113. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  114. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  115. package/extensions/template/src/extension.sysml +3 -1
  116. package/package.json +2 -2
  117. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  118. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  119. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  120. package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
  121. package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
  122. package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
  123. package/src/architecture/operational/scenarios/memo_scenarios.sysml +0 -10
  124. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
  125. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
  126. package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
  127. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  128. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  129. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  130. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  131. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  132. package/src/artifacts/standards/iec_60812.sysml +21 -22
  133. package/src/artifacts/standards/iec_62304.sysml +150 -169
  134. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  135. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  136. package/src/artifacts/standards/iso_13485.sysml +80 -89
  137. package/src/artifacts/standards/iso_14971.sysml +66 -73
  138. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  139. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  140. package/src/core/common/memo_common.sysml +50 -50
  141. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  142. package/src/core/relationships/memo_relationships.sysml +22 -49
  143. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  144. package/src/methodology/core/memo_core.sysml +0 -10
  145. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  146. package/src/rules/closure/closure_rules.sysml +22 -20
  147. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  148. package/src/rules/ontology/ontology_invariants.sysml +106 -33
  149. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  150. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
  151. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  152. package/src/viewpoints/context/context_viewpoint.sysml +5 -3
  153. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
  154. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  155. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
  156. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  157. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
  158. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
  159. package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
  160. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
  161. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  162. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
  163. package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
  164. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
  165. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
  166. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  167. package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
  168. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
  169. package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
  170. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
  171. package/src/viewpoints/software/software_viewpoint.sysml +4 -2
  172. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
  173. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
  174. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  175. package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
  176. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  177. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
  178. package/templates/connected-device/model/catalog/project.sysml +3 -1
  179. package/templates/default/model/catalog/project.sysml +3 -1
  180. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  181. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  182. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -15,8 +15,9 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
15
15
  private import memo_examples_gpca_pump_gpca_requirements::*;
16
16
  private import memo_examples_gpca_pump_gpca_verification::*;
17
17
 
18
+ private import memo_core_common::MemoIdentity;
18
19
  part therapyConfigurationAsset : CybersecurityAsset {
19
- attribute :>> id = "AST-CYB-001";
20
+ @MemoIdentity { :>> providedId = "AST-CYB-001"; }
20
21
  attribute :>> name = "TherapyConfigurationAsset";
21
22
  attribute :>> assetKind = AssetKind::configuration;
22
23
  attribute :>> confidentialityNeed = "medium";
@@ -28,7 +29,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
28
29
  }
29
30
 
30
31
  part patientEventLogAsset : CybersecurityAsset {
31
- attribute :>> id = "AST-CYB-002";
32
+ @MemoIdentity { :>> providedId = "AST-CYB-002"; }
32
33
  attribute :>> name = "PatientEventLogAsset";
33
34
  attribute :>> assetKind = AssetKind::auditRecord;
34
35
  attribute :>> confidentialityNeed = "high";
@@ -40,7 +41,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
40
41
  }
41
42
 
42
43
  part maintenancePortBoundary : TrustBoundary {
43
- attribute :>> id = "TB-001";
44
+ @MemoIdentity { :>> providedId = "TB-001"; }
44
45
  attribute :>> name = "MaintenancePortBoundary";
45
46
  attribute :>> boundaryType = "service-access";
46
47
  attribute :>> crossingConstraint = "Boundary between service tooling and therapy controller runtime.";
@@ -48,7 +49,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
48
49
  }
49
50
 
50
51
  part unauthorizedConfigChangeThreat : Threat {
51
- attribute :>> id = "TH-001";
52
+ @MemoIdentity { :>> providedId = "TH-001"; }
52
53
  attribute :>> name = "UnauthorizedTherapyConfigurationChange";
53
54
  attribute :>> driverKind = "cybersecurity";
54
55
  attribute :>> threatCategory = ThreatCategoryKind::tampering;
@@ -60,7 +61,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
60
61
  }
61
62
 
62
63
  part eventLogTamperingThreat : Threat {
63
- attribute :>> id = "TH-002";
64
+ @MemoIdentity { :>> providedId = "TH-002"; }
64
65
  attribute :>> name = "PatientEventLogTampering";
65
66
  attribute :>> driverKind = "cybersecurity";
66
67
  attribute :>> threatCategory = ThreatCategoryKind::repudiation;
@@ -72,7 +73,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
72
73
  }
73
74
 
74
75
  part weakServiceAuthentication : Vulnerability {
75
- attribute :>> id = "VULN-001";
76
+ @MemoIdentity { :>> providedId = "VULN-001"; }
76
77
  attribute :>> name = "WeakServiceAuthentication";
77
78
  attribute :>> weakness = "service mode relies on shared default credential";
78
79
  attribute :>> exploitability = "moderate";
@@ -82,7 +83,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
82
83
  }
83
84
 
84
85
  action tamperedConfigurationScenario : OperativeScenario {
85
- attribute :>> id = "SCN-001";
86
+ @MemoIdentity { :>> providedId = "SCN-001"; }
86
87
  attribute :>> name = "TamperedTherapyConfigurationScenario";
87
88
  attribute :>> description = "An attacker with local access to the maintenance port alters lockout or dose parameters, aiming to bypass safety limits; may enable unsafe therapy delivery or bypass safeguards.";
88
89
  attribute :>> actorDescription = "unauthorized actor with local access to the maintenance port";
@@ -90,7 +91,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
90
91
  }
91
92
 
92
93
  part unsafeDoseCyberHazard : CyberHazard {
93
- attribute :>> id = "CHZ-001";
94
+ @MemoIdentity { :>> providedId = "CHZ-001"; }
94
95
  attribute :>> name = "UnsafeTherapyConfigurationHazard";
95
96
  attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
96
97
  attribute :>> foreseeable = true;
@@ -101,7 +102,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
101
102
  }
102
103
 
103
104
  part configurationTamperingRisk : CyberRisk {
104
- attribute :>> id = "CRISK-001";
105
+ @MemoIdentity { :>> providedId = "CRISK-001"; }
105
106
  attribute :>> name = "ConfigurationTamperingRisk";
106
107
  attribute :>> driverKind = "cyber risk";
107
108
  attribute :>> probabilityEstimate = ProbabilityKind::occasional;
@@ -115,7 +116,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
115
116
  }
116
117
 
117
118
  part strongServiceAuthentication : CyberMitigation {
118
- attribute :>> id = "CMIT-001";
119
+ @MemoIdentity { :>> providedId = "CMIT-001"; }
119
120
  attribute :>> name = "StrongServiceAuthenticationAndAudit";
120
121
  attribute :>> controlKind = RiskControlKind::protectiveMeasure;
121
122
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
@@ -126,7 +127,7 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
126
127
  }
127
128
 
128
129
  requirement reqAuthenticatedServiceAccess : SecurityRequirement {
129
- attribute :>> id = "SREQ-001";
130
+ @MemoIdentity { :>> providedId = "SREQ-001"; }
130
131
  attribute :>> name = "AuthenticatedServiceAccess";
131
132
  attribute :>> statement = "The system shall require authenticated and authorized service access before any therapy configuration parameter can be modified.";
132
133
  attribute :>> sourceKind = RequirementSourceKind::risk;
@@ -144,9 +145,9 @@ package memo_examples_gpca_pump_gpca_cybersecurity {
144
145
  }
145
146
 
146
147
  verification vcAuthenticatedServiceAccess : VerificationCase {
147
- attribute :>> id = "CVER-001";
148
+ @MemoIdentity { :>> providedId = "CVER-001"; }
148
149
  attribute :>> name = "VerifyAuthenticatedServiceAccess";
149
- attribute :>> methodKind = VerificationMethodKind::test;
150
+ attribute :>> methodKind = MemoVerificationMethodKind::test;
150
151
  attribute :>> acceptanceCriteria = "Only authenticated and authorized service sessions may modify therapy configuration; all attempts are logged.";
151
152
  attribute :>> status = ElementStatusKind::approved;
152
153
 
@@ -4,6 +4,8 @@ package memo_examples_gpca_pump_gpca_formal_behavior {
4
4
  private import memo_architecture_functional_behavior::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
7
9
  // ═════════════════════════════════════════════════════════════
8
10
  // Formal assume/guarantee properties translated 1:1 from the
9
11
  // CriSys AADL AGREE annexes (GPCA_SW.aadl composite contract;
@@ -13,161 +15,161 @@ package memo_examples_gpca_pump_gpca_formal_behavior {
13
15
  // guarantees zero flow.
14
16
  // ═════════════════════════════════════════════════════════════
15
17
  part gpcaSwContract : Contract {
16
- attribute :>> id = "CTR-000";
18
+ @MemoIdentity { :>> providedId = "CTR-000"; }
17
19
  attribute :>> name = "GpcaSwCompositeContract";
18
20
  attribute :>> contractScope = "GPCA_SW (composite, verified compositionally over the 8 subcomponents)";
19
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
21
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex"; }
20
22
  }
21
23
  part topLevelContract : Contract {
22
- attribute :>> id = "CTR-001";
24
+ @MemoIdentity { :>> providedId = "CTR-001"; }
23
25
  attribute :>> name = "TopLevelModeContract";
24
26
  attribute :>> contractScope = "Top_Level_Mode";
25
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, Top_Level_Mode.aadl AGREE annex";
27
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, Top_Level_Mode.aadl AGREE annex"; }
26
28
  }
27
29
  part infusionManagerContract : Contract {
28
- attribute :>> id = "CTR-002";
30
+ @MemoIdentity { :>> providedId = "CTR-002"; }
29
31
  attribute :>> name = "InfusionManagerContract";
30
32
  attribute :>> contractScope = "Infusion_Manager";
31
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, Infusion_Manager.aadl AGREE annex";
33
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, Infusion_Manager.aadl AGREE annex"; }
32
34
  }
33
35
  part alarmContract : Contract {
34
- attribute :>> id = "CTR-003";
36
+ @MemoIdentity { :>> providedId = "CTR-003"; }
35
37
  attribute :>> name = "AlarmContract";
36
38
  attribute :>> contractScope = "Alarm";
37
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, Alarm.aadl AGREE annex";
39
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, Alarm.aadl AGREE annex"; }
38
40
  }
39
41
 
40
42
  // ── Assumptions (GPCA_SW.aadl) ──────────────────────────────
41
43
  part assumeVtbiHighPositive : BehaviorProperty {
42
44
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
43
- attribute :>> id = "AP-002";
45
+ @MemoIdentity { :>> providedId = "AP-002"; }
44
46
  attribute :>> name = "VtbiHighPositive";
45
47
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
46
48
  attribute :>> formalExpression = "assume DB_IN.VTBI_High > 0";
47
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
49
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex"; }
48
50
  }
49
51
  part assumeEmptyReservoirPositive : BehaviorProperty {
50
52
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
51
- attribute :>> id = "AP-003";
53
+ @MemoIdentity { :>> providedId = "AP-003"; }
52
54
  attribute :>> name = "EmptyReservoirConstPositive";
53
55
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
54
56
  attribute :>> formalExpression = "assume CONST_IN.Empty_Reservoir > 0";
55
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
57
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex"; }
56
58
  }
57
59
  part assumeValidPrescriptionSaved : BehaviorProperty {
58
60
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
59
- attribute :>> id = "AP-001";
61
+ @MemoIdentity { :>> providedId = "AP-001"; }
60
62
  attribute :>> name = "ValidPrescriptionSavedBeforeTherapy";
61
63
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
62
64
  attribute :>> formalExpression = "assume a saved prescription is available before infusion initiation";
63
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 7)";
65
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 7)"; }
64
66
  }
65
67
 
66
68
  // ── Guarantees (GPCA_SW.aadl AGREE annex, 1:1) ──────────────
67
69
  part guaranteeExclusiveMode : BehaviorProperty {
68
70
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
69
- attribute :>> id = "GP-001";
71
+ @MemoIdentity { :>> providedId = "GP-001"; }
70
72
  attribute :>> name = "ModeRange";
71
73
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
72
74
  attribute :>> formalExpression = "guarantee mode_range: GPCA_SW_OUT.Current_System_Mode in {0, 1, 2, 3, 4, 6, 7, 8} (source enumeration omits 5)";
73
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 1)";
75
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 1)"; }
74
76
  }
75
77
  part guaranteeOffMode : BehaviorProperty {
76
78
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
77
- attribute :>> id = "GP-004";
79
+ @MemoIdentity { :>> providedId = "GP-004"; }
78
80
  attribute :>> name = "NotStartImpliesModeZero";
79
81
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
80
82
  attribute :>> formalExpression = "guarantee not(OP_CMD_IN.System_Start) => GPCA_SW_OUT.Current_System_Mode = 0";
81
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
83
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex"; }
82
84
  }
83
85
  part guaranteeInitialStart : BehaviorProperty {
84
86
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
85
- attribute :>> id = "GP-005";
87
+ @MemoIdentity { :>> providedId = "GP-005"; }
86
88
  attribute :>> name = "InitialSystemStartImpliesModeOne";
87
89
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
88
90
  attribute :>> formalExpression = "guarantee sys_initial and OP_CMD_IN.System_Start => GPCA_SW_OUT.Current_System_Mode = 1";
89
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4 allocation: TLM System_Start -> System_On; IM System_On -> mode 1)";
91
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4 allocation: TLM System_Start -> System_On; IM System_On -> mode 1)"; }
90
92
  }
91
93
  part guaranteeOffToOn : BehaviorProperty {
92
94
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
93
- attribute :>> id = "GP-006";
95
+ @MemoIdentity { :>> providedId = "GP-006"; }
94
96
  attribute :>> name = "OffToOnImpliesModeOne";
95
97
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
96
98
  attribute :>> formalExpression = "guarantee not(sys_initial) and pre(GPCA_SW_OUT.Current_System_Mode) = 0 and OP_CMD_IN.System_Start => GPCA_SW_OUT.Current_System_Mode = 1";
97
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4)";
99
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4)"; }
98
100
  }
99
101
  part guaranteeEmptyReservoirNoFlow : BehaviorProperty {
100
102
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
101
- attribute :>> id = "GP-007";
103
+ @MemoIdentity { :>> providedId = "GP-007"; }
102
104
  attribute :>> name = "EmptyReservoirImpliesNoFlow";
103
105
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
104
106
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and pre(Current_System_Mode) > 1 and GPCA_SW_OUT.Reservoir_Volume < CONST_IN.Empty_Reservoir) => GPCA_SW_OUT.Commanded_Flow_Rate = 0";
105
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 59 'Empty Reservoir')";
107
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 59 'Empty Reservoir')"; }
106
108
  }
107
109
  part guaranteeVtbiKvo : BehaviorProperty {
108
110
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
109
- attribute :>> id = "GP-008";
111
+ @MemoIdentity { :>> providedId = "GP-008"; }
110
112
  attribute :>> name = "OverVtbiImpliesFlowAtMostKvo";
111
113
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
112
114
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and pre(Current_System_Mode) > 1 and GPCA_SW_OUT.Volume_Infused > DB_IN.VTBI_High) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
113
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (over-infusion => keep-vein-open, not zero)";
115
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (over-infusion => keep-vein-open, not zero)"; }
114
116
  }
115
117
  part guaranteeAirInLineKvo : BehaviorProperty {
116
118
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
117
- attribute :>> id = "GP-009";
119
+ @MemoIdentity { :>> providedId = "GP-009"; }
118
120
  attribute :>> name = "AirInLineImpliesFlowAtMostKvo";
119
121
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
120
122
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Air_In_Line) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
121
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 21 'Air embolism')";
123
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 21 'Air embolism')"; }
122
124
  }
123
125
  part guaranteeOcclusionKvo : BehaviorProperty {
124
126
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
125
- attribute :>> id = "GP-010";
127
+ @MemoIdentity { :>> providedId = "GP-010"; }
126
128
  attribute :>> name = "OcclusionImpliesFlowAtMostKvo";
127
129
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
128
130
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Occlusion) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
129
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
131
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex"; }
130
132
  }
131
133
  part guaranteeDoorOpenKvo : BehaviorProperty {
132
134
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
133
- attribute :>> id = "GP-011";
135
+ @MemoIdentity { :>> providedId = "GP-011"; }
134
136
  attribute :>> name = "DoorOpenImpliesFlowAtMostKvo";
135
137
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
136
138
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Door_Open) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
137
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
139
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex"; }
138
140
  }
139
141
  part guaranteeAlarmStopsSameStep : BehaviorProperty {
140
142
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
141
- attribute :>> id = "GP-003";
143
+ @MemoIdentity { :>> providedId = "GP-003"; }
142
144
  attribute :>> name = "SameStepAlarmKvoGuarantee";
143
145
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
144
146
  attribute :>> formalExpression = "guarantee an infusion-inhibiting notification in a step implies Commanded_Flow_Rate <= Flow_Rate_KVO in the same step (ALARM_OUT -> IM.ALARM_IN is an immediate connection)";
145
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl (ALARM_to_IM immediate) with the flow <= KVO guarantees above";
147
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl (ALARM_to_IM immediate) with the flow <= KVO guarantees above"; }
146
148
  }
147
149
  part guaranteeLockoutPreventsBolus : BehaviorProperty {
148
150
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
149
- attribute :>> id = "GP-002";
151
+ @MemoIdentity { :>> providedId = "GP-002"; }
150
152
  attribute :>> name = "LockoutGuarantee";
151
153
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
152
154
  attribute :>> formalExpression = "guarantee a BolusRequest_prog inside the LockOutPeriod_pbolus_prog window is ignored and no PATIENT BOLUS is initiated";
153
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 25.3, REQ 26)";
155
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 25.3, REQ 26)"; }
154
156
  }
155
157
 
156
158
  // ── Temporal properties over the mode machine ───────────────
157
159
  part temporalNoInvalidTransition : BehaviorProperty {
158
- attribute :>> id = "BP-010";
160
+ @MemoIdentity { :>> providedId = "BP-010"; }
159
161
  attribute :>> name = "NoInvalidTransition";
160
162
  attribute :>> propertyKind = BehaviorPropertyKind::temporalProperty;
161
163
  attribute :>> languageKind = PropertyLanguageKind::ltlLike;
162
164
  attribute :>> formalExpression = "G(mode transitions follow only the edges of the Fig 4.1 hierarchy as constrained by REQ 4-5, 12-13, 19-23, 28-39, 46-47)";
163
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1 Fig 4.1";
165
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1 Fig 4.1"; }
164
166
  }
165
167
  part temporalPauseOnCriticalAlarm : BehaviorProperty {
166
- attribute :>> id = "BP-011";
168
+ @MemoIdentity { :>> providedId = "BP-011"; }
167
169
  attribute :>> name = "PauseAtKvoOnInhibitingNotification";
168
170
  attribute :>> propertyKind = BehaviorPropertyKind::safetyProperty;
169
171
  attribute :>> languageKind = PropertyLanguageKind::ltlLike;
170
172
  attribute :>> formalExpression = "G(infusion_inhibiting_notification -> X (mode = PAUSED and Commanded_Flow_Rate <= Flow_Rate_KVO))";
171
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 19-23) and §4.1.10.1 (REQ 43)";
173
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 19-23) and §4.1.10.1 (REQ 43)"; }
172
174
  }
173
175
  }