@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
|
@@ -18,76 +18,76 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
|
|
|
18
18
|
private import memo_core_common::*;
|
|
19
19
|
private import memo_core_common::MemoIdentity;
|
|
20
20
|
item hzWrongRate : Hazard {
|
|
21
|
-
@MemoIdentity { :>> providedId = "UIR-HZ-001";
|
|
21
|
+
@MemoIdentity { :>> providedId = "UIR-HZ-001"; :>> label = "InfusionAtIncorrectRate"; }
|
|
22
22
|
attribute :>> hazardType = HazardTypeKind::informationError;
|
|
23
23
|
attribute :>> severity = SeverityKind::serious;
|
|
24
24
|
attribute :>> foreseeable = true;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
part rcRateConfirm : RiskControlMeasure {
|
|
28
|
-
@MemoIdentity { :>> providedId = "UIR-RC-001";
|
|
28
|
+
@MemoIdentity { :>> providedId = "UIR-RC-001"; :>> label = "RateChangeConfirmationDialog"; }
|
|
29
29
|
@MemoIdentity { :>> shortDescription = "Explicit confirmation step before a rate change applies."; }
|
|
30
|
-
|
|
30
|
+
doc /* A confirmation dialog restates the requested rate in words and numerals before the change is committed, so a mis-set decimal point has a second chance to be caught. */
|
|
31
31
|
attribute :>> controlKind = RiskControlKind::protectiveMeasure;
|
|
32
32
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
item hzWrongDrug : Hazard {
|
|
36
|
-
@MemoIdentity { :>> providedId = "UIR-HZ-002";
|
|
36
|
+
@MemoIdentity { :>> providedId = "UIR-HZ-002"; :>> label = "TherapyConfiguredForWrongDrug"; }
|
|
37
37
|
attribute :>> hazardType = HazardTypeKind::informationError;
|
|
38
38
|
attribute :>> severity = SeverityKind::serious;
|
|
39
39
|
attribute :>> foreseeable = true;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
part rcDrugLibraryGuard : RiskControlMeasure {
|
|
43
|
-
@MemoIdentity { :>> providedId = "UIR-RC-002";
|
|
43
|
+
@MemoIdentity { :>> providedId = "UIR-RC-002"; :>> label = "CareAreaDrugLibraryGuard"; }
|
|
44
44
|
@MemoIdentity { :>> shortDescription = "Restrict selection to enabled care-area drug-library entries."; }
|
|
45
|
-
|
|
45
|
+
doc /* Filters the dynamic selector to the active care-area formulary and validates the selected drug and concentration before its dosing limits are used. */
|
|
46
46
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
47
47
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
item hzUnexpectedPowerLoss : Hazard {
|
|
51
|
-
@MemoIdentity { :>> providedId = "UIR-HZ-003";
|
|
51
|
+
@MemoIdentity { :>> providedId = "UIR-HZ-003"; :>> label = "UnexpectedTherapyInterruptionFromPowerLoss"; }
|
|
52
52
|
attribute :>> hazardType = HazardTypeKind::energyExposure;
|
|
53
53
|
attribute :>> severity = SeverityKind::critical;
|
|
54
54
|
attribute :>> foreseeable = true;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
part rcLowBatteryProminence : RiskControlMeasure {
|
|
58
|
-
@MemoIdentity { :>> providedId = "UIR-RC-003";
|
|
58
|
+
@MemoIdentity { :>> providedId = "UIR-RC-003"; :>> label = "ProminentLowBatteryStatus"; }
|
|
59
59
|
@MemoIdentity { :>> shortDescription = "Update and emphasize low remaining battery status within one second."; }
|
|
60
|
-
|
|
60
|
+
doc /* Monitors battery telemetry and changes the status indicator's color and icon state at the low-runtime threshold so the clinician can restore power before therapy interruption. */
|
|
61
61
|
attribute :>> controlKind = RiskControlKind::monitoring;
|
|
62
62
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
item hzIncorrectDeliveredVolumeAssessment : Hazard {
|
|
66
|
-
@MemoIdentity { :>> providedId = "UIR-HZ-004";
|
|
66
|
+
@MemoIdentity { :>> providedId = "UIR-HZ-004"; :>> label = "IncorrectDeliveredVolumeAssessment"; }
|
|
67
67
|
attribute :>> hazardType = HazardTypeKind::informationError;
|
|
68
68
|
attribute :>> severity = SeverityKind::serious;
|
|
69
69
|
attribute :>> foreseeable = true;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
part rcDisplayFreshnessMonitor : RiskControlMeasure {
|
|
73
|
-
@MemoIdentity { :>> providedId = "UIR-RC-004";
|
|
73
|
+
@MemoIdentity { :>> providedId = "UIR-RC-004"; :>> label = "InfusionDisplayFreshnessMonitor"; }
|
|
74
74
|
@MemoIdentity { :>> shortDescription = "Refresh displayed rate and volume at 1 Hz and detect stale telemetry."; }
|
|
75
|
-
|
|
75
|
+
doc /* Maintains a one-second display age budget for infusion status and detects a missed telemetry refresh before stale values can persist. */
|
|
76
76
|
attribute :>> controlKind = RiskControlKind::monitoring;
|
|
77
77
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
item hzIncorrectEventChronology : Hazard {
|
|
81
|
-
@MemoIdentity { :>> providedId = "UIR-HZ-005";
|
|
81
|
+
@MemoIdentity { :>> providedId = "UIR-HZ-005"; :>> label = "IncorrectTherapyEventChronology"; }
|
|
82
82
|
attribute :>> hazardType = HazardTypeKind::informationError;
|
|
83
83
|
attribute :>> severity = SeverityKind::minor;
|
|
84
84
|
attribute :>> foreseeable = true;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
part rcClockFreshnessCheck : RiskControlMeasure {
|
|
88
|
-
@MemoIdentity { :>> providedId = "UIR-RC-005";
|
|
88
|
+
@MemoIdentity { :>> providedId = "UIR-RC-005"; :>> label = "SynchronizedClockFreshnessCheck"; }
|
|
89
89
|
@MemoIdentity { :>> shortDescription = "Synchronize the display clock and bound visible time error."; }
|
|
90
|
-
|
|
90
|
+
doc /* Checks the displayed clock against the synchronized device clock and refreshes the visible minute at rollover. */
|
|
91
91
|
attribute :>> controlKind = RiskControlKind::plausibilityCheck;
|
|
92
92
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
93
93
|
}
|
|
@@ -22,7 +22,7 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
|
|
|
22
22
|
|
|
23
23
|
private import memo_core_common::MemoIdentity;
|
|
24
24
|
verification vcRateChange : VerificationCase {
|
|
25
|
-
@MemoIdentity { :>> providedId = "UIR-VER-001";
|
|
25
|
+
@MemoIdentity { :>> providedId = "UIR-VER-001"; :>> label = "VerifyRateChangeConfirmation"; }
|
|
26
26
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
27
27
|
attribute :>> acceptanceCriteria = "A rate change cannot reach the controller until the displayed value is explicitly confirmed.";
|
|
28
28
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -32,14 +32,14 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
|
|
|
32
32
|
|
|
33
33
|
part evRateChange : MemoEvidence {
|
|
34
34
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
35
|
-
@MemoIdentity { :>> providedId = "UIR-EV-001";
|
|
35
|
+
@MemoIdentity { :>> providedId = "UIR-EV-001"; :>> label = "RateChangeConfirmationTestRecord"; }
|
|
36
36
|
attribute :>> version = "planned";
|
|
37
37
|
attribute :>> evidenceType = "test record";
|
|
38
38
|
attribute :>> integrityStatus = "planned";
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
verification vcDrugLibrarySelection : VerificationCase {
|
|
42
|
-
@MemoIdentity { :>> providedId = "VER-002";
|
|
42
|
+
@MemoIdentity { :>> providedId = "VER-002"; :>> label = "VerifyCareAreaDrugLibrarySelection"; }
|
|
43
43
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
44
44
|
attribute :>> acceptanceCriteria = "Only enabled care-area drug and concentration records are selectable, and every selection supplies the matching dosing limits.";
|
|
45
45
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -49,14 +49,14 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
|
|
|
49
49
|
|
|
50
50
|
part evDrugLibrarySelection : MemoEvidence {
|
|
51
51
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
52
|
-
@MemoIdentity { :>> providedId = "EVD-002";
|
|
52
|
+
@MemoIdentity { :>> providedId = "EVD-002"; :>> label = "DrugLibrarySelectionTestRecord"; }
|
|
53
53
|
attribute :>> version = "planned";
|
|
54
54
|
attribute :>> evidenceType = "test record";
|
|
55
55
|
attribute :>> integrityStatus = "planned";
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
verification vcInfusionStatusContent : VerificationCase {
|
|
59
|
-
@MemoIdentity { :>> providedId = "VER-003";
|
|
59
|
+
@MemoIdentity { :>> providedId = "VER-003"; :>> label = "VerifyInfusionStatusContentAndFreshness"; }
|
|
60
60
|
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
61
61
|
attribute :>> acceptanceCriteria = "Time, battery, active rate, drug identity, and total delivered volume satisfy their content, accuracy, and latency criteria under normal and threshold-transition conditions.";
|
|
62
62
|
attribute :>> status = ElementStatusKind::approved;
|
|
@@ -67,7 +67,7 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
|
|
|
67
67
|
|
|
68
68
|
part evInfusionStatusContent : MemoEvidence {
|
|
69
69
|
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
70
|
-
@MemoIdentity { :>> providedId = "EVD-003";
|
|
70
|
+
@MemoIdentity { :>> providedId = "EVD-003"; :>> label = "InfusionStatusDisplayTestRecord"; }
|
|
71
71
|
attribute :>> version = "planned";
|
|
72
72
|
attribute :>> evidenceType = "test record";
|
|
73
73
|
attribute :>> integrityStatus = "planned";
|
|
@@ -51,8 +51,7 @@ package memo_examples_ui_screen_regions_viewpoints_functional_views_ui_functiona
|
|
|
51
51
|
attribute :>> diagramType = "bdd";
|
|
52
52
|
attribute :>> autoPopulate = true;
|
|
53
53
|
part :>> selectionQuery {
|
|
54
|
-
@MemoIdentity { :>> providedId = "QRY-102"; }
|
|
55
|
-
attribute :>> name = "UIFunctionalTreeQuery";
|
|
54
|
+
@MemoIdentity { :>> providedId = "QRY-102"; :>> label = "UIFunctionalTreeQuery"; }
|
|
56
55
|
attribute :>> includeElementKinds = ("SystemFunction", "UIAction", "UIElement", "UserInterface");
|
|
57
56
|
attribute :>> includeRelationshipKinds = ("Composes", "ElementTriggersAction", "Performs", "AllocatedTo");
|
|
58
57
|
attribute :>> includeLayers = ("functions", "implementation");
|
|
@@ -51,8 +51,7 @@ package memo_examples_ui_screen_regions_viewpoints_requirements_views_ui_require
|
|
|
51
51
|
attribute :>> diagramType = "req";
|
|
52
52
|
attribute :>> autoPopulate = true;
|
|
53
53
|
part :>> selectionQuery {
|
|
54
|
-
@MemoIdentity { :>> providedId = "QRY-101"; }
|
|
55
|
-
attribute :>> name = "UIRequirementsTraceQuery";
|
|
54
|
+
@MemoIdentity { :>> providedId = "QRY-101"; :>> label = "UIRequirementsTraceQuery"; }
|
|
56
55
|
attribute :>> includeElementKinds = ("Need", "Requirement", "UIElement", "SystemFunction", "VerificationCase");
|
|
57
56
|
attribute :>> includeRelationshipKinds = ("DerivesFrom", "SatisfiedBy", "VerifiedBy");
|
|
58
57
|
attribute :>> includeLayers = ("requirements", "implementation", "functions", "assurance");
|
|
@@ -51,8 +51,7 @@ package memo_examples_ui_screen_regions_viewpoints_risk_views_ui_risk_chain {
|
|
|
51
51
|
attribute :>> diagramType = "risk";
|
|
52
52
|
attribute :>> autoPopulate = true;
|
|
53
53
|
part :>> selectionQuery {
|
|
54
|
-
@MemoIdentity { :>> providedId = "QRY-103"; }
|
|
55
|
-
attribute :>> name = "UIRiskChainQuery";
|
|
54
|
+
@MemoIdentity { :>> providedId = "QRY-103"; :>> label = "UIRiskChainQuery"; }
|
|
56
55
|
attribute :>> includeElementKinds = ("UseError", "Hazard", "RiskControlMeasure", "Requirement", "UIElement", "SystemFunction", "VerificationCase");
|
|
57
56
|
attribute :>> includeRelationshipKinds = ("ErrorAtElement", "Causes", "Mitigates", "ControlImplementedBy", "DerivesFrom", "VerifiedBy");
|
|
58
57
|
attribute :>> includeLayers = ("human_factors", "risk", "requirements", "implementation", "functions", "assurance");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// UI screen regions —
|
|
1
|
+
// UI screen regions — model identity and method binding.
|
|
2
2
|
//
|
|
3
3
|
// The native entrypoint for this project. Everything that decides what the
|
|
4
4
|
// model means is here or reachable from here: the imports name the reusable
|
|
@@ -33,10 +33,9 @@ package memo_examples_ui_screen_regions_project {
|
|
|
33
33
|
|
|
34
34
|
private import memo_core_common::*;
|
|
35
35
|
private import memo_core_common::MemoIdentity;
|
|
36
|
-
part uiScreenRegionsBinding :
|
|
37
|
-
@MemoIdentity { :>> providedId = "PMB-UIR-001"; }
|
|
38
|
-
attribute :>>
|
|
39
|
-
attribute :>> projectName = "UI Screen Regions";
|
|
36
|
+
part uiScreenRegionsBinding : ModelMethodBinding {
|
|
37
|
+
@MemoIdentity { :>> providedId = "PMB-UIR-001"; :>> label = "UIScreenRegionsModelMethodBinding"; }
|
|
38
|
+
attribute :>> modelName = "UI Screen Regions";
|
|
40
39
|
// The default methodology selects everything the resolved ontology
|
|
41
40
|
// provides, which is what makes the UI layout rules CR-MED-110…113
|
|
42
41
|
// evaluable against this model.
|
package/extensions/README.md
CHANGED
|
@@ -1,31 +1,80 @@
|
|
|
1
1
|
# Extensions
|
|
2
2
|
|
|
3
3
|
An extension is a **way to model**, not a sample. It is a reusable ontology
|
|
4
|
-
package that specializes the base and is
|
|
5
|
-
|
|
4
|
+
package that specializes the base and is brought into a project by importing
|
|
5
|
+
it — so extensions live here, beside `src/`, and not under `examples/`.
|
|
6
6
|
Examples *use* extensions; `examples/ros-mobile-robot` demonstrates one.
|
|
7
7
|
|
|
8
|
-
MEMO defines no extension metaclass
|
|
8
|
+
MEMO defines no extension metaclass and no extension methodology. An extension
|
|
9
|
+
is plain SysML packages:
|
|
9
10
|
|
|
10
11
|
- outside `src/` and outside the `memo::` namespace;
|
|
11
12
|
- with a `memo.package.yaml` carrying identity and `sysmlDir` only (the semantic
|
|
12
13
|
fields `type` / `extends` / `usage` / `ontologies` / `methodology` / `modules`
|
|
13
14
|
are rejected);
|
|
14
15
|
- whose SysML **specializes** base types;
|
|
15
|
-
-
|
|
16
|
-
|
|
16
|
+
- with one **facade** package, `memo_extension_<directory>`, that publicly
|
|
17
|
+
imports every other package the extension ships and every extension it builds
|
|
18
|
+
on.
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
## Composition happens at the project binding
|
|
20
|
+
The facade **is** the extension as the model sees it: a project imports it,
|
|
21
|
+
another extension imports it, and nothing else identifies an extension.
|
|
22
22
|
|
|
23
|
-
`
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
`template/` is the skeleton. The build round-trips every extension into its own
|
|
24
|
+
KPAR (`memo-extension-<directory>`) and resolves the whole tree with `syside check`,
|
|
25
|
+
exactly as it does the base.
|
|
26
|
+
|
|
27
|
+
## Each extension is its own package
|
|
28
|
+
|
|
29
|
+
An extension is built, versioned and depended on by itself. Its KPAR declares
|
|
30
|
+
what it uses: the base ontology and default methodology, the SysML libraries,
|
|
31
|
+
and **every other extension its source imports** (`import memo_extension_<name>`
|
|
32
|
+
is read from the files, not listed twice). `ros` therefore declares
|
|
33
|
+
`memo-extension-messaging` and `memo-extension-container`; `clinical` declares
|
|
34
|
+
neither. Add an `import` of another extension and the next build records the
|
|
35
|
+
dependency; remove it and the dependency goes.
|
|
36
|
+
|
|
37
|
+
## One import brings an extension in
|
|
38
|
+
|
|
39
|
+
```sysml
|
|
40
|
+
package memo_examples_ros_mobile_robot_project {
|
|
41
|
+
public import memo_extension_ros::*;
|
|
42
|
+
|
|
43
|
+
part projectBinding : ModelMethodBinding {
|
|
44
|
+
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
A methodology selects the packages that the package declaring it **publicly
|
|
50
|
+
imports**, followed through their public imports in turn; a project adds to that
|
|
51
|
+
selection the same way, from the package that declares its binding. That is
|
|
52
|
+
SysML's own meaning of a public import — it passes the imported members on to
|
|
53
|
+
whoever imports the importing package — so there is no list of package names
|
|
54
|
+
beside it, and a misspelled package is an import the compiler rejects. A
|
|
55
|
+
private import makes the names visible to the importing package and selects
|
|
56
|
+
nothing: the ROS package privately imports the architecture packages it
|
|
57
|
+
specializes, and selecting ROS does not select them.
|
|
58
|
+
|
|
59
|
+
So an extension's facade publicly imports what selecting the extension has to
|
|
60
|
+
select:
|
|
61
|
+
|
|
62
|
+
- **its own packages.** `aadl`'s facade publicly imports
|
|
63
|
+
`memo_extension_aadl_runtime` and `memo_extension_aadl_correspondence`, the
|
|
64
|
+
packages that declare its definitions and rules. A facade that left one out
|
|
65
|
+
would leave it out of every project that imports the extension.
|
|
66
|
+
- **the extensions it builds on.** `ros` publicly imports `memo_extension_messaging`
|
|
67
|
+
and `memo_extension_container`. The dependency is declared once, by that
|
|
68
|
+
import, and it is the same line the KPAR build reads to record the dependency,
|
|
69
|
+
so the two cannot disagree.
|
|
70
|
+
|
|
71
|
+
A test holds each facade's public imports equal to the packages the directory
|
|
72
|
+
declares plus the extensions it imports, and checks that every example using an
|
|
73
|
+
extension's definitions publicly imports its facade from the entrypoint, or one
|
|
74
|
+
whose facade imports it.
|
|
75
|
+
|
|
76
|
+
A project's or a supplier's own packages outside MEMO are added the same way: a
|
|
77
|
+
public import in the binding's package.
|
|
29
78
|
|
|
30
79
|
## Rule 1 — use native mechanisms first; extension relations specialize base ones
|
|
31
80
|
|
|
@@ -71,7 +120,7 @@ the prefix is what makes that check something an author can satisfy by
|
|
|
71
120
|
construction rather than by luck.
|
|
72
121
|
|
|
73
122
|
Enumeration literals are not definitions and are not prefixed —
|
|
74
|
-
`
|
|
123
|
+
`RosDurabilityKind::transientLocal`, not `RosDurabilityKind::rosTransientLocal`.
|
|
75
124
|
|
|
76
125
|
## What an extension must not do
|
|
77
126
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-aadl'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.1
|
|
11
11
|
description: AADL (SAE AS5506) correspondence profile and runtime component families
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
// The AADL extension's public facade.
|
|
2
|
-
//
|
|
1
|
+
// The AADL extension's public facade. It publicly imports every package the
|
|
2
|
+
// extension ships, so one import brings the extension into a project: a
|
|
3
|
+
// project that imports it sees the definitions, and one that imports it
|
|
4
|
+
// publicly from its entrypoint package (or a methodology that does) selects
|
|
5
|
+
// every package below.
|
|
3
6
|
package memo_extension_aadl {
|
|
4
7
|
public import memo_extension_aadl_runtime::*;
|
|
5
8
|
public import memo_extension_aadl_correspondence::*;
|
|
@@ -23,127 +23,106 @@ package memo_extension_aadl_correspondence {
|
|
|
23
23
|
private import memo_core_common::MemoIdentity;
|
|
24
24
|
// ── Component categories ────────────────────────────────────────────
|
|
25
25
|
part aadlCorrProcess : CorrespondenceRule {
|
|
26
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-001"; }
|
|
27
|
-
attribute :>> name = "ProcessCorrespondence";
|
|
26
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-001"; :>> label = "ProcessCorrespondence"; }
|
|
28
27
|
attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlProcess <-> AADL component category `process`";
|
|
29
|
-
|
|
28
|
+
doc /* A MEMO SoftwareComponent with runtimeKind = process, carrying addressSpaceIsolated. */
|
|
30
29
|
}
|
|
31
30
|
part aadlCorrThread : CorrespondenceRule {
|
|
32
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-002"; }
|
|
33
|
-
attribute :>> name = "ThreadCorrespondence";
|
|
31
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-002"; :>> label = "ThreadCorrespondence"; }
|
|
34
32
|
attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlThread <-> AADL component category `thread`";
|
|
35
|
-
|
|
33
|
+
doc /* Schedulable unit inside one process; owningProcessName names the containing process. */
|
|
36
34
|
}
|
|
37
35
|
part aadlCorrVirtualProcessor : CorrespondenceRule {
|
|
38
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-003"; }
|
|
39
|
-
attribute :>> name = "VirtualProcessorCorrespondence";
|
|
36
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-003"; :>> label = "VirtualProcessorCorrespondence"; }
|
|
40
37
|
attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlVirtualProcessor <-> AADL component category `virtual processor`";
|
|
41
|
-
|
|
38
|
+
doc /* An ARINC 653 partition. partitionBudget is the guaranteed time and memory; isolationMechanism is what enforces it. */
|
|
42
39
|
}
|
|
43
40
|
part aadlCorrProcessor : CorrespondenceRule {
|
|
44
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-004"; }
|
|
45
|
-
attribute :>> name = "ProcessorCorrespondence";
|
|
41
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-004"; :>> label = "ProcessorCorrespondence"; }
|
|
46
42
|
attribute :>> ruleExpression = "memo_architecture_realization_physical::ProcessingNode <-> AADL component category `processor`";
|
|
47
43
|
}
|
|
48
44
|
part aadlCorrMemory : CorrespondenceRule {
|
|
49
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-005"; }
|
|
50
|
-
attribute :>> name = "MemoryCorrespondence";
|
|
45
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-005"; :>> label = "MemoryCorrespondence"; }
|
|
51
46
|
attribute :>> ruleExpression = "memo_architecture_realization_physical::MemoryDevice <-> AADL component category `memory`";
|
|
52
47
|
}
|
|
53
48
|
part aadlCorrBus : CorrespondenceRule {
|
|
54
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-006"; }
|
|
55
|
-
attribute :>> name = "BusCorrespondence";
|
|
49
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-006"; :>> label = "BusCorrespondence"; }
|
|
56
50
|
attribute :>> ruleExpression = "memo_architecture_implementation_hardware_electrical::NetworkMedium <-> AADL component category `bus`";
|
|
57
51
|
}
|
|
58
52
|
part aadlCorrSystem : CorrespondenceRule {
|
|
59
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-007"; }
|
|
60
|
-
attribute :>> name = "SystemCorrespondence";
|
|
53
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-007"; :>> label = "SystemCorrespondence"; }
|
|
61
54
|
attribute :>> ruleExpression = "memo_architecture_logical_structure::System <-> AADL component category `system`";
|
|
62
|
-
|
|
55
|
+
doc /* AADL's system is the composition unit, which is MEMO's logical System rather than any runtime element. */
|
|
63
56
|
}
|
|
64
57
|
|
|
65
58
|
// ── Bindings. AADL's analytic power is that everything is bound to
|
|
66
59
|
// something, and the binding is where latency, bandwidth, and fault
|
|
67
60
|
// propagation accrue. MEMO has all three (plan C1). ────────────────────
|
|
68
61
|
part aadlCorrProcessorBinding : CorrespondenceRule {
|
|
69
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-010"; }
|
|
70
|
-
attribute :>> name = "ActualProcessorBindingCorrespondence";
|
|
62
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-010"; :>> label = "ActualProcessorBindingCorrespondence"; }
|
|
71
63
|
attribute :>> ruleExpression = "memo_architecture_realization_deployment::DeploysTo <-> AADL property `Actual_Processor_Binding`";
|
|
72
64
|
}
|
|
73
65
|
part aadlCorrMemoryBinding : CorrespondenceRule {
|
|
74
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-011"; }
|
|
75
|
-
attribute :>> name = "ActualMemoryBindingCorrespondence";
|
|
66
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-011"; :>> label = "ActualMemoryBindingCorrespondence"; }
|
|
76
67
|
attribute :>> ruleExpression = "memo_architecture_realization_deployment::MemoryBinding <-> AADL property `Actual_Memory_Binding`";
|
|
77
68
|
}
|
|
78
69
|
part aadlCorrConnectionBinding : CorrespondenceRule {
|
|
79
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-012"; }
|
|
80
|
-
attribute :>> name = "ActualConnectionBindingCorrespondence";
|
|
70
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-012"; :>> label = "ActualConnectionBindingCorrespondence"; }
|
|
81
71
|
attribute :>> ruleExpression = "memo_architecture_realization_deployment::ConnectionBinding <-> AADL property `Actual_Connection_Binding`";
|
|
82
|
-
|
|
72
|
+
doc /* The bound element is the ComponentExchange, because the exchange is what owns the budget the medium spends. */
|
|
83
73
|
}
|
|
84
74
|
|
|
85
75
|
// ── Ports and flows ─────────────────────────────────────────────────
|
|
86
76
|
part aadlCorrPortCategory : CorrespondenceRule {
|
|
87
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-020"; }
|
|
88
|
-
attribute :>> name = "PortCategoryCorrespondence";
|
|
77
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-020"; :>> label = "PortCategoryCorrespondence"; }
|
|
89
78
|
attribute :>> ruleExpression = "memo_core_enumerations::PortCategoryKind (data | 'event' | eventData) <-> AADL `data port` | `event port` | `event data port`";
|
|
90
|
-
|
|
79
|
+
doc /* Determines whether a missed deadline loses a sample or grows a queue — two failure modes with two mitigations. */
|
|
91
80
|
}
|
|
92
81
|
part aadlCorrFlowSpec : CorrespondenceRule {
|
|
93
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-021"; }
|
|
94
|
-
attribute :>> name = "FlowSpecificationCorrespondence";
|
|
82
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-021"; :>> label = "FlowSpecificationCorrespondence"; }
|
|
95
83
|
attribute :>> ruleExpression = "memo_architecture_realization_deployment::FlowSpecification (FlowSpecKind source | sink | path) <-> AADL `flow source` | `flow sink` | `flow path`";
|
|
96
84
|
}
|
|
97
85
|
part aadlCorrEndToEndFlow : CorrespondenceRule {
|
|
98
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-022"; }
|
|
99
|
-
attribute :>> name = "EndToEndFlowCorrespondence";
|
|
86
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-022"; :>> label = "EndToEndFlowCorrespondence"; }
|
|
100
87
|
attribute :>> ruleExpression = "memo_architecture_realization_deployment::EndToEndFlow <-> AADL `end to end flow`";
|
|
101
88
|
}
|
|
102
89
|
|
|
103
90
|
// ── Properties. AADL's property sets are the technology-specific half of
|
|
104
91
|
// the language; these are the ones MEMO already carries by another name.
|
|
105
92
|
part aadlCorrPeriod : CorrespondenceRule {
|
|
106
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-030"; }
|
|
107
|
-
attribute :>> name = "PeriodCorrespondence";
|
|
93
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-030"; :>> label = "PeriodCorrespondence"; }
|
|
108
94
|
attribute :>> ruleExpression = "SoftwareComponent.periodMs <-> AADL `Timing_Properties::Period` (ms)";
|
|
109
95
|
}
|
|
110
96
|
part aadlCorrDeadline : CorrespondenceRule {
|
|
111
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-031"; }
|
|
112
|
-
attribute :>> name = "DeadlineCorrespondence";
|
|
97
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-031"; :>> label = "DeadlineCorrespondence"; }
|
|
113
98
|
attribute :>> ruleExpression = "SoftwareComponent.deadlineMs <-> AADL `Timing_Properties::Deadline` (ms)";
|
|
114
99
|
}
|
|
115
100
|
part aadlCorrComputeExecutionTime : CorrespondenceRule {
|
|
116
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-032"; }
|
|
117
|
-
attribute :>> name = "ComputeExecutionTimeCorrespondence";
|
|
101
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-032"; :>> label = "ComputeExecutionTimeCorrespondence"; }
|
|
118
102
|
attribute :>> ruleExpression = "SoftwareComponent.wcetMs <-> upper bound of AADL `Timing_Properties::Compute_Execution_Time` (ms)";
|
|
119
|
-
|
|
103
|
+
doc /* AADL records a range; MEMO records the worst case, which is the bound a schedulability argument uses. */
|
|
120
104
|
}
|
|
121
105
|
part aadlCorrPriority : CorrespondenceRule {
|
|
122
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-033"; }
|
|
123
|
-
attribute :>> name = "PriorityCorrespondence";
|
|
106
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-033"; :>> label = "PriorityCorrespondence"; }
|
|
124
107
|
attribute :>> ruleExpression = "SoftwareComponent.priority <-> AADL `Thread_Properties::Priority`";
|
|
125
108
|
}
|
|
126
109
|
part aadlCorrSchedulingProtocol : CorrespondenceRule {
|
|
127
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-034"; }
|
|
128
|
-
attribute :>> name = "SchedulingProtocolCorrespondence";
|
|
110
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-034"; :>> label = "SchedulingProtocolCorrespondence"; }
|
|
129
111
|
attribute :>> ruleExpression = "SoftwareComponent.schedulingPolicy <-> AADL `Deployment_Properties::Scheduling_Protocol`";
|
|
130
112
|
}
|
|
131
113
|
part aadlCorrLatency : CorrespondenceRule {
|
|
132
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-035"; }
|
|
133
|
-
attribute :>> name = "LatencyCorrespondence";
|
|
114
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-035"; :>> label = "LatencyCorrespondence"; }
|
|
134
115
|
attribute :>> ruleExpression = "EndToEndFlow.latencyBudgetMs <-> AADL `Communication_Properties::Latency` upper bound (ms)";
|
|
135
116
|
}
|
|
136
117
|
part aadlCorrBandwidth : CorrespondenceRule {
|
|
137
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-036"; }
|
|
138
|
-
attribute :>> name = "BandwidthCorrespondence";
|
|
118
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-036"; :>> label = "BandwidthCorrespondence"; }
|
|
139
119
|
attribute :>> ruleExpression = "ConnectionBinding.allocatedBandwidth <-> AADL `Communication_Properties::Bandwidth_Budget`";
|
|
140
120
|
}
|
|
141
121
|
|
|
142
122
|
// ── Where the correspondence stops ──────────────────────────────────
|
|
143
123
|
part aadlCorrNoCounterpart : CorrespondenceRule {
|
|
144
|
-
@MemoIdentity { :>> providedId = "EXT-AADL-C-090"; }
|
|
145
|
-
attribute :>> name = "NoCounterpartNote";
|
|
124
|
+
@MemoIdentity { :>> providedId = "EXT-AADL-C-090"; :>> label = "NoCounterpartNote"; }
|
|
146
125
|
attribute :>> ruleExpression = "no correspondence: AADL `subprogram`, `device`, `abstract`; MEMO's five assurance disciplines";
|
|
147
|
-
|
|
126
|
+
doc /* Recorded so the gap is a stated boundary of the profile rather than an omission a reader has to discover. */
|
|
148
127
|
}
|
|
149
128
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/example-extension-clinical'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.1
|
|
11
11
|
description: Example methodology extension for clinical-procedure vocabulary
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-cloud'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.1
|
|
11
11
|
description: Networked services and managed data stores
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-container'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.1
|
|
11
11
|
description: OCI container images and container runtimes as deployment content
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-messaging'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.1
|
|
11
11
|
description: Publish/subscribe messaging — topics, brokers, and delivery semantics
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -28,7 +28,7 @@ package memo_extension_messaging {
|
|
|
28
28
|
// Message/payload definition. A named topic is an item usage of a concrete
|
|
29
29
|
// message definition; the definition states the schema, while the usage
|
|
30
30
|
// supplies the deployed topic identity.
|
|
31
|
-
item def MessagingMessage specializes
|
|
31
|
+
item def MessagingMessage specializes DataItem {
|
|
32
32
|
attribute messageSchema : String;
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -52,7 +52,7 @@ package memo_extension_messaging {
|
|
|
52
52
|
interface def MessagingTopicInterface specializes SoftwareInterface {
|
|
53
53
|
end publisher : MessagingPublisher :>> source;
|
|
54
54
|
end subscriber : MessagingSubscriber :>> target;
|
|
55
|
-
flow of MessagingMessage from publisher.payload to subscriber.payload;
|
|
55
|
+
flow messagingMessageFlow of MessagingMessage from publisher.payload to subscriber.payload;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
part def MessagingBroker specializes SoftwareComponent {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-ros'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.1
|
|
11
11
|
description: ROS 2 nodes, messages, topic/service/action interfaces, QoS, and containerized deployment
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|