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