@memoarchitect/ontology 0.8.22 → 0.10.9
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 +1 -1
- package/examples/connected-patient-monitor/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
- package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -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 +11 -9
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
- 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 +9 -7
- package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.identity.yaml +2179 -0
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
- package/examples/gpca-pump/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -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 +7 -5
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
- 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 -4
- package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
- 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 +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/memo.package.yaml +3 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
- 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/project.sysml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
- 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/project.sysml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
- 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/project.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
- package/examples/temperature-alarm/memo.identity.yaml +64 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
- 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 +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/container_extension.sysml +2 -2
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- 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 +2 -2
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
- package/src/architecture/functional/functions/memo_functions.sysml +6 -6
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
- package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
- package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
- package/src/architecture/operational/activities/memo_activities.sysml +19 -28
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
- package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
- package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
- package/src/artifacts/standards/cfr_21_820.sysml +80 -89
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
- package/src/artifacts/standards/iec_60601_1.sysml +108 -121
- package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
- package/src/artifacts/standards/iec_60812.sysml +21 -22
- package/src/artifacts/standards/iec_62304.sysml +150 -169
- package/src/artifacts/standards/iec_62366_1.sysml +80 -89
- package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
- package/src/artifacts/standards/iso_13485.sysml +80 -89
- package/src/artifacts/standards/iso_14971.sysml +66 -73
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
- package/src/artifacts/templates/dhf/system/sad.md +3 -3
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
- package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
- package/src/assurance/requirements/memo_requirements.sysml +2 -18
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
- package/src/assurance/safety_risk/memo_risk.sysml +12 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
- package/src/core/common/memo_common.sysml +59 -55
- package/src/core/enumerations/memo_enumerations.sysml +1 -1
- package/src/core/relationships/memo_relationships.sysml +29 -56
- package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
- package/src/methodology/core/memo_core.sysml +0 -10
- package/src/methodology/profiles/memo_profiles.sysml +18 -16
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +22 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
- package/src/rules/ontology/ontology_invariants.sysml +121 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
- package/src/viewpoints/context/context_viewpoint.sysml +6 -5
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
- package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
- package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
- package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
- package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
- package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
- package/src/viewpoints/software/software_viewpoint.sysml +5 -4
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
- package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/connected-device/model/catalog/project.sysml +3 -1
- package/templates/default/memo.package.yaml +2 -0
- package/templates/default/model/catalog/project.sysml +3 -1
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/infusion-pump/model/catalog/project.sysml +3 -1
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/monitoring-device/model/catalog/project.sysml +3 -1
- package/templates/samd/memo.package.yaml +2 -0
- package/templates/samd/model/catalog/project.sysml +3 -1
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
// ─── A function is a behaviour ───────────────────────────────────────────
|
|
9
9
|
//
|
|
10
10
|
// `MemoFunction` and both its specializations are `action def`s. They were
|
|
11
|
-
// `part def SystemFunction specializes
|
|
12
|
-
// removed the reason: relation ends were typed on
|
|
11
|
+
// `part def SystemFunction specializes MemoPart` until Track A0
|
|
12
|
+
// removed the reason: relation ends were typed on part-based types,
|
|
13
13
|
// KerML forbids a behaviour from specializing a part-based type, and a function
|
|
14
14
|
// has to be satisfiable, verifiable, and allocatable. So a function was declared
|
|
15
|
-
// a part, and a separate `action def
|
|
15
|
+
// a part, and a separate `action def OperativeAction` carried the behaviour with a
|
|
16
16
|
// `ref performedFunction` stapling the two back together — a reference used in
|
|
17
17
|
// ZERO example files. The ends are metaclass-neutral now (CR-ONT-060..073), so
|
|
18
|
-
// the split has no cause and is gone:
|
|
18
|
+
// the split has no cause and is gone: OperativeAction is merged into the function
|
|
19
19
|
// family, and its `actionKind` moved onto MemoFunction where it was always
|
|
20
20
|
// describing the function anyway.
|
|
21
21
|
//
|
|
@@ -97,7 +97,7 @@ package memo_architecture_functional_functions {
|
|
|
97
97
|
// So this part def is a workaround for a MEMO gap, not a design MEMO is
|
|
98
98
|
// entitled to. Restoring the two dropped clauses is what would let it
|
|
99
99
|
// collapse into the flow it stands in for.
|
|
100
|
-
part def FunctionalExchange specializes
|
|
100
|
+
part def FunctionalExchange specializes MemoPart {
|
|
101
101
|
attribute flowKind : FlowKind;
|
|
102
102
|
attribute latencyBudgetMs : Real;
|
|
103
103
|
attribute staleAfterMs : Real;
|
|
@@ -112,7 +112,7 @@ package memo_architecture_functional_functions {
|
|
|
112
112
|
|
|
113
113
|
// A reusable functional route through system responsibilities. Functional
|
|
114
114
|
// flows are part of functional architecture, never logical structure.
|
|
115
|
-
part def FunctionalFlow specializes
|
|
115
|
+
part def FunctionalFlow specializes MemoPart {
|
|
116
116
|
attribute flowCategory : FunctionalFlowKind;
|
|
117
117
|
attribute endToEndLatencyBudgetMs : String;
|
|
118
118
|
attribute safetyRelevant : Boolean;
|
|
@@ -13,7 +13,17 @@ package memo_architecture_implementation_hardware_common {
|
|
|
13
13
|
private import memo_core_enumerations::*;
|
|
14
14
|
private import memo_core_relationships::*;
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
// The shared root of the physical family.
|
|
17
|
+
//
|
|
18
|
+
// `PhysicalAssembly` and `PhysicalComponent` each specialized `MemoPart`
|
|
19
|
+
// directly, so the family had two roots and no single type that means
|
|
20
|
+
// "a physical thing". A containment rule has to name one type, and
|
|
21
|
+
// `conformsTo(MemoPart)` is far too wide — it admits a requirement or a
|
|
22
|
+
// hazard. This is that type, and it carries nothing of its own: the split
|
|
23
|
+
// between an assembly and a component is what the two subtypes are for.
|
|
24
|
+
abstract part def PhysicalElement specializes MemoPart { }
|
|
25
|
+
|
|
26
|
+
part def PhysicalAssembly specializes PhysicalElement {
|
|
17
27
|
attribute responsibility : String;
|
|
18
28
|
attribute safetyRole : String;
|
|
19
29
|
attribute partNumber : String;
|
|
@@ -25,7 +35,7 @@ package memo_architecture_implementation_hardware_common {
|
|
|
25
35
|
// Retained name from 0.4; an electronics-centred assembly.
|
|
26
36
|
part def HardwareAssembly specializes PhysicalAssembly;
|
|
27
37
|
|
|
28
|
-
part def PhysicalComponent specializes
|
|
38
|
+
part def PhysicalComponent specializes PhysicalElement {
|
|
29
39
|
attribute partNumber : String;
|
|
30
40
|
attribute materialSummary : String;
|
|
31
41
|
// ISO 10993-1 contact characterization; required when true.
|
|
@@ -78,15 +78,4 @@ package memo_architecture_implementation_software_runtime {
|
|
|
78
78
|
// a component belongs to without claiming to describe it.
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
connection def ComponentConnects :> MemoRelationship {
|
|
82
|
-
attribute protocolSummary : String;
|
|
83
|
-
end sourceComponent : SoftwareComponent :>> source;
|
|
84
|
-
end targetComponent : SoftwareComponent :>> target;
|
|
85
|
-
}
|
|
86
|
-
abstract connection componentConnectsLinks : ComponentConnects[*];
|
|
87
|
-
metadata def <componentConnects> ComponentConnectsMetadata :> SemanticMetadata {
|
|
88
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
89
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
90
|
-
:>> baseType = componentConnectsLinks meta SysML::Usage;
|
|
91
|
-
}
|
|
92
81
|
}
|
|
@@ -28,7 +28,7 @@ package memo_architecture_implementation_software_structure {
|
|
|
28
28
|
// the term "software item" for this concept, but reserving SoftwareItem
|
|
29
29
|
// for the native SysML item family keeps structural parts and exchanged
|
|
30
30
|
// values unambiguous in the model.
|
|
31
|
-
abstract part def SoftwareElement specializes
|
|
31
|
+
abstract part def SoftwareElement specializes MemoPart {
|
|
32
32
|
attribute safetyClass : SafetyClassKind;
|
|
33
33
|
attribute complexity : ComplexityKind;
|
|
34
34
|
}
|
|
@@ -70,17 +70,17 @@ package memo_architecture_implementation_software_structure {
|
|
|
70
70
|
attribute soupClassification : SOUPClassificationKind[0..1];
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
part def Algorithm specializes
|
|
73
|
+
part def Algorithm specializes MemoPart {
|
|
74
74
|
attribute algorithmKind : String;
|
|
75
75
|
attribute inputSummary : String;
|
|
76
76
|
attribute outputSummary : String;
|
|
77
77
|
attribute clinicalPerformanceClaim : String;
|
|
78
78
|
}
|
|
79
|
-
part def DataModel specializes
|
|
79
|
+
part def DataModel specializes MemoPart {
|
|
80
80
|
attribute schemaReference : String;
|
|
81
81
|
attribute persistenceScope : String;
|
|
82
82
|
}
|
|
83
|
-
part def ConfigurationArtifact specializes
|
|
83
|
+
part def ConfigurationArtifact specializes MemoPart {
|
|
84
84
|
attribute configurationScope : String;
|
|
85
85
|
attribute version : String;
|
|
86
86
|
}
|
|
@@ -89,8 +89,8 @@ package memo_architecture_implementation_software_structure {
|
|
|
89
89
|
abstract item def SoftwareItem specializes MemoItem {
|
|
90
90
|
attribute schemaIdentifier : String;
|
|
91
91
|
attribute schemaVersion : String;
|
|
92
|
-
attribute encoding : String;
|
|
93
|
-
attribute timestampRequired : Boolean;
|
|
92
|
+
attribute :>> encoding : String;
|
|
93
|
+
attribute :>> timestampRequired : Boolean;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
item def SBOMEntry specializes SoftwareItem {
|
|
@@ -108,7 +108,7 @@ package memo_architecture_implementation_software_structure {
|
|
|
108
108
|
// Moved out of memo_core_relationships: their ends are typed against
|
|
109
109
|
// types declared here, and core must not depend on a domain package.
|
|
110
110
|
connection def DependsOnSoup :> MemoRelationship {
|
|
111
|
-
end component :
|
|
111
|
+
end component : MemoPart :>> source;
|
|
112
112
|
end soupItem : SoftwareElement :>> target;
|
|
113
113
|
}
|
|
114
114
|
abstract connection dependsOnSoupLinks : DependsOnSoup[*];
|
|
@@ -110,7 +110,7 @@ package memo_architecture_implementation_ui {
|
|
|
110
110
|
enum recovery;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
part def UserInterface specializes
|
|
113
|
+
part def UserInterface specializes MemoPart {
|
|
114
114
|
attribute modality : String;
|
|
115
115
|
attribute uiTechnology : String;
|
|
116
116
|
}
|
|
@@ -121,7 +121,7 @@ package memo_architecture_implementation_ui {
|
|
|
121
121
|
// "something the user interacts with" rather than against software
|
|
122
122
|
// specifically. Without it a use error on a knob would be unmodellable,
|
|
123
123
|
// because ErrorAtElement would only accept a UIElement.
|
|
124
|
-
abstract part def InteractionElement specializes
|
|
124
|
+
abstract part def InteractionElement specializes MemoPart {
|
|
125
125
|
attribute labelText : String;
|
|
126
126
|
attribute accessibilitySummary : String;
|
|
127
127
|
// alarm annunciation (optional; IEC 60601-1-8)
|
|
@@ -235,7 +235,7 @@ package memo_architecture_implementation_ui {
|
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
// ─── Captured evidence ───────────────────────────────────────
|
|
238
|
-
// One image of one screen. MemoEvidence, not
|
|
238
|
+
// One image of one screen. MemoEvidence, not a design element: it
|
|
239
239
|
// records what a specific build actually displayed at a specific time,
|
|
240
240
|
// which is the provenance a design review or a usability engineering file
|
|
241
241
|
// needs before it can rely on the picture. The screen it depicts is an
|
|
@@ -258,11 +258,11 @@ package memo_architecture_implementation_ui {
|
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
// UI state is presentation state — distinct from system/device state.
|
|
261
|
-
part def UIState specializes
|
|
261
|
+
part def UIState specializes MemoPart {
|
|
262
262
|
attribute displayedInformation : String;
|
|
263
263
|
attribute availableActions : String;
|
|
264
264
|
}
|
|
265
|
-
part def UIEvent specializes
|
|
265
|
+
part def UIEvent specializes MemoPart {
|
|
266
266
|
attribute eventSource : String;
|
|
267
267
|
attribute intent : InteractionIntentKind;
|
|
268
268
|
}
|
|
@@ -274,24 +274,12 @@ package memo_architecture_implementation_ui {
|
|
|
274
274
|
}
|
|
275
275
|
|
|
276
276
|
// A reusable dialogue structure through the UI; a selected path through
|
|
277
|
-
// it is a
|
|
277
|
+
// it is a OperativeScenario with scenarioKind `ui`.
|
|
278
278
|
action def InteractionFlow specializes MemoAction {
|
|
279
279
|
attribute entryPoint : String;
|
|
280
280
|
attribute exitPoint : String;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
connection def DataBinding :> MemoRelationship {
|
|
284
|
-
attribute bindingExpression : String;
|
|
285
|
-
attribute refreshPolicy : String;
|
|
286
|
-
end boundElement : InteractionElement :>> source;
|
|
287
|
-
end dataSource : MemoItem :>> target;
|
|
288
|
-
}
|
|
289
|
-
abstract connection dataBindingLinks : DataBinding[*];
|
|
290
|
-
metadata def <dataBinding> DataBindingMetadata :> SemanticMetadata {
|
|
291
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
292
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
293
|
-
:>> baseType = dataBindingLinks meta SysML::Usage;
|
|
294
|
-
}
|
|
295
283
|
// `PresentsState` had zero usages anywhere in the tree (R10-S6). Its
|
|
296
284
|
// audited native form, `exhibit state`, does not actually fit: `UIState`
|
|
297
285
|
// is a `part def` with plain string attributes, not a `state def`, and
|
|
@@ -320,17 +308,6 @@ package memo_architecture_implementation_ui {
|
|
|
320
308
|
// Conflating the two was the mistake that made "clicking takes you to a
|
|
321
309
|
// child view" look like spatial nesting; it is a separate frame reached
|
|
322
310
|
// from here, and only this relation says so.
|
|
323
|
-
connection def NavigatesTo :> MemoRelationship {
|
|
324
|
-
attribute triggerGesture : String;
|
|
325
|
-
end sourceElement : UIElement :>> source;
|
|
326
|
-
end targetScreen : UIElement :>> target;
|
|
327
|
-
}
|
|
328
|
-
abstract connection navigatesToLinks : NavigatesTo[*];
|
|
329
|
-
metadata def <navigatesTo> NavigatesToMetadata :> SemanticMetadata {
|
|
330
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
331
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
332
|
-
:>> baseType = navigatesToLinks meta SysML::Usage;
|
|
333
|
-
}
|
|
334
311
|
|
|
335
312
|
// ── §18 traceability ─────────────────────────────────────────
|
|
336
313
|
connection def ElementTriggersAction :> MemoRelationship {
|
|
@@ -356,7 +333,7 @@ package memo_architecture_implementation_ui {
|
|
|
356
333
|
:>> baseType = flowServesUseCaseLinks meta SysML::Usage;
|
|
357
334
|
}
|
|
358
335
|
// A UI scenario realizes a functional scenario one layer up: each is a
|
|
359
|
-
//
|
|
336
|
+
// OperativeScenario selected by scenarioKind rather than a separate definition.
|
|
360
337
|
connection def ErrorAtElement :> MemoRelationship {
|
|
361
338
|
end useError : UseError :>> source;
|
|
362
339
|
end element : InteractionElement :>> target;
|
|
@@ -371,7 +348,7 @@ package memo_architecture_implementation_ui {
|
|
|
371
348
|
// (confirmation dialog, lockout, guarded control).
|
|
372
349
|
connection def ControlImplementedBy :> MemoRelationship {
|
|
373
350
|
end riskControl : RiskControlMeasure :>> source;
|
|
374
|
-
end implementingElement
|
|
351
|
+
end implementingElement :>> target;
|
|
375
352
|
}
|
|
376
353
|
abstract connection controlImplementedByLinks : ControlImplementedBy[*];
|
|
377
354
|
metadata def <controlImplementedBy> ControlImplementedByMetadata :> SemanticMetadata {
|
|
@@ -15,7 +15,9 @@ package memo_architecture_logical_interfaces {
|
|
|
15
15
|
// DigitalInterface / SPIInterface / RestInterface … hierarchy: those were
|
|
16
16
|
// 20+ classes that differed only in the value of `protocol`.
|
|
17
17
|
|
|
18
|
-
interface
|
|
18
|
+
// Specializes the standard library interface as well as MEMO's base,
|
|
19
|
+
// rather than shadowing it — see the note on UseCase.
|
|
20
|
+
interface def Interface specializes MemoInterface, Interfaces::Interface {
|
|
19
21
|
attribute interfaceKind : InterfaceKind; // semantic + signaling family
|
|
20
22
|
attribute direction : DirectionKind;
|
|
21
23
|
attribute protocol : String; // "SPI", "CAN", "Ethernet", "REST", "4-20mA"
|
|
@@ -85,7 +87,7 @@ package memo_architecture_logical_interfaces {
|
|
|
85
87
|
port def SensorPort specializes DataPort { attribute sensorDomain : String; }
|
|
86
88
|
port def CommandPort specializes DataPort { attribute commandDomain : String; }
|
|
87
89
|
|
|
88
|
-
part def ComponentExchange specializes
|
|
90
|
+
part def ComponentExchange specializes MemoPart {
|
|
89
91
|
attribute exchangeKind : FlowKind;
|
|
90
92
|
// Metaclass-neutral endpoints. CR-ONT-002 used to read: "Typed
|
|
91
93
|
// endpoints. A component or a boundary port may terminate an exchange,
|
|
@@ -116,7 +116,7 @@ package memo_architecture_logical_structure {
|
|
|
116
116
|
// optional so a component carries only the ones its role needs. A channel
|
|
117
117
|
// claiming independence must still be linked by IndependentOf with its
|
|
118
118
|
// basis stated.
|
|
119
|
-
part def LogicalComponent specializes
|
|
119
|
+
part def LogicalComponent specializes MemoPart {
|
|
120
120
|
attribute componentRole : ComponentRoleKind;
|
|
121
121
|
attribute systemType : SystemTypeKind[0..1];
|
|
122
122
|
attribute responsibility : String;
|
|
@@ -163,7 +163,7 @@ package memo_architecture_logical_structure {
|
|
|
163
163
|
:>> baseType = logicalConnectorLinks meta SysML::Usage;
|
|
164
164
|
}
|
|
165
165
|
// A transfer of a typed item across a connector.
|
|
166
|
-
part def LogicalExchange specializes
|
|
166
|
+
part def LogicalExchange specializes MemoPart {
|
|
167
167
|
attribute contentKind : FlowContentKind;
|
|
168
168
|
attribute direction : DirectionKind;
|
|
169
169
|
attribute latencyRequirement : String;
|
|
@@ -175,17 +175,17 @@ package memo_architecture_logical_structure {
|
|
|
175
175
|
// States and modes of the logical solution (kept distinct from UI state
|
|
176
176
|
// and from physical device configuration).
|
|
177
177
|
|
|
178
|
-
part def LogicalBehavior specializes
|
|
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
|
|
|
@@ -1,11 +1,11 @@
|
|
|
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
10
|
private import Metaobjects::SemanticMetadata;
|
|
11
11
|
private import ScalarValues::*;
|
|
@@ -24,33 +24,25 @@ package memo_architecture_operational_activities {
|
|
|
24
24
|
enum extreme;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
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 {
|
|
28
36
|
attribute trigger : String;
|
|
29
37
|
attribute preCondition : String;
|
|
30
38
|
attribute postCondition : String;
|
|
31
39
|
attribute criticality : CriticalityKind;
|
|
32
|
-
ref performedBy : OperationalParticipant[0..*];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// A human task. A critical task (IEC 62366-1 / FDA HF guidance §3) is a
|
|
36
|
-
// UserTask whose criticality is high or catastrophic — a use error could
|
|
37
|
-
// cause serious harm. potentialHarm/severityIfFailed are set only for such
|
|
38
|
-
// tasks. Modeled as an attribute, like SystemFunction.criticality.
|
|
39
|
-
action def UserTask specializes MemoAction {
|
|
40
40
|
attribute taskGoal : String;
|
|
41
|
-
attribute preCondition : String;
|
|
42
|
-
attribute postCondition : String;
|
|
43
41
|
attribute expectedDuration : String;
|
|
44
42
|
attribute frequencyOfUse : String;
|
|
45
|
-
attribute criticality : CriticalityKind;
|
|
46
43
|
attribute potentialHarm : String[0..1];
|
|
47
44
|
attribute severityIfFailed : SeverityKind[0..1];
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// An elementary perceptual/cognitive/motor step within a user task
|
|
52
|
-
// (task analysis granularity: grasp needle, drive needle, tie knot …).
|
|
53
|
-
action def TaskStep specializes MemoAction {
|
|
45
|
+
attribute automated : Boolean;
|
|
54
46
|
attribute perceptualCue : String;
|
|
55
47
|
attribute feedbackExpected : String;
|
|
56
48
|
}
|
|
@@ -72,7 +64,6 @@ package memo_architecture_operational_activities {
|
|
|
72
64
|
attribute assessor : String;
|
|
73
65
|
attribute assessmentMethod : String;
|
|
74
66
|
|
|
75
|
-
ref assessedTask : UserTask[0..1];
|
|
76
67
|
ref userPopulation : User[0..1];
|
|
77
68
|
ref useEnvironment : UseEnvironment[0..1];
|
|
78
69
|
ref instrument : MemoPart[0..1];
|
|
@@ -81,7 +72,7 @@ package memo_architecture_operational_activities {
|
|
|
81
72
|
|
|
82
73
|
connection def AssessesDifficulty :> MemoRelationship {
|
|
83
74
|
end assessment : TaskDifficultyAssessment :>> source;
|
|
84
|
-
end task :
|
|
75
|
+
end task : OperativeAction :>> target;
|
|
85
76
|
}
|
|
86
77
|
abstract connection assessesDifficultyLinks : AssessesDifficulty[*];
|
|
87
78
|
metadata def <assessesDifficulty> AssessesDifficultyMetadata :> SemanticMetadata {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
// Operational participants (§4) interact with the system
|
|
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
|
|
|
@@ -1,9 +1,9 @@
|
|
|
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
8
|
private import Metaobjects::SemanticMetadata;
|
|
9
9
|
private import ScalarValues::*;
|
|
@@ -12,7 +12,7 @@ package memo_architecture_operational_context_stakeholders {
|
|
|
12
12
|
private import memo_core_enumerations::*;
|
|
13
13
|
private import memo_core_relationships::*;
|
|
14
14
|
private import memo_architecture_operational_context_actors::*;
|
|
15
|
-
part def ArchitectureDescription specializes
|
|
15
|
+
part def ArchitectureDescription specializes MemoPart {
|
|
16
16
|
attribute systemOfInterest : String;
|
|
17
17
|
attribute version : String;
|
|
18
18
|
}
|
|
@@ -23,7 +23,6 @@ package memo_architecture_operational_context_use_context {
|
|
|
23
23
|
attribute environment : String;
|
|
24
24
|
attribute jurisdiction : String;
|
|
25
25
|
attribute connectedUse : Boolean;
|
|
26
|
-
attribute intendedUseReference : String;
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
// The physical/organizational environment of use (IEC 62366-1 3.20),
|
|
@@ -56,9 +55,9 @@ package memo_architecture_operational_context_use_context {
|
|
|
56
55
|
attribute contextSide : ContextSideKind;
|
|
57
56
|
// The verb, as it should read on the edge ("Directs procedure").
|
|
58
57
|
attribute interactionLabel : String[0..1];
|
|
59
|
-
end contextParticipant :
|
|
58
|
+
end contextParticipant : MemoPart :>> source;
|
|
60
59
|
// Untyped: the system of interest may be a part or an operational activity.
|
|
61
|
-
end systemOfInterest
|
|
60
|
+
end systemOfInterest :>> target;
|
|
62
61
|
}
|
|
63
62
|
abstract connection interactsInContextLinks : InteractsInContext[*];
|
|
64
63
|
metadata def <interactsInContext> InteractsInContextMetadata :> SemanticMetadata {
|
|
@@ -67,17 +66,9 @@ package memo_architecture_operational_context_use_context {
|
|
|
67
66
|
:>> baseType = interactsInContextLinks meta SysML::Usage;
|
|
68
67
|
}
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
end target;
|
|
74
|
-
}
|
|
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;
|
|
80
|
-
}
|
|
69
|
+
// `InteractsWith` is native `connect` (2026-08-18): write
|
|
70
|
+
// `connection connect <participant> to <target>;`. It carried no
|
|
71
|
+
// attributes, and the operational-context package already scopes the ends.
|
|
81
72
|
// `ConnectsPhysically` is native `connect` (R10-S6): write
|
|
82
73
|
// `connection connect source ::> <a> to target ::> <b>;` — the ordinary
|
|
83
74
|
// untyped binary connection — instead of a connection def for it.
|
|
@@ -16,59 +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
|
-
}
|
|
25
|
-
|
|
26
|
-
enum def OperationalConditionKind {
|
|
27
|
-
enum normal;
|
|
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
|
-
// 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
24
|
}
|
|
63
25
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
// otherwise redundant action definitions.
|
|
67
|
-
action def MemoScenario specializes MemoAction {
|
|
68
|
-
attribute scenarioKind : ScenarioKind;
|
|
69
|
-
attribute variantKind : ScenarioVariantKind;
|
|
70
|
-
attribute operationalCondition : OperationalConditionKind;
|
|
71
|
-
attribute scenarioPurpose : ScenarioPurposeKind[0..*];
|
|
26
|
+
action def OperativeScenario specializes MemoAction {
|
|
27
|
+
attribute scenarioKind : ScenarioKind default ScenarioKind::nominal;
|
|
72
28
|
attribute initialState : String;
|
|
73
29
|
attribute trigger : String;
|
|
74
30
|
attribute preCondition : String;
|
|
@@ -76,21 +32,11 @@ package memo_architecture_operational_scenarios {
|
|
|
76
32
|
attribute postCondition : String;
|
|
77
33
|
attribute pathSummary : String;
|
|
78
34
|
|
|
79
|
-
|
|
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.
|
|
80
39
|
ref useContext : UseContext[0..1];
|
|
81
|
-
// Alternate/exception/recovery scenarios reference their base and the
|
|
82
|
-
// point at which behavior diverges — never a copied workflow.
|
|
83
|
-
ref baseScenario : MemoScenario[0..1];
|
|
84
|
-
attribute variationPoint : String;
|
|
85
|
-
|
|
86
|
-
// functional scenario
|
|
87
|
-
ref selectedFlow : MemoAction[0..1];
|
|
88
|
-
// operative scenario
|
|
89
|
-
ref parentWorkflow : OperationalWorkflow[0..1];
|
|
90
|
-
ref parentUseCase : UseCase[0..1];
|
|
91
|
-
ref activities : OperationalActivity[0..*];
|
|
92
|
-
// UI scenario
|
|
93
|
-
ref parentFlow : MemoAction[0..1];
|
|
94
40
|
// threat scenario
|
|
95
41
|
attribute actorDescription : String;
|
|
96
42
|
attribute assumptionSummary : String;
|
|
@@ -106,45 +52,7 @@ package memo_architecture_operational_scenarios {
|
|
|
106
52
|
attribute selectionRationale : String;
|
|
107
53
|
}
|
|
108
54
|
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
attribute occurredAt : String;
|
|
113
|
-
attribute hypothetical : Boolean;
|
|
114
|
-
attribute outcomeSummary : String;
|
|
115
|
-
ref executedScenario : MemoScenario[1];
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Ordered selection of a workflow step into a scenario path.
|
|
119
|
-
// Selects unifies SelectsStep / SelectsFlow (a scenario selects its path
|
|
120
|
-
// element), keyed by selectsKind.
|
|
121
|
-
enum def SelectsKind {
|
|
122
|
-
enum step;
|
|
123
|
-
enum 'flow';
|
|
124
|
-
}
|
|
125
|
-
connection def Selects :> MemoRelationship {
|
|
126
|
-
attribute selectsKind : SelectsKind;
|
|
127
|
-
attribute pathOrder : Integer[0..1];
|
|
128
|
-
attribute decisionTaken : String[0..1];
|
|
129
|
-
end scenario : MemoScenario :>> source;
|
|
130
|
-
// A selected path element may be a WorkflowStep action or a flow
|
|
131
|
-
// element. Those constructs do not share a MEMO base metaclass.
|
|
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;
|
|
139
|
-
}
|
|
140
|
-
connection def OccursDuring :> MemoRelationship {
|
|
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;
|
|
149
|
-
}
|
|
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.
|
|
150
58
|
}
|