@memoarchitect/ontology 0.7.0 → 0.8.24
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/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/memo.package.yaml +3 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
- package/examples/gpca-pump/model/catalog/project.sysml +5 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/memo.package.yaml +3 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -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 +12 -0
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
- package/examples/surgical-robot/memo.package.yaml +3 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
- package/examples/ui-screen-regions/memo.package.yaml +3 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
- 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/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/src/extension.sysml +37 -0
- package/memo.manifest.yaml +13 -2
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +5 -3
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +23 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +93 -36
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
- package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
- package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
- package/src/architecture/operational/activities/memo_activities.sysml +27 -29
- package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
- package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
- package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
- package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
- 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/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
- package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
- package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
- package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
- package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
- package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
- package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
- package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
- package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
- package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
- package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
- package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
- package/src/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 +40 -21
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +7 -20
- 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 +90 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
- package/src/core/annotations/memo_annotations.sysml +25 -6
- package/src/core/common/memo_common.sysml +130 -21
- package/src/core/consistency_rules/consistency_rules.sysml +1 -1
- package/src/core/dimensions/dimensions.sysml +12 -0
- package/src/core/enumerations/memo_enumerations.sysml +60 -14
- package/src/core/relationships/memo_relationships.sysml +199 -196
- package/src/memo_namespaces.sysml +30 -0
- package/src/methodology/core/memo_core.sysml +24 -0
- package/src/methodology/profiles/memo_profiles.sysml +1 -1
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +20 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/ontology/ontology_invariants.sysml +223 -11
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/default/memo.package.yaml +2 -0
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/samd/memo.package.yaml +2 -0
- package/examples/extensions/README.md +0 -16
- package/examples/extensions/template/src/extension.sysml +0 -15
- package/examples/gpca-pump/gpca-pump.kpar +0 -0
- /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
- /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
|
@@ -44,12 +44,24 @@ package memo_architecture_logical_interfaces {
|
|
|
44
44
|
attribute apiStyle : String;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
// Software interaction contracts specialize the native MEMO interface
|
|
48
|
+
// family. Concrete technologies add their protocol roles and message
|
|
49
|
+
// flows; ports remain the endpoints that components actually own.
|
|
50
|
+
abstract interface def SoftwareInterface specializes Interface {
|
|
51
|
+
// `default`, not `=`. A bare `=` in a definition BINDS the value, and
|
|
52
|
+
// a binding cannot be overridden by a usage — which asserted that
|
|
53
|
+
// every software interface is bidirectional and made a directional one
|
|
54
|
+
// inexpressible. A ROS topic publisher → subscriber is the obvious
|
|
55
|
+
// counterexample, and it is the common case rather than an exotic one.
|
|
56
|
+
attribute :>> direction default DirectionKind::inputOutput;
|
|
57
|
+
}
|
|
58
|
+
|
|
47
59
|
// A typed thing exchanged at a boundary. Concrete items such as
|
|
48
60
|
// AlarmSignal and FlowCommand specialize this type; they are neither
|
|
49
61
|
// functions nor generic action-flow notation.
|
|
50
62
|
// The kind of item is given by itemKind (data / command / signal / …);
|
|
51
63
|
// the control-specific fields below apply only when itemKind = command.
|
|
52
|
-
item def InterfaceItem specializes
|
|
64
|
+
item def InterfaceItem specializes MemoItem {
|
|
53
65
|
attribute itemKind : InterfaceItemKind;
|
|
54
66
|
attribute confidentialityClass : String;
|
|
55
67
|
attribute integrityClass : String;
|
|
@@ -73,16 +85,47 @@ package memo_architecture_logical_interfaces {
|
|
|
73
85
|
port def SensorPort specializes DataPort { attribute sensorDomain : String; }
|
|
74
86
|
port def CommandPort specializes DataPort { attribute commandDomain : String; }
|
|
75
87
|
|
|
76
|
-
part def ComponentExchange specializes
|
|
88
|
+
part def ComponentExchange specializes MemoPart {
|
|
77
89
|
attribute exchangeKind : FlowKind;
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
// Metaclass-neutral endpoints. CR-ONT-002 used to read: "Typed
|
|
91
|
+
// endpoints. A component or a boundary port may terminate an exchange,
|
|
92
|
+
// so the ends are MemoPart-typed." That reasoning was circular —
|
|
93
|
+
// PhysicalPort and SoftwarePort are part defs precisely SO THAT they
|
|
94
|
+
// could satisfy this typing, and the typing was justified by their
|
|
95
|
+
// being parts. Track A0 cut the circle at the ends, which is the side
|
|
96
|
+
// that has to move first: A1 turns those two into `port def`s, and a
|
|
97
|
+
// port cannot specialize a part-based type.
|
|
98
|
+
//
|
|
99
|
+
// The constraint the type was carrying — an endpoint is a component or
|
|
100
|
+
// a boundary port, never a requirement or a document — is now stated
|
|
101
|
+
// where it can be checked across metaclasses, as CR-ONT-072/073 in
|
|
102
|
+
// src/rules/ontology/ontology_invariants.sysml.
|
|
103
|
+
//
|
|
104
|
+
// `Base::Anything` rather than no type at all — the only place in this
|
|
105
|
+
// change that reaches for it. The 36 untyped ends in
|
|
106
|
+
// memo_core_relationships are `end` declarations, and an untyped `end`
|
|
107
|
+
// is established practice; an untyped `ref` with a multiplicity is not
|
|
108
|
+
// something MEMO's own grammar accepts (`Expecting token of type ';'
|
|
109
|
+
// but found '['`), and the grammar is not in this session's scope.
|
|
110
|
+
// `Base::Anything` is what the standard's `Allocations::Allocation`
|
|
111
|
+
// types its own ends with, so it is the conforming spelling of "any
|
|
112
|
+
// element", not a workaround.
|
|
113
|
+
ref sourceEndpoint : Base::Anything[0..1];
|
|
114
|
+
ref targetEndpoint : Base::Anything[0..1];
|
|
115
|
+
// `sourcePortPath` / `targetPortPath` are GONE. They were String
|
|
116
|
+
// "descriptive port paths (e.g. TLM.TLM_MODE_OUT) for AADL round-trips;
|
|
117
|
+
// labels only — never references", which is §13.3's string
|
|
118
|
+
// pseudo-reference: nothing can follow a string to an element, so
|
|
119
|
+
// anything built on them produced no traceability.
|
|
120
|
+
//
|
|
121
|
+
// Measured across the 92 sites in the GPCA example before removing
|
|
122
|
+
// them: 23 merely restated the endpoint the ref already named (15 gave
|
|
123
|
+
// the port's own display name, 8 were prose like "HW-001:
|
|
124
|
+
// GPCA_HW_Sensors"), and the other 69 named a port ON the endpoint
|
|
125
|
+
// component, resolving to 49 distinct AADL features. Those 49 are
|
|
126
|
+
// declared as real ports now and the endpoint refs point straight at
|
|
127
|
+
// them, which is what Track A1 making SoftwarePort a `port def` is for.
|
|
128
|
+
// The AADL round-trip is better served by an element than by its name.
|
|
86
129
|
ref allocatedExchanges : FunctionalExchange[0..*];
|
|
87
130
|
attribute direction : DirectionKind;
|
|
88
131
|
// Connection timing discipline from the source architecture
|
|
@@ -93,9 +136,18 @@ package memo_architecture_logical_interfaces {
|
|
|
93
136
|
// Boundary data port of a software system (e.g. an AADL top-level
|
|
94
137
|
// data port), modeled as a first-class element so exchanges can
|
|
95
138
|
// reference it and views can render the system boundary.
|
|
96
|
-
|
|
139
|
+
//
|
|
140
|
+
// A `port def` (Track A1) — see PhysicalPort in
|
|
141
|
+
// memo_architecture_realization_physical for why the specialization moved
|
|
142
|
+
// off InterfaceElement, why `direction` is native now (Track A2), and why
|
|
143
|
+
// `portKind` is duplicated on both ports instead of hoisted onto a base.
|
|
144
|
+
port def SoftwarePort specializes MemoPort {
|
|
97
145
|
attribute portKind : InterfaceKind;
|
|
98
|
-
|
|
146
|
+
// AADL port category (plan C2). Sampled vs. queued delivery decides
|
|
147
|
+
// whether a missed deadline drops a sample or grows a queue, which the
|
|
148
|
+
// timing analysis and the safety case both need and neither could ask
|
|
149
|
+
// the model for. `portKind` says what crosses; this says how.
|
|
150
|
+
attribute portCategory : PortCategoryKind;
|
|
99
151
|
attribute dataTypeName : String;
|
|
100
152
|
}
|
|
101
153
|
}
|
|
@@ -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::*;
|
|
@@ -115,7 +116,7 @@ package memo_architecture_logical_structure {
|
|
|
115
116
|
// optional so a component carries only the ones its role needs. A channel
|
|
116
117
|
// claiming independence must still be linked by IndependentOf with its
|
|
117
118
|
// basis stated.
|
|
118
|
-
part def LogicalComponent specializes
|
|
119
|
+
part def LogicalComponent specializes MemoPart {
|
|
119
120
|
attribute componentRole : ComponentRoleKind;
|
|
120
121
|
attribute systemType : SystemTypeKind[0..1];
|
|
121
122
|
attribute responsibility : String;
|
|
@@ -144,7 +145,7 @@ package memo_architecture_logical_structure {
|
|
|
144
145
|
end providerPort : LogicalPort;
|
|
145
146
|
end consumerPort : ~LogicalPort;
|
|
146
147
|
}
|
|
147
|
-
item def LogicalExchangeItem specializes
|
|
148
|
+
item def LogicalExchangeItem specializes MemoItem {
|
|
148
149
|
attribute contentKind : FlowContentKind;
|
|
149
150
|
}
|
|
150
151
|
|
|
@@ -152,11 +153,17 @@ package memo_architecture_logical_structure {
|
|
|
152
153
|
connection def LogicalConnector :> MemoRelationship {
|
|
153
154
|
attribute contentKind : FlowContentKind;
|
|
154
155
|
attribute direction : DirectionKind;
|
|
155
|
-
end sourceComponent : LogicalComponent;
|
|
156
|
-
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;
|
|
157
164
|
}
|
|
158
165
|
// A transfer of a typed item across a connector.
|
|
159
|
-
part def LogicalExchange specializes
|
|
166
|
+
part def LogicalExchange specializes MemoPart {
|
|
160
167
|
attribute contentKind : FlowContentKind;
|
|
161
168
|
attribute direction : DirectionKind;
|
|
162
169
|
attribute latencyRequirement : String;
|
|
@@ -167,40 +174,34 @@ package memo_architecture_logical_structure {
|
|
|
167
174
|
|
|
168
175
|
// States and modes of the logical solution (kept distinct from UI state
|
|
169
176
|
// and from physical device configuration).
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
part def LogicalMode specializes ArchitectureElement {
|
|
174
|
-
attribute modePurpose : String;
|
|
175
|
-
attribute entryCondition : String;
|
|
176
|
-
attribute exitCondition : String;
|
|
177
|
-
}
|
|
178
|
-
part def LogicalBehavior specializes ArchitectureElement {
|
|
177
|
+
|
|
178
|
+
part def LogicalBehavior specializes MemoPart {
|
|
179
179
|
attribute behaviorSummary : String;
|
|
180
180
|
attribute executionSemantics : String;
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
// Isolation, fault containment, and trust boundaries (§10).
|
|
184
|
-
part def IsolationBoundary specializes
|
|
184
|
+
part def IsolationBoundary specializes MemoPart {
|
|
185
185
|
attribute boundaryKind : String;
|
|
186
186
|
attribute isolationMechanism : String;
|
|
187
187
|
}
|
|
188
|
-
part def FaultContainmentRegion specializes
|
|
188
|
+
part def FaultContainmentRegion specializes MemoPart {
|
|
189
189
|
attribute containmentRationale : String;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
// Claimed independence between channels (common-cause defense).
|
|
193
193
|
connection def IndependentOf :> MemoRelationship {
|
|
194
194
|
attribute independenceBasis : String;
|
|
195
|
-
end channel : LogicalComponent;
|
|
196
|
-
end otherChannel : LogicalComponent;
|
|
197
|
-
}
|
|
198
|
-
connection def MonitorsChannel :> MemoRelationship {
|
|
199
|
-
end monitorChannel : LogicalComponent;
|
|
200
|
-
end monitoredComponent : LogicalComponent;
|
|
195
|
+
end channel : LogicalComponent :>> source;
|
|
196
|
+
end otherChannel : LogicalComponent :>> target;
|
|
201
197
|
}
|
|
202
|
-
connection
|
|
203
|
-
|
|
204
|
-
|
|
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;
|
|
205
203
|
}
|
|
204
|
+
// `MonitorsChannel` is native `dependency` (R10-S6): write
|
|
205
|
+
// `dependency <monitorChannel> to <monitoredComponent>;` instead.
|
|
206
|
+
|
|
206
207
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
// Operational
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// it must trace to usability validation.
|
|
7
|
-
//
|
|
8
|
-
// instrument
|
|
1
|
+
// Operational actions (§7, §17). One `OperativeAction` (action def on
|
|
2
|
+
// MemoAction) is a unit of operational work; whether a User or the system
|
|
3
|
+
// performs it is a native `perform` relationship, not a subtype.
|
|
4
|
+
// A critical task is an OperativeAction with high/catastrophic criticality that
|
|
5
|
+
// a User performs — its failure could cause serious harm (IEC 62366-1 / FDA HF
|
|
6
|
+
// guidance) and it must trace to usability validation. Task difficulty belongs
|
|
7
|
+
// to an action performed in a context (TaskDifficultyAssessment), never to an
|
|
8
|
+
// instrument.
|
|
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::*;
|
|
@@ -23,33 +24,25 @@ package memo_architecture_operational_activities {
|
|
|
23
24
|
enum extreme;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
action
|
|
27
|
+
// One operational action / step. Who performs it — a human actor or the
|
|
28
|
+
// system — is a relationship (native `perform`), not a subtype, so an
|
|
29
|
+
// action can migrate from user- to system-performed (automation, as-is →
|
|
30
|
+
// to-be) without changing type. This one type merges the former
|
|
31
|
+
// OperationalActivity, UserTask, SystemAction and TaskStep: a "user task"
|
|
32
|
+
// is simply an OperativeAction a User performs; finer steps are nested
|
|
33
|
+
// OperativeActions. Human-factors fields (potentialHarm, severityIfFailed,
|
|
34
|
+
// perceptualCue …) are optional, meaningful when a User is the performer.
|
|
35
|
+
action def OperativeAction specializes MemoAction {
|
|
27
36
|
attribute trigger : String;
|
|
28
37
|
attribute preCondition : String;
|
|
29
38
|
attribute postCondition : String;
|
|
30
39
|
attribute criticality : CriticalityKind;
|
|
31
|
-
ref performedBy : Actor[0..*];
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// A human task. A critical task (IEC 62366-1 / FDA HF guidance §3) is a
|
|
35
|
-
// UserTask whose criticality is high or catastrophic — a use error could
|
|
36
|
-
// cause serious harm. potentialHarm/severityIfFailed are set only for such
|
|
37
|
-
// tasks. Modeled as an attribute, like SystemFunction.criticality.
|
|
38
|
-
action def UserTask specializes MemoAction {
|
|
39
40
|
attribute taskGoal : String;
|
|
40
|
-
attribute preCondition : String;
|
|
41
|
-
attribute postCondition : String;
|
|
42
41
|
attribute expectedDuration : String;
|
|
43
42
|
attribute frequencyOfUse : String;
|
|
44
|
-
attribute criticality : CriticalityKind;
|
|
45
43
|
attribute potentialHarm : String[0..1];
|
|
46
44
|
attribute severityIfFailed : SeverityKind[0..1];
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// An elementary perceptual/cognitive/motor step within a user task
|
|
51
|
-
// (task analysis granularity: grasp needle, drive needle, tie knot …).
|
|
52
|
-
action def TaskStep specializes MemoAction {
|
|
45
|
+
attribute automated : Boolean;
|
|
53
46
|
attribute perceptualCue : String;
|
|
54
47
|
attribute feedbackExpected : String;
|
|
55
48
|
}
|
|
@@ -71,7 +64,6 @@ package memo_architecture_operational_activities {
|
|
|
71
64
|
attribute assessor : String;
|
|
72
65
|
attribute assessmentMethod : String;
|
|
73
66
|
|
|
74
|
-
ref assessedTask : UserTask[0..1];
|
|
75
67
|
ref userPopulation : User[0..1];
|
|
76
68
|
ref useEnvironment : UseEnvironment[0..1];
|
|
77
69
|
ref instrument : MemoPart[0..1];
|
|
@@ -79,7 +71,13 @@ package memo_architecture_operational_activities {
|
|
|
79
71
|
}
|
|
80
72
|
|
|
81
73
|
connection def AssessesDifficulty :> MemoRelationship {
|
|
82
|
-
end assessment : TaskDifficultyAssessment;
|
|
83
|
-
end task :
|
|
74
|
+
end assessment : TaskDifficultyAssessment :>> source;
|
|
75
|
+
end task : OperativeAction :>> target;
|
|
76
|
+
}
|
|
77
|
+
abstract connection assessesDifficultyLinks : AssessesDifficulty[*];
|
|
78
|
+
metadata def <assessesDifficulty> AssessesDifficultyMetadata :> SemanticMetadata {
|
|
79
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
80
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
81
|
+
:>> baseType = assessesDifficultyLinks meta SysML::Usage;
|
|
84
82
|
}
|
|
85
83
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
1
|
+
// Operational participants (§4) interact with the system. A stakeholder —
|
|
2
|
+
// someone with a concern about the system who need not interact with it — is
|
|
3
|
+
// a native SysML notion (a Part in a stakeholder membership on a concern or
|
|
4
|
+
// viewpoint), not a separate MEMO type; the same Part may fill both roles.
|
|
5
|
+
// "User" is reserved for a human who interacts with the medical device.
|
|
5
6
|
package memo_architecture_operational_context_actors {
|
|
6
7
|
private import ScalarValues::*;
|
|
7
8
|
|
|
8
9
|
private import memo_core_common::*;
|
|
9
10
|
private import memo_core_enumerations::*;
|
|
10
|
-
|
|
11
|
-
abstract part def Actor specializes MemoPart {
|
|
11
|
+
abstract part def OperationalParticipant specializes MemoPart {
|
|
12
12
|
attribute actorKind : ActorKind;
|
|
13
13
|
attribute trainingLevel : String;
|
|
14
14
|
attribute responsibility : String;
|
|
@@ -19,7 +19,7 @@ package memo_architecture_operational_context_actors {
|
|
|
19
19
|
// The human actor. The specific role is given by actorKind
|
|
20
20
|
// (patient / clinician / caregiver / technician / administrator); the
|
|
21
21
|
// role-specific fields below are set only for the relevant actorKind.
|
|
22
|
-
part def User specializes
|
|
22
|
+
part def User specializes OperationalParticipant {
|
|
23
23
|
attribute userPopulation : String;
|
|
24
24
|
attribute impairmentConsiderations : String;
|
|
25
25
|
attribute intendedTraining : String;
|
|
@@ -32,7 +32,5 @@ package memo_architecture_operational_context_actors {
|
|
|
32
32
|
|
|
33
33
|
// A non-human actor (external system, external device, or environmental
|
|
34
34
|
// agent). The specific kind is described by externalKind.
|
|
35
|
-
|
|
36
|
-
attribute externalKind : String[0..1];
|
|
37
|
-
}
|
|
35
|
+
|
|
38
36
|
}
|
|
@@ -1,28 +1,18 @@
|
|
|
1
|
-
// ISO/IEC/IEEE 42010 architecture-description core (§4)
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
1
|
+
// ISO/IEC/IEEE 42010 architecture-description core (§4): ArchitectureDescription,
|
|
2
|
+
// ModelKind, and CorrespondenceRule below. Stakeholders and concerns — 42010's
|
|
3
|
+
// other cornerstones — are native SysML v2 constructs (stakeholder memberships
|
|
4
|
+
// and `concern def`), used directly rather than reinvented as MEMO types. A
|
|
5
|
+
// View (memo_viewpoints_definitions::MemoView) conforms to a Viewpoint within
|
|
6
|
+
// an ArchitectureDescription.
|
|
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
|
-
part def ArchitectureDescription specializes DocumentedElement {
|
|
15
|
+
part def ArchitectureDescription specializes MemoPart {
|
|
26
16
|
attribute systemOfInterest : String;
|
|
27
17
|
attribute version : String;
|
|
28
18
|
}
|
|
@@ -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::*;
|
|
@@ -14,7 +23,6 @@ package memo_architecture_operational_context_use_context {
|
|
|
14
23
|
attribute environment : String;
|
|
15
24
|
attribute jurisdiction : String;
|
|
16
25
|
attribute connectedUse : Boolean;
|
|
17
|
-
attribute intendedUseReference : String;
|
|
18
26
|
}
|
|
19
27
|
|
|
20
28
|
// The physical/organizational environment of use (IEC 62366-1 3.20),
|
|
@@ -47,32 +55,49 @@ package memo_architecture_operational_context_use_context {
|
|
|
47
55
|
attribute contextSide : ContextSideKind;
|
|
48
56
|
// The verb, as it should read on the edge ("Directs procedure").
|
|
49
57
|
attribute interactionLabel : String[0..1];
|
|
50
|
-
end contextParticipant : MemoPart;
|
|
58
|
+
end contextParticipant : MemoPart :>> source;
|
|
51
59
|
// Untyped: the system of interest may be a part or an operational activity.
|
|
52
|
-
end systemOfInterest;
|
|
60
|
+
end systemOfInterest :>> target;
|
|
61
|
+
}
|
|
62
|
+
abstract connection interactsInContextLinks : InteractsInContext[*];
|
|
63
|
+
metadata def <interactsInContext> InteractsInContextMetadata :> SemanticMetadata {
|
|
64
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
65
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
66
|
+
:>> baseType = interactsInContextLinks meta SysML::Usage;
|
|
53
67
|
}
|
|
54
68
|
|
|
55
69
|
connection def InteractsWith :> MemoRelationship {
|
|
56
|
-
end contextParticipant :
|
|
70
|
+
end contextParticipant : OperationalParticipant :>> source;
|
|
57
71
|
// Untyped so operational activities (action def) can be targets as well as parts.
|
|
58
72
|
end target;
|
|
59
73
|
}
|
|
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;
|
|
74
|
+
abstract connection interactsWithLinks : InteractsWith[*];
|
|
75
|
+
metadata def <interactsWith> InteractsWithMetadata :> SemanticMetadata {
|
|
76
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
77
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
78
|
+
:>> baseType = interactsWithLinks meta SysML::Usage;
|
|
69
79
|
}
|
|
80
|
+
// `ConnectsPhysically` is native `connect` (R10-S6): write
|
|
81
|
+
// `connection connect source ::> <a> to target ::> <b>;` — the ordinary
|
|
82
|
+
// untyped binary connection — instead of a connection def for it.
|
|
70
83
|
connection def AppliesInContext :> MemoRelationship {
|
|
71
|
-
end useContext : UseContext;
|
|
72
|
-
end subjectElement : MemoPart;
|
|
84
|
+
end useContext : UseContext :>> source;
|
|
85
|
+
end subjectElement : MemoPart :>> target;
|
|
86
|
+
}
|
|
87
|
+
abstract connection appliesInContextLinks : AppliesInContext[*];
|
|
88
|
+
metadata def <appliesInContext> AppliesInContextMetadata :> SemanticMetadata {
|
|
89
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
90
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
91
|
+
:>> baseType = appliesInContextLinks meta SysML::Usage;
|
|
73
92
|
}
|
|
74
93
|
connection def SituatedIn :> MemoRelationship {
|
|
75
|
-
end useContext : UseContext;
|
|
76
|
-
end environment : UseEnvironment;
|
|
94
|
+
end useContext : UseContext :>> source;
|
|
95
|
+
end environment : UseEnvironment :>> target;
|
|
96
|
+
}
|
|
97
|
+
abstract connection situatedInLinks : SituatedIn[*];
|
|
98
|
+
metadata def <situatedIn> SituatedInMetadata :> SemanticMetadata {
|
|
99
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
100
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
101
|
+
:>> baseType = situatedInLinks meta SysML::Usage;
|
|
77
102
|
}
|
|
78
103
|
}
|
|
@@ -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::*;
|
|
@@ -16,45 +16,15 @@ package memo_architecture_operational_scenarios {
|
|
|
16
16
|
private import memo_architecture_operational_workflows::*;
|
|
17
17
|
private import memo_architecture_operational_use_cases::*;
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
// A scenario is a nominal path or an alternate (exception/recovery) path.
|
|
20
|
+
// Defaults to nominal.
|
|
21
|
+
enum def ScenarioKind {
|
|
20
22
|
enum nominal;
|
|
21
23
|
enum alternate;
|
|
22
|
-
enum exception;
|
|
23
|
-
enum recovery;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
enum degraded;
|
|
29
|
-
enum emergency;
|
|
30
|
-
enum maintenance;
|
|
31
|
-
enum startup;
|
|
32
|
-
enum shutdown;
|
|
33
|
-
enum timeout;
|
|
34
|
-
enum misuse;
|
|
35
|
-
enum foreseeableMisuse;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// `memoAnalysis` and `memoVerification` keep the regulated terms `analysis`
|
|
39
|
-
// and `verification` intact but prefixed, because both are SysML v2 reserved
|
|
40
|
-
// words and cannot be bare enum names. `validation` is not reserved.
|
|
41
|
-
enum def ScenarioPurposeKind {
|
|
42
|
-
enum memoAnalysis;
|
|
43
|
-
enum design;
|
|
44
|
-
enum memoVerification;
|
|
45
|
-
enum validation;
|
|
46
|
-
enum risk;
|
|
47
|
-
enum cybersecurity;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Shared scenario foundation. Specializations exist only where structure
|
|
51
|
-
// or invariants differ (OperativeScenario here; FunctionalScenario in
|
|
52
|
-
// memo_functions; UIScenario in memo_architecture_implementation_ui;
|
|
53
|
-
// VerificationScenario / ThreatScenario in assurance packages).
|
|
54
|
-
abstract action def MemoScenario specializes MemoAction {
|
|
55
|
-
attribute variantKind : ScenarioVariantKind;
|
|
56
|
-
attribute operationalCondition : OperationalConditionKind;
|
|
57
|
-
attribute scenarioPurpose : ScenarioPurposeKind[0..*];
|
|
26
|
+
action def OperativeScenario specializes MemoAction {
|
|
27
|
+
attribute scenarioKind : ScenarioKind default ScenarioKind::nominal;
|
|
58
28
|
attribute initialState : String;
|
|
59
29
|
attribute trigger : String;
|
|
60
30
|
attribute preCondition : String;
|
|
@@ -62,55 +32,37 @@ package memo_architecture_operational_scenarios {
|
|
|
62
32
|
attribute postCondition : String;
|
|
63
33
|
attribute pathSummary : String;
|
|
64
34
|
|
|
65
|
-
|
|
35
|
+
// The workflow this scenario belongs to is expressed by the workflow
|
|
36
|
+
// (HasScenario); a nominal/alternate pair are scenarios of the same
|
|
37
|
+
// workflow, distinguished by scenarioKind — no baseScenario back-ref.
|
|
38
|
+
// Actors are derived from `perform` on the nested steps, not listed.
|
|
66
39
|
ref useContext : UseContext[0..1];
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
attribute
|
|
40
|
+
// threat scenario
|
|
41
|
+
attribute actorDescription : String;
|
|
42
|
+
attribute assumptionSummary : String;
|
|
43
|
+
attribute guaranteeSummary : String;
|
|
44
|
+
attribute securityObjective : String;
|
|
45
|
+
attribute abuseCaseReference : String;
|
|
46
|
+
attribute defaultCategory : ThreatCategoryKind[0..1];
|
|
47
|
+
// verification scenario
|
|
48
|
+
attribute verificationEnvironment : String;
|
|
49
|
+
attribute stimulusSummary : String;
|
|
50
|
+
// hazard-related use scenario (IEC 62366-1 3.9)
|
|
51
|
+
attribute hazardReference : String;
|
|
52
|
+
attribute selectionRationale : String;
|
|
71
53
|
}
|
|
72
54
|
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
action def OperativeScenario specializes MemoScenario {
|
|
80
|
-
ref parentWorkflow : OperationalWorkflow[0..1];
|
|
81
|
-
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
|
-
ref activities : OperationalActivity[0..*];
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// An actual or hypothetical execution of a scenario (usability test run,
|
|
88
|
-
// postmarket incident reconstruction, simulated-use session).
|
|
89
|
-
part def ScenarioOccurrence specializes MemoPart {
|
|
90
|
-
attribute occurredAt : String;
|
|
91
|
-
attribute hypothetical : Boolean;
|
|
92
|
-
attribute outcomeSummary : String;
|
|
93
|
-
ref executedScenario : MemoScenario[1];
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Ordered selection of a workflow step into a scenario path.
|
|
97
|
-
// Selects unifies SelectsStep / SelectsFlow (a scenario selects its path
|
|
98
|
-
// element), keyed by selectsKind.
|
|
99
|
-
enum def SelectsKind {
|
|
100
|
-
enum step;
|
|
101
|
-
enum 'flow';
|
|
102
|
-
}
|
|
103
|
-
connection def Selects :> MemoRelationship {
|
|
104
|
-
attribute selectsKind : SelectsKind;
|
|
105
|
-
attribute pathOrder : Integer[0..1];
|
|
106
|
-
attribute decisionTaken : String[0..1];
|
|
107
|
-
end scenario : MemoScenario;
|
|
108
|
-
// A selected path element may be a WorkflowStep action or a flow
|
|
109
|
-
// element. Those constructs do not share a MEMO base metaclass.
|
|
110
|
-
end selected;
|
|
55
|
+
// A workflow is composed of one or more scenarios (nominal + alternate
|
|
56
|
+
// paths). ScenarioOccurrence/Executes were removed: an actual execution is
|
|
57
|
+
// a native SysML *usage* of the scenario, not a separate def + relation.
|
|
58
|
+
connection def HasScenario :> MemoRelationship {
|
|
59
|
+
end owningWorkflow : OperationalWorkflow :>> source;
|
|
60
|
+
end pathScenario : OperativeScenario :>> target;
|
|
111
61
|
}
|
|
112
|
-
connection
|
|
113
|
-
|
|
114
|
-
|
|
62
|
+
abstract connection hasScenarioLinks : HasScenario[*];
|
|
63
|
+
metadata def <hasScenario> HasScenarioMetadata :> SemanticMetadata {
|
|
64
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
65
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
66
|
+
:>> baseType = hasScenarioLinks meta SysML::Usage;
|
|
115
67
|
}
|
|
116
68
|
}
|