@memoarchitect/ontology 0.12.1 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -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 -358
- 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 -91
- 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 +675 -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 +7 -29
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +12 -36
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +13 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +388 -0
- 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 +27 -36
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +8 -21
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +17 -65
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +23 -32
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +9 -22
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +7 -22
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +18 -34
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +2 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +18 -42
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +11 -24
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +9 -36
- package/examples/sysml-diagram-samples/model/methodology/project.sysml +40 -0
- 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 +51 -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 +4 -5
- package/src/viewpoints/context/context_viewpoint.sysml +4 -5
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -5
- package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +3 -5
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -5
- 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 +4 -5
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -5
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
- package/src/viewpoints/physical/physical_viewpoint.sysml +4 -5
- 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 +4 -5
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
- package/src/viewpoints/risk/risk_viewpoint.sysml +4 -5
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
- package/src/viewpoints/software/software_viewpoint.sysml +4 -5
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
- package/src/viewpoints/{definitions → stakeholders_concerns}/memo_stakeholders_concerns.sysml +45 -36
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -5
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +4 -5
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -5
- 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/project.sysml +0 -26
- 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
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.0
|
|
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.0
|
|
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.0
|
|
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.0
|
|
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.0
|
|
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.0
|
|
11
11
|
description: ROS 2 nodes, messages, topic/service/action interfaces, QoS, and containerized deployment
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,21 +7,24 @@
|
|
|
7
7
|
// relation. `BuildsInto`, `DeploysTo`, and `ProvidesEnvironment` are reused
|
|
8
8
|
// exactly as the base declares them.
|
|
9
9
|
//
|
|
10
|
-
// Composition is by
|
|
11
|
-
//
|
|
12
|
-
// `
|
|
13
|
-
//
|
|
14
|
-
//
|
|
10
|
+
// Composition is by import. ROS builds on the messaging and container
|
|
11
|
+
// extensions and imports them PUBLICLY, so a project that imports
|
|
12
|
+
// `memo_extension_ros` has all three: their definitions are visible and their
|
|
13
|
+
// packages are selected. The dependency is stated once, here, and the KPAR
|
|
14
|
+
// build reads the same lines to record it. ROS communication specializes
|
|
15
|
+
// native MEMO item, port, and interface families; it does not invent
|
|
16
|
+
// publish/subscribe relations.
|
|
15
17
|
package memo_extension_ros {
|
|
16
18
|
private import ScalarValues::*;
|
|
17
19
|
|
|
18
20
|
private import memo_core_common::*;
|
|
21
|
+
private import memo_core_enumerations::*;
|
|
19
22
|
private import memo_architecture_functional_behavior::*;
|
|
20
23
|
private import memo_architecture_logical_interfaces::*;
|
|
21
24
|
private import memo_architecture_implementation_software_structure::*;
|
|
22
25
|
private import memo_architecture_implementation_software_runtime::*;
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
public import memo_extension_messaging::*;
|
|
27
|
+
public import memo_extension_container::*;
|
|
25
28
|
|
|
26
29
|
// ── Quality of service ──────────────────────────────────────────────
|
|
27
30
|
//
|
|
@@ -33,13 +36,6 @@ package memo_extension_ros {
|
|
|
33
36
|
// between a publisher and a subscriber, and read by a tool; a property bag
|
|
34
37
|
// cannot. `PropertySet` is deleted in this session for that reason.
|
|
35
38
|
|
|
36
|
-
// ROS 2 RELIABLE resends until delivery; BEST_EFFORT does not. This is
|
|
37
|
-
// the delivery guarantee, so it maps onto MessagingDeliveryKind:
|
|
38
|
-
// bestEffort is atMostOnce, reliable is atLeastOnce.
|
|
39
|
-
enum def RosReliabilityKind {
|
|
40
|
-
enum bestEffort;
|
|
41
|
-
enum reliable;
|
|
42
|
-
}
|
|
43
39
|
// TRANSIENT_LOCAL replays the last samples to a late-joining subscriber;
|
|
44
40
|
// VOLATILE does not. The difference decides whether a node that restarts
|
|
45
41
|
// sees the current state or waits for the next publication — which is a
|
|
@@ -49,8 +45,12 @@ package memo_extension_ros {
|
|
|
49
45
|
enum transientLocal;
|
|
50
46
|
}
|
|
51
47
|
|
|
48
|
+
// RELIABILITY is not in the profile. ROS 2 RELIABLE resends until delivery
|
|
49
|
+
// and BEST_EFFORT does not, which is the delivery guarantee the port
|
|
50
|
+
// already states as `deliverySemantics`: bestEffort is atMostOnce and
|
|
51
|
+
// reliable is atLeastOnce. Stating it a second time here let one port
|
|
52
|
+
// say both and disagree.
|
|
52
53
|
attribute def RosQosProfile {
|
|
53
|
-
attribute reliability : RosReliabilityKind;
|
|
54
54
|
attribute durability : RosDurabilityKind;
|
|
55
55
|
// The QoS contract: a sample is expected at least this often.
|
|
56
56
|
attribute deadlineMs : Real;
|
|
@@ -96,6 +96,8 @@ package memo_extension_ros {
|
|
|
96
96
|
interface def RosTopicInterface specializes MessagingTopicInterface {
|
|
97
97
|
end rosPublisher : RosPublisher :>> publisher;
|
|
98
98
|
end rosSubscriber : RosSubscriber :>> subscriber;
|
|
99
|
+
// A topic goes publisher to subscriber, always.
|
|
100
|
+
attribute :>> direction default DirectionKind::output;
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
// ── Services: one correlated request/reply contract ────────────────
|
|
@@ -106,7 +108,6 @@ package memo_extension_ros {
|
|
|
106
108
|
out item request : RosServiceRequest;
|
|
107
109
|
in item response : RosServiceResponse;
|
|
108
110
|
attribute serviceName : String;
|
|
109
|
-
attribute timeoutMs : Real;
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
port def RosServiceServer specializes SoftwarePort {
|
|
@@ -118,8 +119,8 @@ package memo_extension_ros {
|
|
|
118
119
|
interface def RosServiceInterface specializes SoftwareInterface {
|
|
119
120
|
end client : RosServiceClient :>> source;
|
|
120
121
|
end server : RosServiceServer :>> target;
|
|
121
|
-
flow of RosServiceRequest from client.request to server.request;
|
|
122
|
-
flow of RosServiceResponse from server.response to client.response;
|
|
122
|
+
flow rosServiceRequestFlow of RosServiceRequest from client.request to server.request;
|
|
123
|
+
flow rosServiceResponseFlow of RosServiceResponse from server.response to client.response;
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
// ── Actions: long-running goal protocol ─────────────────────────────
|
|
@@ -156,12 +157,12 @@ package memo_extension_ros {
|
|
|
156
157
|
interface def RosActionInterface specializes SoftwareInterface {
|
|
157
158
|
end client : RosActionClient :>> source;
|
|
158
159
|
end server : RosActionServer :>> target;
|
|
159
|
-
flow of RosActionGoal from client.goal to server.goal;
|
|
160
|
-
flow of RosActionAcceptance from server.acceptance to client.acceptance;
|
|
161
|
-
flow of RosActionFeedback from server.feedback to client.feedback;
|
|
162
|
-
flow of RosActionCancel from client.cancel to server.cancel;
|
|
163
|
-
flow of RosActionResult from server.result to client.result;
|
|
164
|
-
flow of RosActionStatus from server.actionStatus to client.actionStatus;
|
|
160
|
+
flow rosActionGoalFlow of RosActionGoal from client.goal to server.goal;
|
|
161
|
+
flow rosActionAcceptanceFlow of RosActionAcceptance from server.acceptance to client.acceptance;
|
|
162
|
+
flow rosActionFeedbackFlow of RosActionFeedback from server.feedback to client.feedback;
|
|
163
|
+
flow rosActionCancelFlow of RosActionCancel from client.cancel to server.cancel;
|
|
164
|
+
flow rosActionResultFlow of RosActionResult from server.result to client.result;
|
|
165
|
+
flow rosActionStatusFlow of RosActionStatus from server.actionStatus to client.actionStatus;
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
abstract state def RosActionExecution specializes MemoState;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Skeleton for a new MEMO extension. Copy the directory, rename the packages,
|
|
2
|
+
// and replace the prefix.
|
|
3
|
+
//
|
|
4
|
+
// Two conventions this file follows and every extension must (extensions/README.md):
|
|
5
|
+
//
|
|
6
|
+
// 1. Every definition an extension declares is prefixed with the PascalCase
|
|
7
|
+
// form of the extension's directory name — `template/` gives `Template`.
|
|
8
|
+
// Extension names share one flat namespace with the base and with each
|
|
9
|
+
// other, so the prefix is what keeps two independent extensions from both
|
|
10
|
+
// declaring `Node`.
|
|
11
|
+
// 2. A relation an extension declares specializes a base relation. It never
|
|
12
|
+
// roots independently.
|
|
13
|
+
//
|
|
14
|
+
// 3. This package is the extension's facade: the one package a project
|
|
15
|
+
// imports. It publicly imports every other package the extension ships
|
|
16
|
+
// (`public import memo_extension_template_<sub>::*;`) and every extension
|
|
17
|
+
// it builds on (`public import memo_extension_<other>::*;`). A public
|
|
18
|
+
// import is what passes those packages on, so importing this one selects
|
|
19
|
+
// the whole extension, and the KPAR build reads the same imports to
|
|
20
|
+
// record the dependency. There is no list of package names to keep
|
|
21
|
+
// beside it.
|
|
22
|
+
package memo_extension_template {
|
|
23
|
+
// Definitions go here, each prefixed `Template`; sub-packages and the
|
|
24
|
+
// extensions this one builds on are publicly imported here.
|
|
25
|
+
}
|
package/memo.manifest.yaml
CHANGED
|
@@ -7,13 +7,7 @@ packages:
|
|
|
7
7
|
init:
|
|
8
8
|
defaultExtends: "@memoarchitect/methodology-default"
|
|
9
9
|
rootImport: "memo"
|
|
10
|
-
|
|
11
|
-
templates:
|
|
12
|
-
default: ./templates/default
|
|
13
|
-
samd: ./templates/samd
|
|
14
|
-
connected-device: ./templates/connected-device
|
|
15
|
-
monitoring-device: ./templates/monitoring-device
|
|
16
|
-
infusion-pump: ./templates/infusion-pump
|
|
10
|
+
template: ./templates/default
|
|
17
11
|
examples:
|
|
18
12
|
gpca: ./examples/gpca-pump
|
|
19
13
|
standard-sysml-diagrams: ./examples/sysml-diagram-samples
|
|
@@ -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/methodology-default'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.0
|
|
11
11
|
description: "MEMO default medical-device methodology \u2014 selects viewpoints/views/DHF documents from @memoarchitect/ontology and adds rules, gates, patterns, profiles, and workflow."
|
|
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/methodology-gpca'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.0
|
|
11
11
|
description: "GPCA infusion pump methodology \u2014 subtraction-based tailoring of @memoarchitect/methodology-default for the non-networked prototype variant. Excludes cybersecurity and SOUP."
|
|
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/ontology'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.0
|
|
11
11
|
description: "MEMO \u2014 the single canonical medical-device ontology: core semantics, the Arcadia-inspired architecture layers (context, requirements, behavior, structure, interfaces, risk, cybersecurity,\
|
|
12
12
|
\ assurance, \u2026), compliance, viewpoints, views, and invariant rules. One namespace (memo::), one src/ tree."
|
|
13
13
|
license: MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memoarchitect/ontology",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"packageManager": "pnpm@9.15.0",
|
|
5
5
|
"description": "MEMO — Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
|
|
6
6
|
"scripts": {
|
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
"lint": "node ../memo-tools/packages/tools/lib/bin/memo.js dhf lint",
|
|
10
10
|
"test": "node --test test/package.test.mjs",
|
|
11
11
|
"docs:api": "node scripts/generate-sysml-api.mjs",
|
|
12
|
+
"docs:figures": "node scripts/generate-ontology-figures.mjs",
|
|
12
13
|
"docs:diagrams": "node scripts/generate-reference-diagrams.mjs",
|
|
13
|
-
"docs:serve": "node scripts/generate-reference-diagrams.mjs && node scripts/generate-sysml-api.mjs && node scripts/check-reference-coverage.mjs && python3 -m mkdocs serve",
|
|
14
|
-
"docs:build": "node scripts/generate-reference-diagrams.mjs && node scripts/generate-sysml-api.mjs && node scripts/check-reference-coverage.mjs && python3 -m mkdocs build --strict",
|
|
14
|
+
"docs:serve": "node scripts/generate-reference-diagrams.mjs && node scripts/generate-sysml-api.mjs && node scripts/generate-ontology-figures.mjs && node scripts/check-reference-coverage.mjs && python3 -m mkdocs serve",
|
|
15
|
+
"docs:build": "node scripts/generate-reference-diagrams.mjs && node scripts/generate-sysml-api.mjs && node scripts/generate-ontology-figures.mjs && node scripts/check-reference-coverage.mjs && python3 -m mkdocs build --strict",
|
|
15
16
|
"docs:check-reference": "node scripts/check-reference-coverage.mjs",
|
|
16
17
|
"version:sync": "node scripts/sync-version.mjs",
|
|
17
18
|
"version:check": "node scripts/sync-version.mjs --check"
|
|
@@ -71,6 +72,7 @@
|
|
|
71
72
|
"src/memo_namespaces.sysml",
|
|
72
73
|
"templates/",
|
|
73
74
|
"examples/",
|
|
74
|
-
"extensions/"
|
|
75
|
+
"extensions/",
|
|
76
|
+
"stage1/"
|
|
75
77
|
]
|
|
76
78
|
}
|
|
@@ -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/medical-modeling-profile'
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.15.0
|
|
11
11
|
description: Closure rules and viewpoints for medical device modeling
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -8,11 +8,18 @@ package memo_architecture_decisions {
|
|
|
8
8
|
private import memo_artifacts_core::*;
|
|
9
9
|
part def DesignDecision specializes MemoPart {
|
|
10
10
|
attribute decisionKind : String;
|
|
11
|
-
attribute alternatives : String;
|
|
12
|
-
attribute selectedOption : String;
|
|
13
11
|
attribute decisionStatus : DesignDecisionStatusKind;
|
|
14
12
|
}
|
|
15
13
|
|
|
14
|
+
// The options a decision weighs and the one it chose are links to variants, not
|
|
15
|
+
// strings: `#Alternative dependency from <decision> to <variant>, <variant>;` and
|
|
16
|
+
// `#Selected dependency from <decision> to <variant>;`. A variant is a SysML
|
|
17
|
+
// `variant` (SysML-textual-bnf.kebnf:254-256) of a variation point, so a trade
|
|
18
|
+
// study points at the thing that is being traded. Both are typed dependencies
|
|
19
|
+
// (memo_core_relationships::MemoTypedDependency).
|
|
20
|
+
metadata def Alternative :> MemoTypedDependency;
|
|
21
|
+
metadata def Selected :> MemoTypedDependency;
|
|
22
|
+
|
|
16
23
|
connection def DecisionRecordedInADR :> MemoRelationship {
|
|
17
24
|
end decision : DesignDecision :>> source;
|
|
18
25
|
end adr : ADRArtifact :>> target;
|