@memoarchitect/ontology 0.4.6 → 0.6.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 +5 -4
- package/examples/connected-patient-monitor/README.md +7 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
- package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
- package/examples/embedded-infusion-pump/README.md +7 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
- package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
- package/examples/extensions/README.md +16 -0
- package/examples/extensions/clinical/memo.package.yaml +9 -0
- package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
- package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
- package/examples/extensions/template/memo.package.yaml +9 -0
- package/examples/extensions/template/src/extension.sysml +15 -0
- package/examples/functional-logical-physical/README.md +7 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
- package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
- package/examples/gpca-pump/README.md +26 -0
- package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
- package/examples/gpca-pump/memo.config.yaml +2 -2
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +139 -21
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
- package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
- package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
- package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
- package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
- package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
- package/examples/ivd-laboratory-system/README.md +7 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
- package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
- package/examples/manual-surgical-instrument/README.md +7 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
- package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
- package/examples/multidimensional-layers/README.md +7 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
- package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
- package/examples/reusable-instrument/README.md +7 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
- package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
- package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
- package/examples/software-only-medical-device/README.md +7 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
- package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
- package/examples/surgical-closure-workflow/README.md +8 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
- package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
- package/examples/surgical-robot/README.md +7 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
- package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
- package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
- package/examples/sysml-diagram-samples/README.md +32 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
- package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
- package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
- package/examples/temperature-alarm/README.md +7 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
- package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
- package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
- package/memo.manifest.yaml +4 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +4 -4
- package/ontology/memo.package.yaml +1 -1
- package/ontology/memo.rendering.yaml +37 -0
- package/package.json +17 -7
- package/profile/memo.package.yaml +1 -1
- package/profile/templates/connected-device/starter.sysml +3 -3
- package/profile/templates/infusion-pump/starter.sysml +3 -3
- package/profile/templates/monitoring-device/starter.sysml +3 -3
- package/profile/templates/samd/starter.sysml +3 -3
- package/src/architecture/decisions/memo_decisions.sysml +1 -1
- package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
- package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
- package/src/architecture/functional/functions/memo_functions.sysml +81 -0
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
- package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
- package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
- package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
- package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
- package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
- package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
- package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
- package/src/architecture/operational/activities/memo_activities.sysml +86 -0
- package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
- package/src/architecture/operational/structure/memo_operational.sysml +26 -0
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
- package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
- package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
- package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
- package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
- package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
- package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
- package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
- package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
- package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
- package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
- package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
- package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
- package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
- package/src/compliance/change/memo_change.sysml +2 -2
- package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
- package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
- package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
- package/src/compliance/iso14971/risk_management_file.sysml +1 -1
- package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
- package/src/core/common/memo_common.sysml +123 -14
- package/src/core/consistency_rules/consistency_rules.sysml +2 -2
- package/src/core/dimensions/dimensions.sysml +45 -24
- package/src/core/enumerations/memo_enumerations.sysml +11 -16
- package/src/core/methodology_scope/methodology_scope.sysml +10 -28
- package/src/core/relationships/memo_relationships.sysml +178 -146
- package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
- package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
- package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
- package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
- package/src/core/terminology/terminology.sysml +35 -0
- package/src/memo_namespaces.sysml +247 -302
- package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
- package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
- package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
- package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
- package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
- package/src/rules/closure/closure_rules.sysml +11 -11
- package/src/rules/coverage/coverage_rules.sysml +8 -8
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
- package/src/rules/ontology/ontology_invariants.sysml +133 -0
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
- package/src/viewpoints/context/context_viewpoint.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
- package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
- package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
- package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
- package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
- package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
- package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
- package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
- package/template/memo.package.yaml +1 -1
- package/template/src/catalog/starter.sysml +3 -3
- package/examples/gpca-pump/model/samples/README.md +0 -24
- package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
- package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
- package/src/architecture/assurance/memo_assurance.sysml +0 -29
- package/src/architecture/context/memo_context.sysml +0 -58
- package/src/architecture/functions/memo_functions.sysml +0 -30
- package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
- package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
- package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
- package/src/architecture/operational/memo_operational.sysml +0 -51
- package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
- package/src/architecture/system/memo_system_analysis.sysml +0 -54
- package/src/artifacts/clinical_safety_report.sysml +0 -12
- package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
- package/src/artifacts/design_change_log.sysml +0 -12
- package/src/artifacts/design_history_file_index.sysml +0 -12
- package/src/artifacts/design_input_plan.sysml +0 -12
- package/src/artifacts/design_output_plan.sysml +0 -12
- package/src/artifacts/evidence_record.sysml +0 -12
- package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
- package/src/artifacts/hazard_analysis_report.sysml +0 -12
- package/src/artifacts/labeling_specification.sysml +0 -12
- package/src/artifacts/requirements_specification.sysml +0 -12
- package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
- package/src/artifacts/risk_management_plan.sysml +0 -12
- package/src/artifacts/software_design_description.sysml +0 -12
- package/src/artifacts/software_development_plan.sysml +0 -12
- package/src/artifacts/soup_list.sysml +0 -12
- package/src/artifacts/system_architecture_description.sysml +0 -12
- package/src/artifacts/test_protocol.sysml +0 -12
- package/src/artifacts/test_report.sysml +0 -12
- package/src/artifacts/threat_model_report.sysml +0 -12
- package/src/artifacts/usability_engineering_report.sysml +0 -12
- package/src/medical_device_library.sysml +0 -100
- /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
- /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
- /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
- /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
- /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
- /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
- /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
- /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
- /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
- /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
|
@@ -2,9 +2,11 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_core_relationships::*;
|
|
5
|
-
private import
|
|
6
|
-
private import
|
|
7
|
-
private import
|
|
5
|
+
private import memo_architecture_operational_context_actors::*;
|
|
6
|
+
private import memo_architecture_operational_context_use_context::*;
|
|
7
|
+
private import memo_architecture_operational_activities::*;
|
|
8
|
+
private import memo_architecture_operational_structure::*;
|
|
9
|
+
private import memo_architecture_functional_functions::*;
|
|
8
10
|
private import memo_examples_gpca_pump_model_catalog_gpca_context::*;
|
|
9
11
|
private import memo_examples_gpca_pump_model_catalog_gpca_operational::*;
|
|
10
12
|
private import memo_examples_gpca_pump_model_catalog_gpca_system::*;
|
|
@@ -49,36 +51,37 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
49
51
|
connection : ConnectsPhysically connect source ::> entityNeedle to target ::> actorPatient;
|
|
50
52
|
connection : ConnectsPhysically connect source ::> entityPowerInfrastructure to target ::> entityGpcaPump;
|
|
51
53
|
// Intended use and use context anchoring (no floating context nodes)
|
|
52
|
-
connection :
|
|
54
|
+
connection : Governs { attribute :>> governKind = GovernKind::use; connect governor ::> gpcaIntendedUse to governedElement ::> entityGpcaPump; }
|
|
53
55
|
connection : AppliesInContext connect useContext ::> hospitalWardContext to subjectElement ::> entityGpcaPump;
|
|
54
56
|
connection : AppliesInContext connect useContext ::> hospitalWardContext to subjectElement ::> entityHospital;
|
|
55
57
|
|
|
56
58
|
// ── Actor participation (use case view) ─────────────────────
|
|
57
|
-
connection :
|
|
58
|
-
connection :
|
|
59
|
-
connection :
|
|
60
|
-
connection :
|
|
61
|
-
connection :
|
|
62
|
-
connection :
|
|
63
|
-
connection :
|
|
64
|
-
connection :
|
|
59
|
+
connection : Initiates connect initiatingUser ::> actorNurse to initiatedUseCase ::> ucDeliverPcaTherapy;
|
|
60
|
+
connection : ParticipatesIn connect participant ::> actorPatient to useCase ::> ucDeliverPcaTherapy;
|
|
61
|
+
connection : ParticipatesIn connect participant ::> actorPrescriber to useCase ::> ucDeliverPcaTherapy;
|
|
62
|
+
connection : ParticipatesIn connect participant ::> actorPharmacist to useCase ::> ucDeliverPcaTherapy;
|
|
63
|
+
connection : Performs connect performer ::> actorPrescriber to performed ::> oaPrescribe;
|
|
64
|
+
connection : Performs connect performer ::> actorPharmacist to performed ::> oaLoadReservoir;
|
|
65
|
+
connection : Performs connect performer ::> actorNurse to performed ::> oaProgram;
|
|
66
|
+
connection : Performs connect performer ::> actorNurse to performed ::> oaStartTherapy;
|
|
67
|
+
connection : Performs connect performer ::> actorNurse to performed ::> oaRespondAlarm;
|
|
68
|
+
connection : Performs connect performer ::> actorNurse to performed ::> oaReviewLog;
|
|
69
|
+
connection : Performs connect performer ::> actorPatient to performed ::> oaRequestBolus;
|
|
70
|
+
connection : Performs connect performer ::> actorTechnician to performed ::> oaMaintain;
|
|
65
71
|
|
|
66
72
|
// ── Operational thread (therapy lifecycle) ──────────────────
|
|
67
|
-
connection :
|
|
68
|
-
connection :
|
|
69
|
-
connection :
|
|
70
|
-
connection :
|
|
71
|
-
connection :
|
|
72
|
-
connection :
|
|
73
|
-
connection :
|
|
74
|
-
connection :
|
|
75
|
-
connection :
|
|
76
|
-
connection :
|
|
73
|
+
connection : Precedes connect predecessor ::> oaPrescribe to successor ::> oaLoadReservoir;
|
|
74
|
+
connection : Precedes connect predecessor ::> oaLoadReservoir to successor ::> oaProgram;
|
|
75
|
+
connection : Precedes connect predecessor ::> oaProgram to successor ::> oaStartTherapy;
|
|
76
|
+
connection : Precedes connect predecessor ::> oaStartTherapy to successor ::> oaRequestBolus;
|
|
77
|
+
connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaStartTherapy to supported ::> ocTitratedAnalgesia; }
|
|
78
|
+
connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaRequestBolus to supported ::> ocTitratedAnalgesia; }
|
|
79
|
+
connection : Supports { attribute :>> supportKind = SupportKind::capability; connect supporter ::> oaRespondAlarm to supported ::> ocFailSafeTherapy; }
|
|
80
|
+
connection : DerivesFrom connect sourceDriver ::> oaProgram to targetRequirement ::> reqDrugLibraryLimits;
|
|
81
|
+
connection : DerivesFrom connect sourceDriver ::> oaRequestBolus to targetRequirement ::> reqCs25;
|
|
82
|
+
connection : DerivesFrom connect sourceDriver ::> oaRespondAlarm to targetRequirement ::> reqCs59;
|
|
77
83
|
|
|
78
|
-
// ──
|
|
79
|
-
connection : RealizesCapability connect functionalChain ::> fcPatientBolus to capability ::> scPatientBolus;
|
|
80
|
-
connection : RealizesCapability connect functionalChain ::> fcAlarmStop to capability ::> scAlarmAnnunciation;
|
|
81
|
-
connection : RealizesCapability connect functionalChain ::> fcStartup to capability ::> scBasalDelivery;
|
|
84
|
+
// ── Functional chains ───────────────────────────────────────
|
|
82
85
|
connection : InvolvesFunction connect functionalChain ::> fcPatientBolus to function ::> fnAcquireSensors;
|
|
83
86
|
connection : InvolvesFunction connect functionalChain ::> fcPatientBolus to function ::> fnEnforceLimits;
|
|
84
87
|
connection : InvolvesFunction connect functionalChain ::> fcPatientBolus to function ::> fnManageInfusion;
|
|
@@ -90,8 +93,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
90
93
|
connection : InvolvesFunction connect functionalChain ::> fcAlarmStop to function ::> fnAnnunciate;
|
|
91
94
|
connection : InvolvesFunction connect functionalChain ::> fcStartup to function ::> fnSelfTest;
|
|
92
95
|
connection : InvolvesFunction connect functionalChain ::> fcStartup to function ::> fnPresentStatus;
|
|
93
|
-
connection :
|
|
94
|
-
connection :
|
|
96
|
+
connection : Realizes connect realizing ::> fcPatientBolus to realized ::> ssBolusDuringBasal;
|
|
97
|
+
connection : Realizes connect realizing ::> fcAlarmStop to realized ::> ssAlarmPause;
|
|
95
98
|
connection : IncludesStep connect functionalChain ::> fcPatientBolus to step ::> fcsBolusSense;
|
|
96
99
|
connection : IncludesStep connect functionalChain ::> fcPatientBolus to step ::> fcsBolusValidate;
|
|
97
100
|
connection : IncludesStep connect functionalChain ::> fcPatientBolus to step ::> fcsBolusCommand;
|
|
@@ -352,17 +355,17 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
352
355
|
connection : AllocatedTo connect function ::> fnSelfTest to allocatedElement ::> systemMonitor;
|
|
353
356
|
|
|
354
357
|
// ── Deployment, hosting, and interface realization ──────────
|
|
355
|
-
connection :
|
|
358
|
+
connection : DeploysTo connect deploymentUnit ::> gpcaSoftware to node ::> controllerBoard;
|
|
356
359
|
connection : HostedBy connect processingNode ::> mainController to hostAssembly ::> controllerBoard;
|
|
357
|
-
connection :
|
|
358
|
-
connection :
|
|
360
|
+
connection : Realizes connect realized ::> sensorInputInterface to realizing ::> hwSoftwareBus;
|
|
361
|
+
connection : Realizes connect realized ::> actuatorCommandInterface to realizing ::> pumpMotorDrive;
|
|
359
362
|
connection : BindsToInterface connect portElement ::> portPatientPendant to boundInterface ::> bolusButtonLine;
|
|
360
363
|
connection : BindsToInterface connect portElement ::> portMotorDrive to boundInterface ::> pumpMotorDrive;
|
|
361
364
|
connection : BindsToInterface connect portElement ::> portSensorHarness to boundInterface ::> occlusionAnalogLine;
|
|
362
|
-
connection :
|
|
363
|
-
connection :
|
|
364
|
-
connection :
|
|
365
|
-
connection :
|
|
365
|
+
connection : AllocatedTo connect function ::> lfSensorAcquisition to allocatedElement ::> exSensorVector;
|
|
366
|
+
connection : AllocatedTo connect function ::> lfFlowCommand to allocatedElement ::> exFlowCommand;
|
|
367
|
+
connection : AllocatedTo connect function ::> lfAlarmSignal to allocatedElement ::> exAlarmAnnunciation;
|
|
368
|
+
connection : AllocatedTo connect function ::> lfPrescriptionEntry to allocatedElement ::> exPrescriptionEntry;
|
|
366
369
|
|
|
367
370
|
// ── Fig 4.1 mode hierarchy (CriSys §4.1) ────────────────────
|
|
368
371
|
connection : Composes connect parent ::> topLevelModeMachine to child ::> modeOFF;
|
|
@@ -454,10 +457,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
454
457
|
connection : TracesRisk connect sourceRiskElement ::> hsExcessInfusion to targetRiskElement ::> harmRespiratoryDepression;
|
|
455
458
|
connection : TracesRisk connect sourceRiskElement ::> harmRespiratoryDepression to targetRiskElement ::> riskBefore;
|
|
456
459
|
connection : AssessedAgainst connect risk ::> riskBefore to riskMatrix ::> riskMatrix;
|
|
457
|
-
connection :
|
|
458
|
-
connection :
|
|
459
|
-
connection :
|
|
460
|
-
connection :
|
|
460
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> lockoutControl to mitigatedElement ::> overdoseHazard; }
|
|
461
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> drugLibraryControl to mitigatedElement ::> overdoseHazard; }
|
|
462
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> watchdogControl to mitigatedElement ::> overdoseHazard; }
|
|
463
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> flowCrossCheckControl to mitigatedElement ::> overdoseHazard; }
|
|
461
464
|
connection : TracesRisk connect sourceRiskElement ::> lockoutControl to targetRiskElement ::> riskAfter;
|
|
462
465
|
connection : AssessedAgainst connect risk ::> riskAfter to riskMatrix ::> riskMatrix;
|
|
463
466
|
connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfter;
|
|
@@ -472,9 +475,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
472
475
|
connection : TracesRisk connect sourceRiskElement ::> hsInterruptedTherapy to targetRiskElement ::> harmUntreatedPain;
|
|
473
476
|
connection : TracesRisk connect sourceRiskElement ::> harmUntreatedPain to targetRiskElement ::> riskBeforeUnderdose;
|
|
474
477
|
connection : AssessedAgainst connect risk ::> riskBeforeUnderdose to riskMatrix ::> riskMatrix;
|
|
475
|
-
connection :
|
|
476
|
-
connection :
|
|
477
|
-
connection :
|
|
478
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> occlusionAlarmControl to mitigatedElement ::> underdoseHazard; }
|
|
479
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> reservoirMonitorControl to mitigatedElement ::> underdoseHazard; }
|
|
480
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> flowCrossCheckControl to mitigatedElement ::> underdoseHazard; }
|
|
478
481
|
connection : TracesRisk connect sourceRiskElement ::> occlusionAlarmControl to targetRiskElement ::> riskAfterUnderdose;
|
|
479
482
|
connection : AssessedAgainst connect risk ::> riskAfterUnderdose to riskMatrix ::> riskMatrix;
|
|
480
483
|
connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterUnderdose;
|
|
@@ -489,7 +492,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
489
492
|
connection : TracesRisk connect sourceRiskElement ::> hsAirTowardPatient to targetRiskElement ::> harmAirEmbolism;
|
|
490
493
|
connection : TracesRisk connect sourceRiskElement ::> harmAirEmbolism to targetRiskElement ::> riskBeforeAir;
|
|
491
494
|
connection : AssessedAgainst connect risk ::> riskBeforeAir to riskMatrix ::> riskMatrix;
|
|
492
|
-
connection :
|
|
495
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> airDetectionControl to mitigatedElement ::> airEmbolismHazard; }
|
|
493
496
|
connection : TracesRisk connect sourceRiskElement ::> airDetectionControl to targetRiskElement ::> riskAfterAir;
|
|
494
497
|
connection : AssessedAgainst connect risk ::> riskAfterAir to riskMatrix ::> riskMatrix;
|
|
495
498
|
connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterAir;
|
|
@@ -504,7 +507,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
504
507
|
connection : TracesRisk connect sourceRiskElement ::> hsWrongTherapy to targetRiskElement ::> harmRespiratoryDepression;
|
|
505
508
|
connection : TracesRisk connect sourceRiskElement ::> hsWrongTherapy to targetRiskElement ::> riskBeforeWrongDose;
|
|
506
509
|
connection : AssessedAgainst connect risk ::> riskBeforeWrongDose to riskMatrix ::> riskMatrix;
|
|
507
|
-
connection :
|
|
510
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> drugLibraryControl to mitigatedElement ::> wrongDoseHazard; }
|
|
508
511
|
connection : TracesRisk connect sourceRiskElement ::> drugLibraryControl to targetRiskElement ::> riskAfterWrongDose;
|
|
509
512
|
connection : AssessedAgainst connect risk ::> riskAfterWrongDose to riskMatrix ::> riskMatrix;
|
|
510
513
|
connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterWrongDose;
|
|
@@ -516,8 +519,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
516
519
|
connection : TracesRisk connect sourceRiskElement ::> hsFreeFlow to targetRiskElement ::> harmRespiratoryDepression;
|
|
517
520
|
connection : TracesRisk connect sourceRiskElement ::> hsFreeFlow to targetRiskElement ::> riskBeforeFreeFlow;
|
|
518
521
|
connection : AssessedAgainst connect risk ::> riskBeforeFreeFlow to riskMatrix ::> riskMatrix;
|
|
519
|
-
connection :
|
|
520
|
-
connection :
|
|
522
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> freeFlowValveControl to mitigatedElement ::> freeFlowHazard; }
|
|
523
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> doorInterlockControl to mitigatedElement ::> freeFlowHazard; }
|
|
521
524
|
connection : TracesRisk connect sourceRiskElement ::> freeFlowValveControl to targetRiskElement ::> riskAfterFreeFlow;
|
|
522
525
|
connection : AssessedAgainst connect risk ::> riskAfterFreeFlow to riskMatrix ::> riskMatrix;
|
|
523
526
|
connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterFreeFlow;
|
|
@@ -528,8 +531,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
528
531
|
connection : TracesRisk connect sourceRiskElement ::> hsReverseFlow to targetRiskElement ::> harmUntreatedPain;
|
|
529
532
|
connection : TracesRisk connect sourceRiskElement ::> harmUntreatedPain to targetRiskElement ::> riskBeforeReverse;
|
|
530
533
|
connection : AssessedAgainst connect risk ::> riskBeforeReverse to riskMatrix ::> riskMatrix;
|
|
531
|
-
connection :
|
|
532
|
-
connection :
|
|
534
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> reverseDeliveryPauseControl to mitigatedElement ::> reverseDeliveryHazard; }
|
|
535
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> antiRefluxDesignControl to mitigatedElement ::> reverseDeliveryHazard; }
|
|
533
536
|
connection : TracesRisk connect sourceRiskElement ::> reverseDeliveryPauseControl to targetRiskElement ::> riskAfterReverse;
|
|
534
537
|
connection : AssessedAgainst connect risk ::> riskAfterReverse to riskMatrix ::> riskMatrix;
|
|
535
538
|
connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterReverse;
|
|
@@ -541,9 +544,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
541
544
|
connection : TracesRisk connect sourceRiskElement ::> hsVtbiExceeded to targetRiskElement ::> harmRespiratoryDepression;
|
|
542
545
|
connection : TracesRisk connect sourceRiskElement ::> harmRespiratoryDepression to targetRiskElement ::> riskBeforeVtbi;
|
|
543
546
|
connection : AssessedAgainst connect risk ::> riskBeforeVtbi to riskMatrix ::> riskMatrix;
|
|
544
|
-
connection :
|
|
545
|
-
connection :
|
|
546
|
-
connection :
|
|
547
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> vtbiLimitPauseControl to mitigatedElement ::> vtbiOverInfusionHazard; }
|
|
548
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> infusionCompleteControl to mitigatedElement ::> vtbiOverInfusionHazard; }
|
|
549
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> drugLibraryControl to mitigatedElement ::> vtbiOverInfusionHazard; }
|
|
547
550
|
connection : TracesRisk connect sourceRiskElement ::> vtbiLimitPauseControl to targetRiskElement ::> riskAfterVtbi;
|
|
548
551
|
connection : AssessedAgainst connect risk ::> riskAfterVtbi to riskMatrix ::> riskMatrix;
|
|
549
552
|
connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterVtbi;
|
|
@@ -560,23 +563,23 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
560
563
|
connection : HasFailureMode connect element ::> occlusionSensor to failureMode ::> fmOcclusionDrift;
|
|
561
564
|
connection : HasFailureMode connect element ::> bolusButton to failureMode ::> fmStuckBolusButton;
|
|
562
565
|
connection : HasFailureMode connect element ::> batteryPack to failureMode ::> fmBatteryEarlyDepletion;
|
|
563
|
-
connection :
|
|
564
|
-
connection :
|
|
565
|
-
connection :
|
|
566
|
-
connection :
|
|
567
|
-
connection :
|
|
568
|
-
connection :
|
|
569
|
-
connection :
|
|
566
|
+
connection : Causes { attribute :>> causeKind = CauseKind::failureCausesEffect; connect cause ::> fmMotorRunaway to effect ::> feOverdose; }
|
|
567
|
+
connection : Causes { attribute :>> causeKind = CauseKind::failureCausesEffect; connect cause ::> fmStuckBolusButton to effect ::> feOverdose; }
|
|
568
|
+
connection : Causes { attribute :>> causeKind = CauseKind::failureCausesEffect; connect cause ::> fmAirSensorSilent to effect ::> feAirDelivered; }
|
|
569
|
+
connection : Causes { attribute :>> causeKind = CauseKind::failureCausesEffect; connect cause ::> fmOcclusionDrift to effect ::> feTherapyInterrupted; }
|
|
570
|
+
connection : Causes { attribute :>> causeKind = CauseKind::failureCausedBy; connect cause ::> fcMotorDriverFault to effect ::> fmMotorRunaway; }
|
|
571
|
+
connection : Causes { attribute :>> causeKind = CauseKind::failureCausedBy; connect cause ::> fcTransducerAging to effect ::> fmAirSensorSilent; }
|
|
572
|
+
connection : Causes { attribute :>> causeKind = CauseKind::failureCausedBy; connect cause ::> fcPendantAbuse to effect ::> fmStuckBolusButton; }
|
|
570
573
|
connection : DetectedBy connect failureMode ::> fmMotorRunaway to detectionMethod ::> dmFlowCrossCheck;
|
|
571
574
|
connection : DetectedBy connect failureMode ::> fmAirSensorSilent to detectionMethod ::> dmPostSensorCheck;
|
|
572
575
|
connection : DetectedBy connect failureMode ::> fmStuckBolusButton to detectionMethod ::> dmStuckInputMonitor;
|
|
573
|
-
connection :
|
|
574
|
-
connection :
|
|
575
|
-
connection :
|
|
576
|
-
connection :
|
|
577
|
-
connection :
|
|
578
|
-
connection :
|
|
579
|
-
connection :
|
|
576
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::fmeaAction; connect control ::> fmeaActionAirSensor to mitigatedElement ::> fmAirSensorSilent; }
|
|
577
|
+
connection : Causes { attribute :>> causeKind = CauseKind::contributesToHazard; connect cause ::> fmMotorRunaway to effect ::> overdoseHazard; }
|
|
578
|
+
connection : Causes { attribute :>> causeKind = CauseKind::contributesToHazard; connect cause ::> fmStuckBolusButton to effect ::> overdoseHazard; }
|
|
579
|
+
connection : Causes { attribute :>> causeKind = CauseKind::contributesToHazard; connect cause ::> fmAirSensorSilent to effect ::> airEmbolismHazard; }
|
|
580
|
+
connection : Causes { attribute :>> causeKind = CauseKind::contributesToHazard; connect cause ::> fmOcclusionDrift to effect ::> underdoseHazard; }
|
|
581
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::failureMode; connect control ::> flowCrossCheckControl to mitigatedElement ::> fmMotorRunaway; }
|
|
582
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::failureMode; connect control ::> lockoutControl to mitigatedElement ::> fmStuckBolusButton; }
|
|
580
583
|
connection : InputToGate connect input ::> fteMotorRunaway to gate ::> ftgMotorAnd;
|
|
581
584
|
connection : InputToGate connect input ::> fteCrossCheckFails to gate ::> ftgMotorAnd;
|
|
582
585
|
connection : InputToGate connect input ::> fteLockoutFault to gate ::> ftgBolusAnd;
|
|
@@ -584,15 +587,15 @@ package memo_examples_gpca_pump_model_catalog_gpca_trace {
|
|
|
584
587
|
connection : InputToGate connect input ::> ftgMotorAnd to gate ::> ftgOverdoseOr;
|
|
585
588
|
connection : InputToGate connect input ::> ftgBolusAnd to gate ::> ftgOverdoseOr;
|
|
586
589
|
connection : ProducesEvent connect gate ::> ftgOverdoseOr to eventElement ::> fteOverdoseTop;
|
|
587
|
-
connection :
|
|
588
|
-
connection :
|
|
589
|
-
connection :
|
|
590
|
+
connection : Causes { attribute :>> causeKind = CauseKind::leadsToHazard; connect cause ::> fteOverdoseTop to effect ::> overdoseHazard; }
|
|
591
|
+
connection : Causes { attribute :>> causeKind = CauseKind::originatesFrom; connect cause ::> pumpMotorAssembly to effect ::> fteMotorRunaway; }
|
|
592
|
+
connection : Causes { attribute :>> causeKind = CauseKind::originatesFrom; connect cause ::> bolusButton to effect ::> fteStuckButtonUndetected; }
|
|
590
593
|
connection : ContainsEvent connect cutSet ::> mcsMotorPath to eventElement ::> fteMotorRunaway;
|
|
591
594
|
connection : ContainsEvent connect cutSet ::> mcsMotorPath to eventElement ::> fteCrossCheckFails;
|
|
592
595
|
connection : ContainsEvent connect cutSet ::> mcsBolusPath to eventElement ::> fteLockoutFault;
|
|
593
596
|
connection : ContainsEvent connect cutSet ::> mcsBolusPath to eventElement ::> fteStuckButtonUndetected;
|
|
594
|
-
connection :
|
|
595
|
-
connection :
|
|
597
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::cutSet; connect control ::> flowCrossCheckControl to mitigatedElement ::> mcsMotorPath; }
|
|
598
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::cutSet; connect control ::> lockoutControl to mitigatedElement ::> mcsBolusPath; }
|
|
596
599
|
|
|
597
600
|
// ── Verification coverage (IEC 62304 §5.7) ──────────────────
|
|
598
601
|
connection : VerifiedBy connect verificationTarget ::> reqCs01 to verificationCase ::> vcModeRange;
|
|
@@ -1,116 +1,116 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_verification {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_assurance_verification_validation::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
6
|
|
|
7
7
|
// ── Verification cases ──────────────────────────────────────
|
|
8
|
-
|
|
8
|
+
verification vcModeRange : VerificationCase {
|
|
9
9
|
attribute :>> id = "VER-001";
|
|
10
10
|
attribute :>> name = "VerifyModeRange";
|
|
11
11
|
attribute :>> methodKind = VerificationMethodKind::formalProof;
|
|
12
12
|
attribute :>> acceptanceCriteria = "Current_System_mode only takes valid exclusive values";
|
|
13
13
|
attribute :>> status = "planned";
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
verification vcLockout : VerificationCase {
|
|
16
16
|
attribute :>> id = "VER-002";
|
|
17
17
|
attribute :>> name = "VerifyBolusLockout";
|
|
18
18
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
19
19
|
attribute :>> acceptanceCriteria = "No patient bolus initiated when lockout or max bolus constraints active";
|
|
20
20
|
attribute :>> status = "planned";
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
verification vcSameStepAlarm : VerificationCase {
|
|
23
23
|
attribute :>> id = "VER-003";
|
|
24
24
|
attribute :>> name = "VerifySameStepAlarmStop";
|
|
25
25
|
attribute :>> methodKind = VerificationMethodKind::modelChecking;
|
|
26
26
|
attribute :>> acceptanceCriteria = "Alarm output affects infusion in same execution step";
|
|
27
27
|
attribute :>> status = "planned";
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
verification vcTemporalModeSafety : VerificationCase {
|
|
30
30
|
attribute :>> id = "VER-004";
|
|
31
31
|
attribute :>> name = "VerifyTemporalModeSafety";
|
|
32
32
|
attribute :>> methodKind = VerificationMethodKind::modelChecking;
|
|
33
33
|
attribute :>> acceptanceCriteria = "No invalid transitions and pause on critical alarms";
|
|
34
34
|
attribute :>> status = "planned";
|
|
35
35
|
}
|
|
36
|
-
|
|
36
|
+
verification vcAirInLine : VerificationCase {
|
|
37
37
|
attribute :>> id = "VER-005";
|
|
38
38
|
attribute :>> name = "VerifyAirInLineStop";
|
|
39
39
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
40
40
|
attribute :>> acceptanceCriteria = "Injected air above threshold pauses infusion and annunciates per the REQ 59 High-priority actions (REQ-CS-21)";
|
|
41
41
|
attribute :>> status = "planned";
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
verification vcOcclusion : VerificationCase {
|
|
44
44
|
attribute :>> id = "VER-006";
|
|
45
45
|
attribute :>> name = "VerifyOcclusionDetection";
|
|
46
46
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
47
47
|
attribute :>> acceptanceCriteria = "Clamped line above pressure threshold pauses infusion and annunciates (REQ-X-04)";
|
|
48
48
|
attribute :>> status = "planned";
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
verification vcEmptyReservoir : VerificationCase {
|
|
51
51
|
attribute :>> id = "VER-007";
|
|
52
52
|
attribute :>> name = "VerifyEmptyReservoirStop";
|
|
53
53
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
54
54
|
attribute :>> acceptanceCriteria = "Reservoir-empty assertion transitions to PAUSED (KVO flow) and annunciates per the REQ 59 High-priority actions (REQ-CS-23)";
|
|
55
55
|
attribute :>> status = "planned";
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
verification vcPost : VerificationCase {
|
|
58
58
|
attribute :>> id = "VER-008";
|
|
59
59
|
attribute :>> name = "VerifyPowerOnSelfTest";
|
|
60
60
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
61
61
|
attribute :>> acceptanceCriteria = "Each injected POST fault (CPU, RAM, ROM, watchdog, sensors) blocks therapy and alarms (REQ-X-02)";
|
|
62
62
|
attribute :>> status = "planned";
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
verification vcPowerLoss : VerificationCase {
|
|
65
65
|
attribute :>> id = "VER-009";
|
|
66
66
|
attribute :>> name = "VerifyPowerLossRetentionAndResume";
|
|
67
67
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
68
68
|
attribute :>> acceptanceCriteria = "Prescription and log intact after power cycle; therapy resumes only after confirmation (REQ-X-03)";
|
|
69
69
|
attribute :>> status = "planned";
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
verification vcWatchdog : VerificationCase {
|
|
72
72
|
attribute :>> id = "VER-010";
|
|
73
73
|
attribute :>> name = "VerifyWatchdogSafeState";
|
|
74
74
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
75
75
|
attribute :>> acceptanceCriteria = "Induced CPU hang forces zero flow and continuous alarm within 60 ms (REQ-X-08, TC-003)";
|
|
76
76
|
attribute :>> status = "planned";
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
verification vcHourlyMax : VerificationCase {
|
|
79
79
|
attribute :>> id = "VER-011";
|
|
80
80
|
attribute :>> name = "VerifyHourlyDoseCeiling";
|
|
81
81
|
attribute :>> methodKind = VerificationMethodKind::simulation;
|
|
82
82
|
attribute :>> acceptanceCriteria = "Randomized bolus/basal schedules never exceed hourly maximum in sliding window (REQ-X-06)";
|
|
83
83
|
attribute :>> status = "planned";
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
verification vcPumpAccuracy : VerificationCase {
|
|
86
86
|
attribute :>> id = "VER-012";
|
|
87
87
|
attribute :>> name = "VerifyDeliveryAccuracy";
|
|
88
88
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
89
89
|
attribute :>> acceptanceCriteria = "Gravimetric bench measurement within ±5% (Tolerance_Min_const) across rate range (REQ-X-11)";
|
|
90
90
|
attribute :>> status = "planned";
|
|
91
91
|
}
|
|
92
|
-
|
|
92
|
+
verification vcAlarmLoudness : VerificationCase {
|
|
93
93
|
attribute :>> id = "VER-013";
|
|
94
94
|
attribute :>> name = "VerifyAlarmSoundPressure";
|
|
95
95
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
96
96
|
attribute :>> acceptanceCriteria = "Each priority tone meets Audio_level_const, 50 db for 2 s per I 8 (REQ-X-12)";
|
|
97
97
|
attribute :>> status = "planned";
|
|
98
98
|
}
|
|
99
|
-
|
|
99
|
+
verification vcFreeFlow : VerificationCase {
|
|
100
100
|
attribute :>> id = "VER-014";
|
|
101
101
|
attribute :>> name = "VerifyAntiFreeFlowValve";
|
|
102
102
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
103
103
|
attribute :>> acceptanceCriteria = "No gravity flow with set disengaged under worst-case head height (REQ-X-14)";
|
|
104
104
|
attribute :>> status = "planned";
|
|
105
105
|
}
|
|
106
|
-
|
|
106
|
+
verification vcStuckButton : VerificationCase {
|
|
107
107
|
attribute :>> id = "VER-015";
|
|
108
108
|
attribute :>> name = "VerifyStuckButtonDetection";
|
|
109
109
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
110
110
|
attribute :>> acceptanceCriteria = "Shorted pendant input yields no bolus and Medium-priority notification after 60 s (REQ-X-09)";
|
|
111
111
|
attribute :>> status = "planned";
|
|
112
112
|
}
|
|
113
|
-
|
|
113
|
+
verification vcFlowCrossCheck : VerificationCase {
|
|
114
114
|
attribute :>> id = "VER-016";
|
|
115
115
|
attribute :>> name = "VerifyFlowCrossCheck";
|
|
116
116
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
@@ -118,56 +118,56 @@ package memo_examples_gpca_pump_model_catalog_gpca_verification {
|
|
|
118
118
|
attribute :>> status = "planned";
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
verification vcDrugLibrary : VerificationCase {
|
|
122
122
|
attribute :>> id = "VER-017";
|
|
123
123
|
attribute :>> name = "VerifyDrugLibraryEnforcement";
|
|
124
124
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
125
125
|
attribute :>> acceptanceCriteria = "Hard-limit entries rejected, soft-limit entries require confirmation, both logged (REQ-X-01)";
|
|
126
126
|
attribute :>> status = "planned";
|
|
127
127
|
}
|
|
128
|
-
|
|
128
|
+
verification vcPrescriptionConfirm : VerificationCase {
|
|
129
129
|
attribute :>> id = "VER-018";
|
|
130
130
|
attribute :>> name = "VerifyPrescriptionConfirmation";
|
|
131
131
|
attribute :>> methodKind = VerificationMethodKind::demonstration;
|
|
132
132
|
attribute :>> acceptanceCriteria = "Therapy cannot start without distinct confirmation; displayed values equal stored values (REQ-CS-09)";
|
|
133
133
|
attribute :>> status = "planned";
|
|
134
134
|
}
|
|
135
|
-
|
|
135
|
+
verification vcEventLog : VerificationCase {
|
|
136
136
|
attribute :>> id = "VER-019";
|
|
137
137
|
attribute :>> name = "VerifyEventLogIntegrity";
|
|
138
138
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
139
139
|
attribute :>> acceptanceCriteria = "Operational/error log entries per REQ-CS-78..81; tampering detectable (REQ-X-07)";
|
|
140
140
|
attribute :>> status = "planned";
|
|
141
141
|
}
|
|
142
|
-
|
|
142
|
+
verification vcReverseDeliveryPause : VerificationCase {
|
|
143
143
|
attribute :>> id = "VER-020";
|
|
144
144
|
attribute :>> name = "VerifyReverseDeliveryPause";
|
|
145
145
|
attribute :>> methodKind = VerificationMethodKind::modelChecking;
|
|
146
146
|
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
147
|
attribute :>> status = "planned";
|
|
148
148
|
}
|
|
149
|
-
|
|
149
|
+
verification vcAntiRefluxMechanism : VerificationCase {
|
|
150
150
|
attribute :>> id = "VER-021";
|
|
151
151
|
attribute :>> name = "VerifyContinuousReverseDeliveryPrevention";
|
|
152
152
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
153
153
|
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
154
|
attribute :>> status = "planned";
|
|
155
155
|
}
|
|
156
|
-
|
|
156
|
+
verification vcVtbiCeiling : VerificationCase {
|
|
157
157
|
attribute :>> id = "VER-022";
|
|
158
158
|
attribute :>> name = "VerifyVtbiCeilingPause";
|
|
159
159
|
attribute :>> methodKind = VerificationMethodKind::modelChecking;
|
|
160
160
|
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
161
|
attribute :>> status = "planned";
|
|
162
162
|
}
|
|
163
|
-
|
|
163
|
+
verification vcInfusionComplete : VerificationCase {
|
|
164
164
|
attribute :>> id = "VER-023";
|
|
165
165
|
attribute :>> name = "VerifyInfusionCompleteStop";
|
|
166
166
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
167
167
|
attribute :>> acceptanceCriteria = "Reaching prescribed total duration or maximum VTBI transitions ACTIVE to IDLE with Infusion Complete actions (REQ-CS-28)";
|
|
168
168
|
attribute :>> status = "planned";
|
|
169
169
|
}
|
|
170
|
-
|
|
170
|
+
verification vcDoorInterlock : VerificationCase {
|
|
171
171
|
attribute :>> id = "VER-024";
|
|
172
172
|
attribute :>> name = "VerifyDoorOpenDeliveryInhibit";
|
|
173
173
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
@@ -176,7 +176,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_verification {
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
// ── Validation cases (design validation / IEC 62366) ────────
|
|
179
|
-
|
|
179
|
+
verification valSimulatedWard : ValidationCase {
|
|
180
180
|
attribute :>> id = "VAL-001";
|
|
181
181
|
attribute :>> name = "SimulatedWardTherapyValidation";
|
|
182
182
|
attribute :>> validationMethod = ValidationMethodKind::simulatedUse;
|
|
@@ -184,7 +184,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_verification {
|
|
|
184
184
|
attribute :>> acceptanceCriteria = "Complete therapy scenarios OS-001..OS-006 executed without unresolved use difficulty";
|
|
185
185
|
attribute :>> clinicalContext = "post-operative PCA therapy in acute care";
|
|
186
186
|
}
|
|
187
|
-
|
|
187
|
+
verification valSummativeUsability : ValidationCase {
|
|
188
188
|
attribute :>> id = "VAL-002";
|
|
189
189
|
attribute :>> name = "SummativeUsabilityTest";
|
|
190
190
|
attribute :>> validationMethod = ValidationMethodKind::summativeUsabilityTest;
|
|
@@ -32,8 +32,8 @@ package memo_examples_gpca_pump_model_views_context_system_context_view {
|
|
|
32
32
|
part :>> selectionQuery {
|
|
33
33
|
attribute :>> id = "QRY-CTX-101";
|
|
34
34
|
attribute :>> name = "GPCA_SystemContextQuery";
|
|
35
|
-
attribute :>> includeElementKinds = ("Actor", "UseContext", "IntendedUse", "OperationalEntity");
|
|
36
|
-
attribute :>> includeRelationshipKinds = ("InteractsWith", "ExchangesWith", "ConnectsPhysically", "
|
|
35
|
+
attribute :>> includeElementKinds = ("Actor", "UseContext", "IntendedUse", "ReasonablyForeseeableMisuse", "OperationalEntity");
|
|
36
|
+
attribute :>> includeRelationshipKinds = ("InteractsWith", "ExchangesWith", "ConnectsPhysically", "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.";
|
|
@@ -21,8 +21,8 @@ package memo_examples_gpca_pump_model_views_document_architecture_description_vi
|
|
|
21
21
|
part :>> selectionQuery {
|
|
22
22
|
attribute :>> id = "QRY-DOC-005";
|
|
23
23
|
attribute :>> name = "architectureDescriptionViewQuery";
|
|
24
|
-
attribute :>> includeElementKinds = ("LogicalComponent", "
|
|
25
|
-
attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "
|
|
24
|
+
attribute :>> includeElementKinds = ("LogicalComponent", "SystemFunction", "ComponentExchange", "SoftwareSystem", "SoftwareModule", "HardwareAssembly", "ProcessingNode", "PhysicalPort", "FunctionalFlow", "FunctionalFlowStep");
|
|
25
|
+
attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "Realizes", "BindsToInterface", "InvolvesFunction", "Precedes", "DeploysTo", "HostedBy");
|
|
26
26
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -20,8 +20,8 @@ package memo_examples_gpca_pump_model_views_document_cyber_assessment_view {
|
|
|
20
20
|
part :>> selectionQuery {
|
|
21
21
|
attribute :>> id = "QRY-DOC-009";
|
|
22
22
|
attribute :>> name = "cyberAssessmentViewQuery";
|
|
23
|
-
attribute :>> includeElementKinds = ("CyberRisk", "CyberHazard", "CybersecurityAsset", "CyberMitigation", "SecurityRequirement", "SecurityClaim", "SBOMEntry", "
|
|
24
|
-
attribute :>> includeRelationshipKinds = ("ImpactsSafety", "
|
|
23
|
+
attribute :>> includeElementKinds = ("CyberRisk", "CyberHazard", "CybersecurityAsset", "CyberMitigation", "SecurityRequirement", "SecurityClaim", "SBOMEntry", "SoftwareModule[moduleKind=soup]");
|
|
24
|
+
attribute :>> includeRelationshipKinds = ("ImpactsSafety", "Mitigates", "DerivesCyberRequirement", "AssessedAgainst", "DependsOnSoup");
|
|
25
25
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -22,7 +22,7 @@ package memo_examples_gpca_pump_model_views_document_hazard_analysis_view {
|
|
|
22
22
|
attribute :>> id = "QRY-DOC-003";
|
|
23
23
|
attribute :>> name = "hazardAnalysisViewQuery";
|
|
24
24
|
attribute :>> includeElementKinds = ("FMEAWorksheet", "FailureMode", "FailureCause", "FailureEffect", "DetectionMethod", "FMEAAction", "FaultTree", "FaultTreeEvent", "FaultTreeGate", "MinimalCutSet", "Hazard", "HazardCause", "SequenceOfEvents");
|
|
25
|
-
attribute :>> includeRelationshipKinds = ("HasFailureMode", "
|
|
25
|
+
attribute :>> includeRelationshipKinds = ("HasFailureMode", "Causes", "DetectedBy", "Mitigates", "InputToGate", "ContainsEvent", "Mitigates", "IncludedIn");
|
|
26
26
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -21,8 +21,8 @@ package memo_examples_gpca_pump_model_views_document_rmf_view {
|
|
|
21
21
|
part :>> selectionQuery {
|
|
22
22
|
attribute :>> id = "QRY-DOC-001";
|
|
23
23
|
attribute :>> name = "rmfViewQuery";
|
|
24
|
-
attribute :>> includeElementKinds = ("Hazard", "HazardCause", "
|
|
25
|
-
attribute :>> includeRelationshipKinds = ("
|
|
24
|
+
attribute :>> includeElementKinds = ("IntendedUse", "ReasonablyForeseeableMisuse", "SafetyRelatedCharacteristic", "Hazard", "HazardCause", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation", "VerificationCase", "Evidence");
|
|
25
|
+
attribute :>> includeRelationshipKinds = ("Causes", "Mitigates", "Mitigates", "TracesRisk", "AssessedAgainst", "VerifiedBy", "ProducesEvidence", "IncludedIn");
|
|
26
26
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -21,8 +21,8 @@ package memo_examples_gpca_pump_model_views_document_sdd_view {
|
|
|
21
21
|
part :>> selectionQuery {
|
|
22
22
|
attribute :>> id = "QRY-DOC-004";
|
|
23
23
|
attribute :>> name = "sddViewQuery";
|
|
24
|
-
attribute :>> includeElementKinds = ("SoftwareSystem", "
|
|
25
|
-
attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "BindsToInterface", "
|
|
24
|
+
attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "ModeState", "Transition", "Interface", "SystemFunction", "TimingConstraint", "SoftwareModule[moduleKind=soup]");
|
|
25
|
+
attribute :>> includeRelationshipKinds = ("Composes", "AllocatedTo", "BindsToInterface", "Realizes", "DependsOnSoup", "Changes");
|
|
26
26
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -21,7 +21,7 @@ package memo_examples_gpca_pump_model_views_document_threat_model_view {
|
|
|
21
21
|
attribute :>> id = "QRY-DOC-008";
|
|
22
22
|
attribute :>> name = "threatModelViewQuery";
|
|
23
23
|
attribute :>> includeElementKinds = ("Threat", "ThreatScenario", "Vulnerability", "CybersecurityAsset", "TrustBoundary", "AttackSurface", "CyberMitigation", "SecurityRequirement");
|
|
24
|
-
attribute :>> includeRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "CrossesTrustBoundary", "
|
|
24
|
+
attribute :>> includeRelationshipKinds = ("ThreatenedBy", "Exploits", "RealizedByScenario", "CrossesTrustBoundary", "Mitigates", "DerivesCyberRequirement");
|
|
25
25
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -20,7 +20,7 @@ package memo_examples_gpca_pump_model_views_document_usability_view {
|
|
|
20
20
|
part :>> selectionQuery {
|
|
21
21
|
attribute :>> id = "QRY-DOC-002";
|
|
22
22
|
attribute :>> name = "usabilityViewQuery";
|
|
23
|
-
attribute :>> includeElementKinds = ("UseError", "UseContext", "Actor", "ValidationCase", "OperationalScenario", "IntendedUse");
|
|
23
|
+
attribute :>> includeElementKinds = ("UseError", "UseContext", "Actor", "ValidationCase", "OperationalScenario", "IntendedUse", "ReasonablyForeseeableMisuse");
|
|
24
24
|
attribute :>> includeRelationshipKinds = ("TestedByUsability", "RealizedByScenario", "InteractsWith", "IncludedIn");
|
|
25
25
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
26
26
|
}
|
|
@@ -21,7 +21,7 @@ package memo_examples_gpca_pump_model_views_document_vv_view {
|
|
|
21
21
|
part :>> selectionQuery {
|
|
22
22
|
attribute :>> id = "QRY-DOC-006";
|
|
23
23
|
attribute :>> name = "vvViewQuery";
|
|
24
|
-
attribute :>> includeElementKinds = ("VerificationCase", "ValidationCase", "TestArtifact", "Evidence", "
|
|
24
|
+
attribute :>> includeElementKinds = ("VerificationCase", "ValidationCase", "TestArtifact", "Evidence", "Requirement", "RiskControlMeasure");
|
|
25
25
|
attribute :>> includeRelationshipKinds = ("VerifiedBy", "Validates", "TestedByUsability", "ProducesEvidence", "IncludedIn");
|
|
26
26
|
attribute :>> rationaleText = "Declares what this document-backed view renders; the web renderer is presentation-only.";
|
|
27
27
|
}
|