@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
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// plus independence constraints — never by duplicating identically named
|
|
5
5
|
// components.
|
|
6
6
|
package memo_architecture_logical_structure {
|
|
7
|
+
private import Metaobjects::SemanticMetadata;
|
|
7
8
|
private import ScalarValues::*;
|
|
8
9
|
|
|
9
10
|
private import memo_core_common::*;
|
|
@@ -37,13 +38,15 @@ package memo_architecture_logical_structure {
|
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
// The role a logical component plays. Was a subclass branch
|
|
40
|
-
// (
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
41
|
+
// (LogicalChannel / LogicalDataStore / LogicalControlElement /
|
|
42
|
+
// LogicalUserInterface / LogicalExternalSystem); now one attribute, because
|
|
43
|
+
// those all share the same relationships and differed only by a couple of
|
|
44
|
+
// descriptive attributes.
|
|
45
|
+
//
|
|
46
|
+
// System / Subsystem / SystemOfSystems are types below, not values here:
|
|
47
|
+
// each admits a different set of children, and a value on an attribute
|
|
48
|
+
// cannot carry containment legality.
|
|
44
49
|
enum def ComponentRoleKind {
|
|
45
|
-
enum system;
|
|
46
|
-
enum subsystem;
|
|
47
50
|
enum channel;
|
|
48
51
|
enum dataStore;
|
|
49
52
|
enum controlElement;
|
|
@@ -52,17 +55,73 @@ package memo_architecture_logical_structure {
|
|
|
52
55
|
enum generic;
|
|
53
56
|
}
|
|
54
57
|
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
58
|
+
// The discipline a logical block is realized in. Orthogonal to
|
|
59
|
+
// `componentRole`: a subsystem may be software, a system may be hardware,
|
|
60
|
+
// and a block whose realization is not yet decided stays `logical`.
|
|
61
|
+
//
|
|
62
|
+
// This does NOT relocate the element. The block remains logical-layer —
|
|
63
|
+
// MEMO encodes layer by owning package, and this one is
|
|
64
|
+
// memo_architecture_logical_structure. `systemType` records what the block
|
|
65
|
+
// WILL BE realized in, which is a logical-architecture decision made
|
|
66
|
+
// before any software or hardware element exists. Once those elements do
|
|
67
|
+
// exist, AllocatedTo carries the actual allocation and this attribute
|
|
68
|
+
// stays as the stated intent.
|
|
69
|
+
enum def SystemTypeKind {
|
|
70
|
+
enum logical;
|
|
71
|
+
enum software;
|
|
72
|
+
enum hardware;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ─── System hierarchy ────────────────────────────────────────
|
|
76
|
+
// Three types rather than three role values, because they differ in what
|
|
77
|
+
// they may CONTAIN — and containment legality cannot live on an attribute.
|
|
78
|
+
//
|
|
79
|
+
// The allowed children are declared as typed part features, which is how
|
|
80
|
+
// SysML v2 already states "what may be contained". No new relationship is
|
|
81
|
+
// introduced: `Composes` remains the single containment relation for
|
|
82
|
+
// instances, exactly as everywhere else in MEMO. The features below say
|
|
83
|
+
// which types are admissible; Composes records the actual links.
|
|
84
|
+
|
|
85
|
+
part def SystemOfSystems specializes LogicalComponent {
|
|
86
|
+
// Constituent systems are independently operated and independently
|
|
87
|
+
// managed, collaborating for a capability none delivers alone
|
|
88
|
+
// (ISO/IEC/IEEE 21841). A connected pump talking to a hospital
|
|
89
|
+
// infusion-management server is one; a pump and its own pole-mounted
|
|
90
|
+
// battery are not — which is why ownership is recorded here and is the
|
|
91
|
+
// attribute that distinguishes an SoS from a merely large system.
|
|
92
|
+
attribute systemBoundaryDescription : String;
|
|
93
|
+
attribute constituentOwnership : String;
|
|
94
|
+
// A constituent may itself coordinate systems-of-systems, or it may be
|
|
95
|
+
// an independently operated system. Subsystems and components remain
|
|
96
|
+
// inside one of those constituent systems.
|
|
97
|
+
part constituentSystemOfSystems : SystemOfSystems[0..*];
|
|
98
|
+
part constituentSystem : System[0..*];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
part def System specializes LogicalComponent {
|
|
102
|
+
attribute systemBoundaryDescription : String;
|
|
103
|
+
part system : System[0..*];
|
|
104
|
+
part subsystem : Subsystem[0..*];
|
|
105
|
+
part component : LogicalComponent[0..*];
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
part def Subsystem specializes LogicalComponent {
|
|
109
|
+
attribute systemBoundaryDescription : String;
|
|
110
|
+
part subsystem : Subsystem[0..*];
|
|
111
|
+
part component : LogicalComponent[0..*];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// One logical component. `componentRole` selects what it is, `systemType`
|
|
115
|
+
// what it is realized in; the role-specific attributes below are all
|
|
116
|
+
// optional so a component carries only the ones its role needs. A channel
|
|
117
|
+
// claiming independence must still be linked by IndependentOf with its
|
|
118
|
+
// basis stated.
|
|
59
119
|
part def LogicalComponent specializes ArchitectureElement {
|
|
60
120
|
attribute componentRole : ComponentRoleKind;
|
|
121
|
+
attribute systemType : SystemTypeKind[0..1];
|
|
61
122
|
attribute responsibility : String;
|
|
62
123
|
attribute decompositionLevel : String;
|
|
63
124
|
attribute safetyPartition : String;
|
|
64
|
-
// system / subsystem
|
|
65
|
-
attribute systemBoundaryDescription : String;
|
|
66
125
|
// channel (safety role + diversity)
|
|
67
126
|
attribute channelRole : ChannelRoleKind[0..1];
|
|
68
127
|
attribute diversityBasis : String;
|
|
@@ -79,16 +138,14 @@ package memo_architecture_logical_structure {
|
|
|
79
138
|
}
|
|
80
139
|
|
|
81
140
|
// Boundary features and contracts.
|
|
82
|
-
port def LogicalPort specializes MemoPort
|
|
83
|
-
attribute contentKind : FlowContentKind;
|
|
84
|
-
}
|
|
141
|
+
port def LogicalPort specializes MemoPort;
|
|
85
142
|
interface def LogicalInterface specializes MemoInterface {
|
|
86
143
|
attribute contentKind : FlowContentKind;
|
|
87
144
|
attribute interactionPattern : String;
|
|
88
145
|
end providerPort : LogicalPort;
|
|
89
146
|
end consumerPort : ~LogicalPort;
|
|
90
147
|
}
|
|
91
|
-
item def LogicalExchangeItem specializes
|
|
148
|
+
item def LogicalExchangeItem specializes MemoItem {
|
|
92
149
|
attribute contentKind : FlowContentKind;
|
|
93
150
|
}
|
|
94
151
|
|
|
@@ -96,8 +153,14 @@ package memo_architecture_logical_structure {
|
|
|
96
153
|
connection def LogicalConnector :> MemoRelationship {
|
|
97
154
|
attribute contentKind : FlowContentKind;
|
|
98
155
|
attribute direction : DirectionKind;
|
|
99
|
-
end sourceComponent : LogicalComponent;
|
|
100
|
-
end targetComponent : LogicalComponent;
|
|
156
|
+
end sourceComponent : LogicalComponent :>> source;
|
|
157
|
+
end targetComponent : LogicalComponent :>> target;
|
|
158
|
+
}
|
|
159
|
+
abstract connection logicalConnectorLinks : LogicalConnector[*];
|
|
160
|
+
metadata def <logicalConnector> LogicalConnectorMetadata :> SemanticMetadata {
|
|
161
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
162
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
163
|
+
:>> baseType = logicalConnectorLinks meta SysML::Usage;
|
|
101
164
|
}
|
|
102
165
|
// A transfer of a typed item across a connector.
|
|
103
166
|
part def LogicalExchange specializes ArchitectureElement {
|
|
@@ -111,14 +174,7 @@ package memo_architecture_logical_structure {
|
|
|
111
174
|
|
|
112
175
|
// States and modes of the logical solution (kept distinct from UI state
|
|
113
176
|
// and from physical device configuration).
|
|
114
|
-
|
|
115
|
-
attribute stateInvariant : String;
|
|
116
|
-
}
|
|
117
|
-
part def LogicalMode specializes ArchitectureElement {
|
|
118
|
-
attribute modePurpose : String;
|
|
119
|
-
attribute entryCondition : String;
|
|
120
|
-
attribute exitCondition : String;
|
|
121
|
-
}
|
|
177
|
+
|
|
122
178
|
part def LogicalBehavior specializes ArchitectureElement {
|
|
123
179
|
attribute behaviorSummary : String;
|
|
124
180
|
attribute executionSemantics : String;
|
|
@@ -136,15 +192,16 @@ package memo_architecture_logical_structure {
|
|
|
136
192
|
// Claimed independence between channels (common-cause defense).
|
|
137
193
|
connection def IndependentOf :> MemoRelationship {
|
|
138
194
|
attribute independenceBasis : String;
|
|
139
|
-
end channel : LogicalComponent;
|
|
140
|
-
end otherChannel : LogicalComponent;
|
|
195
|
+
end channel : LogicalComponent :>> source;
|
|
196
|
+
end otherChannel : LogicalComponent :>> target;
|
|
141
197
|
}
|
|
142
|
-
connection
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
end component : LogicalComponent;
|
|
148
|
-
end mode : LogicalMode;
|
|
198
|
+
abstract connection independentOfLinks : IndependentOf[*];
|
|
199
|
+
metadata def <independentOf> IndependentOfMetadata :> SemanticMetadata {
|
|
200
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
201
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
202
|
+
:>> baseType = independentOfLinks meta SysML::Usage;
|
|
149
203
|
}
|
|
204
|
+
// `MonitorsChannel` is native `dependency` (R10-S6): write
|
|
205
|
+
// `dependency <monitorChannel> to <monitoredComponent>;` instead.
|
|
206
|
+
|
|
150
207
|
}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
// Task difficulty belongs to a task performed in a context — never to an
|
|
8
8
|
// instrument (TaskDifficultyAssessment).
|
|
9
9
|
package memo_architecture_operational_activities {
|
|
10
|
+
private import Metaobjects::SemanticMetadata;
|
|
10
11
|
private import ScalarValues::*;
|
|
11
12
|
|
|
12
13
|
private import memo_core_common::*;
|
|
@@ -28,7 +29,7 @@ package memo_architecture_operational_activities {
|
|
|
28
29
|
attribute preCondition : String;
|
|
29
30
|
attribute postCondition : String;
|
|
30
31
|
attribute criticality : CriticalityKind;
|
|
31
|
-
ref performedBy :
|
|
32
|
+
ref performedBy : OperationalParticipant[0..*];
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
// A human task. A critical task (IEC 62366-1 / FDA HF guidance §3) is a
|
|
@@ -50,7 +51,6 @@ package memo_architecture_operational_activities {
|
|
|
50
51
|
// An elementary perceptual/cognitive/motor step within a user task
|
|
51
52
|
// (task analysis granularity: grasp needle, drive needle, tie knot …).
|
|
52
53
|
action def TaskStep specializes MemoAction {
|
|
53
|
-
attribute stepOrder : Integer;
|
|
54
54
|
attribute perceptualCue : String;
|
|
55
55
|
attribute feedbackExpected : String;
|
|
56
56
|
}
|
|
@@ -80,7 +80,13 @@ package memo_architecture_operational_activities {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
connection def AssessesDifficulty :> MemoRelationship {
|
|
83
|
-
end assessment : TaskDifficultyAssessment;
|
|
84
|
-
end task : UserTask;
|
|
83
|
+
end assessment : TaskDifficultyAssessment :>> source;
|
|
84
|
+
end task : UserTask :>> target;
|
|
85
|
+
}
|
|
86
|
+
abstract connection assessesDifficultyLinks : AssessesDifficulty[*];
|
|
87
|
+
metadata def <assessesDifficulty> AssessesDifficultyMetadata :> SemanticMetadata {
|
|
88
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
89
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
90
|
+
:>> baseType = assessesDifficultyLinks meta SysML::Usage;
|
|
85
91
|
}
|
|
86
92
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
//
|
|
2
|
-
// from
|
|
1
|
+
// Operational participants (§4) interact with the system; they are distinct
|
|
2
|
+
// from stakeholders (memo_architecture_operational_context_stakeholders), who have concerns about the
|
|
3
3
|
// system but need not interact with it. "User" is reserved for a human who
|
|
4
4
|
// interacts with the medical device.
|
|
5
5
|
package memo_architecture_operational_context_actors {
|
|
@@ -7,8 +7,7 @@ package memo_architecture_operational_context_actors {
|
|
|
7
7
|
|
|
8
8
|
private import memo_core_common::*;
|
|
9
9
|
private import memo_core_enumerations::*;
|
|
10
|
-
|
|
11
|
-
abstract part def Actor specializes MemoPart {
|
|
10
|
+
abstract part def OperationalParticipant specializes MemoPart {
|
|
12
11
|
attribute actorKind : ActorKind;
|
|
13
12
|
attribute trainingLevel : String;
|
|
14
13
|
attribute responsibility : String;
|
|
@@ -19,7 +18,7 @@ package memo_architecture_operational_context_actors {
|
|
|
19
18
|
// The human actor. The specific role is given by actorKind
|
|
20
19
|
// (patient / clinician / caregiver / technician / administrator); the
|
|
21
20
|
// role-specific fields below are set only for the relevant actorKind.
|
|
22
|
-
part def User specializes
|
|
21
|
+
part def User specializes OperationalParticipant {
|
|
23
22
|
attribute userPopulation : String;
|
|
24
23
|
attribute impairmentConsiderations : String;
|
|
25
24
|
attribute intendedTraining : String;
|
|
@@ -32,7 +31,5 @@ package memo_architecture_operational_context_actors {
|
|
|
32
31
|
|
|
33
32
|
// A non-human actor (external system, external device, or environmental
|
|
34
33
|
// agent). The specific kind is described by externalKind.
|
|
35
|
-
|
|
36
|
-
attribute externalKind : String[0..1];
|
|
37
|
-
}
|
|
34
|
+
|
|
38
35
|
}
|
|
@@ -1,27 +1,17 @@
|
|
|
1
|
-
// ISO/IEC/IEEE 42010 architecture-description core (§4). A
|
|
2
|
-
// interests
|
|
1
|
+
// ISO/IEC/IEEE 42010 architecture-description core (§4). A stakeholder has
|
|
2
|
+
// interests in the system; a Viewpoint frames concerns; a View
|
|
3
3
|
// (memo_viewpoints_definitions::MemoView) is governed by a viewpoint within an
|
|
4
4
|
// ArchitectureDescription. The same real-world entity may play both the
|
|
5
|
-
// Stakeholder and
|
|
6
|
-
//
|
|
5
|
+
// Stakeholder and operational-participant concerns stay distinct from the
|
|
6
|
+
// architecture-description types below.
|
|
7
7
|
package memo_architecture_operational_context_stakeholders {
|
|
8
|
+
private import Metaobjects::SemanticMetadata;
|
|
8
9
|
private import ScalarValues::*;
|
|
9
10
|
|
|
10
11
|
private import memo_core_common::*;
|
|
11
12
|
private import memo_core_enumerations::*;
|
|
12
13
|
private import memo_core_relationships::*;
|
|
13
14
|
private import memo_architecture_operational_context_actors::*;
|
|
14
|
-
|
|
15
|
-
part def Stakeholder specializes MemoPart {
|
|
16
|
-
attribute stakeholderCategory : String;
|
|
17
|
-
attribute influence : String;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
part def Concern specializes MemoPart {
|
|
21
|
-
attribute concernKind : ConcernKind;
|
|
22
|
-
attribute question : String;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
15
|
part def ArchitectureDescription specializes DocumentedElement {
|
|
26
16
|
attribute systemOfInterest : String;
|
|
27
17
|
attribute version : String;
|
|
@@ -38,19 +28,6 @@ package memo_architecture_operational_context_stakeholders {
|
|
|
38
28
|
attribute ruleExpression : String;
|
|
39
29
|
}
|
|
40
30
|
|
|
41
|
-
connection def HasConcern :> MemoRelationship {
|
|
42
|
-
end interestedStakeholder : Stakeholder;
|
|
43
|
-
end stakeholderConcern : Concern;
|
|
44
|
-
}
|
|
45
|
-
connection def FramesConcern :> MemoRelationship {
|
|
46
|
-
end framingViewpoint : MemoPart;
|
|
47
|
-
end framedConcern : Concern;
|
|
48
|
-
}
|
|
49
|
-
// Links the stakeholder to the actor role the same entity plays, if any.
|
|
50
|
-
connection def ActsAsActor :> MemoRelationship {
|
|
51
|
-
end interestedStakeholder : Stakeholder;
|
|
52
|
-
end actorRole : Actor;
|
|
53
|
-
}
|
|
54
31
|
// Governs unifies GovernsCorrespondence / GovernsUse, keyed by governKind.
|
|
55
32
|
enum def GovernKind {
|
|
56
33
|
enum correspondence;
|
|
@@ -58,7 +35,13 @@ package memo_architecture_operational_context_stakeholders {
|
|
|
58
35
|
}
|
|
59
36
|
connection def Governs :> MemoRelationship {
|
|
60
37
|
attribute governKind : GovernKind;
|
|
61
|
-
end governor : MemoPart;
|
|
62
|
-
end governedElement : MemoPart;
|
|
38
|
+
end governor : MemoPart :>> source;
|
|
39
|
+
end governedElement : MemoPart :>> target;
|
|
40
|
+
}
|
|
41
|
+
abstract connection governsLinks : Governs[*];
|
|
42
|
+
metadata def <governs> GovernsMetadata :> SemanticMetadata {
|
|
43
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
44
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
45
|
+
:>> baseType = governsLinks meta SysML::Usage;
|
|
63
46
|
}
|
|
64
47
|
}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
// Operational use context (IEC 62366-1 use specification). Intended use and
|
|
2
2
|
// reasonably foreseeable misuse are assurance requirements/risk inputs and
|
|
3
3
|
// live in memo_assurance_requirements.
|
|
4
|
+
//
|
|
5
|
+
// This package once defined `ExchangesWith` for directional context-level data
|
|
6
|
+
// flow between boundary entities. It is deleted: SysML v2's own `flow` covers
|
|
7
|
+
// every case and is strictly stronger, because `of <ItemDef>` says WHAT moves
|
|
8
|
+
// and two untyped connection ends cannot. Delegation between a boundary port
|
|
9
|
+
// and the interior it stands for is `bind` — identity, not transport. SysML v2
|
|
10
|
+
// keeps the two apart the same way: training ch. 13 wires components with
|
|
11
|
+
// `flow`, ch. 12 delegates across a boundary with `bind`.
|
|
4
12
|
package memo_architecture_operational_context_use_context {
|
|
13
|
+
private import Metaobjects::SemanticMetadata;
|
|
5
14
|
private import ScalarValues::*;
|
|
6
15
|
|
|
7
16
|
private import memo_core_common::*;
|
|
@@ -47,32 +56,49 @@ package memo_architecture_operational_context_use_context {
|
|
|
47
56
|
attribute contextSide : ContextSideKind;
|
|
48
57
|
// The verb, as it should read on the edge ("Directs procedure").
|
|
49
58
|
attribute interactionLabel : String[0..1];
|
|
50
|
-
end contextParticipant :
|
|
59
|
+
end contextParticipant : ArchitectureElement :>> source;
|
|
51
60
|
// Untyped: the system of interest may be a part or an operational activity.
|
|
52
|
-
end systemOfInterest;
|
|
61
|
+
end systemOfInterest : ArchitectureElement :>> target;
|
|
62
|
+
}
|
|
63
|
+
abstract connection interactsInContextLinks : InteractsInContext[*];
|
|
64
|
+
metadata def <interactsInContext> InteractsInContextMetadata :> SemanticMetadata {
|
|
65
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
66
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
67
|
+
:>> baseType = interactsInContextLinks meta SysML::Usage;
|
|
53
68
|
}
|
|
54
69
|
|
|
55
70
|
connection def InteractsWith :> MemoRelationship {
|
|
56
|
-
end contextParticipant :
|
|
71
|
+
end contextParticipant : OperationalParticipant :>> source;
|
|
57
72
|
// Untyped so operational activities (action def) can be targets as well as parts.
|
|
58
73
|
end target;
|
|
59
74
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// Physical connection between boundary entities (fluid path, mounting).
|
|
66
|
-
connection def ConnectsPhysically :> MemoRelationship {
|
|
67
|
-
end source : MemoPart;
|
|
68
|
-
end target : MemoPart;
|
|
75
|
+
abstract connection interactsWithLinks : InteractsWith[*];
|
|
76
|
+
metadata def <interactsWith> InteractsWithMetadata :> SemanticMetadata {
|
|
77
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
78
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
79
|
+
:>> baseType = interactsWithLinks meta SysML::Usage;
|
|
69
80
|
}
|
|
81
|
+
// `ConnectsPhysically` is native `connect` (R10-S6): write
|
|
82
|
+
// `connection connect source ::> <a> to target ::> <b>;` — the ordinary
|
|
83
|
+
// untyped binary connection — instead of a connection def for it.
|
|
70
84
|
connection def AppliesInContext :> MemoRelationship {
|
|
71
|
-
end useContext : UseContext;
|
|
72
|
-
end subjectElement : MemoPart;
|
|
85
|
+
end useContext : UseContext :>> source;
|
|
86
|
+
end subjectElement : MemoPart :>> target;
|
|
87
|
+
}
|
|
88
|
+
abstract connection appliesInContextLinks : AppliesInContext[*];
|
|
89
|
+
metadata def <appliesInContext> AppliesInContextMetadata :> SemanticMetadata {
|
|
90
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
91
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
92
|
+
:>> baseType = appliesInContextLinks meta SysML::Usage;
|
|
73
93
|
}
|
|
74
94
|
connection def SituatedIn :> MemoRelationship {
|
|
75
|
-
end useContext : UseContext;
|
|
76
|
-
end environment : UseEnvironment;
|
|
95
|
+
end useContext : UseContext :>> source;
|
|
96
|
+
end environment : UseEnvironment :>> target;
|
|
97
|
+
}
|
|
98
|
+
abstract connection situatedInLinks : SituatedIn[*];
|
|
99
|
+
metadata def <situatedIn> SituatedInMetadata :> SemanticMetadata {
|
|
100
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
101
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
102
|
+
:>> baseType = situatedInLinks meta SysML::Usage;
|
|
77
103
|
}
|
|
78
104
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Scenario foundation. A scenario is a selected path through a
|
|
2
|
-
// workflow (or functional flow), classified by three independent
|
|
3
|
-
// dimensions — variant, operational condition, purpose
|
|
4
|
-
// single ScenarioKind. An occurrence is an actual or hypothetical execution
|
|
2
|
+
// workflow (or functional flow), classified by its kind plus three independent
|
|
3
|
+
// dimensions — variant, operational condition, and purpose. An occurrence is an actual or hypothetical execution
|
|
5
4
|
// of a scenario. Alternate scenarios reference their base scenario and
|
|
6
5
|
// variation point instead of duplicating the workflow.
|
|
7
6
|
package memo_architecture_operational_scenarios {
|
|
7
|
+
private import Metaobjects::SemanticMetadata;
|
|
8
8
|
private import ScalarValues::*;
|
|
9
9
|
|
|
10
10
|
private import memo_core_common::*;
|
|
@@ -47,11 +47,25 @@ package memo_architecture_operational_scenarios {
|
|
|
47
47
|
enum cybersecurity;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
// The architecture/assurance role a scenario plays. These values preserve
|
|
51
|
+
// the former named scenario specializations without turning a taxonomy into
|
|
52
|
+
// six action definitions.
|
|
53
|
+
enum def ScenarioKind {
|
|
54
|
+
enum functional;
|
|
55
|
+
enum operative;
|
|
56
|
+
enum ui;
|
|
57
|
+
enum threat;
|
|
58
|
+
// `verification` is a SysML v2 reserved word; retain the regulated
|
|
59
|
+
// term with the same `memo` prefix used by ScenarioPurposeKind.
|
|
60
|
+
enum memoVerification;
|
|
61
|
+
enum hazardRelatedUse;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Shared scenario foundation. Fields that apply only to one scenario kind
|
|
65
|
+
// remain optional here; this keeps the taxonomy queryable without six
|
|
66
|
+
// otherwise redundant action definitions.
|
|
67
|
+
action def MemoScenario specializes MemoAction {
|
|
68
|
+
attribute scenarioKind : ScenarioKind;
|
|
55
69
|
attribute variantKind : ScenarioVariantKind;
|
|
56
70
|
attribute operationalCondition : OperationalConditionKind;
|
|
57
71
|
attribute scenarioPurpose : ScenarioPurposeKind[0..*];
|
|
@@ -62,26 +76,34 @@ package memo_architecture_operational_scenarios {
|
|
|
62
76
|
attribute postCondition : String;
|
|
63
77
|
attribute pathSummary : String;
|
|
64
78
|
|
|
65
|
-
ref involvedActors :
|
|
79
|
+
ref involvedActors : OperationalParticipant[0..*];
|
|
66
80
|
ref useContext : UseContext[0..1];
|
|
67
81
|
// Alternate/exception/recovery scenarios reference their base and the
|
|
68
82
|
// point at which behavior diverges — never a copied workflow.
|
|
69
83
|
ref baseScenario : MemoScenario[0..1];
|
|
70
84
|
attribute variationPoint : String;
|
|
71
|
-
}
|
|
72
85
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// by its own architecture layer and linked by typed realization
|
|
77
|
-
// relationships — never by copying the path. Workflow stays operational;
|
|
78
|
-
// only the scenario is layered.
|
|
79
|
-
part def OperativeScenario specializes MemoScenario {
|
|
86
|
+
// functional scenario
|
|
87
|
+
ref selectedFlow : MemoAction[0..1];
|
|
88
|
+
// operative scenario
|
|
80
89
|
ref parentWorkflow : OperationalWorkflow[0..1];
|
|
81
90
|
ref parentUseCase : UseCase[0..1];
|
|
82
|
-
// Each scenario owns the operational activity/action flow for its
|
|
83
|
-
// selected path. Do not reuse one generic activity for every scenario.
|
|
84
91
|
ref activities : OperationalActivity[0..*];
|
|
92
|
+
// UI scenario
|
|
93
|
+
ref parentFlow : MemoAction[0..1];
|
|
94
|
+
// threat scenario
|
|
95
|
+
attribute actorDescription : String;
|
|
96
|
+
attribute assumptionSummary : String;
|
|
97
|
+
attribute guaranteeSummary : String;
|
|
98
|
+
attribute securityObjective : String;
|
|
99
|
+
attribute abuseCaseReference : String;
|
|
100
|
+
attribute defaultCategory : ThreatCategoryKind[0..1];
|
|
101
|
+
// verification scenario
|
|
102
|
+
attribute verificationEnvironment : String;
|
|
103
|
+
attribute stimulusSummary : String;
|
|
104
|
+
// hazard-related use scenario (IEC 62366-1 3.9)
|
|
105
|
+
attribute hazardReference : String;
|
|
106
|
+
attribute selectionRationale : String;
|
|
85
107
|
}
|
|
86
108
|
|
|
87
109
|
// An actual or hypothetical execution of a scenario (usability test run,
|
|
@@ -104,13 +126,25 @@ package memo_architecture_operational_scenarios {
|
|
|
104
126
|
attribute selectsKind : SelectsKind;
|
|
105
127
|
attribute pathOrder : Integer[0..1];
|
|
106
128
|
attribute decisionTaken : String[0..1];
|
|
107
|
-
end scenario : MemoScenario;
|
|
129
|
+
end scenario : MemoScenario :>> source;
|
|
108
130
|
// A selected path element may be a WorkflowStep action or a flow
|
|
109
131
|
// element. Those constructs do not share a MEMO base metaclass.
|
|
110
|
-
end selected;
|
|
132
|
+
end selected :>> target;
|
|
133
|
+
}
|
|
134
|
+
abstract connection selectsLinks : Selects[*];
|
|
135
|
+
metadata def <selects> SelectsMetadata :> SemanticMetadata {
|
|
136
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
137
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
138
|
+
:>> baseType = selectsLinks meta SysML::Usage;
|
|
111
139
|
}
|
|
112
140
|
connection def OccursDuring :> MemoRelationship {
|
|
113
|
-
end occurrence : ScenarioOccurrence;
|
|
114
|
-
end context : UseContext;
|
|
141
|
+
end occurrence : ScenarioOccurrence :>> source;
|
|
142
|
+
end context : UseContext :>> target;
|
|
143
|
+
}
|
|
144
|
+
abstract connection occursDuringLinks : OccursDuring[*];
|
|
145
|
+
metadata def <occursDuring> OccursDuringMetadata :> SemanticMetadata {
|
|
146
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
147
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
148
|
+
:>> baseType = occursDuringLinks meta SysML::Usage;
|
|
115
149
|
}
|
|
116
150
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// achieve with system support — there is no separate Goal class. Clinical,
|
|
3
3
|
// service, manufacturing, and development use cases specialize the same base.
|
|
4
4
|
package memo_architecture_operational_use_cases {
|
|
5
|
+
private import Metaobjects::SemanticMetadata;
|
|
5
6
|
private import ScalarValues::*;
|
|
6
7
|
|
|
7
8
|
private import memo_core_common::*;
|
|
@@ -18,12 +19,7 @@ package memo_architecture_operational_use_cases {
|
|
|
18
19
|
enum development;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
use case def UseCase {
|
|
22
|
-
attribute id : String;
|
|
23
|
-
attribute name : String;
|
|
24
|
-
attribute description : String;
|
|
25
|
-
attribute rationale : String;
|
|
26
|
-
attribute sourceReference : String;
|
|
22
|
+
use case def UseCase :> MemoUseCase {
|
|
27
23
|
// Text of this use case's goal; this is not a separate Goal element.
|
|
28
24
|
attribute goalStatement : String;
|
|
29
25
|
attribute trigger : String;
|
|
@@ -34,34 +30,47 @@ package memo_architecture_operational_use_cases {
|
|
|
34
30
|
// clinical / service / manufacturing / development
|
|
35
31
|
attribute useCaseKind : UseCaseKind;
|
|
36
32
|
|
|
37
|
-
// The device or system under consideration supports the goal.
|
|
38
|
-
ref
|
|
33
|
+
// The device or system under consideration supports the goal. Native
|
|
34
|
+
// `subject`, not `ref` (R10-S6): SysIDE requires an explicit subject
|
|
35
|
+
// before a use case can declare `actor` — `case-usage-subject-
|
|
36
|
+
// parameter-position` — and "the device/system under consideration"
|
|
37
|
+
// is exactly what a case's subject means, so this was a duplicate
|
|
38
|
+
// waiting to surface once `actor` needed a subject to attach to.
|
|
39
|
+
subject supportingSystem : MemoPart[0..1];
|
|
39
40
|
ref primaryUser : User[0..1];
|
|
40
|
-
ref supportingActors :
|
|
41
|
+
ref supportingActors : OperationalParticipant[0..*];
|
|
41
42
|
ref useContext : UseContext[0..1];
|
|
42
43
|
ref originatingNeeds : Need[0..*];
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
connection def Motivates :> MemoRelationship {
|
|
46
|
-
end motivatingNeed : Need;
|
|
47
|
-
end motivatedUseCase : UseCase;
|
|
47
|
+
end motivatingNeed : Need :>> source;
|
|
48
|
+
end motivatedUseCase : UseCase :>> target;
|
|
48
49
|
}
|
|
49
|
-
connection
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
end participatingActor : Actor;
|
|
55
|
-
end useCase : UseCase;
|
|
56
|
-
}
|
|
57
|
-
// UML use-case relationships. Includes establishes a decomposition level;
|
|
58
|
-
// extends remains a cross-cutting relationship and is always presented.
|
|
59
|
-
connection def Includes :> MemoRelationship {
|
|
60
|
-
end includingUseCase : UseCase;
|
|
61
|
-
end includedUseCase : UseCase;
|
|
50
|
+
abstract connection motivatesLinks : Motivates[*];
|
|
51
|
+
metadata def <motivates> MotivatesMetadata :> SemanticMetadata {
|
|
52
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
53
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
54
|
+
:>> baseType = motivatesLinks meta SysML::Usage;
|
|
62
55
|
}
|
|
56
|
+
// `Initiates` and `ParticipatesIn` are native `actor` (R10-S6): both were
|
|
57
|
+
// a bare typed edge onto UseCase with no attributes of their own, and
|
|
58
|
+
// native `actor` does not distinguish an initiating actor from a
|
|
59
|
+
// participating one — that distinction now lives in how the actor is
|
|
60
|
+
// named on the use case, not in a relationship type. Write
|
|
61
|
+
// `actor <role> = <existingElement>;` inside the use case instead.
|
|
62
|
+
// UML use-case decomposition (`Includes`) is native `include use case` /
|
|
63
|
+
// `include` (R10-S6); write that instead of a connection here. `extends`
|
|
64
|
+
// has 0 hits in the corpus for a use-case `extend` production, so it stays
|
|
65
|
+
// a MEMO construct: a cross-cutting relationship that is always presented.
|
|
63
66
|
connection def Extends :> MemoRelationship {
|
|
64
|
-
end extendingUseCase : UseCase;
|
|
65
|
-
end extendedUseCase : UseCase;
|
|
67
|
+
end extendingUseCase : UseCase :>> source;
|
|
68
|
+
end extendedUseCase : UseCase :>> target;
|
|
69
|
+
}
|
|
70
|
+
abstract connection extendsLinks : Extends[*];
|
|
71
|
+
metadata def <extends> ExtendsMetadata :> SemanticMetadata {
|
|
72
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
73
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
74
|
+
:>> baseType = extendsLinks meta SysML::Usage;
|
|
66
75
|
}
|
|
67
76
|
}
|