@memoarchitect/ontology 0.8.24 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- 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 +2185 -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 +29 -24
- 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 +390 -388
- 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/memo.identity.yaml +181 -0
- 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/architecture/operational/context.sysml +34 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +11 -6
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +16 -14
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +4 -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 +54 -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 +11 -9
- 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/memo.identity.yaml +205 -0
- 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 +26 -24
- 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/memo.package.yaml +1 -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/memo.package.yaml +1 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +2 -2
- package/profile/memo.package.yaml +1 -1
- 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 +1 -12
- 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/artifacts/templates/dhf/iec-60601/hrs.md +6 -6
- package/src/artifacts/templates/dhf/iec-62304/srs.md +10 -10
- package/src/artifacts/templates/dhf/system/syrs.md +6 -6
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +0 -1
- package/src/assurance/human_factors/memo_human_factors.sysml +0 -1
- package/src/assurance/requirements/memo_requirements.sysml +20 -16
- package/src/assurance/requirements/needs/memo_needs.sysml +33 -5
- package/src/assurance/safety_risk/memo_risk.sysml +20 -0
- 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 +58 -22
- package/src/rules/crosslayer/cross_layer_rules.sysml +5 -3
- package/src/rules/ontology/ontology_invariants.sysml +119 -35
- 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
|
@@ -12,11 +12,12 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
12
12
|
private import memo_core_enumerations::*;
|
|
13
13
|
private import memo_core_common::*;
|
|
14
14
|
|
|
15
|
+
private import memo_core_common::MemoIdentity;
|
|
15
16
|
// ── Verification cases ──────────────────────────────────────
|
|
16
17
|
verification vcModeRange : VerificationCase {
|
|
17
|
-
|
|
18
|
+
@MemoIdentity { :>> providedId = "VER-001"; }
|
|
18
19
|
attribute :>> name = "VerifyModeRange";
|
|
19
|
-
attribute :>> methodKind =
|
|
20
|
+
attribute :>> methodKind = MemoVerificationMethodKind::formalProof;
|
|
20
21
|
attribute :>> acceptanceCriteria = "Current_System_mode only takes valid exclusive values";
|
|
21
22
|
attribute :>> status = ElementStatusKind::approved;
|
|
22
23
|
|
|
@@ -24,9 +25,9 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
24
25
|
subject verified : Base::Anything[*] = (guaranteeExclusiveMode, gpcaDevice.gpcaSoftware.tlm, gpcaDevice.gpcaSoftware.outputBus);
|
|
25
26
|
}
|
|
26
27
|
verification vcLockout : VerificationCase {
|
|
27
|
-
|
|
28
|
+
@MemoIdentity { :>> providedId = "VER-002"; }
|
|
28
29
|
attribute :>> name = "VerifyBolusLockout";
|
|
29
|
-
attribute :>> methodKind =
|
|
30
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
30
31
|
attribute :>> acceptanceCriteria = "No patient bolus initiated when lockout or max bolus constraints active";
|
|
31
32
|
attribute :>> status = ElementStatusKind::approved;
|
|
32
33
|
|
|
@@ -34,9 +35,9 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
34
35
|
subject verified : Base::Anything[*] = (lockoutControl, guaranteeLockoutPreventsBolus, tcBolusResponse, gpcaDevice.gpcaSoftware.infusionMgr);
|
|
35
36
|
}
|
|
36
37
|
verification vcSameStepAlarm : VerificationCase {
|
|
37
|
-
|
|
38
|
+
@MemoIdentity { :>> providedId = "VER-003"; }
|
|
38
39
|
attribute :>> name = "VerifySameStepAlarmStop";
|
|
39
|
-
attribute :>> methodKind =
|
|
40
|
+
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
40
41
|
attribute :>> acceptanceCriteria = "Alarm output affects infusion in same execution step";
|
|
41
42
|
attribute :>> status = ElementStatusKind::approved;
|
|
42
43
|
|
|
@@ -44,9 +45,9 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
44
45
|
subject verified : Base::Anything[*] = (propAlarmStopsSameStep, guaranteeAlarmStopsSameStep, tcAlarmLatency, gpcaDevice.gpcaSoftware.alarm);
|
|
45
46
|
}
|
|
46
47
|
verification vcTemporalModeSafety : VerificationCase {
|
|
47
|
-
|
|
48
|
+
@MemoIdentity { :>> providedId = "VER-004"; }
|
|
48
49
|
attribute :>> name = "VerifyTemporalModeSafety";
|
|
49
|
-
attribute :>> methodKind =
|
|
50
|
+
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
50
51
|
attribute :>> acceptanceCriteria = "No invalid transitions and pause on critical alarms";
|
|
51
52
|
attribute :>> status = ElementStatusKind::approved;
|
|
52
53
|
|
|
@@ -54,9 +55,9 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
54
55
|
subject verified : Base::Anything[*] = (propLockoutTimerMonotonic, temporalNoInvalidTransition);
|
|
55
56
|
}
|
|
56
57
|
verification vcAirInLine : VerificationCase {
|
|
57
|
-
|
|
58
|
+
@MemoIdentity { :>> providedId = "VER-005"; }
|
|
58
59
|
attribute :>> name = "VerifyAirInLineStop";
|
|
59
|
-
attribute :>> methodKind =
|
|
60
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
60
61
|
attribute :>> acceptanceCriteria = "Injected air above threshold pauses infusion and annunciates per the REQ 59 High-priority actions (REQ-CS-21)";
|
|
61
62
|
attribute :>> status = ElementStatusKind::approved;
|
|
62
63
|
|
|
@@ -64,9 +65,9 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
64
65
|
subject verified : Base::Anything[*] = (airDetectionControl);
|
|
65
66
|
}
|
|
66
67
|
verification vcOcclusion : VerificationCase {
|
|
67
|
-
|
|
68
|
+
@MemoIdentity { :>> providedId = "VER-006"; }
|
|
68
69
|
attribute :>> name = "VerifyOcclusionDetection";
|
|
69
|
-
attribute :>> methodKind =
|
|
70
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
70
71
|
attribute :>> acceptanceCriteria = "Clamped line above pressure threshold pauses infusion and annunciates (REQ-X-04)";
|
|
71
72
|
attribute :>> status = ElementStatusKind::approved;
|
|
72
73
|
|
|
@@ -74,9 +75,9 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
74
75
|
subject verified : Base::Anything[*] = (occlusionAlarmControl);
|
|
75
76
|
}
|
|
76
77
|
verification vcEmptyReservoir : VerificationCase {
|
|
77
|
-
|
|
78
|
+
@MemoIdentity { :>> providedId = "VER-007"; }
|
|
78
79
|
attribute :>> name = "VerifyEmptyReservoirStop";
|
|
79
|
-
attribute :>> methodKind =
|
|
80
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
80
81
|
attribute :>> acceptanceCriteria = "Reservoir-empty assertion transitions to PAUSED (KVO flow) and annunciates per the REQ 59 High-priority actions (REQ-CS-23)";
|
|
81
82
|
attribute :>> status = ElementStatusKind::approved;
|
|
82
83
|
|
|
@@ -84,9 +85,9 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
84
85
|
subject verified : Base::Anything[*] = (reservoirMonitorControl, gpcaDevice.gpcaSoftware.systemStatus);
|
|
85
86
|
}
|
|
86
87
|
verification vcPost : VerificationCase {
|
|
87
|
-
|
|
88
|
+
@MemoIdentity { :>> providedId = "VER-008"; }
|
|
88
89
|
attribute :>> name = "VerifyPowerOnSelfTest";
|
|
89
|
-
attribute :>> methodKind =
|
|
90
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
90
91
|
attribute :>> acceptanceCriteria = "Each injected POST fault (CPU, RAM, ROM, watchdog, sensors) blocks therapy and alarms (REQ-X-02)";
|
|
91
92
|
attribute :>> status = ElementStatusKind::approved;
|
|
92
93
|
|
|
@@ -94,18 +95,18 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
94
95
|
subject verified : Base::Anything[*] = (gpcaDevice.gpcaSoftware.systemMonitor);
|
|
95
96
|
}
|
|
96
97
|
verification vcPowerLoss : VerificationCase {
|
|
97
|
-
|
|
98
|
+
@MemoIdentity { :>> providedId = "VER-009"; }
|
|
98
99
|
attribute :>> name = "VerifyPowerLossRetentionAndResume";
|
|
99
|
-
attribute :>> methodKind =
|
|
100
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
100
101
|
attribute :>> acceptanceCriteria = "Prescription and log intact after power cycle; therapy resumes only after confirmation (REQ-X-03)";
|
|
101
102
|
attribute :>> status = ElementStatusKind::approved;
|
|
102
103
|
|
|
103
104
|
objective { verify reqPowerLossRetention; verify reqBatteryBackup; }
|
|
104
105
|
}
|
|
105
106
|
verification vcWatchdog : VerificationCase {
|
|
106
|
-
|
|
107
|
+
@MemoIdentity { :>> providedId = "VER-010"; }
|
|
107
108
|
attribute :>> name = "VerifyWatchdogSafeState";
|
|
108
|
-
attribute :>> methodKind =
|
|
109
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
109
110
|
attribute :>> acceptanceCriteria = "Induced CPU hang forces zero flow and continuous alarm within 60 ms (REQ-X-08, TC-003)";
|
|
110
111
|
attribute :>> status = ElementStatusKind::approved;
|
|
111
112
|
|
|
@@ -113,36 +114,36 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
113
114
|
subject verified : Base::Anything[*] = (watchdogControl, tcWatchdogTimeout);
|
|
114
115
|
}
|
|
115
116
|
verification vcHourlyMax : VerificationCase {
|
|
116
|
-
|
|
117
|
+
@MemoIdentity { :>> providedId = "VER-011"; }
|
|
117
118
|
attribute :>> name = "VerifyHourlyDoseCeiling";
|
|
118
|
-
attribute :>> methodKind =
|
|
119
|
+
attribute :>> methodKind = MemoVerificationMethodKind::simulation;
|
|
119
120
|
attribute :>> acceptanceCriteria = "Randomized bolus/basal schedules never exceed hourly maximum in sliding window (REQ-X-06)";
|
|
120
121
|
attribute :>> status = ElementStatusKind::approved;
|
|
121
122
|
|
|
122
123
|
objective { verify reqMaxHourlyDose; }
|
|
123
124
|
}
|
|
124
125
|
verification vcPumpAccuracy : VerificationCase {
|
|
125
|
-
|
|
126
|
+
@MemoIdentity { :>> providedId = "VER-012"; }
|
|
126
127
|
attribute :>> name = "VerifyDeliveryAccuracy";
|
|
127
|
-
attribute :>> methodKind =
|
|
128
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
128
129
|
attribute :>> acceptanceCriteria = "Gravimetric bench measurement within ±5% (Tolerance_Min_const) across rate range (REQ-X-11)";
|
|
129
130
|
attribute :>> status = ElementStatusKind::approved;
|
|
130
131
|
|
|
131
132
|
objective { verify reqPumpAccuracy; }
|
|
132
133
|
}
|
|
133
134
|
verification vcAlarmLoudness : VerificationCase {
|
|
134
|
-
|
|
135
|
+
@MemoIdentity { :>> providedId = "VER-013"; }
|
|
135
136
|
attribute :>> name = "VerifyAlarmSoundPressure";
|
|
136
|
-
attribute :>> methodKind =
|
|
137
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
137
138
|
attribute :>> acceptanceCriteria = "Each priority tone meets Audio_level_const, 50 db for 2 s per I 8 (REQ-X-12)";
|
|
138
139
|
attribute :>> status = ElementStatusKind::approved;
|
|
139
140
|
|
|
140
141
|
objective { verify reqCs72; verify reqAlarmLoudness; }
|
|
141
142
|
}
|
|
142
143
|
verification vcFreeFlow : VerificationCase {
|
|
143
|
-
|
|
144
|
+
@MemoIdentity { :>> providedId = "VER-014"; }
|
|
144
145
|
attribute :>> name = "VerifyAntiFreeFlowValve";
|
|
145
|
-
attribute :>> methodKind =
|
|
146
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
146
147
|
attribute :>> acceptanceCriteria = "No gravity flow with set disengaged under worst-case head height (REQ-X-14)";
|
|
147
148
|
attribute :>> status = ElementStatusKind::approved;
|
|
148
149
|
|
|
@@ -150,18 +151,18 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
150
151
|
subject verified : Base::Anything[*] = (freeFlowValveControl);
|
|
151
152
|
}
|
|
152
153
|
verification vcStuckButton : VerificationCase {
|
|
153
|
-
|
|
154
|
+
@MemoIdentity { :>> providedId = "VER-015"; }
|
|
154
155
|
attribute :>> name = "VerifyStuckButtonDetection";
|
|
155
|
-
attribute :>> methodKind =
|
|
156
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
156
157
|
attribute :>> acceptanceCriteria = "Shorted pendant input yields no bolus and Medium-priority notification after 60 s (REQ-X-09)";
|
|
157
158
|
attribute :>> status = ElementStatusKind::approved;
|
|
158
159
|
|
|
159
160
|
objective { verify reqStuckButton; }
|
|
160
161
|
}
|
|
161
162
|
verification vcFlowCrossCheck : VerificationCase {
|
|
162
|
-
|
|
163
|
+
@MemoIdentity { :>> providedId = "VER-016"; }
|
|
163
164
|
attribute :>> name = "VerifyFlowCrossCheck";
|
|
164
|
-
attribute :>> methodKind =
|
|
165
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
165
166
|
attribute :>> acceptanceCriteria = "Injected deviation beyond Tolerance_Min_const sustained past Max_Duration_OverInfusion_const pauses therapy and annunciates (REQ-X-10)";
|
|
166
167
|
attribute :>> status = ElementStatusKind::approved;
|
|
167
168
|
|
|
@@ -170,9 +171,9 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
verification vcDrugLibrary : VerificationCase {
|
|
173
|
-
|
|
174
|
+
@MemoIdentity { :>> providedId = "VER-017"; }
|
|
174
175
|
attribute :>> name = "VerifyDrugLibraryEnforcement";
|
|
175
|
-
attribute :>> methodKind =
|
|
176
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
176
177
|
attribute :>> acceptanceCriteria = "Hard-limit entries rejected, soft-limit entries require confirmation, both logged (REQ-X-01)";
|
|
177
178
|
attribute :>> status = ElementStatusKind::approved;
|
|
178
179
|
|
|
@@ -180,18 +181,18 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
180
181
|
subject verified : Base::Anything[*] = (drugLibraryControl, gpcaDevice.gpcaSoftware.config);
|
|
181
182
|
}
|
|
182
183
|
verification vcPrescriptionConfirm : VerificationCase {
|
|
183
|
-
|
|
184
|
+
@MemoIdentity { :>> providedId = "VER-018"; }
|
|
184
185
|
attribute :>> name = "VerifyPrescriptionConfirmation";
|
|
185
|
-
attribute :>> methodKind =
|
|
186
|
+
attribute :>> methodKind = MemoVerificationMethodKind::demonstration;
|
|
186
187
|
attribute :>> acceptanceCriteria = "Therapy cannot start without distinct confirmation; displayed values equal stored values (REQ-CS-09)";
|
|
187
188
|
attribute :>> status = ElementStatusKind::approved;
|
|
188
189
|
|
|
189
190
|
objective { verify reqCs09; }
|
|
190
191
|
}
|
|
191
192
|
verification vcEventLog : VerificationCase {
|
|
192
|
-
|
|
193
|
+
@MemoIdentity { :>> providedId = "VER-019"; }
|
|
193
194
|
attribute :>> name = "VerifyEventLogIntegrity";
|
|
194
|
-
attribute :>> methodKind =
|
|
195
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
195
196
|
attribute :>> acceptanceCriteria = "Operational/error log entries per REQ-CS-78..81; tampering detectable (REQ-X-07)";
|
|
196
197
|
attribute :>> status = ElementStatusKind::approved;
|
|
197
198
|
|
|
@@ -199,45 +200,45 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
199
200
|
subject verified : Base::Anything[*] = (gpcaDevice.gpcaSoftware.logging);
|
|
200
201
|
}
|
|
201
202
|
verification vcReverseDeliveryPause : VerificationCase {
|
|
202
|
-
|
|
203
|
+
@MemoIdentity { :>> providedId = "VER-020"; }
|
|
203
204
|
attribute :>> name = "VerifyReverseDeliveryPause";
|
|
204
|
-
attribute :>> methodKind =
|
|
205
|
+
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
205
206
|
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)";
|
|
206
207
|
attribute :>> status = ElementStatusKind::approved;
|
|
207
208
|
|
|
208
209
|
subject verified : Base::Anything[*] = (reverseDeliveryPauseControl);
|
|
209
210
|
}
|
|
210
211
|
verification vcAntiRefluxMechanism : VerificationCase {
|
|
211
|
-
|
|
212
|
+
@MemoIdentity { :>> providedId = "VER-021"; }
|
|
212
213
|
attribute :>> name = "VerifyContinuousReverseDeliveryPrevention";
|
|
213
|
-
attribute :>> methodKind =
|
|
214
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
214
215
|
attribute :>> acceptanceCriteria = "During normal use and single fault condition, continuous reverse delivery is not possible (IEC 601-2-24 basis per GPCA safety requirements)";
|
|
215
216
|
attribute :>> status = ElementStatusKind::approved;
|
|
216
217
|
|
|
217
218
|
subject verified : Base::Anything[*] = (antiRefluxDesignControl);
|
|
218
219
|
}
|
|
219
220
|
verification vcVtbiCeiling : VerificationCase {
|
|
220
|
-
|
|
221
|
+
@MemoIdentity { :>> providedId = "VER-022"; }
|
|
221
222
|
attribute :>> name = "VerifyVtbiCeilingPause";
|
|
222
|
-
attribute :>> methodKind =
|
|
223
|
+
attribute :>> methodKind = MemoVerificationMethodKind::modelChecking;
|
|
223
224
|
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";
|
|
224
225
|
attribute :>> status = ElementStatusKind::approved;
|
|
225
226
|
|
|
226
227
|
subject verified : Base::Anything[*] = (vtbiLimitPauseControl);
|
|
227
228
|
}
|
|
228
229
|
verification vcInfusionComplete : VerificationCase {
|
|
229
|
-
|
|
230
|
+
@MemoIdentity { :>> providedId = "VER-023"; }
|
|
230
231
|
attribute :>> name = "VerifyInfusionCompleteStop";
|
|
231
|
-
attribute :>> methodKind =
|
|
232
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
232
233
|
attribute :>> acceptanceCriteria = "Reaching prescribed total duration or maximum VTBI transitions ACTIVE to IDLE with Infusion Complete actions (REQ-CS-28)";
|
|
233
234
|
attribute :>> status = ElementStatusKind::approved;
|
|
234
235
|
|
|
235
236
|
subject verified : Base::Anything[*] = (infusionCompleteControl);
|
|
236
237
|
}
|
|
237
238
|
verification vcDoorInterlock : VerificationCase {
|
|
238
|
-
|
|
239
|
+
@MemoIdentity { :>> providedId = "VER-024"; }
|
|
239
240
|
attribute :>> name = "VerifyDoorOpenDeliveryInhibit";
|
|
240
|
-
attribute :>> methodKind =
|
|
241
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
241
242
|
attribute :>> acceptanceCriteria = "Door open during THERAPY limits flow to at most KVO and raises a notification (AGREE GP-011; REQ-X-05)";
|
|
242
243
|
attribute :>> status = ElementStatusKind::approved;
|
|
243
244
|
|
|
@@ -246,7 +247,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
246
247
|
|
|
247
248
|
// ── Validation cases (design validation / IEC 62366) ────────
|
|
248
249
|
verification valSimulatedWard : ValidationCase {
|
|
249
|
-
|
|
250
|
+
@MemoIdentity { :>> providedId = "VAL-001"; }
|
|
250
251
|
attribute :>> name = "SimulatedWardTherapyValidation";
|
|
251
252
|
attribute :>> validationMethod = ValidationMethodKind::simulatedUse;
|
|
252
253
|
attribute :>> userParticipation = "nurses and physicians on a simulated ward";
|
|
@@ -254,7 +255,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
254
255
|
attribute :>> clinicalContext = "post-operative PCA therapy in acute care";
|
|
255
256
|
}
|
|
256
257
|
verification valSummativeUsability : ValidationCase {
|
|
257
|
-
|
|
258
|
+
@MemoIdentity { :>> providedId = "VAL-002"; }
|
|
258
259
|
attribute :>> name = "SummativeUsabilityTest";
|
|
259
260
|
attribute :>> validationMethod = ValidationMethodKind::summativeUsabilityTest;
|
|
260
261
|
attribute :>> userParticipation = "15 representative clinical users per user group";
|
|
@@ -265,7 +266,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
265
266
|
// ── Test artifacts and evidence ─────────────────────────────
|
|
266
267
|
part testReportLockout : MemoEvidence {
|
|
267
268
|
attribute :>> evidenceKind = EvidenceKind::testArtifact;
|
|
268
|
-
|
|
269
|
+
@MemoIdentity { :>> providedId = "TEST-001"; }
|
|
269
270
|
attribute :>> name = "BolusLockoutTestReport";
|
|
270
271
|
attribute :>> version = "0.1";
|
|
271
272
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -274,7 +275,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
274
275
|
}
|
|
275
276
|
part testProtocolSafetySuite : MemoEvidence {
|
|
276
277
|
attribute :>> evidenceKind = EvidenceKind::testArtifact;
|
|
277
|
-
|
|
278
|
+
@MemoIdentity { :>> providedId = "TEST-002"; }
|
|
278
279
|
attribute :>> name = "SafetyAlarmTestProtocol";
|
|
279
280
|
attribute :>> version = "0.1";
|
|
280
281
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -283,7 +284,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
283
284
|
}
|
|
284
285
|
part evidenceLockout : MemoEvidence {
|
|
285
286
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
286
|
-
|
|
287
|
+
@MemoIdentity { :>> providedId = "EVD-001"; }
|
|
287
288
|
attribute :>> name = "BolusLockoutEvidence";
|
|
288
289
|
attribute :>> version = "0.1";
|
|
289
290
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -292,7 +293,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
292
293
|
}
|
|
293
294
|
part evidenceModeRange : MemoEvidence {
|
|
294
295
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
295
|
-
|
|
296
|
+
@MemoIdentity { :>> providedId = "EVD-002"; }
|
|
296
297
|
attribute :>> name = "ModeRangeEvidence";
|
|
297
298
|
attribute :>> version = "0.1";
|
|
298
299
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -301,7 +302,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
301
302
|
}
|
|
302
303
|
part evidenceSameStepAlarm : MemoEvidence {
|
|
303
304
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
304
|
-
|
|
305
|
+
@MemoIdentity { :>> providedId = "EVD-003"; }
|
|
305
306
|
attribute :>> name = "SameStepAlarmEvidence";
|
|
306
307
|
attribute :>> version = "0.1";
|
|
307
308
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -310,7 +311,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
310
311
|
}
|
|
311
312
|
part evidenceTemporalModeSafety : MemoEvidence {
|
|
312
313
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
313
|
-
|
|
314
|
+
@MemoIdentity { :>> providedId = "EVD-004"; }
|
|
314
315
|
attribute :>> name = "TemporalModeSafetyEvidence";
|
|
315
316
|
attribute :>> version = "0.1";
|
|
316
317
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -319,7 +320,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
319
320
|
}
|
|
320
321
|
part evidenceSafetyAlarmSuite : MemoEvidence {
|
|
321
322
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
322
|
-
|
|
323
|
+
@MemoIdentity { :>> providedId = "EVD-005"; }
|
|
323
324
|
attribute :>> name = "SafetyAlarmSuiteEvidence";
|
|
324
325
|
attribute :>> version = "0.1";
|
|
325
326
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -328,7 +329,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
328
329
|
}
|
|
329
330
|
part evidenceUsability : MemoEvidence {
|
|
330
331
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
331
|
-
|
|
332
|
+
@MemoIdentity { :>> providedId = "EVD-006"; }
|
|
332
333
|
attribute :>> name = "SummativeUsabilityEvidence";
|
|
333
334
|
attribute :>> version = "0.1";
|
|
334
335
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -337,7 +338,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
337
338
|
}
|
|
338
339
|
part evidenceHardwareBench : MemoEvidence {
|
|
339
340
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
340
|
-
|
|
341
|
+
@MemoIdentity { :>> providedId = "EVD-008"; }
|
|
341
342
|
attribute :>> name = "HardwareBenchEvidence";
|
|
342
343
|
attribute :>> version = "0.1";
|
|
343
344
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -346,7 +347,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
346
347
|
}
|
|
347
348
|
part evidenceDoseProgramming : MemoEvidence {
|
|
348
349
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
349
|
-
|
|
350
|
+
@MemoIdentity { :>> providedId = "EVD-009"; }
|
|
350
351
|
attribute :>> name = "DoseProgrammingEvidence";
|
|
351
352
|
attribute :>> version = "0.1";
|
|
352
353
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -355,7 +356,7 @@ package memo_examples_gpca_pump_gpca_verification {
|
|
|
355
356
|
}
|
|
356
357
|
part evidenceDeliveryAccuracy : MemoEvidence {
|
|
357
358
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
358
|
-
|
|
359
|
+
@MemoIdentity { :>> providedId = "EVD-007"; }
|
|
359
360
|
attribute :>> name = "DeliveryAccuracyEvidence";
|
|
360
361
|
attribute :>> version = "0.1";
|
|
361
362
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -10,8 +10,10 @@ package memo_examples_gpca_pump_project {
|
|
|
10
10
|
private import memo_core_enumerations::*;
|
|
11
11
|
private import memo_examples_gpca_pump_methodology_gpca_profiles::*;
|
|
12
12
|
|
|
13
|
+
private import memo_core_common::*;
|
|
14
|
+
private import memo_core_common::MemoIdentity;
|
|
13
15
|
part gpcaProjectBinding : ProjectMethodBinding {
|
|
14
|
-
|
|
16
|
+
@MemoIdentity { :>> providedId = "PMB-GPCA-001"; }
|
|
15
17
|
attribute :>> name = "GPCAProjectMethodBinding";
|
|
16
18
|
attribute :>> projectName = "GPCA Infusion Pump";
|
|
17
19
|
ref :>> selectedMethodology = gpcaMethodDefinition;
|
package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml
CHANGED
|
@@ -13,12 +13,14 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
|
|
|
13
13
|
private import memo_viewpoints_verification_verification_viewpoint::*;
|
|
14
14
|
private import memo_core_enumerations::*;
|
|
15
15
|
|
|
16
|
+
private import memo_core_common::*;
|
|
17
|
+
private import memo_core_common::MemoIdentity;
|
|
16
18
|
view gpcaSystemContextView : MemoDiagramView {
|
|
17
19
|
expose memo_examples_gpca_pump_viewpoints_context_views_context_system_context_view::*;
|
|
18
20
|
attribute depth = 2;
|
|
19
|
-
|
|
21
|
+
@MemoIdentity { :>> providedId = "VIEW-CTX-101"; }
|
|
20
22
|
attribute :>> name = "GPCA_SystemContextView";
|
|
21
|
-
|
|
23
|
+
@MemoIdentity { :>> shortDescription = "Actors, use contexts, and external entities at the GPCA system boundary."; }
|
|
22
24
|
attribute :>> description = "Shows the CriSys Fig 2.1 boundary: patient, clinician, prescription, drug reservoir, needle, hospital pharmacy database, and hospital environment around the pump, with directional data flows, physical drug-path connections, and the intended use anchoring the boundary.";
|
|
23
25
|
attribute :>> outputKind = (ViewOutputKind::diagram);
|
|
24
26
|
attribute :>> presentationKind = (PresentationKind::blockDiagram);
|
|
@@ -28,10 +30,10 @@ package memo_examples_gpca_pump_viewpoints_context_views_context_system_context_
|
|
|
28
30
|
attribute :>> autoPopulate = true;
|
|
29
31
|
attribute :>> queryDescription = "Include actors, use contexts, intended use, and external operational entities.";
|
|
30
32
|
part :>> selectionQuery {
|
|
31
|
-
|
|
33
|
+
@MemoIdentity { :>> providedId = "QRY-CTX-101"; }
|
|
32
34
|
attribute :>> name = "GPCA_SystemContextQuery";
|
|
33
35
|
attribute :>> includeElementKinds = ("Actor", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity");
|
|
34
|
-
attribute :>> includeRelationshipKinds = ("
|
|
36
|
+
attribute :>> includeRelationshipKinds = ("connect", "flow", "Governs", "AppliesInContext");
|
|
35
37
|
attribute :>> includeLayers = ("context", "operational");
|
|
36
38
|
attribute :>> selectionExpression = "product == 'GPCA'";
|
|
37
39
|
attribute :>> rationaleText = "Auto-populate the GPCA context view from the context layer.";
|
|
@@ -14,12 +14,14 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
|
|
|
14
14
|
private import memo_viewpoints_cybersecurity_cybersecurity_viewpoint::*;
|
|
15
15
|
private import memo_core_enumerations::*;
|
|
16
16
|
|
|
17
|
+
private import memo_core_common::*;
|
|
18
|
+
private import memo_core_common::MemoIdentity;
|
|
17
19
|
view gpcaCybersecurityView : MemoDiagramView {
|
|
18
20
|
expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cybersecurity_view::*;
|
|
19
21
|
attribute depth = 2;
|
|
20
|
-
|
|
22
|
+
@MemoIdentity { :>> providedId = "VIEW-CYB-001"; }
|
|
21
23
|
attribute :>> name = "GPCA_CybersecurityView";
|
|
22
|
-
|
|
24
|
+
@MemoIdentity { :>> shortDescription = "Shows GPCA assets, trust boundaries, threats, vulnerabilities, and mitigations."; }
|
|
23
25
|
attribute :>> description = "Product-specific cybersecurity view intended for secure product development and cross-reference into cybersecurity risk documentation.";
|
|
24
26
|
attribute :>> outputKind = (ViewOutputKind::diagram);
|
|
25
27
|
attribute :>> presentationKind = (PresentationKind::custom);
|
|
@@ -29,7 +31,7 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_cybersecurity_cyb
|
|
|
29
31
|
attribute :>> autoPopulate = true;
|
|
30
32
|
attribute :>> queryDescription = "Include cyber assets, trust boundaries, threats, vulnerabilities, cyber hazards, cyber risks, mitigations, security requirements, and verification.";
|
|
31
33
|
part :>> selectionQuery {
|
|
32
|
-
|
|
34
|
+
@MemoIdentity { :>> providedId = "QRY-CYB-001"; }
|
|
33
35
|
attribute :>> name = "GPCA_CybersecurityQuery";
|
|
34
36
|
attribute :>> includeElementKinds = ("CybersecurityAsset", "Threat", "Vulnerability", "CyberHazard", "CyberRisk", "CyberMitigation", "SecurityRequirement", "TrustBoundary", "OperativeScenario[scenarioKind=threat]");
|
|
35
37
|
attribute :>> includeLayers = ("cybersecurity", "risk", "assurance");
|
|
@@ -6,18 +6,20 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_cyber_as
|
|
|
6
6
|
private import memo_viewpoints_cybersecurity_cybersecurity_viewpoint::*;
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
|
|
9
|
+
private import memo_core_common::*;
|
|
10
|
+
private import memo_core_common::MemoIdentity;
|
|
9
11
|
view cyberAssessmentView : MemoCybersecurityAssessmentView {
|
|
10
12
|
expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_cyber_assessment_view::*;
|
|
11
|
-
|
|
13
|
+
@MemoIdentity { :>> providedId = "DOC-003"; }
|
|
12
14
|
attribute :>> name = "GPCAMemoCybersecurityAssessmentView";
|
|
13
|
-
|
|
15
|
+
@MemoIdentity { :>> shortDescription = "Cybersecurity risk-assessment-oriented document view for GPCA."; }
|
|
14
16
|
attribute :>> description = "Captures GPCA cyber risks, mitigations, security requirements, verification, and safety/privacy traceability for cybersecurity assessment records.";
|
|
15
17
|
attribute :>> version = "0.1";
|
|
16
18
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
17
19
|
attribute :>> marketScope = "generic";
|
|
18
20
|
ref :>> viewpointDefinition = cybersecurityViewpoint;
|
|
19
21
|
part :>> selectionQuery {
|
|
20
|
-
|
|
22
|
+
@MemoIdentity { :>> providedId = "QRY-DOC-009"; }
|
|
21
23
|
attribute :>> name = "cyberAssessmentViewQuery";
|
|
22
24
|
attribute :>> includeElementKinds = ("CyberRisk", "CyberHazard", "CybersecurityAsset", "CyberMitigation", "SecurityRequirement", "SecurityClaim", "SBOMEntry", "SoftwareModule[moduleKind=soup]");
|
|
23
25
|
attribute :>> includeRelationshipKinds = ("ImpactsSafety", "Mitigates", "DerivesCyberRequirement", "AssessedAgainst", "DependsOnSoup");
|
|
@@ -6,18 +6,20 @@ package memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_m
|
|
|
6
6
|
private import memo_viewpoints_cybersecurity_cybersecurity_viewpoint::*;
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
|
|
9
|
+
private import memo_core_common::*;
|
|
10
|
+
private import memo_core_common::MemoIdentity;
|
|
9
11
|
view threatModelView : MemoCybersecurityThreatModelView {
|
|
10
12
|
expose memo_examples_gpca_pump_viewpoints_cybersecurity_views_document_threat_model_view::*;
|
|
11
|
-
|
|
13
|
+
@MemoIdentity { :>> providedId = "DOC-002"; }
|
|
12
14
|
attribute :>> name = "GPCACyberThreatModelView";
|
|
13
|
-
|
|
15
|
+
@MemoIdentity { :>> shortDescription = "Threat-model-oriented document view for GPCA."; }
|
|
14
16
|
attribute :>> description = "Captures GPCA cyber assets, trust boundaries, threats, threat scenarios, vulnerabilities, and mitigations for secure product development records.";
|
|
15
17
|
attribute :>> version = "0.1";
|
|
16
18
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
17
19
|
attribute :>> marketScope = "generic";
|
|
18
20
|
ref :>> viewpointDefinition = cybersecurityViewpoint;
|
|
19
21
|
part :>> selectionQuery {
|
|
20
|
-
|
|
22
|
+
@MemoIdentity { :>> providedId = "QRY-DOC-008"; }
|
|
21
23
|
attribute :>> name = "threatModelViewQuery";
|
|
22
24
|
attribute :>> includeElementKinds = ("Threat", "OperativeScenario[scenarioKind=threat]", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
|
|
23
25
|
attribute :>> includeRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "CrossesTrustBoundary", "Mitigates", "DerivesCyberRequirement");
|
|
@@ -13,12 +13,14 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
|
|
|
13
13
|
private import memo_viewpoints_verification_verification_viewpoint::*;
|
|
14
14
|
private import memo_core_enumerations::*;
|
|
15
15
|
|
|
16
|
+
private import memo_core_common::*;
|
|
17
|
+
private import memo_core_common::MemoIdentity;
|
|
16
18
|
view gpcaFunctionAllocationView : MemoDiagramView {
|
|
17
19
|
expose memo_examples_gpca_pump_viewpoints_functional_views_functional_function_allocation_view::*;
|
|
18
20
|
attribute depth = 2;
|
|
19
|
-
|
|
21
|
+
@MemoIdentity { :>> providedId = "VIEW-FUN-102"; }
|
|
20
22
|
attribute :>> name = "GPCA_FunctionAllocationView";
|
|
21
|
-
|
|
23
|
+
@MemoIdentity { :>> shortDescription = "Allocation of logical functions to software components and hardware assemblies."; }
|
|
22
24
|
attribute :>> outputKind = (ViewOutputKind::matrix);
|
|
23
25
|
attribute :>> presentationKind = (PresentationKind::traceMatrix);
|
|
24
26
|
attribute :>> viewKind = DiagramViewKind::grid;
|
|
@@ -27,7 +29,7 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
|
|
|
27
29
|
attribute :>> autoPopulate = true;
|
|
28
30
|
attribute :>> queryDescription = "Include logical functions with their AllocatedTo targets.";
|
|
29
31
|
part :>> selectionQuery {
|
|
30
|
-
|
|
32
|
+
@MemoIdentity { :>> providedId = "QRY-FUN-102"; }
|
|
31
33
|
attribute :>> name = "GPCA_FunctionAllocationQuery";
|
|
32
34
|
attribute :>> includeElementKinds = ("SystemFunction", "SoftwareModule", "HardwareAssembly");
|
|
33
35
|
attribute :>> includeRelationshipKinds = ("AllocatedTo");
|
|
@@ -13,12 +13,14 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
|
|
|
13
13
|
private import memo_viewpoints_verification_verification_viewpoint::*;
|
|
14
14
|
private import memo_core_enumerations::*;
|
|
15
15
|
|
|
16
|
+
private import memo_core_common::*;
|
|
17
|
+
private import memo_core_common::MemoIdentity;
|
|
16
18
|
view gpcaFunctionBrowserView : MemoDiagramView {
|
|
17
19
|
expose memo_examples_gpca_pump_viewpoints_functional_views_functional_function_browser_view::*;
|
|
18
20
|
attribute depth = 2;
|
|
19
|
-
|
|
21
|
+
@MemoIdentity { :>> providedId = "VIEW-FUN-103"; }
|
|
20
22
|
attribute :>> name = "GPCA_FunctionBrowserView";
|
|
21
|
-
|
|
23
|
+
@MemoIdentity { :>> shortDescription = "Membership tree over the functions layer: logical functions, flows, and the exchange item definitions, grouped by kind."; }
|
|
22
24
|
attribute :>> description = "Browser view (SysML v2 browser view kind) exposing the functions-layer membership hierarchy as a first-class view: the eleven logical functions, the logical flows connecting them, and the data/control definitions they exchange — with kind icons, expand/collapse, and filtering.";
|
|
23
25
|
attribute :>> outputKind = (ViewOutputKind::diagram);
|
|
24
26
|
attribute :>> presentationKind = (PresentationKind::blockDiagram);
|
|
@@ -27,7 +29,7 @@ package memo_examples_gpca_pump_viewpoints_functional_views_functional_function_
|
|
|
27
29
|
attribute :>> autoPopulate = true;
|
|
28
30
|
attribute :>> queryDescription = "Include the functions layer's functions, flows, and exchange item definitions.";
|
|
29
31
|
part :>> selectionQuery {
|
|
30
|
-
|
|
32
|
+
@MemoIdentity { :>> providedId = "QRY-FUN-103"; }
|
|
31
33
|
attribute :>> name = "GPCA_FunctionBrowserQuery";
|
|
32
34
|
attribute :>> includeElementKinds = ("SystemFunction", "FunctionalExchange", "InterfaceItem");
|
|
33
35
|
attribute :>> includeLayers = ("functions");
|
package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml
CHANGED
|
@@ -13,12 +13,14 @@ package memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_vi
|
|
|
13
13
|
private import memo_viewpoints_verification_verification_viewpoint::*;
|
|
14
14
|
private import memo_core_enumerations::*;
|
|
15
15
|
|
|
16
|
+
private import memo_core_common::*;
|
|
17
|
+
private import memo_core_common::MemoIdentity;
|
|
16
18
|
view gpcaActionFlowView : MemoDiagramView {
|
|
17
19
|
expose memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_view::*;
|
|
18
20
|
attribute depth = 2;
|
|
19
|
-
|
|
21
|
+
@MemoIdentity { :>> providedId = "VIEW-BHV-003"; }
|
|
20
22
|
attribute :>> name = "GPCA_InfusionDeliveryActionFlowView";
|
|
21
|
-
|
|
23
|
+
@MemoIdentity { :>> shortDescription = "The 20 ms execution-step pipeline from sensor acquisition through alarm evaluation and dose limiting to pump actuation and event logging."; }
|
|
22
24
|
attribute :>> description = "Action flow over the infusionDeliveryFlow composite action: typed action steps with in/out parameters, item flows carrying the DD/CD exchange items, succession ordering from start to done, and swimlane allocation onto the logical architecture (sensors, alarm, infusion manager, pump motor, logging).";
|
|
23
25
|
attribute :>> outputKind = (ViewOutputKind::diagram);
|
|
24
26
|
attribute :>> presentationKind = (PresentationKind::activityDiagram);
|
|
@@ -28,7 +30,7 @@ package memo_examples_gpca_pump_viewpoints_logical_views_behavior_action_flow_vi
|
|
|
28
30
|
attribute :>> autoPopulate = true;
|
|
29
31
|
attribute :>> queryDescription = "Include the nested action usages of the infusion delivery flow with their flows and successions.";
|
|
30
32
|
part :>> selectionQuery {
|
|
31
|
-
|
|
33
|
+
@MemoIdentity { :>> providedId = "QRY-BHV-103"; }
|
|
32
34
|
attribute :>> name = "GPCA_ActionFlowQuery";
|
|
33
35
|
attribute :>> includeElementKinds = ("ActionUsage");
|
|
34
36
|
attribute :>> selectionExpression = "product == 'GPCA'";
|
|
@@ -7,11 +7,13 @@ package memo_examples_gpca_pump_viewpoints_logical_views_document_architecture_d
|
|
|
7
7
|
private import memo_viewpoints_physical_physical_viewpoint::*;
|
|
8
8
|
private import memo_core_enumerations::*;
|
|
9
9
|
|
|
10
|
+
private import memo_core_common::*;
|
|
11
|
+
private import memo_core_common::MemoIdentity;
|
|
10
12
|
view architectureDescriptionView : MemoDocumentView {
|
|
11
13
|
expose memo_examples_gpca_pump_viewpoints_logical_views_document_architecture_description_view::*;
|
|
12
|
-
|
|
14
|
+
@MemoIdentity { :>> providedId = "DOC-005"; }
|
|
13
15
|
attribute :>> name = "ArchitectureDescriptionView";
|
|
14
|
-
|
|
16
|
+
@MemoIdentity { :>> shortDescription = "ISO/IEC/IEEE 42010 architecture description across all layers."; }
|
|
15
17
|
attribute :>> description = "Aggregates context, operational, functional, logical, software, and physical layers with their views and correspondences for the system architecture description.";
|
|
16
18
|
attribute :>> version = "0.1";
|
|
17
19
|
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
@@ -22,7 +24,7 @@ package memo_examples_gpca_pump_viewpoints_logical_views_document_architecture_d
|
|
|
22
24
|
ref vpSoftware :> viewpointDefinition = softwareViewpoint;
|
|
23
25
|
ref vpPhysical :> viewpointDefinition = physicalViewpoint;
|
|
24
26
|
part :>> selectionQuery {
|
|
25
|
-
|
|
27
|
+
@MemoIdentity { :>> providedId = "QRY-DOC-005"; }
|
|
26
28
|
attribute :>> name = "architectureDescriptionViewQuery";
|
|
27
29
|
attribute :>> includeElementKinds = ("LogicalComponent", "SystemFunction", "ComponentExchange", "SoftwareSystem", "SoftwareModule", "HardwareAssembly", "ProcessingNode", "PhysicalPort", "FunctionalFlow", "FunctionalFlowStep");
|
|
28
30
|
attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "Realizes", "BindsToInterface", "Performs", "Succession", "DeploysTo", "HostedBy");
|