@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
|
@@ -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.1
|
|
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.1
|
|
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.1
|
|
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.1",
|
|
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.1
|
|
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;
|
|
@@ -40,21 +40,34 @@ package memo_architecture_functional_behavior {
|
|
|
40
40
|
// records so the two are not confused.
|
|
41
41
|
metadata def TransitionRecord {
|
|
42
42
|
attribute id : String;
|
|
43
|
-
attribute name : String;
|
|
44
43
|
attribute trigger : String;
|
|
45
44
|
attribute guardSummary : String;
|
|
46
45
|
attribute effectSummary : String;
|
|
47
46
|
attribute sourceReference : String;
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
// A
|
|
51
|
-
//
|
|
52
|
-
|
|
49
|
+
// A behavioural obligation, such as an invariant, transition rule,
|
|
50
|
+
// temporal claim, assumption, or guarantee. It is a `requirement def`
|
|
51
|
+
// because that is what it is: a claim the design must meet and a
|
|
52
|
+
// verification case can `verify`. It was a `part def` under
|
|
53
|
+
// VerifiableElement, which made a property a structural thing and left
|
|
54
|
+
// native `verify` unable to name it.
|
|
55
|
+
requirement def BehaviorProperty :> MemoRequirementElement {
|
|
53
56
|
attribute propertyKind : BehaviorPropertyKind;
|
|
54
57
|
attribute languageKind : PropertyLanguageKind;
|
|
55
58
|
attribute formalExpression : String;
|
|
56
59
|
}
|
|
57
|
-
|
|
60
|
+
// An assume/guarantee contract on one component, AGREE's shape one to one:
|
|
61
|
+
// the component is the `subject`, each assumption an `assume` member and
|
|
62
|
+
// each guarantee a `require` member naming a BehaviorProperty. The subject
|
|
63
|
+
// replaces `contractScope : String`, which named the component in prose
|
|
64
|
+
// and could not be navigated.
|
|
65
|
+
//
|
|
66
|
+
// This is not the procurement contract of a deliverable; that is a
|
|
67
|
+
// different definition.
|
|
68
|
+
requirement def Contract :> MemoRequirementElement {
|
|
69
|
+
subject component : MemoPart;
|
|
70
|
+
}
|
|
58
71
|
// `part def PropertySet specializes VerifiableElement { attribute
|
|
59
72
|
// propertySetScope : String; }` stood here and is DELETED (plan C3,
|
|
60
73
|
// open question §14.6). It was AADL's property-set idea imported as a
|
|
@@ -70,7 +83,12 @@ package memo_architecture_functional_behavior {
|
|
|
70
83
|
// annotate a BASE element rather than declare its own type, the SysML-
|
|
71
84
|
// native answer is `metadata def` + `Metaobjects::SemanticMetadata`, which
|
|
72
85
|
// is what every MEMO relation already carries since A4.
|
|
73
|
-
|
|
86
|
+
// An `action def`: every field it carries — what it does, what goes in and
|
|
87
|
+
// out, its worst-case execution time — describes behaviour. It was a
|
|
88
|
+
// `part def specializes MemoPart`, the same A0 residue `FunctionalFlow`
|
|
89
|
+
// carried, and a behaviour cannot specialize a structure, so nothing could
|
|
90
|
+
// have performed one.
|
|
91
|
+
action def ActivityAction specializes FunctionalAction {
|
|
74
92
|
attribute actionKind : ActionKind;
|
|
75
93
|
attribute inputSummary : String;
|
|
76
94
|
attribute outputSummary : String;
|
|
@@ -84,7 +102,9 @@ package memo_architecture_functional_behavior {
|
|
|
84
102
|
}
|
|
85
103
|
// UI scenarios are OperativeScenario usages with scenarioKind `ui`.
|
|
86
104
|
|
|
87
|
-
|
|
105
|
+
// A timing budget is an obligation on what it measures, so it is a
|
|
106
|
+
// requirement like BehaviorProperty.
|
|
107
|
+
requirement def TimingConstraint :> MemoRequirementElement {
|
|
88
108
|
attribute constraintKind : TimingConstraintKind;
|
|
89
109
|
attribute minMs : String;
|
|
90
110
|
attribute maxMs : String;
|
|
@@ -27,6 +27,23 @@
|
|
|
27
27
|
// project argues in — therapy, alarm, platform, protection. A function can be
|
|
28
28
|
// `sense` in the `protection` category, and a safety case reasons about both.
|
|
29
29
|
//
|
|
30
|
+
// ─── A functional exchange is a flow ─────────────────────────────────────
|
|
31
|
+
//
|
|
32
|
+
// `FunctionalExchange` is an `abstract flow def`, and an exchange is a typed
|
|
33
|
+
// named `flow` between function parameters: the edge IS the exchange. It was
|
|
34
|
+
// a `part def` beside a separate `flow`, with its ends stored as
|
|
35
|
+
// `sourceFunction`/`targetFunction` refs, because a flow could not be the
|
|
36
|
+
// target of an allocation or a trace. A named flow now carries a qualified id
|
|
37
|
+
// that `allocate`, `satisfy` and the rest resolve, so the part reached no
|
|
38
|
+
// rule, query or diagram and existed only to be kept in step with its edge.
|
|
39
|
+
//
|
|
40
|
+
// It is `abstract` because a flow definition specializes the association
|
|
41
|
+
// `Flows::MessageAction`, and a concrete association must declare its two
|
|
42
|
+
// ends (`association-related-types`); here the ends are the usage's
|
|
43
|
+
// parameters. A usage says what it carries through the item type of those
|
|
44
|
+
// parameters, not with `of`: `of` and `: FunctionalExchange` together declare
|
|
45
|
+
// a second `payload`, and a SysML v2 compiler rejects the pair.
|
|
46
|
+
//
|
|
30
47
|
// ─── System function vs. component function ──────────────────────────────
|
|
31
48
|
//
|
|
32
49
|
// ARCADIA's functional chain does not stop at the system boundary: system
|
|
@@ -80,34 +97,20 @@ package memo_architecture_functional_functions {
|
|
|
80
97
|
// component is a responsibility nobody has accepted.
|
|
81
98
|
action def ComponentFunction specializes MemoFunction;
|
|
82
99
|
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
// The reason is MEMO's grammar, NOT the language — the earlier wording here
|
|
88
|
-
// said "attributes that a flow usage cannot own", and that was a false
|
|
89
|
-
// claim about SysML v2. The standard's `FlowUsage` is
|
|
90
|
-
// `OccurrenceUsagePrefix 'flow' FlowDeclaration DefinitionBody`
|
|
91
|
-
// (SysML-textual-bnf.kebnf:829), so a conforming flow usage takes a name
|
|
92
|
-
// from its `UsageDeclaration` and owns attributes in its body like any
|
|
93
|
-
// other usage. MEMO's own production is
|
|
94
|
-
// `'flow' 'of' itemType 'from' … 'to' … ';'` — no name, no body — so a
|
|
95
|
-
// MEMO flow can carry neither an `id` nor a latency budget, and nothing
|
|
96
|
-
// can refer to it. Every MEMO element rests on the identification core in
|
|
97
|
-
// memo_core_common, and an anonymous attribute-less edge cannot join it.
|
|
100
|
+
// A transfer between two functions, carrying the budgets and assurance
|
|
101
|
+
// attributes a reader needs on the transfer itself. Authored as a typed
|
|
102
|
+
// named flow from an `out` parameter of one function to an `in` parameter
|
|
103
|
+
// of another:
|
|
98
104
|
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
|
|
105
|
+
// flow lfFlowCommand : FunctionalExchange
|
|
106
|
+
// from fnManageInfusion.flowCommandOut to fnCommandPump.flowCommandIn {
|
|
107
|
+
// attribute :>> latencyBudgetMs = 20.0;
|
|
108
|
+
// }
|
|
109
|
+
abstract flow def FunctionalExchange {
|
|
103
110
|
attribute flowKind : FlowKind;
|
|
104
111
|
attribute latencyBudgetMs : Real;
|
|
105
112
|
attribute staleAfterMs : Real;
|
|
106
113
|
attribute integrityLevel : String;
|
|
107
|
-
// MemoFunction, not SystemFunction: an exchange between two component
|
|
108
|
-
// functions is the ordinary case once the chain is decomposed.
|
|
109
|
-
ref sourceFunction : MemoFunction[0..1];
|
|
110
|
-
ref targetFunction : MemoFunction[0..1];
|
|
111
114
|
}
|
|
112
115
|
|
|
113
116
|
// A system function enables operational work; it does not perform it.
|
|
@@ -132,14 +135,25 @@ package memo_architecture_functional_functions {
|
|
|
132
135
|
attribute safetyRelevant : Boolean;
|
|
133
136
|
attribute securityRelevant : Boolean;
|
|
134
137
|
}
|
|
135
|
-
action def FunctionalFlowStep
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
// A step is not a definition. `action def FunctionalFlowStep` stood here
|
|
139
|
+
// with `ref function`, `ref exchange` and `ref item exchangedItem`: a
|
|
140
|
+
// wrapper that pointed at the function it stood for. A step is that
|
|
141
|
+
// function performed at one position in the flow, which SysML says
|
|
142
|
+
// directly as an action usage nested in the flow that subsets it:
|
|
143
|
+
//
|
|
144
|
+
// action fcPatientBolus : FunctionalFlow {
|
|
145
|
+
// action fcsBolusCommand :> fnManageInfusion { out item flowCommand :> cdFlowCommand; }
|
|
146
|
+
// action fcsBolusActuate :> fnCommandPump { in item flowCommand :> cdFlowCommand; }
|
|
147
|
+
// first fcsBolusCommand then fcsBolusActuate;
|
|
148
|
+
// flow from fcsBolusCommand.flowCommand to fcsBolusActuate.flowCommand;
|
|
149
|
+
// }
|
|
150
|
+
//
|
|
151
|
+
// Each position keeps its own identity and evidence scope. The exchanged
|
|
152
|
+
// item is a directed parameter of the step, and the exchange a `flow`
|
|
153
|
+
// between two steps' parameters. A step's parameters redefine its
|
|
154
|
+
// function's by position.
|
|
140
155
|
|
|
141
156
|
// `InvolvesFunction` is native `perform` (R10-S6): a `FunctionalFlow`
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
// step chain performs its functions directly.
|
|
157
|
+
// performs the function each of its steps subsets, and a flow with no
|
|
158
|
+
// steps performs its functions directly.
|
|
145
159
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// The functional (system) analysis layer as one package.
|
|
2
|
+
//
|
|
3
|
+
// A layer is a namespace of packages: every package whose name begins
|
|
4
|
+
// `memo_architecture_functional_`. This package publicly imports each of them, so
|
|
5
|
+
// `public import memo_architecture_functional::*;` in a methodology's package selects the whole
|
|
6
|
+
// layer, and the same import in any package makes the layer's definitions
|
|
7
|
+
// visible. It declares nothing of its own. test/package.test.mjs holds the list
|
|
8
|
+
// to exactly the packages in the namespace, so a package added to the layer is
|
|
9
|
+
// selected with it.
|
|
10
|
+
package memo_architecture_functional {
|
|
11
|
+
public import memo_architecture_functional_behavior::*;
|
|
12
|
+
public import memo_architecture_functional_constraints::*;
|
|
13
|
+
public import memo_architecture_functional_functions::*;
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// The implementation (software, hardware, user interface) layer as one package.
|
|
2
|
+
//
|
|
3
|
+
// A layer is a namespace of packages: every package whose name begins
|
|
4
|
+
// `memo_architecture_implementation_`. This package publicly imports each of them, so
|
|
5
|
+
// `public import memo_architecture_implementation::*;` in a methodology's package selects the whole
|
|
6
|
+
// layer, and the same import in any package makes the layer's definitions
|
|
7
|
+
// visible. It declares nothing of its own. test/package.test.mjs holds the list
|
|
8
|
+
// to exactly the packages in the namespace, so a package added to the layer is
|
|
9
|
+
// selected with it.
|
|
10
|
+
package memo_architecture_implementation {
|
|
11
|
+
public import memo_architecture_implementation_hardware_common::*;
|
|
12
|
+
public import memo_architecture_implementation_hardware_electrical::*;
|
|
13
|
+
public import memo_architecture_implementation_hardware_fluidic::*;
|
|
14
|
+
public import memo_architecture_implementation_hardware_mechanical::*;
|
|
15
|
+
public import memo_architecture_implementation_hardware_optical::*;
|
|
16
|
+
public import memo_architecture_implementation_hardware_sensing::*;
|
|
17
|
+
public import memo_architecture_implementation_hardware_structure::*;
|
|
18
|
+
public import memo_architecture_implementation_software_runtime::*;
|
|
19
|
+
public import memo_architecture_implementation_software_structure::*;
|
|
20
|
+
public import memo_architecture_implementation_ui::*;
|
|
21
|
+
}
|
|
@@ -78,4 +78,11 @@ package memo_architecture_implementation_software_runtime {
|
|
|
78
78
|
// a component belongs to without claiming to describe it.
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
// A runtime service or process that exists only because an OTS module is
|
|
82
|
+
// deployed. Optional: a library the product links normally needs only the
|
|
83
|
+
// module.
|
|
84
|
+
part def OTSSoftwareComponent specializes SoftwareComponent {
|
|
85
|
+
ref sourceModule : OTSSoftwareModule[0..1];
|
|
86
|
+
}
|
|
87
|
+
|
|
81
88
|
}
|
|
@@ -24,10 +24,9 @@ package memo_architecture_implementation_software_structure {
|
|
|
24
24
|
// software view inherits it rather than re-declaring it: the code view
|
|
25
25
|
// (SoftwareModule), the runtime view (SoftwareComponent), the system, and
|
|
26
26
|
// the user interface (memo_architecture_implementation_ui::UIElement).
|
|
27
|
-
// Structural software decomposition is part-native.
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
// values unambiguous in the model.
|
|
27
|
+
// Structural software decomposition is part-native. The standard's
|
|
28
|
+
// "software item" is this part, not an `item def`: exchanged or stored
|
|
29
|
+
// values are DataItem, below.
|
|
31
30
|
abstract part def SoftwareElement specializes MemoPart {
|
|
32
31
|
attribute safetyClass : SafetyClassKind;
|
|
33
32
|
attribute complexity : ComplexityKind;
|
|
@@ -40,7 +39,8 @@ package memo_architecture_implementation_software_structure {
|
|
|
40
39
|
|
|
41
40
|
// Module-view element (design responsibility). Runtime properties
|
|
42
41
|
// (period, WCET, scheduling) moved to SoftwareComponent.
|
|
43
|
-
// item / unit / package / library / code / firmware
|
|
42
|
+
// item / unit / package / library / code / firmware (IEC 62304). SOUP is
|
|
43
|
+
// a type (SOUPSoftwareModule), not a value here.
|
|
44
44
|
enum def ModuleKind {
|
|
45
45
|
enum 'item';
|
|
46
46
|
enum unit;
|
|
@@ -48,7 +48,6 @@ package memo_architecture_implementation_software_structure {
|
|
|
48
48
|
enum 'library';
|
|
49
49
|
enum code;
|
|
50
50
|
enum firmware;
|
|
51
|
-
enum soup;
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
part def SoftwareModule specializes SoftwareElement {
|
|
@@ -62,12 +61,6 @@ package memo_architecture_implementation_software_structure {
|
|
|
62
61
|
attribute internallyDeveloped : Boolean[0..1];
|
|
63
62
|
attribute firmwareTarget : String[0..1];
|
|
64
63
|
attribute updateMechanism : String[0..1];
|
|
65
|
-
// SOUP (IEC 62304 §8) — set only when moduleKind = soup
|
|
66
|
-
attribute soupVersion : String[0..1];
|
|
67
|
-
attribute soupVendor : String[0..1];
|
|
68
|
-
attribute knownAnomalies : String[0..1];
|
|
69
|
-
attribute riskAcceptance : String[0..1];
|
|
70
|
-
attribute soupClassification : SOUPClassificationKind[0..1];
|
|
71
64
|
}
|
|
72
65
|
|
|
73
66
|
part def Algorithm specializes MemoPart {
|
|
@@ -85,20 +78,68 @@ package memo_architecture_implementation_software_structure {
|
|
|
85
78
|
attribute version : String;
|
|
86
79
|
}
|
|
87
80
|
|
|
88
|
-
//
|
|
89
|
-
|
|
81
|
+
// Data content that may be stored or exchanged through ports. Named
|
|
82
|
+
// DataItem, not SoftwareItem: IEC 62304 uses "software item" for a
|
|
83
|
+
// structural part of a program (a SoftwareElement here), and the item
|
|
84
|
+
// family is the exchanged or stored value.
|
|
85
|
+
abstract item def DataItem specializes MemoItem {
|
|
90
86
|
attribute schemaIdentifier : String;
|
|
91
87
|
attribute schemaVersion : String;
|
|
92
88
|
attribute :>> encoding : String;
|
|
93
89
|
attribute :>> timestampRequired : Boolean;
|
|
94
90
|
}
|
|
95
91
|
|
|
96
|
-
|
|
92
|
+
// SOUP and OTS (IEC 62304 §3.29). The standard's SOUP definition covers
|
|
93
|
+
// off-the-shelf software and also previously developed software that
|
|
94
|
+
// lacks development records, so OTS is the narrower type: every OTS
|
|
95
|
+
// module is SOUP, and SOUP also covers legacy in-house code with no
|
|
96
|
+
// supplier, license or package to record. SOUP is a type, not a
|
|
97
|
+
// module-kind value; the CR-MED-015..017 closure rules apply to it and so
|
|
98
|
+
// to OTS.
|
|
99
|
+
//
|
|
100
|
+
// §8.1.2 (SOUP identification: supplier, version) and §7.1.3 (published
|
|
101
|
+
// anomaly lists) are SOUP obligations, so those attributes sit here; the
|
|
102
|
+
// acquisition identity of a bought or downloaded package sits on
|
|
103
|
+
// OTSSoftwareModule.
|
|
104
|
+
part def SOUPSoftwareModule specializes SoftwareModule {
|
|
105
|
+
attribute supplier : String[0..1];
|
|
106
|
+
attribute version : String[0..1];
|
|
107
|
+
attribute knownAnomalies : String[0..1];
|
|
108
|
+
attribute riskAcceptance : String[0..1];
|
|
109
|
+
attribute soupClassification : SOUPClassificationKind[0..1];
|
|
110
|
+
}
|
|
111
|
+
part def OTSSoftwareModule specializes SOUPSoftwareModule {
|
|
112
|
+
attribute licenseExpression : String;
|
|
113
|
+
attribute packageUrl : String;
|
|
114
|
+
attribute checksum : String;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
enum def SbomFormatKind {
|
|
118
|
+
enum spdx;
|
|
119
|
+
enum cycloneDx;
|
|
120
|
+
enum other;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// An SBOM is a document; its entries are inventory records. An entry
|
|
124
|
+
// names one software element and says what is known about it as shipped.
|
|
125
|
+
// Vulnerabilities, anomalies and risks are separate objects that point at
|
|
126
|
+
// the entry; they are not attributes of the document.
|
|
127
|
+
part def SBOMEntry specializes MemoPart {
|
|
97
128
|
attribute componentName : String;
|
|
98
129
|
attribute version : String;
|
|
99
130
|
attribute supplier : String;
|
|
100
|
-
attribute
|
|
101
|
-
attribute
|
|
131
|
+
attribute licenseExpression : String;
|
|
132
|
+
attribute checksum : String;
|
|
133
|
+
attribute packageUrl : String;
|
|
134
|
+
attribute bomReference : String;
|
|
135
|
+
ref inventoriedElement : SoftwareElement[0..1];
|
|
136
|
+
}
|
|
137
|
+
part def SoftwareBillOfMaterials specializes MemoPart {
|
|
138
|
+
attribute sbomFormat : SbomFormatKind;
|
|
139
|
+
attribute specVersion : String;
|
|
140
|
+
attribute generationTool : String;
|
|
141
|
+
attribute generatedOn : String;
|
|
142
|
+
part sbomEntry : SBOMEntry[0..*];
|
|
102
143
|
}
|
|
103
144
|
|
|
104
145
|
// `ModuleUses` is native `dependency` (R10-S6): write
|
|
@@ -299,7 +299,7 @@ package memo_architecture_implementation_ui {
|
|
|
299
299
|
// `PresentsState` had zero usages anywhere in the tree (R10-S6). Its
|
|
300
300
|
// audited native form, `exhibit state`, does not actually fit: `UIState`
|
|
301
301
|
// is a `part def` with plain string attributes, not a `state def`, and
|
|
302
|
-
//
|
|
302
|
+
// a SysML v2 compiler rejects `exhibit` referencing anything that does not conform to
|
|
303
303
|
// `States::StateAction` ("An exhibit state must reference another
|
|
304
304
|
// state"). Free deletion rather than a migration — nothing referenced
|
|
305
305
|
// it, so nothing to preserve. If `UIState` is ever restructured onto a
|