@memoarchitect/ontology 0.6.5 → 0.8.22
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 +4 -2
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
- package/examples/gpca-pump/model/catalog/project.sysml +26 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
- package/examples/nested-architecture-dsm/README.md +49 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
- package/examples/surgical-robot/model/catalog/project.sysml +24 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
- package/examples/sysml-diagram-samples/README.md +7 -0
- package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
- package/examples/ui-screen-regions/README.md +117 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
- package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
- package/extensions/LICENSES/MIT.txt +19 -0
- package/extensions/README.md +94 -0
- package/extensions/aadl/memo.package.yaml +18 -0
- package/extensions/aadl/src/aadl_extension.sysml +6 -0
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
- package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
- package/extensions/clinical/memo.package.yaml +18 -0
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -0
- package/extensions/cloud/memo.package.yaml +18 -0
- package/extensions/cloud/src/cloud_extension.sysml +44 -0
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
- package/extensions/container/memo.package.yaml +18 -0
- package/extensions/container/src/container_extension.sysml +37 -0
- package/extensions/container/src/methodology/container_methodology.sysml +17 -0
- package/extensions/messaging/memo.package.yaml +18 -0
- package/extensions/messaging/src/messaging_extension.sysml +64 -0
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
- package/extensions/ros/memo.package.yaml +18 -0
- package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
- package/extensions/ros/src/ros_extension.sysml +200 -0
- package/extensions/template/memo.package.yaml +17 -0
- package/extensions/template/src/extension.sysml +37 -0
- package/memo.manifest.yaml +15 -2
- package/methodologies/default/memo.package.yaml +19 -9
- package/methodologies/gpca/memo.package.yaml +18 -9
- package/ontology/memo.package.yaml +23 -8
- package/package.json +6 -6
- package/profile/memo.package.yaml +18 -9
- package/src/architecture/decisions/memo_decisions.sysml +28 -0
- package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +93 -43
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
- package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
- package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
- package/src/architecture/operational/activities/memo_activities.sysml +10 -4
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
- package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
- package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
- package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
- package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
- package/src/artifacts/standards/cfr_21_820.sysml +116 -0
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
- package/src/artifacts/standards/iec_60601_1.sysml +149 -0
- package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
- package/src/artifacts/standards/iec_60812.sysml +51 -0
- package/src/artifacts/standards/iec_62304.sysml +210 -0
- package/src/artifacts/standards/iec_62366_1.sysml +113 -0
- package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
- package/src/artifacts/standards/iso_13485.sysml +113 -0
- package/src/artifacts/standards/iso_14971.sysml +94 -0
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
- package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +2 -2
- package/src/artifacts/templates/dhf/system/sad.md +173 -0
- package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
- package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
- package/src/artifacts/templates/dhf/system/syrs.md +128 -0
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +5 -2
- package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
- package/src/assurance/safety_risk/memo_risk.sysml +78 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
- package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
- package/src/core/annotations/memo_annotations.sysml +96 -0
- package/src/core/common/memo_common.sysml +140 -18
- package/src/core/consistency_rules/consistency_rules.sysml +7 -0
- package/src/core/dimensions/dimensions.sysml +17 -1
- package/src/core/enumerations/memo_enumerations.sysml +101 -20
- package/src/core/methodology_scope/methodology_scope.sysml +7 -15
- package/src/core/relationships/memo_relationships.sysml +199 -194
- package/src/memo_namespaces.sysml +127 -67
- package/src/methodology/core/memo_core.sysml +69 -2
- package/src/methodology/profiles/memo_profiles.sysml +31 -41
- package/src/methodology/workflow/memo_workflow.sysml +7 -2
- package/src/rules/closure/closure_rules.sysml +104 -31
- package/src/rules/coverage/coverage_rules.sysml +4 -256
- package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
- package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
- package/src/rules/ontology/ontology_invariants.sysml +243 -74
- package/src/rules/quantitative/quantitative_rules.sysml +8 -8
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
- package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
- package/src/viewpoints/context/context_viewpoint.sysml +4 -2
- package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
- package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
- package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
- package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
- package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
- package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
- package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
- package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
- package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
- package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
- package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
- package/src/viewpoints/software/software_viewpoint.sysml +3 -1
- package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
- package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
- package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
- package/templates/connected-device/memo.package.yaml +11 -5
- package/templates/connected-device/model/catalog/project.sysml +28 -0
- package/templates/connected-device/syside.toml +1 -1
- package/templates/default/memo.package.yaml +11 -5
- package/templates/default/model/catalog/project.sysml +28 -0
- package/templates/default/syside.toml +1 -1
- package/templates/infusion-pump/memo.package.yaml +11 -5
- package/templates/infusion-pump/model/catalog/project.sysml +28 -0
- package/templates/infusion-pump/syside.toml +1 -1
- package/templates/monitoring-device/memo.package.yaml +11 -5
- package/templates/monitoring-device/model/catalog/project.sysml +28 -0
- package/templates/monitoring-device/syside.toml +1 -1
- package/templates/samd/memo.package.yaml +11 -5
- package/templates/samd/model/catalog/project.sysml +28 -0
- package/templates/samd/syside.toml +1 -1
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
- package/examples/extensions/README.md +0 -16
- package/examples/extensions/clinical/memo.package.yaml +0 -9
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
- package/examples/extensions/template/memo.package.yaml +0 -9
- package/examples/extensions/template/src/extension.sysml +0 -15
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
- package/examples/gpca-pump/memo.config.yaml +0 -9
- package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
- package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
- package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
- package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
- package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
- package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
- package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
- package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
- package/ontology/memo.rendering.yaml +0 -84
- package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
- package/src/compliance/change/memo_change.sysml +0 -17
- package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
- package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
- package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
- package/src/compliance/document_views/memo_document_views.sysml +0 -7
- package/src/compliance/iso14971/risk_management_file.sysml +0 -16
- package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
- /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
- /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/extension-ros'
|
|
10
|
+
version: 0.8.22
|
|
11
|
+
description: ROS 2 nodes, messages, topic/service/action interfaces, QoS, and containerized deployment
|
|
12
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- memo
|
|
15
|
+
- methodology
|
|
16
|
+
- extension
|
|
17
|
+
- ros
|
|
18
|
+
sysmlDir: ./src
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
package memo_extension_ros_methodology {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
private import memo_methodology_core::*;
|
|
4
|
+
private import memo_methodology_profiles::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
6
|
+
|
|
7
|
+
// An extension that builds on other extensions names them all here.
|
|
8
|
+
// `baseMethodology` is [0..1] — single inheritance, deliberate — but
|
|
9
|
+
// `includedModule` is [0..*], so this is how a dependency between
|
|
10
|
+
// extensions is expressed. There is no chaining and no second base.
|
|
11
|
+
part rosExtensionMethod : MethodologyDefinition {
|
|
12
|
+
attribute :>> id = "EXT-ROS-001";
|
|
13
|
+
attribute :>> name = "Ros2Extension";
|
|
14
|
+
attribute :>> version = "0.7.0";
|
|
15
|
+
attribute :>> domain = "ROS 2 robotics middleware";
|
|
16
|
+
attribute :>> description = "Adds ROS 2 nodes, messages, directional ports, topic/service/action interfaces, QoS, and containerized deployment.";
|
|
17
|
+
ref :>> baseMethodology = mdDefaultDefinition;
|
|
18
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
19
|
+
attribute :>> includedModule = (
|
|
20
|
+
"memo_extension_messaging",
|
|
21
|
+
"memo_extension_container",
|
|
22
|
+
"memo_extension_ros"
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// ROS 2 (Robot Operating System 2).
|
|
2
|
+
//
|
|
3
|
+
// The acceptance test for MEMO's extension point (plan §10.3): a whole
|
|
4
|
+
// technology stack — nodes, messages, topics, quality of service, services,
|
|
5
|
+
// actions, and
|
|
6
|
+
// containerized deployment — landing without a single change to a base
|
|
7
|
+
// relation. `BuildsInto`, `DeploysTo`, and `ProvidesEnvironment` are reused
|
|
8
|
+
// exactly as the base declares them.
|
|
9
|
+
//
|
|
10
|
+
// Composition is by MODULE LIST, not by chaining. `baseMethodology` is [0..1],
|
|
11
|
+
// but `includedModule` is [0..*], so this extension's methodology names
|
|
12
|
+
// `memo_extension_messaging` and `memo_extension_container` alongside its own
|
|
13
|
+
// module. ROS communication specializes native MEMO item, port, and interface
|
|
14
|
+
// families; it does not invent publish/subscribe relations.
|
|
15
|
+
package memo_extension_ros {
|
|
16
|
+
private import ScalarValues::*;
|
|
17
|
+
|
|
18
|
+
private import memo_core_common::*;
|
|
19
|
+
private import memo_architecture_functional_behavior::*;
|
|
20
|
+
private import memo_architecture_logical_interfaces::*;
|
|
21
|
+
private import memo_architecture_implementation_software_structure::*;
|
|
22
|
+
private import memo_architecture_implementation_software_runtime::*;
|
|
23
|
+
private import memo_extension_messaging::*;
|
|
24
|
+
private import memo_extension_container::*;
|
|
25
|
+
|
|
26
|
+
// ── Quality of service ──────────────────────────────────────────────
|
|
27
|
+
//
|
|
28
|
+
// QoS is the first real customer for "where do per-technology properties
|
|
29
|
+
// live" (plan C3, open question §14.6). The answer is a typed
|
|
30
|
+
// `attribute def` on the extension's own types — NOT the base's
|
|
31
|
+
// `PropertySet` stub, which was one String field and could not say what a
|
|
32
|
+
// reliability setting is. A typed profile can be validated, compared
|
|
33
|
+
// between a publisher and a subscriber, and read by a tool; a property bag
|
|
34
|
+
// cannot. `PropertySet` is deleted in this session for that reason.
|
|
35
|
+
|
|
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
|
+
// TRANSIENT_LOCAL replays the last samples to a late-joining subscriber;
|
|
44
|
+
// VOLATILE does not. The difference decides whether a node that restarts
|
|
45
|
+
// sees the current state or waits for the next publication — which is a
|
|
46
|
+
// safety-relevant fact when the topic carries a latched mode or setpoint.
|
|
47
|
+
enum def RosDurabilityKind {
|
|
48
|
+
enum volatile;
|
|
49
|
+
enum transientLocal;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
attribute def RosQosProfile {
|
|
53
|
+
attribute reliability : RosReliabilityKind;
|
|
54
|
+
attribute durability : RosDurabilityKind;
|
|
55
|
+
// The QoS contract: a sample is expected at least this often.
|
|
56
|
+
attribute deadlineMs : Real;
|
|
57
|
+
// How long a publisher may be silent before subscribers treat it as
|
|
58
|
+
// lost — ROS 2 liveliness lease duration.
|
|
59
|
+
attribute livelinessLeaseMs : Real;
|
|
60
|
+
// Depth of the history buffer, KEEP_LAST(n) / KEEP_ALL.
|
|
61
|
+
attribute historyDepth : Integer;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ── Nodes, messages, topics, and endpoint roles ────────────────────
|
|
65
|
+
|
|
66
|
+
// A ROS node. `runtimeKind` is deliberately NOT bound: a node may run as
|
|
67
|
+
// its own process or be composed with others into a single container
|
|
68
|
+
// process, and which one it is is a design decision the model should
|
|
69
|
+
// record rather than a fact the type can assert.
|
|
70
|
+
part def RosNode specializes SoftwareComponent {
|
|
71
|
+
attribute nodeNamespace : String;
|
|
72
|
+
// Whether the node implements the managed-node lifecycle
|
|
73
|
+
// (unconfigured / inactive / active / finalized). A lifecycle-managed
|
|
74
|
+
// node can be brought up in a defined order and held inactive until
|
|
75
|
+
// its preconditions hold, which is how a robot reaches a safe state.
|
|
76
|
+
attribute lifecycleManaged : Boolean;
|
|
77
|
+
attribute executorModel : String;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// A definition is the ROS message contract (`LaserScan`, `Twist`, ...).
|
|
81
|
+
// A named item usage of that definition is a deployed topic (`/scan`).
|
|
82
|
+
// Individual deliveries are native flows/messages between ports that
|
|
83
|
+
// reference the same topic usage.
|
|
84
|
+
abstract item def RosMessage specializes MessagingMessage {
|
|
85
|
+
attribute rosTypeName : String;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
port def RosPublisher specializes MessagingPublisher {
|
|
89
|
+
attribute offeredQos : RosQosProfile;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
port def RosSubscriber specializes MessagingSubscriber {
|
|
93
|
+
attribute requestedQos : RosQosProfile;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
interface def RosTopicInterface specializes MessagingTopicInterface {
|
|
97
|
+
end rosPublisher : RosPublisher :>> publisher;
|
|
98
|
+
end rosSubscriber : RosSubscriber :>> subscriber;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// ── Services: one correlated request/reply contract ────────────────
|
|
102
|
+
abstract item def RosServiceRequest specializes RosMessage;
|
|
103
|
+
abstract item def RosServiceResponse specializes RosMessage;
|
|
104
|
+
|
|
105
|
+
port def RosServiceClient specializes SoftwarePort {
|
|
106
|
+
out item request : RosServiceRequest;
|
|
107
|
+
in item response : RosServiceResponse;
|
|
108
|
+
attribute serviceName : String;
|
|
109
|
+
attribute timeoutMs : Real;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
port def RosServiceServer specializes SoftwarePort {
|
|
113
|
+
in item request : RosServiceRequest;
|
|
114
|
+
out item response : RosServiceResponse;
|
|
115
|
+
attribute serviceName : String;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
interface def RosServiceInterface specializes SoftwareInterface {
|
|
119
|
+
end client : RosServiceClient :>> source;
|
|
120
|
+
end server : RosServiceServer :>> target;
|
|
121
|
+
flow of RosServiceRequest from client.request to server.request;
|
|
122
|
+
flow of RosServiceResponse from server.response to client.response;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ── Actions: long-running goal protocol ─────────────────────────────
|
|
126
|
+
// ROS 2 realizes an action through goal/result/cancel services plus
|
|
127
|
+
// feedback/status topics. The port exposes those distinct native message
|
|
128
|
+
// features, so an action cannot be mistaken for a two-message service.
|
|
129
|
+
abstract item def RosActionGoal specializes RosMessage;
|
|
130
|
+
abstract item def RosActionAcceptance specializes RosMessage;
|
|
131
|
+
abstract item def RosActionFeedback specializes RosMessage;
|
|
132
|
+
abstract item def RosActionResult specializes RosMessage;
|
|
133
|
+
abstract item def RosActionCancel specializes RosMessage;
|
|
134
|
+
abstract item def RosActionStatus specializes RosMessage;
|
|
135
|
+
|
|
136
|
+
port def RosActionClient specializes SoftwarePort {
|
|
137
|
+
out item goal : RosActionGoal;
|
|
138
|
+
in item acceptance : RosActionAcceptance;
|
|
139
|
+
in item feedback : RosActionFeedback;
|
|
140
|
+
in item result : RosActionResult;
|
|
141
|
+
out item cancel : RosActionCancel;
|
|
142
|
+
in item actionStatus : RosActionStatus;
|
|
143
|
+
attribute actionName : String;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
port def RosActionServer specializes SoftwarePort {
|
|
147
|
+
in item goal : RosActionGoal;
|
|
148
|
+
out item acceptance : RosActionAcceptance;
|
|
149
|
+
out item feedback : RosActionFeedback;
|
|
150
|
+
out item result : RosActionResult;
|
|
151
|
+
in item cancel : RosActionCancel;
|
|
152
|
+
out item actionStatus : RosActionStatus;
|
|
153
|
+
attribute actionName : String;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
interface def RosActionInterface specializes SoftwareInterface {
|
|
157
|
+
end client : RosActionClient :>> source;
|
|
158
|
+
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;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
abstract state def RosActionExecution specializes MemoState;
|
|
168
|
+
state def RosActionAccepted specializes RosActionExecution;
|
|
169
|
+
state def RosActionExecuting specializes RosActionExecution;
|
|
170
|
+
state def RosActionCanceling specializes RosActionExecution;
|
|
171
|
+
state def RosActionSucceeded specializes RosActionExecution;
|
|
172
|
+
state def RosActionCanceled specializes RosActionExecution;
|
|
173
|
+
state def RosActionAborted specializes RosActionExecution;
|
|
174
|
+
|
|
175
|
+
// ── Deployment ──────────────────────────────────────────────────────
|
|
176
|
+
//
|
|
177
|
+
// Nothing below declares a relation. The base's three deployment
|
|
178
|
+
// relations already say everything a ROS deployment needs:
|
|
179
|
+
// BuildsInto SoftwareModule -> RosContainerImage
|
|
180
|
+
// DeploysTo RosContainerImage -> ProcessingNode
|
|
181
|
+
// ProvidesEnvironment ProcessingNode -> RosContainerRuntime
|
|
182
|
+
// That is the proof the base is factored correctly.
|
|
183
|
+
part def RosContainerImage specializes ContainerImage {
|
|
184
|
+
// humble, iron, jazzy, rolling.
|
|
185
|
+
attribute rosDistribution : String;
|
|
186
|
+
// The workspace overlay the image was built from.
|
|
187
|
+
attribute workspaceOverlay : String;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
part def RosContainerRuntime specializes ContainerRuntime {
|
|
191
|
+
attribute rosDistribution : String;
|
|
192
|
+
// The RMW implementation below ROS 2 — rmw_fastrtps_cpp,
|
|
193
|
+
// rmw_cyclonedds_cpp. QoS is enforced here, so it is part of any
|
|
194
|
+
// argument that a QoS profile is actually honoured.
|
|
195
|
+
attribute rmwImplementation : String;
|
|
196
|
+
// ROS_DOMAIN_ID. Two robots sharing a domain see each other's topics,
|
|
197
|
+
// which is a hazard on a shared network and not visible in any node.
|
|
198
|
+
attribute rosDomainId : Integer;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '{{name}}'
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
description: MEMO methodology extension
|
|
12
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- memo
|
|
15
|
+
- methodology
|
|
16
|
+
- extension
|
|
17
|
+
sysmlDir: ./src
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
// This package used to bind `baseMethodName = "MedicalDeviceLightDefault"` — a
|
|
15
|
+
// pre-flip spelling that resolves to nothing. It went unnoticed for as long as
|
|
16
|
+
// extensions lived under `examples/`, where the build did not check them; the
|
|
17
|
+
// build checks `extensions/` now, and reported it on the first run.
|
|
18
|
+
package memo_extension_template {
|
|
19
|
+
private import ScalarValues::*;
|
|
20
|
+
private import memo_core_enumerations::*;
|
|
21
|
+
private import memo_methodology_core::*;
|
|
22
|
+
private import memo_methodology_profiles::*;
|
|
23
|
+
|
|
24
|
+
part extensionMethod : MethodologyDefinition {
|
|
25
|
+
attribute :>> id = "EXT-METH-001";
|
|
26
|
+
attribute :>> name = "ExtensionMethod";
|
|
27
|
+
attribute :>> version = "0.1.0";
|
|
28
|
+
attribute :>> domain = "project extension";
|
|
29
|
+
attribute :>> description = "Adds a project or domain package to the selected MEMO methodology.";
|
|
30
|
+
// The base is a typed SysML reference, not a name held in sync by hand.
|
|
31
|
+
ref :>> baseMethodology = mdDefaultDefinition;
|
|
32
|
+
// An extension adds its own module to whatever its base selected;
|
|
33
|
+
// saying so explicitly is required now that an empty list means empty.
|
|
34
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
35
|
+
attribute :>> includedModule = "replace_with_extension_package";
|
|
36
|
+
}
|
|
37
|
+
}
|
package/memo.manifest.yaml
CHANGED
|
@@ -17,5 +17,18 @@ templates:
|
|
|
17
17
|
examples:
|
|
18
18
|
gpca: ./examples/gpca-pump
|
|
19
19
|
standard-sysml-diagrams: ./examples/sysml-diagram-samples
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
ui-screen-regions: ./examples/ui-screen-regions
|
|
21
|
+
nested-architecture-dsm: ./examples/nested-architecture-dsm
|
|
22
|
+
ros-mobile-robot: ./examples/ros-mobile-robot
|
|
23
|
+
# Extensions are a way to MODEL, not a thing to copy. They are reusable
|
|
24
|
+
# ontology packages that specialize the base, selected by a methodology or a
|
|
25
|
+
# project binding — so they sit beside the ontology, not under examples/.
|
|
26
|
+
# `examples/ros-mobile-robot` demonstrates using one; it is not the extension.
|
|
27
|
+
extensions:
|
|
28
|
+
template: ./extensions/template
|
|
29
|
+
clinical: ./extensions/clinical
|
|
30
|
+
aadl: ./extensions/aadl
|
|
31
|
+
cloud: ./extensions/cloud
|
|
32
|
+
container: ./extensions/container
|
|
33
|
+
messaging: ./extensions/messaging
|
|
34
|
+
ros: ./extensions/ros
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/methodology-default'
|
|
10
|
+
version: 0.8.22
|
|
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
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- methodology
|
|
15
|
+
- medical-device
|
|
16
|
+
- iso-14971
|
|
17
|
+
- iec-62304
|
|
18
|
+
- memo
|
|
19
|
+
sysmlDir: ../../src/methodology
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/methodology-gpca'
|
|
10
|
+
version: 0.8.22
|
|
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
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- methodology
|
|
15
|
+
- medical-device
|
|
16
|
+
- gpca
|
|
17
|
+
- tailoring
|
|
18
|
+
sysmlDir: ../../examples/gpca-pump/methodology
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
usage
|
|
8
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/ontology'
|
|
10
|
+
version: 0.8.22
|
|
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
|
+
\ assurance, \u2026), compliance, viewpoints, views, and invariant rules. One namespace (memo::), one src/ tree."
|
|
13
|
+
license: MIT
|
|
14
|
+
tags:
|
|
15
|
+
- mbse
|
|
16
|
+
- sysml-v2
|
|
17
|
+
- arcadia
|
|
18
|
+
- iso-42010
|
|
19
|
+
- medical-device
|
|
20
|
+
- ontology
|
|
21
|
+
- iso-14971
|
|
22
|
+
- iec-62304
|
|
23
|
+
sysmlDir: ../src
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memoarchitect/ontology",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.22",
|
|
4
4
|
"packageManager": "pnpm@9.15.0",
|
|
5
|
-
"description": "MEMO
|
|
5
|
+
"description": "MEMO \u2014 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": {
|
|
7
7
|
"build": "bash scripts/build-kpar.sh",
|
|
8
|
-
"check": "bash scripts/build-kpar.sh",
|
|
8
|
+
"check": "bash scripts/build-kpar.sh && npm run lint",
|
|
9
|
+
"lint": "node ../memo-tools/packages/tools/lib/bin/memo.js dhf lint",
|
|
9
10
|
"test": "node --test test/package.test.mjs",
|
|
10
11
|
"docs:api": "node scripts/generate-sysml-api.mjs",
|
|
11
12
|
"docs:diagrams": "node scripts/generate-reference-diagrams.mjs",
|
|
@@ -49,14 +50,12 @@
|
|
|
49
50
|
"LICENSE",
|
|
50
51
|
"memo.manifest.yaml",
|
|
51
52
|
"ontology/memo.package.yaml",
|
|
52
|
-
"ontology/memo.rendering.yaml",
|
|
53
53
|
"profile/memo.package.yaml",
|
|
54
54
|
"methodologies/default/memo.package.yaml",
|
|
55
55
|
"methodologies/gpca/memo.package.yaml",
|
|
56
56
|
"src/assurance/",
|
|
57
57
|
"src/architecture/",
|
|
58
58
|
"src/artifacts/",
|
|
59
|
-
"src/compliance/",
|
|
60
59
|
"src/core/",
|
|
61
60
|
"src/methodology/archetypes/",
|
|
62
61
|
"src/methodology/core/",
|
|
@@ -71,6 +70,7 @@
|
|
|
71
70
|
"src/viewpoints/",
|
|
72
71
|
"src/memo_namespaces.sysml",
|
|
73
72
|
"templates/",
|
|
74
|
-
"examples/"
|
|
73
|
+
"examples/",
|
|
74
|
+
"extensions/"
|
|
75
75
|
]
|
|
76
76
|
}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/medical-modeling-profile'
|
|
10
|
+
version: 0.8.22
|
|
11
|
+
description: Closure rules and viewpoints for medical device modeling
|
|
12
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- medical-device
|
|
15
|
+
- iso-14971
|
|
16
|
+
- iec-62304
|
|
17
|
+
- iso-13485
|
|
18
|
+
- modeling-profile
|
|
@@ -1,12 +1,40 @@
|
|
|
1
1
|
package memo_architecture_decisions {
|
|
2
|
+
private import Metaobjects::SemanticMetadata;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
|
|
4
5
|
private import memo_core_common::*;
|
|
5
6
|
private import memo_core_enumerations::*;
|
|
7
|
+
private import memo_core_relationships::*;
|
|
8
|
+
private import memo_artifacts_core::*;
|
|
6
9
|
part def DesignDecision specializes MemoPart {
|
|
7
10
|
attribute decisionKind : String;
|
|
8
11
|
attribute alternatives : String;
|
|
9
12
|
attribute selectedOption : String;
|
|
10
13
|
attribute decisionStatus : DesignDecisionStatusKind;
|
|
11
14
|
}
|
|
15
|
+
|
|
16
|
+
connection def DecisionRecordedInADR :> MemoRelationship {
|
|
17
|
+
end decision : DesignDecision :>> source;
|
|
18
|
+
end adr : ADRArtifact :>> target;
|
|
19
|
+
}
|
|
20
|
+
abstract connection decisionRecordedInADRLinks : DecisionRecordedInADR[*];
|
|
21
|
+
metadata def <decisionRecordedInADR> DecisionRecordedInADRMetadata :> SemanticMetadata {
|
|
22
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
23
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
24
|
+
:>> baseType = decisionRecordedInADRLinks meta SysML::Usage;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// ── Relations owned by this package ─────────────────────────────
|
|
28
|
+
// Moved out of memo_core_relationships: their ends are typed against
|
|
29
|
+
// types declared here, and core must not depend on a domain package.
|
|
30
|
+
connection def Decides :> MemoRelationship {
|
|
31
|
+
end decision : DesignDecision :>> source;
|
|
32
|
+
end affectedElement : MemoPart :>> target;
|
|
33
|
+
}
|
|
34
|
+
abstract connection decidesLinks : Decides[*];
|
|
35
|
+
metadata def <decides> DecidesMetadata :> SemanticMetadata {
|
|
36
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
37
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
38
|
+
:>> baseType = decidesLinks meta SysML::Usage;
|
|
39
|
+
}
|
|
12
40
|
}
|
|
@@ -3,29 +3,50 @@ package memo_architecture_functional_behavior {
|
|
|
3
3
|
|
|
4
4
|
private import memo_core_common::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
|
+
|
|
7
|
+
// Typed functional execution step. Project-specific action definitions
|
|
8
|
+
// specialize this rather than bypassing MemoAction; ActivityFlow remains
|
|
9
|
+
// the composite route that sequences such steps.
|
|
10
|
+
abstract action def FunctionalAction specializes MemoAction;
|
|
6
11
|
// State machines and their mode states are SysML v2 states (behaviours), so
|
|
7
12
|
// they derive from the MemoState foundation, not the part-based
|
|
8
13
|
// ArchitectureElement. Transitions stay part-based (below) to keep their
|
|
9
14
|
// traceable safety attributes.
|
|
10
|
-
// State
|
|
15
|
+
// State machines retain their own execution semantics; individual modes
|
|
16
|
+
// are MemoState usages selected by stateKind.
|
|
11
17
|
state def StateMachine :> MemoState {
|
|
12
18
|
attribute machineKind : String;
|
|
13
19
|
attribute executionSemantics : String;
|
|
14
20
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
// A configuration is the concrete selection made at a `variation` choice
|
|
22
|
+
// point. It remains separate from a mode state: it says which mode and
|
|
23
|
+
// elements are active in one selectable arrangement.
|
|
24
|
+
// The reference is typed to the shared native state family so a consumer
|
|
25
|
+
// can navigate from the selected configuration to its governing mode.
|
|
26
|
+
part def ModeConfiguration specializes ArchitectureElement {
|
|
27
|
+
ref activeMode : MemoState[1];
|
|
28
|
+
ref activeElement : MemoPart[0..*];
|
|
19
29
|
}
|
|
20
|
-
|
|
30
|
+
// Transitions are native SysML v2 `transition` usages inside the owning
|
|
31
|
+
// state — there is no `part def Transition`, and its `transition` keyword
|
|
32
|
+
// collision is why. A transition usage's definition is always implicit, so
|
|
33
|
+
// it has no MEMO supertype to carry the identification core; this record
|
|
34
|
+
// carries it instead, applied with `@TransitionRecord`.
|
|
35
|
+
//
|
|
36
|
+
// `trigger`, `guardSummary`, and `effectSummary` are prose summaries, not
|
|
37
|
+
// executable semantics: a guard reading "none in source (MEMO extension
|
|
38
|
+
// REQ-X-02 additionally gates therapy on POST)" is a citation. Formal
|
|
39
|
+
// triggers and guards belong in native `accept` and `if`; these stay
|
|
40
|
+
// records so the two are not confused.
|
|
41
|
+
metadata def TransitionRecord {
|
|
42
|
+
attribute id : String;
|
|
43
|
+
attribute name : String;
|
|
21
44
|
attribute trigger : String;
|
|
22
45
|
attribute guardSummary : String;
|
|
23
46
|
attribute effectSummary : String;
|
|
24
|
-
attribute
|
|
25
|
-
attribute sameStepCritical : Boolean;
|
|
26
|
-
attribute sourceState : String;
|
|
27
|
-
attribute targetState : String;
|
|
47
|
+
attribute sourceReference : String;
|
|
28
48
|
}
|
|
49
|
+
|
|
29
50
|
// A verifiable behavioural constraint, such as an invariant, transition
|
|
30
51
|
// rule, temporal claim, assumption, or guarantee.
|
|
31
52
|
part def BehaviorProperty specializes VerifiableElement {
|
|
@@ -34,7 +55,21 @@ package memo_architecture_functional_behavior {
|
|
|
34
55
|
attribute formalExpression : String;
|
|
35
56
|
}
|
|
36
57
|
part def Contract specializes VerifiableElement { attribute contractScope : String; }
|
|
37
|
-
part def PropertySet specializes VerifiableElement { attribute
|
|
58
|
+
// `part def PropertySet specializes VerifiableElement { attribute
|
|
59
|
+
// propertySetScope : String; }` stood here and is DELETED (plan C3,
|
|
60
|
+
// open question §14.6). It was AADL's property-set idea imported as a
|
|
61
|
+
// name: one String field, no typed content, no binding to whatever it
|
|
62
|
+
// annotated, and zero usages anywhere in the tree.
|
|
63
|
+
//
|
|
64
|
+
// Per-technology properties belong on the extension type that owns them,
|
|
65
|
+
// typed. ROS QoS was the first real customer and settled it:
|
|
66
|
+
// `attribute def RosQosProfile` has reliability, durability, deadline,
|
|
67
|
+
// liveliness and history depth as typed fields, so a publisher's offer and
|
|
68
|
+
// a subscriber's request can be compared. A `propertySetScope` String
|
|
69
|
+
// could not have expressed one of them. Where an extension needs to
|
|
70
|
+
// annotate a BASE element rather than declare its own type, the SysML-
|
|
71
|
+
// native answer is `metadata def` + `Metaobjects::SemanticMetadata`, which
|
|
72
|
+
// is what every MEMO relation already carries since A4.
|
|
38
73
|
part def ActivityAction specializes ArchitectureElement {
|
|
39
74
|
attribute actionKind : ActionKind;
|
|
40
75
|
attribute inputSummary : String;
|
|
@@ -42,25 +77,18 @@ package memo_architecture_functional_behavior {
|
|
|
42
77
|
attribute wcetMs : String;
|
|
43
78
|
attribute safetyRelevant : Boolean;
|
|
44
79
|
}
|
|
45
|
-
|
|
80
|
+
action def ActivityFlow specializes MemoAction {
|
|
46
81
|
attribute flowKind : ActivityFlowKind;
|
|
47
82
|
attribute guardCondition : String;
|
|
48
83
|
attribute weight : String;
|
|
49
84
|
}
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
attribute messageKind : MessageKind;
|
|
53
|
-
attribute sequenceOrder : Integer;
|
|
54
|
-
attribute senderComponent : String;
|
|
55
|
-
attribute receiverComponent : String;
|
|
56
|
-
attribute exchangeItem : String;
|
|
57
|
-
attribute timingConstraintMs : String;
|
|
58
|
-
}
|
|
85
|
+
// UI scenarios are MemoScenario usages with scenarioKind `ui`.
|
|
86
|
+
|
|
59
87
|
part def TimingConstraint specializes VerifiableElement {
|
|
60
88
|
attribute constraintKind : TimingConstraintKind;
|
|
61
89
|
attribute minMs : String;
|
|
62
90
|
attribute maxMs : String;
|
|
63
|
-
|
|
91
|
+
ref referenceElement : MemoPart[1];
|
|
64
92
|
attribute verificationMethod : VerificationMethodKind;
|
|
65
93
|
}
|
|
66
94
|
}
|