@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.
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
- package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
- package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/memo.identity.yaml +2179 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +22 -20
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
- package/examples/gpca-pump/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
- package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
- package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
- package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +51 -51
- package/examples/surgical-robot/model/catalog/project.sysml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +8 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
- package/examples/temperature-alarm/memo.identity.yaml +64 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- package/package.json +2 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
- package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +0 -10
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
- package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
- package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
- package/src/artifacts/standards/cfr_21_820.sysml +80 -89
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
- package/src/artifacts/standards/iec_60601_1.sysml +108 -121
- package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
- package/src/artifacts/standards/iec_60812.sysml +21 -22
- package/src/artifacts/standards/iec_62304.sysml +150 -169
- package/src/artifacts/standards/iec_62366_1.sysml +80 -89
- package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
- package/src/artifacts/standards/iso_13485.sysml +80 -89
- package/src/artifacts/standards/iso_14971.sysml +66 -73
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
- package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
- package/src/core/common/memo_common.sysml +50 -50
- package/src/core/enumerations/memo_enumerations.sysml +1 -1
- package/src/core/relationships/memo_relationships.sysml +22 -49
- package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
- package/src/methodology/core/memo_core.sysml +0 -10
- package/src/methodology/profiles/memo_profiles.sysml +18 -16
- package/src/rules/closure/closure_rules.sysml +22 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
- package/src/rules/ontology/ontology_invariants.sysml +106 -33
- package/src/rules/quantitative/quantitative_rules.sysml +4 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
- package/src/viewpoints/context/context_viewpoint.sysml +5 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
- package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
- package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
- package/src/viewpoints/software/software_viewpoint.sysml +4 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
- package/templates/connected-device/model/catalog/project.sysml +3 -1
- package/templates/default/model/catalog/project.sysml +3 -1
- package/templates/infusion-pump/model/catalog/project.sysml +3 -1
- package/templates/monitoring-device/model/catalog/project.sysml +3 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
148
|
+
@MemoIdentity { :>> providedId = "CVER-001"; }
|
|
148
149
|
attribute :>> name = "VerifyAuthenticatedServiceAccess";
|
|
149
|
-
attribute :>> methodKind =
|
|
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
|
-
|
|
18
|
+
@MemoIdentity { :>> providedId = "CTR-000"; }
|
|
17
19
|
attribute :>> name = "GpcaSwCompositeContract";
|
|
18
20
|
attribute :>> contractScope = "GPCA_SW (composite, verified compositionally over the 8 subcomponents)";
|
|
19
|
-
|
|
21
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex"; }
|
|
20
22
|
}
|
|
21
23
|
part topLevelContract : Contract {
|
|
22
|
-
|
|
24
|
+
@MemoIdentity { :>> providedId = "CTR-001"; }
|
|
23
25
|
attribute :>> name = "TopLevelModeContract";
|
|
24
26
|
attribute :>> contractScope = "Top_Level_Mode";
|
|
25
|
-
|
|
27
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, Top_Level_Mode.aadl AGREE annex"; }
|
|
26
28
|
}
|
|
27
29
|
part infusionManagerContract : Contract {
|
|
28
|
-
|
|
30
|
+
@MemoIdentity { :>> providedId = "CTR-002"; }
|
|
29
31
|
attribute :>> name = "InfusionManagerContract";
|
|
30
32
|
attribute :>> contractScope = "Infusion_Manager";
|
|
31
|
-
|
|
33
|
+
@MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, Infusion_Manager.aadl AGREE annex"; }
|
|
32
34
|
}
|
|
33
35
|
part alarmContract : Contract {
|
|
34
|
-
|
|
36
|
+
@MemoIdentity { :>> providedId = "CTR-003"; }
|
|
35
37
|
attribute :>> name = "AlarmContract";
|
|
36
38
|
attribute :>> contractScope = "Alarm";
|
|
37
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
165
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1 Fig 4.1"; }
|
|
164
166
|
}
|
|
165
167
|
part temporalPauseOnCriticalAlarm : BehaviorProperty {
|
|
166
|
-
|
|
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
|
-
|
|
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
|
}
|