@memoarchitect/ontology 0.13.2 → 0.15.1
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 -3
- package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
- package/examples/connected-patient-monitor/memo.package.yaml +3 -1
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
- package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
- package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/functional-logical-physical/memo.identity.yaml +28 -0
- package/examples/functional-logical-physical/memo.package.yaml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
- package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
- package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
- package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
- package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
- package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
- package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
- package/examples/gpca-pump/analysis/Samples/README.md +15 -9
- package/examples/gpca-pump/analysis/memo_model.py +243 -0
- package/examples/gpca-pump/memo.identity.yaml +521 -26
- package/examples/gpca-pump/memo.package.yaml +3 -1
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
- package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
- package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/multidimensional-layers/memo.package.yaml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
- package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
- package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/reusable-instrument/memo.package.yaml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
- package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/robot-cell-family/README.md +34 -0
- package/examples/robot-cell-family/memo.identity.yaml +142 -0
- package/examples/robot-cell-family/memo.package.yaml +7 -0
- package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
- package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
- package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
- package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
- package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
- package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
- package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
- package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
- package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
- package/examples/robot-platform/memo.package.yaml +3 -0
- package/examples/robot-platform/model/platform.sysml +15 -0
- package/examples/ros-mobile-robot/README.md +5 -4
- package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
- package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
- package/examples/software-only-medical-device/memo.package.yaml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
- package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
- package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
- package/examples/surgical-robot/memo.package.yaml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
- package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/sysml-diagram-samples/README.md +1 -0
- package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
- package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
- package/examples/temperature-alarm/memo.identity.yaml +6 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
- package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/ui-screen-regions/memo.identity.yaml +33 -0
- package/examples/ui-screen-regions/memo.package.yaml +3 -1
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
- package/extensions/README.md +65 -16
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/aadl_extension.sysml +5 -2
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
- package/extensions/clinical/memo.package.yaml +1 -1
- package/extensions/clinical/src/clinical_extension.sysml +2 -0
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/messaging_extension.sysml +2 -2
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/ros_extension.sysml +25 -24
- package/extensions/template/memo.package.yaml +1 -1
- package/extensions/template/model/extension.sysml +25 -0
- package/memo.manifest.yaml +1 -7
- 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 +6 -4
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +9 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
- package/src/architecture/functional/functions/memo_functions.sysml +45 -31
- package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
- package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
- package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
- package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
- package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
- package/src/architecture/operational/structure/memo_operational.sysml +5 -2
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
- package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
- package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
- package/src/architecture/variability/memo_variability.sysml +87 -0
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
- package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
- package/src/artifacts/standards/cfr_21_820.sysml +12 -24
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
- package/src/artifacts/standards/iec_60601_1.sysml +16 -32
- package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
- package/src/artifacts/standards/iec_60812.sysml +4 -8
- package/src/artifacts/standards/iec_62304.sysml +607 -47
- package/src/artifacts/standards/iec_62366_1.sysml +12 -24
- package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
- package/src/artifacts/standards/iso_13485.sysml +12 -24
- package/src/artifacts/standards/iso_14971.sysml +118 -20
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
- package/src/artifacts/templates/dhf/system/sad.md +1 -1
- package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
- package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
- package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
- package/src/assurance/safety_risk/memo_risk.sysml +39 -1
- package/src/core/common/memo_common.sysml +61 -68
- package/src/core/enumerations/memo_enumerations.sysml +93 -9
- package/src/core/relationships/memo_relationships.sysml +17 -11
- package/src/core/relationships/memo_workspace_membership.sysml +284 -0
- package/src/core/semantics/semantics.sysml +58 -0
- package/src/core/terminology/terminology.sysml +7 -0
- package/src/memo_namespaces.sysml +6 -0
- package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
- package/src/methodology/core/memo_core.sysml +85 -29
- package/src/methodology/profiles/memo_profiles.sysml +217 -61
- package/src/methodology/workflow/memo_workflow.sysml +28 -0
- package/src/rules/closure/closure_rules.sysml +250 -4
- package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
- package/src/rules/ontology/ontology_invariants.sysml +288 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -0
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
- package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
- package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
- package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
- package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
- package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
- package/src/viewpoints/software/software_viewpoint.sysml +2 -3
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
- package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
- package/templates/default/memo.package.yaml +6 -1
- package/templates/default/model/catalog/architecture/system.sysml +7 -3
- package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
- package/extensions/container/src/methodology/container_methodology.sysml +0 -19
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
- package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
- package/extensions/template/src/extension.sysml +0 -39
- package/templates/connected-device/memo.package.yaml +0 -13
- package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/connected-device/model/catalog/project.sysml +0 -30
- package/templates/connected-device/package.json +0 -8
- package/templates/connected-device/syside.toml +0 -13
- package/templates/infusion-pump/memo.package.yaml +0 -13
- package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
- package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/infusion-pump/model/catalog/project.sysml +0 -30
- package/templates/infusion-pump/package.json +0 -8
- package/templates/infusion-pump/syside.toml +0 -13
- package/templates/monitoring-device/memo.package.yaml +0 -13
- package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/monitoring-device/model/catalog/project.sysml +0 -30
- package/templates/monitoring-device/package.json +0 -8
- package/templates/monitoring-device/syside.toml +0 -13
- package/templates/samd/memo.package.yaml +0 -13
- package/templates/samd/model/catalog/architecture/system.sysml +0 -5
- package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/samd/model/catalog/project.sysml +0 -30
- package/templates/samd/package.json +0 -8
- package/templates/samd/syside.toml +0 -13
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Ivd Laboratory System —
|
|
1
|
+
// Ivd Laboratory System — model identity and method binding.
|
|
2
2
|
//
|
|
3
3
|
// The native entrypoint. The imports name what this project contains and the
|
|
4
4
|
// binding names the methodology it is governed by. No YAML file participates.
|
|
@@ -16,10 +16,9 @@ package memo_examples_ivd_laboratory_system_project {
|
|
|
16
16
|
|
|
17
17
|
private import memo_core_common::*;
|
|
18
18
|
private import memo_core_common::MemoIdentity;
|
|
19
|
-
part projectBinding :
|
|
20
|
-
@MemoIdentity { :>> providedId = "PMB-LABORATORY-SYSTEM-001"; }
|
|
21
|
-
attribute :>>
|
|
22
|
-
attribute :>> projectName = "Ivd Laboratory System";
|
|
19
|
+
part projectBinding : ModelMethodBinding {
|
|
20
|
+
@MemoIdentity { :>> providedId = "PMB-LABORATORY-SYSTEM-001"; :>> label = "IvdLaboratorySystemModelMethodBinding"; }
|
|
21
|
+
attribute :>> modelName = "Ivd Laboratory System";
|
|
23
22
|
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
24
23
|
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
25
24
|
}
|
|
@@ -15,12 +15,10 @@ package memo_examples_manual_surgical_instrument {
|
|
|
15
15
|
// ── Modeled product and physical structure ──────────────────
|
|
16
16
|
part needleHolder : PhysicalAssembly {
|
|
17
17
|
@MemoIdentity { :>> providedId = "MSI-DEV-001"; }
|
|
18
|
-
attribute :>> name = "NeedleHolder";
|
|
19
18
|
attribute :>> responsibility = "grasp and drive a suture needle";
|
|
20
19
|
}
|
|
21
20
|
part jawAssembly : MechanicalPart {
|
|
22
|
-
@MemoIdentity { :>> providedId = "MSI-PART-001"; }
|
|
23
|
-
attribute :>> name = "TungstenCarbideJaws";
|
|
21
|
+
@MemoIdentity { :>> providedId = "MSI-PART-001"; :>> label = "TungstenCarbideJaws"; }
|
|
24
22
|
attribute :>> mechanicalFunction = "serrated needle grip";
|
|
25
23
|
attribute :>> patientContact = true;
|
|
26
24
|
attribute :>> contactNature = "intact tissue / surgical site, indirect";
|
|
@@ -28,7 +26,6 @@ package memo_examples_manual_surgical_instrument {
|
|
|
28
26
|
}
|
|
29
27
|
part ratchetLock : MechanicalPart {
|
|
30
28
|
@MemoIdentity { :>> providedId = "MSI-PART-002"; }
|
|
31
|
-
attribute :>> name = "RatchetLock";
|
|
32
29
|
attribute :>> mechanicalFunction = "maintains jaw clamping force without continuous grip";
|
|
33
30
|
attribute :>> patientContact = false;
|
|
34
31
|
}
|
|
@@ -38,8 +35,7 @@ package memo_examples_manual_surgical_instrument {
|
|
|
38
35
|
// A task may be traced to the architecture later when the project has a
|
|
39
36
|
// specific allocation or interaction claim to make.
|
|
40
37
|
action taskPlaceSutures : OperativeAction {
|
|
41
|
-
@MemoIdentity { :>> providedId = "MSI-TASK-001"; }
|
|
42
|
-
attribute :>> name = "PlaceSutures";
|
|
38
|
+
@MemoIdentity { :>> providedId = "MSI-TASK-001"; :>> label = "PlaceSutures"; }
|
|
43
39
|
attribute :>> taskGoal = "place interrupted sutures";
|
|
44
40
|
}
|
|
45
41
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Manual Surgical Instrument —
|
|
1
|
+
// Manual Surgical Instrument — model identity and method binding.
|
|
2
2
|
//
|
|
3
3
|
// The native entrypoint. The imports name what this project contains and the
|
|
4
4
|
// binding names the methodology it is governed by. No YAML file participates.
|
|
@@ -16,10 +16,9 @@ package memo_examples_manual_surgical_instrument_project {
|
|
|
16
16
|
|
|
17
17
|
private import memo_core_common::*;
|
|
18
18
|
private import memo_core_common::MemoIdentity;
|
|
19
|
-
part projectBinding :
|
|
20
|
-
@MemoIdentity { :>> providedId = "PMB-SURGICAL-INSTRUMENT-001"; }
|
|
21
|
-
attribute :>>
|
|
22
|
-
attribute :>> projectName = "Manual Surgical Instrument";
|
|
19
|
+
part projectBinding : ModelMethodBinding {
|
|
20
|
+
@MemoIdentity { :>> providedId = "PMB-SURGICAL-INSTRUMENT-001"; :>> label = "ManualSurgicalInstrumentModelMethodBinding"; }
|
|
21
|
+
attribute :>> modelName = "Manual Surgical Instrument";
|
|
23
22
|
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
24
23
|
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
25
24
|
}
|
|
@@ -21,7 +21,6 @@ package memo_examples_multidimensional_layers {
|
|
|
21
21
|
private import memo_core_common::MemoIdentity;
|
|
22
22
|
part doseLimitChecker : SoftwareModule {
|
|
23
23
|
@MemoIdentity { :>> providedId = "MDL-SW-001"; }
|
|
24
|
-
attribute :>> name = "DoseLimitChecker";
|
|
25
24
|
attribute :>> responsibility = "Reject therapy parameters outside the drug library's hard limits.";
|
|
26
25
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
27
26
|
// Axis ownership is this element's package (implementation layer) — not
|
|
@@ -35,8 +34,7 @@ package memo_examples_multidimensional_layers {
|
|
|
35
34
|
// The SAME identity progresses through realization stages — a deployed
|
|
36
35
|
// configuration is a stage of the element, not a second element.
|
|
37
36
|
part doseLimitCheckerRuntime : SoftwareComponent {
|
|
38
|
-
@MemoIdentity { :>> providedId = "MDL-RT-001"; }
|
|
39
|
-
attribute :>> name = "DoseLimitCheckerTask";
|
|
37
|
+
@MemoIdentity { :>> providedId = "MDL-RT-001"; :>> label = "DoseLimitCheckerTask"; }
|
|
40
38
|
attribute :>> periodMs = 50.0;
|
|
41
39
|
attribute :>> deadlineMs = 50.0;
|
|
42
40
|
attribute :>> wcetMs = 8.0;
|
|
@@ -47,7 +45,7 @@ package memo_examples_multidimensional_layers {
|
|
|
47
45
|
#refinement dependency doseLimitCheckerRuntime to doseLimitChecker;
|
|
48
46
|
|
|
49
47
|
verification vcLimitEnforcement : VerificationCase {
|
|
50
|
-
@MemoIdentity { :>> providedId = "MDL-VC-001";
|
|
48
|
+
@MemoIdentity { :>> providedId = "MDL-VC-001"; :>> label = "VerifyHardLimitEnforcement"; }
|
|
51
49
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
52
50
|
attribute :>> acceptanceCriteria = "all out-of-limit programs rejected across the equivalence classes";
|
|
53
51
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Multidimensional Layers —
|
|
1
|
+
// Multidimensional Layers — model identity and method binding.
|
|
2
2
|
//
|
|
3
3
|
// The native entrypoint. The imports name what this project contains and the
|
|
4
4
|
// binding names the methodology it is governed by. No YAML file participates.
|
|
@@ -16,10 +16,9 @@ package memo_examples_multidimensional_layers_project {
|
|
|
16
16
|
|
|
17
17
|
private import memo_core_common::*;
|
|
18
18
|
private import memo_core_common::MemoIdentity;
|
|
19
|
-
part projectBinding :
|
|
20
|
-
@MemoIdentity { :>> providedId = "PMB-MULTIDIMENSIONAL-LAYERS-001"; }
|
|
21
|
-
attribute :>>
|
|
22
|
-
attribute :>> projectName = "Multidimensional Layers";
|
|
19
|
+
part projectBinding : ModelMethodBinding {
|
|
20
|
+
@MemoIdentity { :>> providedId = "PMB-MULTIDIMENSIONAL-LAYERS-001"; :>> label = "MultidimensionalLayersModelMethodBinding"; }
|
|
21
|
+
attribute :>> modelName = "Multidimensional Layers";
|
|
23
22
|
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
24
23
|
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
25
24
|
}
|
|
@@ -20,6 +20,24 @@ elements:
|
|
|
20
20
|
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy":
|
|
21
21
|
shortId: "SYS-5"
|
|
22
22
|
uuid: "97af02c1-1869-51cd-b6a3-3d9b0803cac0"
|
|
23
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnControlDose":
|
|
24
|
+
shortId: "SYS-4"
|
|
25
|
+
uuid: "02ff5db5-4708-5084-8b09-2700ddb32faf"
|
|
26
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnControlDose::fnComputeRate":
|
|
27
|
+
shortId: "SYS-3"
|
|
28
|
+
uuid: "88ffa158-7036-55a6-910f-72ebeff80d8c"
|
|
29
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnControlDose::fnValidatePrescription":
|
|
30
|
+
shortId: "SYS-18"
|
|
31
|
+
uuid: "a8c04e09-7dfe-50ae-8b7e-184964772b59"
|
|
32
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnMeterFluid":
|
|
33
|
+
shortId: "SYS-14"
|
|
34
|
+
uuid: "ad2c6549-6cde-5d0c-972d-121765bad784"
|
|
35
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnMeterFluid::fnDriveActuator":
|
|
36
|
+
shortId: "SYS-8"
|
|
37
|
+
uuid: "cafa121a-9376-543e-b16f-3e1755ca2aa6"
|
|
38
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy::fnMeterFluid::fnMeasureDelivered":
|
|
39
|
+
shortId: "SYS-13"
|
|
40
|
+
uuid: "e9e92f6d-4d74-5ab2-8a04-3a8a502db932"
|
|
23
41
|
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDetectAirInLine":
|
|
24
42
|
shortId: "SYS-6"
|
|
25
43
|
uuid: "01cc8a11-19d1-598f-a56f-f7cf5ba0d243"
|
|
@@ -35,12 +53,36 @@ elements:
|
|
|
35
53
|
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety":
|
|
36
54
|
shortId: "SYS-10"
|
|
37
55
|
uuid: "4c0057ea-363a-534f-b3cb-d939e9b9f22d"
|
|
56
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety::fnDetectAirInLine":
|
|
57
|
+
shortId: "SYS-6"
|
|
58
|
+
uuid: "01cc8a11-19d1-598f-a56f-f7cf5ba0d243"
|
|
59
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety::fnDetectOcclusion":
|
|
60
|
+
shortId: "SYS-7"
|
|
61
|
+
uuid: "a1c87fbc-9933-5b07-a7a4-faa2a1b53589"
|
|
62
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety::fnEnforceDoseLimits":
|
|
63
|
+
shortId: "SYS-9"
|
|
64
|
+
uuid: "e3f15682-175f-550c-9daa-305017c19b54"
|
|
38
65
|
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser":
|
|
39
66
|
shortId: "SYS-11"
|
|
40
67
|
uuid: "c0d2ae2a-c619-552c-ad94-67a87d75a5f0"
|
|
68
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser::fnAcceptInput":
|
|
69
|
+
shortId: "SYS-1"
|
|
70
|
+
uuid: "743bc427-3611-54b4-b02f-f30d4474e8be"
|
|
71
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser::fnAnnunciateAlarm":
|
|
72
|
+
shortId: "SYS-2"
|
|
73
|
+
uuid: "38a50787-f2bd-51ee-9b90-6e0e6695b9f6"
|
|
74
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser::fnRenderStatus":
|
|
75
|
+
shortId: "SYS-16"
|
|
76
|
+
uuid: "2f581251-4e2e-5e0c-b937-e668d7abb1df"
|
|
41
77
|
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnManagePower":
|
|
42
78
|
shortId: "SYS-12"
|
|
43
79
|
uuid: "7306642f-c2c8-53ed-bf55-4369cdec0373"
|
|
80
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnManagePower::fnMonitorBattery":
|
|
81
|
+
shortId: "SYS-15"
|
|
82
|
+
uuid: "fa001550-9cd2-5118-880b-16dcc35f11e9"
|
|
83
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnManagePower::fnSelectPowerSource":
|
|
84
|
+
shortId: "SYS-17"
|
|
85
|
+
uuid: "96806e2b-9dad-5a25-906e-097da793517f"
|
|
44
86
|
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnMeasureDelivered":
|
|
45
87
|
shortId: "SYS-13"
|
|
46
88
|
uuid: "e9e92f6d-4d74-5ab2-8a04-3a8a502db932"
|
|
@@ -113,6 +155,57 @@ elements:
|
|
|
113
155
|
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery":
|
|
114
156
|
shortId: "SYS-19"
|
|
115
157
|
uuid: "523429e1-0a24-5aa6-b5c0-47c7eb82f4df"
|
|
158
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl":
|
|
159
|
+
shortId: "SBS-1"
|
|
160
|
+
uuid: "077d4a45-b168-52a4-9641-17c1f5b600ff"
|
|
161
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::lcDoseController":
|
|
162
|
+
shortId: "LGC-4"
|
|
163
|
+
uuid: "3b49ad97-598e-5474-aae7-e1b378be185d"
|
|
164
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::lcTherapyStateStore":
|
|
165
|
+
shortId: "LGC-11"
|
|
166
|
+
uuid: "59faa354-00b6-542a-9097-8b54c7cfa0a4"
|
|
167
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::subSafetyMonitor":
|
|
168
|
+
shortId: "SBS-4"
|
|
169
|
+
uuid: "c22054ce-e7da-5a61-8d9e-3dc1c364baba"
|
|
170
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::subSafetyMonitor::lcPressureIntegrityChannel":
|
|
171
|
+
shortId: "LGC-8"
|
|
172
|
+
uuid: "45f4a37a-5d78-5b1c-8638-e3df1bdcfedf"
|
|
173
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subControl::subSafetyMonitor::lcWatchdogChannel":
|
|
174
|
+
shortId: "LGC-12"
|
|
175
|
+
uuid: "11ebfa38-f25a-5d86-a3fe-0daf3bbf37ae"
|
|
176
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subFluidPath":
|
|
177
|
+
shortId: "SBS-2"
|
|
178
|
+
uuid: "43548a32-68a1-51bf-ab90-378990d36d2c"
|
|
179
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subFluidPath::lcOcclusionChannel":
|
|
180
|
+
shortId: "LGC-6"
|
|
181
|
+
uuid: "f1964871-b8a4-510d-b946-c962847f61d4"
|
|
182
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subFluidPath::lcPumpMechanism":
|
|
183
|
+
shortId: "LGC-9"
|
|
184
|
+
uuid: "630e869e-ef26-52f5-85a4-a9ab0e045006"
|
|
185
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subFluidPath::lcReservoirInterface":
|
|
186
|
+
shortId: "LGC-10"
|
|
187
|
+
uuid: "8bf720eb-227b-59bc-a8bd-17597157badf"
|
|
188
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subPower":
|
|
189
|
+
shortId: "SBS-3"
|
|
190
|
+
uuid: "aa677b1f-eddb-5436-9c6f-85221b3b77aa"
|
|
191
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subPower::lcBatteryManager":
|
|
192
|
+
shortId: "LGC-2"
|
|
193
|
+
uuid: "d6971bce-148e-5366-ab22-f80166c10b3f"
|
|
194
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subPower::lcPowerRailMonitor":
|
|
195
|
+
shortId: "LGC-7"
|
|
196
|
+
uuid: "4deb4ccd-b9f0-5ff4-904e-cf88beff861d"
|
|
197
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subUserInterface":
|
|
198
|
+
shortId: "SBS-5"
|
|
199
|
+
uuid: "d549ae19-f954-5553-98bc-2aae381754ae"
|
|
200
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subUserInterface::lcAlarmAnnunciator":
|
|
201
|
+
shortId: "LGC-1"
|
|
202
|
+
uuid: "4a3bc844-d379-53a5-bd07-45cfddbb306f"
|
|
203
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subUserInterface::lcDisplayManager":
|
|
204
|
+
shortId: "LGC-3"
|
|
205
|
+
uuid: "429d103c-969c-53fc-a447-2a0a9bb74764"
|
|
206
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery::subUserInterface::lcKeypadHandler":
|
|
207
|
+
shortId: "LGC-5"
|
|
208
|
+
uuid: "69673dde-9347-5e7b-a896-6ee9e9069a86"
|
|
116
209
|
"memo_examples_nested_architecture_dsm_architecture_operational_context::ctxIntraHospitalTransport":
|
|
117
210
|
shortId: "USE-1"
|
|
118
211
|
uuid: "a4ec22e7-25cb-54f8-b606-397da672af36"
|
package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml
CHANGED
|
@@ -18,28 +18,28 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
18
18
|
private import memo_core_common::MemoIdentity;
|
|
19
19
|
// ── Deliver therapy ──────────────────────────────────────────
|
|
20
20
|
action fnDeliverTherapy : SystemFunction {
|
|
21
|
-
@MemoIdentity { :>> providedId = "NDS-FN-001";
|
|
21
|
+
@MemoIdentity { :>> providedId = "NDS-FN-001"; :>> label = "DeliverTherapy"; }
|
|
22
22
|
attribute :>> functionCategory = "therapy";
|
|
23
23
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
24
24
|
attribute :>> concernKind = ConcernKind::safety;
|
|
25
25
|
attribute :>> outputSummary = "fluid delivered to the patient line at the prescribed rate";
|
|
26
26
|
|
|
27
27
|
action fnMeterFluid : SystemFunction {
|
|
28
|
-
@MemoIdentity { :>> providedId = "NDS-FN-002";
|
|
28
|
+
@MemoIdentity { :>> providedId = "NDS-FN-002"; :>> label = "MeterFluid"; }
|
|
29
29
|
attribute :>> functionCategory = "therapy";
|
|
30
30
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
31
31
|
attribute :>> concernKind = ConcernKind::safety;
|
|
32
32
|
attribute :>> outputSummary = "measured volume displaced per control period";
|
|
33
33
|
|
|
34
34
|
action fnDriveActuator : SystemFunction {
|
|
35
|
-
@MemoIdentity { :>> providedId = "NDS-FN-003";
|
|
35
|
+
@MemoIdentity { :>> providedId = "NDS-FN-003"; :>> label = "DriveActuator"; }
|
|
36
36
|
attribute :>> functionCategory = "therapy";
|
|
37
37
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
38
38
|
attribute :>> trigger = "rate command from the dose control loop";
|
|
39
39
|
attribute :>> concernKind = ConcernKind::safety;
|
|
40
40
|
}
|
|
41
41
|
action fnMeasureDelivered : SystemFunction {
|
|
42
|
-
@MemoIdentity { :>> providedId = "NDS-FN-004";
|
|
42
|
+
@MemoIdentity { :>> providedId = "NDS-FN-004"; :>> label = "MeasureDeliveredVolume"; }
|
|
43
43
|
attribute :>> functionCategory = "therapy";
|
|
44
44
|
attribute :>> criticality = CriticalityKind::high;
|
|
45
45
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -47,20 +47,20 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
action fnControlDose : SystemFunction {
|
|
50
|
-
@MemoIdentity { :>> providedId = "NDS-FN-005";
|
|
50
|
+
@MemoIdentity { :>> providedId = "NDS-FN-005"; :>> label = "ControlDose"; }
|
|
51
51
|
attribute :>> functionCategory = "therapy";
|
|
52
52
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
53
53
|
attribute :>> concernKind = ConcernKind::safety;
|
|
54
54
|
|
|
55
55
|
action fnComputeRate : SystemFunction {
|
|
56
|
-
@MemoIdentity { :>> providedId = "NDS-FN-006";
|
|
56
|
+
@MemoIdentity { :>> providedId = "NDS-FN-006"; :>> label = "ComputeInfusionRate"; }
|
|
57
57
|
attribute :>> functionCategory = "therapy";
|
|
58
58
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
59
59
|
attribute :>> concernKind = ConcernKind::safety;
|
|
60
60
|
attribute :>> outputSummary = "rate command, saturated at the prescribed ceiling";
|
|
61
61
|
}
|
|
62
62
|
action fnValidatePrescription : SystemFunction {
|
|
63
|
-
@MemoIdentity { :>> providedId = "NDS-FN-007";
|
|
63
|
+
@MemoIdentity { :>> providedId = "NDS-FN-007"; :>> label = "ValidatePrescription"; }
|
|
64
64
|
attribute :>> functionCategory = "therapy";
|
|
65
65
|
attribute :>> criticality = CriticalityKind::high;
|
|
66
66
|
attribute :>> concernKind = ConcernKind::clinical;
|
|
@@ -71,27 +71,27 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
71
71
|
|
|
72
72
|
// ── Ensure safety ────────────────────────────────────────────
|
|
73
73
|
action fnEnsureSafety : SystemFunction {
|
|
74
|
-
@MemoIdentity { :>> providedId = "NDS-FN-008";
|
|
74
|
+
@MemoIdentity { :>> providedId = "NDS-FN-008"; :>> label = "EnsureSafety"; }
|
|
75
75
|
attribute :>> functionCategory = "protection";
|
|
76
76
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
77
77
|
attribute :>> concernKind = ConcernKind::safety;
|
|
78
78
|
|
|
79
79
|
action fnDetectOcclusion : SystemFunction {
|
|
80
|
-
@MemoIdentity { :>> providedId = "NDS-FN-009";
|
|
80
|
+
@MemoIdentity { :>> providedId = "NDS-FN-009"; :>> label = "DetectOcclusion"; }
|
|
81
81
|
attribute :>> functionCategory = "protection";
|
|
82
82
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
83
83
|
attribute :>> trigger = "line pressure above the occlusion threshold";
|
|
84
84
|
attribute :>> concernKind = ConcernKind::safety;
|
|
85
85
|
}
|
|
86
86
|
action fnDetectAirInLine : SystemFunction {
|
|
87
|
-
@MemoIdentity { :>> providedId = "NDS-FN-010";
|
|
87
|
+
@MemoIdentity { :>> providedId = "NDS-FN-010"; :>> label = "DetectAirInLine"; }
|
|
88
88
|
attribute :>> functionCategory = "protection";
|
|
89
89
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
90
90
|
attribute :>> trigger = "air bolus detected in the patient line";
|
|
91
91
|
attribute :>> concernKind = ConcernKind::safety;
|
|
92
92
|
}
|
|
93
93
|
action fnEnforceDoseLimits : SystemFunction {
|
|
94
|
-
@MemoIdentity { :>> providedId = "NDS-FN-011";
|
|
94
|
+
@MemoIdentity { :>> providedId = "NDS-FN-011"; :>> label = "EnforceDoseLimits"; }
|
|
95
95
|
attribute :>> functionCategory = "protection";
|
|
96
96
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
97
97
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -101,27 +101,27 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
101
101
|
|
|
102
102
|
// ── Inform the user ──────────────────────────────────────────
|
|
103
103
|
action fnInformUser : SystemFunction {
|
|
104
|
-
@MemoIdentity { :>> providedId = "NDS-FN-012";
|
|
104
|
+
@MemoIdentity { :>> providedId = "NDS-FN-012"; :>> label = "InformUser"; }
|
|
105
105
|
attribute :>> functionCategory = "interaction";
|
|
106
106
|
attribute :>> criticality = CriticalityKind::high;
|
|
107
107
|
attribute :>> concernKind = ConcernKind::usability;
|
|
108
108
|
|
|
109
109
|
action fnRenderStatus : SystemFunction {
|
|
110
|
-
@MemoIdentity { :>> providedId = "NDS-FN-013";
|
|
110
|
+
@MemoIdentity { :>> providedId = "NDS-FN-013"; :>> label = "RenderTherapyStatus"; }
|
|
111
111
|
attribute :>> functionCategory = "interaction";
|
|
112
112
|
attribute :>> criticality = CriticalityKind::high;
|
|
113
113
|
attribute :>> concernKind = ConcernKind::usability;
|
|
114
114
|
attribute :>> outputSummary = "rate, volume delivered and time remaining";
|
|
115
115
|
}
|
|
116
116
|
action fnAnnunciateAlarm : SystemFunction {
|
|
117
|
-
@MemoIdentity { :>> providedId = "NDS-FN-014";
|
|
117
|
+
@MemoIdentity { :>> providedId = "NDS-FN-014"; :>> label = "AnnunciateAlarm"; }
|
|
118
118
|
attribute :>> functionCategory = "interaction";
|
|
119
119
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
120
120
|
attribute :>> trigger = "any active alarm condition";
|
|
121
121
|
attribute :>> concernKind = ConcernKind::safety;
|
|
122
122
|
}
|
|
123
123
|
action fnAcceptInput : SystemFunction {
|
|
124
|
-
@MemoIdentity { :>> providedId = "NDS-FN-015";
|
|
124
|
+
@MemoIdentity { :>> providedId = "NDS-FN-015"; :>> label = "AcceptClinicianInput"; }
|
|
125
125
|
attribute :>> functionCategory = "interaction";
|
|
126
126
|
attribute :>> criticality = CriticalityKind::high;
|
|
127
127
|
attribute :>> concernKind = ConcernKind::usability;
|
|
@@ -131,20 +131,20 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
131
131
|
|
|
132
132
|
// ── Manage power ─────────────────────────────────────────────
|
|
133
133
|
action fnManagePower : SystemFunction {
|
|
134
|
-
@MemoIdentity { :>> providedId = "NDS-FN-016";
|
|
134
|
+
@MemoIdentity { :>> providedId = "NDS-FN-016"; :>> label = "ManagePower"; }
|
|
135
135
|
attribute :>> functionCategory = "platform";
|
|
136
136
|
attribute :>> criticality = CriticalityKind::high;
|
|
137
137
|
attribute :>> concernKind = ConcernKind::reliability;
|
|
138
138
|
|
|
139
139
|
action fnMonitorBattery : SystemFunction {
|
|
140
|
-
@MemoIdentity { :>> providedId = "NDS-FN-017";
|
|
140
|
+
@MemoIdentity { :>> providedId = "NDS-FN-017"; :>> label = "MonitorBatteryState"; }
|
|
141
141
|
attribute :>> functionCategory = "platform";
|
|
142
142
|
attribute :>> criticality = CriticalityKind::high;
|
|
143
143
|
attribute :>> concernKind = ConcernKind::reliability;
|
|
144
144
|
attribute :>> outputSummary = "state of charge and remaining run time";
|
|
145
145
|
}
|
|
146
146
|
action fnSelectPowerSource : SystemFunction {
|
|
147
|
-
@MemoIdentity { :>> providedId = "NDS-FN-018";
|
|
147
|
+
@MemoIdentity { :>> providedId = "NDS-FN-018"; :>> label = "SelectPowerSource"; }
|
|
148
148
|
attribute :>> functionCategory = "platform";
|
|
149
149
|
attribute :>> criticality = CriticalityKind::high;
|
|
150
150
|
attribute :>> trigger = "mains loss or rail brownout";
|
|
@@ -155,18 +155,18 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
155
155
|
// ── Functional exchange ──────────────────────────────────────
|
|
156
156
|
// Cross-tree marks are the interesting ones: they are what a collapsed DSM
|
|
157
157
|
// rolls up into a single number between two capabilities.
|
|
158
|
-
flow from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnDeliverTherapy.fnControlDose.fnComputeRate;
|
|
159
|
-
flow from fnDeliverTherapy.fnControlDose.fnComputeRate to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
|
|
160
|
-
flow from fnDeliverTherapy.fnMeterFluid.fnDriveActuator to fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered;
|
|
161
|
-
flow from fnDeliverTherapy.fnControlDose.fnValidatePrescription to fnDeliverTherapy.fnControlDose.fnComputeRate;
|
|
162
|
-
flow from fnInformUser.fnAcceptInput to fnDeliverTherapy.fnControlDose.fnValidatePrescription;
|
|
163
|
-
flow from fnEnsureSafety.fnDetectOcclusion to fnEnsureSafety.fnEnforceDoseLimits;
|
|
164
|
-
flow from fnEnsureSafety.fnDetectAirInLine to fnInformUser.fnAnnunciateAlarm;
|
|
165
|
-
flow from fnEnsureSafety.fnEnforceDoseLimits to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
|
|
166
|
-
flow from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnInformUser.fnRenderStatus;
|
|
167
|
-
flow from fnManagePower.fnMonitorBattery to fnInformUser.fnAnnunciateAlarm;
|
|
168
|
-
flow from fnManagePower.fnSelectPowerSource to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
|
|
169
|
-
flow from fnEnsureSafety.fnDetectOcclusion to fnInformUser.fnAnnunciateAlarm;
|
|
158
|
+
flow fnMeasureDeliveredToFnComputeRate from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnDeliverTherapy.fnControlDose.fnComputeRate;
|
|
159
|
+
flow fnComputeRateToFnDriveActuator from fnDeliverTherapy.fnControlDose.fnComputeRate to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
|
|
160
|
+
flow fnDriveActuatorToFnMeasureDelivered from fnDeliverTherapy.fnMeterFluid.fnDriveActuator to fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered;
|
|
161
|
+
flow fnValidatePrescriptionToFnComputeRate from fnDeliverTherapy.fnControlDose.fnValidatePrescription to fnDeliverTherapy.fnControlDose.fnComputeRate;
|
|
162
|
+
flow fnAcceptInputToFnValidatePrescription from fnInformUser.fnAcceptInput to fnDeliverTherapy.fnControlDose.fnValidatePrescription;
|
|
163
|
+
flow fnDetectOcclusionToFnEnforceDoseLimits from fnEnsureSafety.fnDetectOcclusion to fnEnsureSafety.fnEnforceDoseLimits;
|
|
164
|
+
flow fnDetectAirInLineToFnAnnunciateAlarm from fnEnsureSafety.fnDetectAirInLine to fnInformUser.fnAnnunciateAlarm;
|
|
165
|
+
flow fnEnforceDoseLimitsToFnDriveActuator from fnEnsureSafety.fnEnforceDoseLimits to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
|
|
166
|
+
flow fnMeasureDeliveredToFnRenderStatus from fnDeliverTherapy.fnMeterFluid.fnMeasureDelivered to fnInformUser.fnRenderStatus;
|
|
167
|
+
flow fnMonitorBatteryToFnAnnunciateAlarm from fnManagePower.fnMonitorBattery to fnInformUser.fnAnnunciateAlarm;
|
|
168
|
+
flow fnSelectPowerSourceToFnDriveActuator from fnManagePower.fnSelectPowerSource to fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
|
|
169
|
+
flow fnDetectOcclusionToFnAnnunciateAlarm from fnEnsureSafety.fnDetectOcclusion to fnInformUser.fnAnnunciateAlarm;
|
|
170
170
|
satisfy reqDoseAccuracy by fnDeliverTherapy.fnControlDose.fnComputeRate;
|
|
171
171
|
satisfy reqDoseAccuracy by fnDeliverTherapy.fnMeterFluid.fnDriveActuator;
|
|
172
172
|
satisfy reqOcclusionDetection by fnEnsureSafety.fnDetectOcclusion;
|
|
@@ -16,7 +16,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
16
16
|
private import memo_core_common::MemoIdentity;
|
|
17
17
|
// ── Level 0: the system ──────────────────────────────────────
|
|
18
18
|
part sysTherapyDelivery : System {
|
|
19
|
-
@MemoIdentity { :>> providedId = "NDS-SYS-001";
|
|
19
|
+
@MemoIdentity { :>> providedId = "NDS-SYS-001"; :>> label = "TherapyDeliverySystem"; }
|
|
20
20
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
21
21
|
attribute :>> systemType = SystemTypeKind::logical;
|
|
22
22
|
attribute :>> systemBoundaryDescription = "Everything inside the pump enclosure, including its power path and user interface.";
|
|
@@ -24,35 +24,35 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
24
24
|
|
|
25
25
|
// ── Level 1: subsystems ──────────────────────────────────
|
|
26
26
|
part subFluidPath : Subsystem {
|
|
27
|
-
@MemoIdentity { :>> providedId = "NDS-SUB-001";
|
|
27
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-001"; :>> label = "FluidPathSubsystem"; }
|
|
28
28
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
29
29
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
30
30
|
attribute :>> responsibility = "Move fluid from the reservoir to the patient line at a commanded rate.";
|
|
31
31
|
|
|
32
32
|
// ── Level 2/3: components ─────────────────────────────
|
|
33
33
|
part lcPumpMechanism : LogicalComponent {
|
|
34
|
-
@MemoIdentity { :>> providedId = "NDS-LC-001";
|
|
34
|
+
@MemoIdentity { :>> providedId = "NDS-LC-001"; :>> label = "PumpMechanism"; }
|
|
35
35
|
attribute :>> componentRole = ComponentRoleKind::controlElement;
|
|
36
36
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
37
37
|
attribute :>> responsibility = "Displace fluid under command.";
|
|
38
38
|
attribute :>> controlledVariable = "delivered volume per stroke";
|
|
39
39
|
}
|
|
40
40
|
part lcOcclusionChannel : LogicalComponent {
|
|
41
|
-
@MemoIdentity { :>> providedId = "NDS-LC-002";
|
|
41
|
+
@MemoIdentity { :>> providedId = "NDS-LC-002"; :>> label = "OcclusionSensingChannel"; }
|
|
42
42
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
43
43
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
44
44
|
attribute :>> responsibility = "Sense line pressure and air in line.";
|
|
45
45
|
attribute :>> channelRole = ChannelRoleKind::primary;
|
|
46
46
|
}
|
|
47
47
|
part lcReservoirInterface : LogicalComponent {
|
|
48
|
-
@MemoIdentity { :>> providedId = "NDS-LC-003";
|
|
48
|
+
@MemoIdentity { :>> providedId = "NDS-LC-003"; :>> label = "ReservoirInterface"; }
|
|
49
49
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
50
50
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
51
51
|
attribute :>> responsibility = "Seat the reservoir and expose its remaining volume.";
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
part subControl : Subsystem {
|
|
55
|
-
@MemoIdentity { :>> providedId = "NDS-SUB-002";
|
|
55
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-002"; :>> label = "ControlSubsystem"; }
|
|
56
56
|
attribute :>> componentRole = ComponentRoleKind::controlElement;
|
|
57
57
|
attribute :>> systemType = SystemTypeKind::software;
|
|
58
58
|
attribute :>> responsibility = "Decide what the fluid path should do, and hold the therapy state.";
|
|
@@ -62,14 +62,14 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
62
62
|
// which is what makes a collapsed ControlSubsystem row a genuine
|
|
63
63
|
// roll-up rather than a rename of its children.
|
|
64
64
|
part subSafetyMonitor : Subsystem {
|
|
65
|
-
@MemoIdentity { :>> providedId = "NDS-SUB-005";
|
|
65
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-005"; :>> label = "SafetyMonitorSubsystem"; }
|
|
66
66
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
67
67
|
attribute :>> systemType = SystemTypeKind::software;
|
|
68
68
|
attribute :>> responsibility = "Watch the control path from outside it and stop delivery on breach.";
|
|
69
69
|
attribute :>> safetyPartition = "monitor partition, separate MPU region from the control partition";
|
|
70
70
|
|
|
71
71
|
part lcWatchdogChannel : LogicalComponent {
|
|
72
|
-
@MemoIdentity { :>> providedId = "NDS-LC-006";
|
|
72
|
+
@MemoIdentity { :>> providedId = "NDS-LC-006"; :>> label = "WatchdogChannel"; }
|
|
73
73
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
74
74
|
attribute :>> systemType = SystemTypeKind::software;
|
|
75
75
|
attribute :>> responsibility = "Reset to the safe state when the control loop misses its deadline.";
|
|
@@ -77,7 +77,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
77
77
|
attribute :>> diversityBasis = "independent time base from the control partition";
|
|
78
78
|
}
|
|
79
79
|
part lcPressureIntegrityChannel : LogicalComponent {
|
|
80
|
-
@MemoIdentity { :>> providedId = "NDS-LC-007";
|
|
80
|
+
@MemoIdentity { :>> providedId = "NDS-LC-007"; :>> label = "PressureIntegrityChannel"; }
|
|
81
81
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
82
82
|
attribute :>> systemType = SystemTypeKind::software;
|
|
83
83
|
attribute :>> responsibility = "Cross-check pressure against the commanded rate and stop on divergence.";
|
|
@@ -86,7 +86,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
part lcDoseController : LogicalComponent {
|
|
89
|
-
@MemoIdentity { :>> providedId = "NDS-LC-004";
|
|
89
|
+
@MemoIdentity { :>> providedId = "NDS-LC-004"; :>> label = "DoseController"; }
|
|
90
90
|
attribute :>> componentRole = ComponentRoleKind::controlElement;
|
|
91
91
|
attribute :>> systemType = SystemTypeKind::software;
|
|
92
92
|
attribute :>> responsibility = "Turn a prescription into rate commands.";
|
|
@@ -94,7 +94,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
94
94
|
attribute :>> controlledVariable = "infusion rate";
|
|
95
95
|
}
|
|
96
96
|
part lcTherapyStateStore : LogicalComponent {
|
|
97
|
-
@MemoIdentity { :>> providedId = "NDS-LC-005";
|
|
97
|
+
@MemoIdentity { :>> providedId = "NDS-LC-005"; :>> label = "TherapyStateStore"; }
|
|
98
98
|
attribute :>> componentRole = ComponentRoleKind::dataStore;
|
|
99
99
|
attribute :>> systemType = SystemTypeKind::software;
|
|
100
100
|
attribute :>> responsibility = "Hold the active therapy record across power cycles.";
|
|
@@ -103,27 +103,27 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
part subUserInterface : Subsystem {
|
|
106
|
-
@MemoIdentity { :>> providedId = "NDS-SUB-003";
|
|
106
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-003"; :>> label = "UserInterfaceSubsystem"; }
|
|
107
107
|
attribute :>> componentRole = ComponentRoleKind::userInterface;
|
|
108
108
|
attribute :>> systemType = SystemTypeKind::software;
|
|
109
109
|
attribute :>> responsibility = "Present therapy state to the clinician and accept their input.";
|
|
110
110
|
|
|
111
111
|
part lcDisplayManager : LogicalComponent {
|
|
112
|
-
@MemoIdentity { :>> providedId = "NDS-LC-008";
|
|
112
|
+
@MemoIdentity { :>> providedId = "NDS-LC-008"; :>> label = "DisplayManager"; }
|
|
113
113
|
attribute :>> componentRole = ComponentRoleKind::userInterface;
|
|
114
114
|
attribute :>> systemType = SystemTypeKind::software;
|
|
115
115
|
attribute :>> responsibility = "Render therapy state on the main screen.";
|
|
116
116
|
attribute :>> interactionSummary = "read-only status surface, refreshed once per second";
|
|
117
117
|
}
|
|
118
118
|
part lcAlarmAnnunciator : LogicalComponent {
|
|
119
|
-
@MemoIdentity { :>> providedId = "NDS-LC-009";
|
|
119
|
+
@MemoIdentity { :>> providedId = "NDS-LC-009"; :>> label = "AlarmAnnunciator"; }
|
|
120
120
|
attribute :>> componentRole = ComponentRoleKind::userInterface;
|
|
121
121
|
attribute :>> systemType = SystemTypeKind::software;
|
|
122
122
|
attribute :>> responsibility = "Raise audible and visible alarms by priority.";
|
|
123
123
|
attribute :>> interactionSummary = "IEC 60601-1-8 alarm signals";
|
|
124
124
|
}
|
|
125
125
|
part lcKeypadHandler : LogicalComponent {
|
|
126
|
-
@MemoIdentity { :>> providedId = "NDS-LC-010";
|
|
126
|
+
@MemoIdentity { :>> providedId = "NDS-LC-010"; :>> label = "KeypadHandler"; }
|
|
127
127
|
attribute :>> componentRole = ComponentRoleKind::userInterface;
|
|
128
128
|
attribute :>> systemType = SystemTypeKind::software;
|
|
129
129
|
attribute :>> responsibility = "Debounce and interpret key presses.";
|
|
@@ -131,19 +131,19 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
part subPower : Subsystem {
|
|
134
|
-
@MemoIdentity { :>> providedId = "NDS-SUB-004";
|
|
134
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-004"; :>> label = "PowerSubsystem"; }
|
|
135
135
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
136
136
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
137
137
|
attribute :>> responsibility = "Supply and monitor power across mains and battery operation.";
|
|
138
138
|
|
|
139
139
|
part lcBatteryManager : LogicalComponent {
|
|
140
|
-
@MemoIdentity { :>> providedId = "NDS-LC-011";
|
|
140
|
+
@MemoIdentity { :>> providedId = "NDS-LC-011"; :>> label = "BatteryManager"; }
|
|
141
141
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
142
142
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
143
143
|
attribute :>> responsibility = "Charge, gauge and protect the battery.";
|
|
144
144
|
}
|
|
145
145
|
part lcPowerRailMonitor : LogicalComponent {
|
|
146
|
-
@MemoIdentity { :>> providedId = "NDS-LC-012";
|
|
146
|
+
@MemoIdentity { :>> providedId = "NDS-LC-012"; :>> label = "PowerRailMonitor"; }
|
|
147
147
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
148
148
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
149
149
|
attribute :>> responsibility = "Detect rail brownout and request a source switch.";
|
|
@@ -153,15 +153,15 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
153
153
|
|
|
154
154
|
// ── Component-to-component dependency ─────────────────────
|
|
155
155
|
// What the DSM plots when both axes are architecture: who needs whom.
|
|
156
|
-
flow from subFluidPath.lcOcclusionChannel to subControl.lcDoseController;
|
|
157
|
-
flow from subControl.lcDoseController to subFluidPath.lcPumpMechanism;
|
|
158
|
-
flow from subFluidPath.lcPumpMechanism to subControl.lcTherapyStateStore;
|
|
159
|
-
flow from subControl.lcTherapyStateStore to subUserInterface.lcDisplayManager;
|
|
160
|
-
flow from subControl.subSafetyMonitor.lcWatchdogChannel to subControl.lcDoseController;
|
|
161
|
-
flow from subControl.subSafetyMonitor.lcPressureIntegrityChannel to subUserInterface.lcAlarmAnnunciator;
|
|
162
|
-
flow from subUserInterface.lcKeypadHandler to subControl.lcDoseController;
|
|
163
|
-
flow from subFluidPath.lcReservoirInterface to subFluidPath.lcPumpMechanism;
|
|
164
|
-
flow from subPower.lcBatteryManager to subPower.lcPowerRailMonitor;
|
|
165
|
-
flow from subPower.lcPowerRailMonitor to subUserInterface.lcAlarmAnnunciator;
|
|
156
|
+
flow lcOcclusionChannelToLcDoseController from subFluidPath.lcOcclusionChannel to subControl.lcDoseController;
|
|
157
|
+
flow lcDoseControllerToLcPumpMechanism from subControl.lcDoseController to subFluidPath.lcPumpMechanism;
|
|
158
|
+
flow lcPumpMechanismToLcTherapyStateStore from subFluidPath.lcPumpMechanism to subControl.lcTherapyStateStore;
|
|
159
|
+
flow lcTherapyStateStoreToLcDisplayManager from subControl.lcTherapyStateStore to subUserInterface.lcDisplayManager;
|
|
160
|
+
flow lcWatchdogChannelToLcDoseController from subControl.subSafetyMonitor.lcWatchdogChannel to subControl.lcDoseController;
|
|
161
|
+
flow lcPressureIntegrityChannelToLcAlarmAnnunciator from subControl.subSafetyMonitor.lcPressureIntegrityChannel to subUserInterface.lcAlarmAnnunciator;
|
|
162
|
+
flow lcKeypadHandlerToLcDoseController from subUserInterface.lcKeypadHandler to subControl.lcDoseController;
|
|
163
|
+
flow lcReservoirInterfaceToLcPumpMechanism from subFluidPath.lcReservoirInterface to subFluidPath.lcPumpMechanism;
|
|
164
|
+
flow lcBatteryManagerToLcPowerRailMonitor from subPower.lcBatteryManager to subPower.lcPowerRailMonitor;
|
|
165
|
+
flow lcPowerRailMonitorToLcAlarmAnnunciator from subPower.lcPowerRailMonitor to subUserInterface.lcAlarmAnnunciator;
|
|
166
166
|
}
|
|
167
167
|
}
|