@memoarchitect/ontology 0.7.0 → 0.8.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- 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 +9 -0
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +9 -5
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +82 -58
- 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 +15 -2
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -331
- 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 +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -1
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -2
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +4 -2
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +3 -2
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- 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/model/catalog/reusable_instrument.sysml +7 -5
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -60
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -15
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +42 -66
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +56 -66
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +26 -55
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +0 -18
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +51 -82
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +21 -31
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -8
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -21
- 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 +1 -1
- 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 +49 -21
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +91 -34
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +37 -10
- package/src/architecture/implementation/ui/memo_ui.sysml +78 -38
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +63 -11
- package/src/architecture/logical/structure/memo_logical_structure.sysml +21 -20
- package/src/architecture/operational/activities/memo_activities.sysml +10 -3
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
- package/src/architecture/operational/workflows/memo_workflows.sysml +29 -10
- package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +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 +39 -20
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +5 -2
- package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
- package/src/assurance/safety_risk/memo_risk.sysml +78 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +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 +121 -16
- 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/rules/ontology/ontology_invariants.sysml +213 -1
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +3 -3
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -1
- package/src/viewpoints/context/context_viewpoint.sysml +1 -1
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -1
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +1 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +1 -1
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -1
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -1
- package/src/viewpoints/operational/operational_viewpoint.sysml +1 -1
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +1 -1
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -1
- package/src/viewpoints/verification/verification_viewpoint.sysml +1 -1
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -1
- 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
|
@@ -1,27 +1,17 @@
|
|
|
1
|
-
// ISO/IEC/IEEE 42010 architecture-description core (§4). A
|
|
2
|
-
// interests
|
|
1
|
+
// ISO/IEC/IEEE 42010 architecture-description core (§4). A stakeholder has
|
|
2
|
+
// interests in the system; a Viewpoint frames concerns; a View
|
|
3
3
|
// (memo_viewpoints_definitions::MemoView) is governed by a viewpoint within an
|
|
4
4
|
// ArchitectureDescription. The same real-world entity may play both the
|
|
5
|
-
// Stakeholder and
|
|
6
|
-
//
|
|
5
|
+
// Stakeholder and operational-participant concerns stay distinct from the
|
|
6
|
+
// architecture-description types below.
|
|
7
7
|
package memo_architecture_operational_context_stakeholders {
|
|
8
|
+
private import Metaobjects::SemanticMetadata;
|
|
8
9
|
private import ScalarValues::*;
|
|
9
10
|
|
|
10
11
|
private import memo_core_common::*;
|
|
11
12
|
private import memo_core_enumerations::*;
|
|
12
13
|
private import memo_core_relationships::*;
|
|
13
14
|
private import memo_architecture_operational_context_actors::*;
|
|
14
|
-
|
|
15
|
-
part def Stakeholder specializes MemoPart {
|
|
16
|
-
attribute stakeholderCategory : String;
|
|
17
|
-
attribute influence : String;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
part def Concern specializes MemoPart {
|
|
21
|
-
attribute concernKind : ConcernKind;
|
|
22
|
-
attribute question : String;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
15
|
part def ArchitectureDescription specializes DocumentedElement {
|
|
26
16
|
attribute systemOfInterest : String;
|
|
27
17
|
attribute version : String;
|
|
@@ -38,19 +28,6 @@ package memo_architecture_operational_context_stakeholders {
|
|
|
38
28
|
attribute ruleExpression : String;
|
|
39
29
|
}
|
|
40
30
|
|
|
41
|
-
connection def HasConcern :> MemoRelationship {
|
|
42
|
-
end interestedStakeholder : Stakeholder;
|
|
43
|
-
end stakeholderConcern : Concern;
|
|
44
|
-
}
|
|
45
|
-
connection def FramesConcern :> MemoRelationship {
|
|
46
|
-
end framingViewpoint : MemoPart;
|
|
47
|
-
end framedConcern : Concern;
|
|
48
|
-
}
|
|
49
|
-
// Links the stakeholder to the actor role the same entity plays, if any.
|
|
50
|
-
connection def ActsAsActor :> MemoRelationship {
|
|
51
|
-
end interestedStakeholder : Stakeholder;
|
|
52
|
-
end actorRole : Actor;
|
|
53
|
-
}
|
|
54
31
|
// Governs unifies GovernsCorrespondence / GovernsUse, keyed by governKind.
|
|
55
32
|
enum def GovernKind {
|
|
56
33
|
enum correspondence;
|
|
@@ -58,7 +35,13 @@ package memo_architecture_operational_context_stakeholders {
|
|
|
58
35
|
}
|
|
59
36
|
connection def Governs :> MemoRelationship {
|
|
60
37
|
attribute governKind : GovernKind;
|
|
61
|
-
end governor : MemoPart;
|
|
62
|
-
end governedElement : MemoPart;
|
|
38
|
+
end governor : MemoPart :>> source;
|
|
39
|
+
end governedElement : MemoPart :>> target;
|
|
40
|
+
}
|
|
41
|
+
abstract connection governsLinks : Governs[*];
|
|
42
|
+
metadata def <governs> GovernsMetadata :> SemanticMetadata {
|
|
43
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
44
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
45
|
+
:>> baseType = governsLinks meta SysML::Usage;
|
|
63
46
|
}
|
|
64
47
|
}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
// Operational use context (IEC 62366-1 use specification). Intended use and
|
|
2
2
|
// reasonably foreseeable misuse are assurance requirements/risk inputs and
|
|
3
3
|
// live in memo_assurance_requirements.
|
|
4
|
+
//
|
|
5
|
+
// This package once defined `ExchangesWith` for directional context-level data
|
|
6
|
+
// flow between boundary entities. It is deleted: SysML v2's own `flow` covers
|
|
7
|
+
// every case and is strictly stronger, because `of <ItemDef>` says WHAT moves
|
|
8
|
+
// and two untyped connection ends cannot. Delegation between a boundary port
|
|
9
|
+
// and the interior it stands for is `bind` — identity, not transport. SysML v2
|
|
10
|
+
// keeps the two apart the same way: training ch. 13 wires components with
|
|
11
|
+
// `flow`, ch. 12 delegates across a boundary with `bind`.
|
|
4
12
|
package memo_architecture_operational_context_use_context {
|
|
13
|
+
private import Metaobjects::SemanticMetadata;
|
|
5
14
|
private import ScalarValues::*;
|
|
6
15
|
|
|
7
16
|
private import memo_core_common::*;
|
|
@@ -47,32 +56,49 @@ package memo_architecture_operational_context_use_context {
|
|
|
47
56
|
attribute contextSide : ContextSideKind;
|
|
48
57
|
// The verb, as it should read on the edge ("Directs procedure").
|
|
49
58
|
attribute interactionLabel : String[0..1];
|
|
50
|
-
end contextParticipant :
|
|
59
|
+
end contextParticipant : ArchitectureElement :>> source;
|
|
51
60
|
// Untyped: the system of interest may be a part or an operational activity.
|
|
52
|
-
end systemOfInterest;
|
|
61
|
+
end systemOfInterest : ArchitectureElement :>> target;
|
|
62
|
+
}
|
|
63
|
+
abstract connection interactsInContextLinks : InteractsInContext[*];
|
|
64
|
+
metadata def <interactsInContext> InteractsInContextMetadata :> SemanticMetadata {
|
|
65
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
66
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
67
|
+
:>> baseType = interactsInContextLinks meta SysML::Usage;
|
|
53
68
|
}
|
|
54
69
|
|
|
55
70
|
connection def InteractsWith :> MemoRelationship {
|
|
56
|
-
end contextParticipant :
|
|
71
|
+
end contextParticipant : OperationalParticipant :>> source;
|
|
57
72
|
// Untyped so operational activities (action def) can be targets as well as parts.
|
|
58
73
|
end target;
|
|
59
74
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// Physical connection between boundary entities (fluid path, mounting).
|
|
66
|
-
connection def ConnectsPhysically :> MemoRelationship {
|
|
67
|
-
end source : MemoPart;
|
|
68
|
-
end target : MemoPart;
|
|
75
|
+
abstract connection interactsWithLinks : InteractsWith[*];
|
|
76
|
+
metadata def <interactsWith> InteractsWithMetadata :> SemanticMetadata {
|
|
77
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
78
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
79
|
+
:>> baseType = interactsWithLinks meta SysML::Usage;
|
|
69
80
|
}
|
|
81
|
+
// `ConnectsPhysically` is native `connect` (R10-S6): write
|
|
82
|
+
// `connection connect source ::> <a> to target ::> <b>;` — the ordinary
|
|
83
|
+
// untyped binary connection — instead of a connection def for it.
|
|
70
84
|
connection def AppliesInContext :> MemoRelationship {
|
|
71
|
-
end useContext : UseContext;
|
|
72
|
-
end subjectElement : MemoPart;
|
|
85
|
+
end useContext : UseContext :>> source;
|
|
86
|
+
end subjectElement : MemoPart :>> target;
|
|
87
|
+
}
|
|
88
|
+
abstract connection appliesInContextLinks : AppliesInContext[*];
|
|
89
|
+
metadata def <appliesInContext> AppliesInContextMetadata :> SemanticMetadata {
|
|
90
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
91
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
92
|
+
:>> baseType = appliesInContextLinks meta SysML::Usage;
|
|
73
93
|
}
|
|
74
94
|
connection def SituatedIn :> MemoRelationship {
|
|
75
|
-
end useContext : UseContext;
|
|
76
|
-
end environment : UseEnvironment;
|
|
95
|
+
end useContext : UseContext :>> source;
|
|
96
|
+
end environment : UseEnvironment :>> target;
|
|
97
|
+
}
|
|
98
|
+
abstract connection situatedInLinks : SituatedIn[*];
|
|
99
|
+
metadata def <situatedIn> SituatedInMetadata :> SemanticMetadata {
|
|
100
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
101
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
102
|
+
:>> baseType = situatedInLinks meta SysML::Usage;
|
|
77
103
|
}
|
|
78
104
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Scenario foundation. A scenario is a selected path through a
|
|
2
|
-
// workflow (or functional flow), classified by three independent
|
|
3
|
-
// dimensions — variant, operational condition, purpose
|
|
4
|
-
// single ScenarioKind. An occurrence is an actual or hypothetical execution
|
|
2
|
+
// workflow (or functional flow), classified by its kind plus three independent
|
|
3
|
+
// dimensions — variant, operational condition, and purpose. An occurrence is an actual or hypothetical execution
|
|
5
4
|
// of a scenario. Alternate scenarios reference their base scenario and
|
|
6
5
|
// variation point instead of duplicating the workflow.
|
|
7
6
|
package memo_architecture_operational_scenarios {
|
|
7
|
+
private import Metaobjects::SemanticMetadata;
|
|
8
8
|
private import ScalarValues::*;
|
|
9
9
|
|
|
10
10
|
private import memo_core_common::*;
|
|
@@ -47,11 +47,25 @@ package memo_architecture_operational_scenarios {
|
|
|
47
47
|
enum cybersecurity;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
// The architecture/assurance role a scenario plays. These values preserve
|
|
51
|
+
// the former named scenario specializations without turning a taxonomy into
|
|
52
|
+
// six action definitions.
|
|
53
|
+
enum def ScenarioKind {
|
|
54
|
+
enum functional;
|
|
55
|
+
enum operative;
|
|
56
|
+
enum ui;
|
|
57
|
+
enum threat;
|
|
58
|
+
// `verification` is a SysML v2 reserved word; retain the regulated
|
|
59
|
+
// term with the same `memo` prefix used by ScenarioPurposeKind.
|
|
60
|
+
enum memoVerification;
|
|
61
|
+
enum hazardRelatedUse;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Shared scenario foundation. Fields that apply only to one scenario kind
|
|
65
|
+
// remain optional here; this keeps the taxonomy queryable without six
|
|
66
|
+
// otherwise redundant action definitions.
|
|
67
|
+
action def MemoScenario specializes MemoAction {
|
|
68
|
+
attribute scenarioKind : ScenarioKind;
|
|
55
69
|
attribute variantKind : ScenarioVariantKind;
|
|
56
70
|
attribute operationalCondition : OperationalConditionKind;
|
|
57
71
|
attribute scenarioPurpose : ScenarioPurposeKind[0..*];
|
|
@@ -62,26 +76,34 @@ package memo_architecture_operational_scenarios {
|
|
|
62
76
|
attribute postCondition : String;
|
|
63
77
|
attribute pathSummary : String;
|
|
64
78
|
|
|
65
|
-
ref involvedActors :
|
|
79
|
+
ref involvedActors : OperationalParticipant[0..*];
|
|
66
80
|
ref useContext : UseContext[0..1];
|
|
67
81
|
// Alternate/exception/recovery scenarios reference their base and the
|
|
68
82
|
// point at which behavior diverges — never a copied workflow.
|
|
69
83
|
ref baseScenario : MemoScenario[0..1];
|
|
70
84
|
attribute variationPoint : String;
|
|
71
|
-
}
|
|
72
85
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// by its own architecture layer and linked by typed realization
|
|
77
|
-
// relationships — never by copying the path. Workflow stays operational;
|
|
78
|
-
// only the scenario is layered.
|
|
79
|
-
action def OperativeScenario specializes MemoScenario {
|
|
86
|
+
// functional scenario
|
|
87
|
+
ref selectedFlow : MemoAction[0..1];
|
|
88
|
+
// operative scenario
|
|
80
89
|
ref parentWorkflow : OperationalWorkflow[0..1];
|
|
81
90
|
ref parentUseCase : UseCase[0..1];
|
|
82
|
-
// Each scenario owns the operational activity/action flow for its
|
|
83
|
-
// selected path. Do not reuse one generic activity for every scenario.
|
|
84
91
|
ref activities : OperationalActivity[0..*];
|
|
92
|
+
// UI scenario
|
|
93
|
+
ref parentFlow : MemoAction[0..1];
|
|
94
|
+
// threat scenario
|
|
95
|
+
attribute actorDescription : String;
|
|
96
|
+
attribute assumptionSummary : String;
|
|
97
|
+
attribute guaranteeSummary : String;
|
|
98
|
+
attribute securityObjective : String;
|
|
99
|
+
attribute abuseCaseReference : String;
|
|
100
|
+
attribute defaultCategory : ThreatCategoryKind[0..1];
|
|
101
|
+
// verification scenario
|
|
102
|
+
attribute verificationEnvironment : String;
|
|
103
|
+
attribute stimulusSummary : String;
|
|
104
|
+
// hazard-related use scenario (IEC 62366-1 3.9)
|
|
105
|
+
attribute hazardReference : String;
|
|
106
|
+
attribute selectionRationale : String;
|
|
85
107
|
}
|
|
86
108
|
|
|
87
109
|
// An actual or hypothetical execution of a scenario (usability test run,
|
|
@@ -104,13 +126,25 @@ package memo_architecture_operational_scenarios {
|
|
|
104
126
|
attribute selectsKind : SelectsKind;
|
|
105
127
|
attribute pathOrder : Integer[0..1];
|
|
106
128
|
attribute decisionTaken : String[0..1];
|
|
107
|
-
end scenario : MemoScenario;
|
|
129
|
+
end scenario : MemoScenario :>> source;
|
|
108
130
|
// A selected path element may be a WorkflowStep action or a flow
|
|
109
131
|
// element. Those constructs do not share a MEMO base metaclass.
|
|
110
|
-
end selected;
|
|
132
|
+
end selected :>> target;
|
|
133
|
+
}
|
|
134
|
+
abstract connection selectsLinks : Selects[*];
|
|
135
|
+
metadata def <selects> SelectsMetadata :> SemanticMetadata {
|
|
136
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
137
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
138
|
+
:>> baseType = selectsLinks meta SysML::Usage;
|
|
111
139
|
}
|
|
112
140
|
connection def OccursDuring :> MemoRelationship {
|
|
113
|
-
end occurrence : ScenarioOccurrence;
|
|
114
|
-
end context : UseContext;
|
|
141
|
+
end occurrence : ScenarioOccurrence :>> source;
|
|
142
|
+
end context : UseContext :>> target;
|
|
143
|
+
}
|
|
144
|
+
abstract connection occursDuringLinks : OccursDuring[*];
|
|
145
|
+
metadata def <occursDuring> OccursDuringMetadata :> SemanticMetadata {
|
|
146
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
147
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
148
|
+
:>> baseType = occursDuringLinks meta SysML::Usage;
|
|
115
149
|
}
|
|
116
150
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// achieve with system support — there is no separate Goal class. Clinical,
|
|
3
3
|
// service, manufacturing, and development use cases specialize the same base.
|
|
4
4
|
package memo_architecture_operational_use_cases {
|
|
5
|
+
private import Metaobjects::SemanticMetadata;
|
|
5
6
|
private import ScalarValues::*;
|
|
6
7
|
|
|
7
8
|
private import memo_core_common::*;
|
|
@@ -18,12 +19,7 @@ package memo_architecture_operational_use_cases {
|
|
|
18
19
|
enum development;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
use case def UseCase {
|
|
22
|
-
attribute id : String;
|
|
23
|
-
attribute name : String;
|
|
24
|
-
attribute description : String;
|
|
25
|
-
attribute rationale : String;
|
|
26
|
-
attribute sourceReference : String;
|
|
22
|
+
use case def UseCase :> MemoUseCase {
|
|
27
23
|
// Text of this use case's goal; this is not a separate Goal element.
|
|
28
24
|
attribute goalStatement : String;
|
|
29
25
|
attribute trigger : String;
|
|
@@ -34,34 +30,47 @@ package memo_architecture_operational_use_cases {
|
|
|
34
30
|
// clinical / service / manufacturing / development
|
|
35
31
|
attribute useCaseKind : UseCaseKind;
|
|
36
32
|
|
|
37
|
-
// The device or system under consideration supports the goal.
|
|
38
|
-
ref
|
|
33
|
+
// The device or system under consideration supports the goal. Native
|
|
34
|
+
// `subject`, not `ref` (R10-S6): SysIDE requires an explicit subject
|
|
35
|
+
// before a use case can declare `actor` — `case-usage-subject-
|
|
36
|
+
// parameter-position` — and "the device/system under consideration"
|
|
37
|
+
// is exactly what a case's subject means, so this was a duplicate
|
|
38
|
+
// waiting to surface once `actor` needed a subject to attach to.
|
|
39
|
+
subject supportingSystem : MemoPart[0..1];
|
|
39
40
|
ref primaryUser : User[0..1];
|
|
40
|
-
ref supportingActors :
|
|
41
|
+
ref supportingActors : OperationalParticipant[0..*];
|
|
41
42
|
ref useContext : UseContext[0..1];
|
|
42
43
|
ref originatingNeeds : Need[0..*];
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
connection def Motivates :> MemoRelationship {
|
|
46
|
-
end motivatingNeed : Need;
|
|
47
|
-
end motivatedUseCase : UseCase;
|
|
47
|
+
end motivatingNeed : Need :>> source;
|
|
48
|
+
end motivatedUseCase : UseCase :>> target;
|
|
48
49
|
}
|
|
49
|
-
connection
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
end participatingActor : Actor;
|
|
55
|
-
end useCase : UseCase;
|
|
56
|
-
}
|
|
57
|
-
// UML use-case relationships. Includes establishes a decomposition level;
|
|
58
|
-
// extends remains a cross-cutting relationship and is always presented.
|
|
59
|
-
connection def Includes :> MemoRelationship {
|
|
60
|
-
end includingUseCase : UseCase;
|
|
61
|
-
end includedUseCase : UseCase;
|
|
50
|
+
abstract connection motivatesLinks : Motivates[*];
|
|
51
|
+
metadata def <motivates> MotivatesMetadata :> SemanticMetadata {
|
|
52
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
53
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
54
|
+
:>> baseType = motivatesLinks meta SysML::Usage;
|
|
62
55
|
}
|
|
56
|
+
// `Initiates` and `ParticipatesIn` are native `actor` (R10-S6): both were
|
|
57
|
+
// a bare typed edge onto UseCase with no attributes of their own, and
|
|
58
|
+
// native `actor` does not distinguish an initiating actor from a
|
|
59
|
+
// participating one — that distinction now lives in how the actor is
|
|
60
|
+
// named on the use case, not in a relationship type. Write
|
|
61
|
+
// `actor <role> = <existingElement>;` inside the use case instead.
|
|
62
|
+
// UML use-case decomposition (`Includes`) is native `include use case` /
|
|
63
|
+
// `include` (R10-S6); write that instead of a connection here. `extends`
|
|
64
|
+
// has 0 hits in the corpus for a use-case `extend` production, so it stays
|
|
65
|
+
// a MEMO construct: a cross-cutting relationship that is always presented.
|
|
63
66
|
connection def Extends :> MemoRelationship {
|
|
64
|
-
end extendingUseCase : UseCase;
|
|
65
|
-
end extendedUseCase : UseCase;
|
|
67
|
+
end extendingUseCase : UseCase :>> source;
|
|
68
|
+
end extendedUseCase : UseCase :>> target;
|
|
69
|
+
}
|
|
70
|
+
abstract connection extendsLinks : Extends[*];
|
|
71
|
+
metadata def <extends> ExtendsMetadata :> SemanticMetadata {
|
|
72
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
73
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
74
|
+
:>> baseType = extendsLinks meta SysML::Usage;
|
|
66
75
|
}
|
|
67
76
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// scenario. Workflows are action defs: steps, decisions, forks/joins, and
|
|
6
6
|
// successions use native SysML v2 action semantics where portable.
|
|
7
7
|
package memo_architecture_operational_workflows {
|
|
8
|
+
private import Metaobjects::SemanticMetadata;
|
|
8
9
|
private import ScalarValues::*;
|
|
9
10
|
|
|
10
11
|
private import memo_core_common::*;
|
|
@@ -36,7 +37,7 @@ package memo_architecture_operational_workflows {
|
|
|
36
37
|
attribute completionCondition : String;
|
|
37
38
|
attribute recoveryPathSummary : String;
|
|
38
39
|
attribute timingConstraints : String;
|
|
39
|
-
ref involvedActors :
|
|
40
|
+
ref involvedActors : OperationalParticipant[0..*];
|
|
40
41
|
attribute environmentSummary : String;
|
|
41
42
|
}
|
|
42
43
|
|
|
@@ -47,7 +48,7 @@ package memo_architecture_operational_workflows {
|
|
|
47
48
|
attribute exitCondition : String;
|
|
48
49
|
ref performedActivity : OperationalActivity[0..1];
|
|
49
50
|
ref performedTask : UserTask[0..1];
|
|
50
|
-
ref responsibleRole :
|
|
51
|
+
ref responsibleRole : OperationalParticipant[0..1];
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
// decision / fork / join / handoff.
|
|
@@ -68,8 +69,8 @@ package memo_architecture_operational_workflows {
|
|
|
68
69
|
attribute parallelismRationale : String[0..1];
|
|
69
70
|
attribute joinCondition : String[0..1];
|
|
70
71
|
attribute informationTransferred : String[0..1];
|
|
71
|
-
ref fromRole :
|
|
72
|
-
ref toRole :
|
|
72
|
+
ref fromRole : OperationalParticipant[0..1];
|
|
73
|
+
ref toRole : OperationalParticipant[0..1];
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
// Resources a workflow requires: information, materials, or equipment by
|
|
@@ -93,12 +94,24 @@ package memo_architecture_operational_workflows {
|
|
|
93
94
|
// The accepted endpoints span SysML metaclasses: an operational
|
|
94
95
|
// workflow or other action may support a use case, task, or
|
|
95
96
|
// capability. They therefore have no single MEMO base type.
|
|
96
|
-
end supporter;
|
|
97
|
-
end supported;
|
|
97
|
+
end supporter :>> source;
|
|
98
|
+
end supported : MemoAction :>> target;
|
|
99
|
+
}
|
|
100
|
+
abstract connection supportsLinks : Supports[*];
|
|
101
|
+
metadata def <supports> SupportsMetadata :> SemanticMetadata {
|
|
102
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
103
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
104
|
+
:>> baseType = supportsLinks meta SysML::Usage;
|
|
98
105
|
}
|
|
99
106
|
connection def RequiresResource :> MemoRelationship {
|
|
100
|
-
end workflow : OperationalWorkflow;
|
|
101
|
-
end resource : WorkflowResource;
|
|
107
|
+
end workflow : OperationalWorkflow :>> source;
|
|
108
|
+
end resource : WorkflowResource :>> target;
|
|
109
|
+
}
|
|
110
|
+
abstract connection requiresResourceLinks : RequiresResource[*];
|
|
111
|
+
metadata def <requiresResource> RequiresResourceMetadata :> SemanticMetadata {
|
|
112
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
113
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
114
|
+
:>> baseType = requiresResourceLinks meta SysML::Usage;
|
|
102
115
|
}
|
|
103
116
|
|
|
104
117
|
// ── Workflow transformation (as-is → to-be) ──────────────────
|
|
@@ -113,8 +126,14 @@ package memo_architecture_operational_workflows {
|
|
|
113
126
|
attribute transformKind : TransformKind;
|
|
114
127
|
attribute transformation : StepTransformationKind[0..1];
|
|
115
128
|
attribute transformationRationale : String[0..1];
|
|
116
|
-
end source :
|
|
117
|
-
end target :
|
|
129
|
+
end source : MemoAction;
|
|
130
|
+
end target : MemoAction;
|
|
131
|
+
}
|
|
132
|
+
abstract connection transformsLinks : Transforms[*];
|
|
133
|
+
metadata def <transforms> TransformsMetadata :> SemanticMetadata {
|
|
134
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
135
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
136
|
+
:>> baseType = transformsLinks meta SysML::Usage;
|
|
118
137
|
}
|
|
119
138
|
// The device or system whose introduction enables a workflow.
|
|
120
139
|
}
|
|
@@ -1,18 +1,30 @@
|
|
|
1
|
-
// Deployment (allocation) view: SoftwareModule buildsInto
|
|
2
|
-
// DeploymentUnit
|
|
3
|
-
//
|
|
4
|
-
//
|
|
1
|
+
// Deployment (allocation) view: SoftwareModule buildsInto DeploymentUnit;
|
|
2
|
+
// DeploymentUnit deploysTo ProcessingNode. Software deploys only to capable
|
|
3
|
+
// execution nodes (rules/crosslayer).
|
|
4
|
+
//
|
|
5
|
+
// `HostedBy` is NOT part of that chain, and this comment used to claim it was
|
|
6
|
+
// ("SoftwareComponent hostedBy ProcessingNode"). It is
|
|
7
|
+
// `processingNode : ArchitectureElement -> hostAssembly : ArchitectureElement`:
|
|
8
|
+
// physical hosting of a node by the assembly it is mounted in, running the
|
|
9
|
+
// other way and between different things. Software reaches a node through
|
|
10
|
+
// DeploysTo.
|
|
5
11
|
package memo_architecture_realization_deployment {
|
|
12
|
+
private import Metaobjects::SemanticMetadata;
|
|
6
13
|
private import ScalarValues::*;
|
|
14
|
+
// The standard's allocation base, which the two AADL bindings below root
|
|
15
|
+
// on alongside MemoRelationship.
|
|
16
|
+
private import Allocations::Allocation;
|
|
7
17
|
|
|
8
18
|
private import memo_core_common::*;
|
|
9
19
|
private import memo_core_enumerations::*;
|
|
10
20
|
private import memo_core_relationships::*;
|
|
11
21
|
private import memo_architecture_implementation_software_structure::*;
|
|
12
22
|
private import memo_architecture_implementation_software_runtime::*;
|
|
23
|
+
private import memo_architecture_implementation_hardware_electrical::*; // NetworkMedium
|
|
13
24
|
private import memo_architecture_realization_physical::*;
|
|
14
25
|
private import memo_architecture_functional_functions::*;
|
|
15
26
|
private import memo_architecture_logical_structure::*;
|
|
27
|
+
private import memo_architecture_logical_interfaces::*; // ComponentExchange
|
|
16
28
|
|
|
17
29
|
part def DeploymentUnit specializes ArchitectureElement {
|
|
18
30
|
attribute unitKind : String;
|
|
@@ -29,17 +41,88 @@ package memo_architecture_realization_deployment {
|
|
|
29
41
|
}
|
|
30
42
|
|
|
31
43
|
connection def BuildsInto :> MemoRelationship {
|
|
32
|
-
end module : SoftwareModule;
|
|
33
|
-
end deploymentUnit : DeploymentUnit;
|
|
44
|
+
end module : SoftwareModule :>> source;
|
|
45
|
+
end deploymentUnit : DeploymentUnit :>> target;
|
|
46
|
+
}
|
|
47
|
+
abstract connection buildsIntoLinks : BuildsInto[*];
|
|
48
|
+
metadata def <buildsInto> BuildsIntoMetadata :> SemanticMetadata {
|
|
49
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
50
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
51
|
+
:>> baseType = buildsIntoLinks meta SysML::Usage;
|
|
34
52
|
}
|
|
35
53
|
connection def DeploysTo :> MemoRelationship {
|
|
36
54
|
attribute deploymentKind : DeploymentKind;
|
|
37
|
-
end deploymentUnit : DeploymentUnit;
|
|
38
|
-
end node : ProcessingNode;
|
|
55
|
+
end deploymentUnit : DeploymentUnit :>> source;
|
|
56
|
+
end node : ProcessingNode :>> target;
|
|
57
|
+
}
|
|
58
|
+
abstract connection deploysToLinks : DeploysTo[*];
|
|
59
|
+
metadata def <deploysTo> DeploysToMetadata :> SemanticMetadata {
|
|
60
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
61
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
62
|
+
:>> baseType = deploysToLinks meta SysML::Usage;
|
|
39
63
|
}
|
|
40
64
|
connection def ProvidesEnvironment :> MemoRelationship {
|
|
41
|
-
end node : ProcessingNode;
|
|
42
|
-
end environment : RuntimeEnvironment;
|
|
65
|
+
end node : ProcessingNode :>> source;
|
|
66
|
+
end environment : RuntimeEnvironment :>> target;
|
|
67
|
+
}
|
|
68
|
+
abstract connection providesEnvironmentLinks : ProvidesEnvironment[*];
|
|
69
|
+
metadata def <providesEnvironment> ProvidesEnvironmentMetadata :> SemanticMetadata {
|
|
70
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
71
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
72
|
+
:>> baseType = providesEnvironmentLinks meta SysML::Usage;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ─── AADL bindings (SAE AS5506) — plan C1 ────────────────────────────
|
|
76
|
+
//
|
|
77
|
+
// AADL's analytic power is that EVERYTHING is bound to something, and the
|
|
78
|
+
// binding is where latency, bandwidth and fault propagation accrue. MEMO
|
|
79
|
+
// had one binding of three: `DeploysTo` is `actual_processor_binding`.
|
|
80
|
+
// Without the other two, `SoftwareComponent.memoryBudget` is unanalysable
|
|
81
|
+
// and `EndToEndFlow.latencyBudgetMs` cannot be checked against the media
|
|
82
|
+
// the flow traverses — the analysis the flow comment below describes and
|
|
83
|
+
// the model could not perform.
|
|
84
|
+
//
|
|
85
|
+
// Both are `allocation def`s rooted on the standard's
|
|
86
|
+
// `Allocations::Allocation`, because a binding IS an allocation and the
|
|
87
|
+
// language says so. The double specialization keeps MEMO's identification
|
|
88
|
+
// core from `MemoRelationship` while adding the standard's allocation
|
|
89
|
+
// semantics; both root on `Connections::BinaryConnection`, so this is a
|
|
90
|
+
// diamond and not a conflict. Verified under `syside check` against a
|
|
91
|
+
// negative control (a non-existent supertype is reported), so the clean
|
|
92
|
+
// result is the checker agreeing rather than the checker skipping.
|
|
93
|
+
|
|
94
|
+
// AADL `actual_memory_binding`. Which memory a software component's code
|
|
95
|
+
// and data occupy — what makes a memory budget a claim about a device
|
|
96
|
+
// rather than a string.
|
|
97
|
+
allocation def MemoryBinding :> MemoRelationship, Allocations::Allocation {
|
|
98
|
+
attribute bindingKind : String;
|
|
99
|
+
end boundComponent : SoftwareComponent :>> source;
|
|
100
|
+
end memory : MemoryDevice :>> target;
|
|
101
|
+
}
|
|
102
|
+
abstract connection memoryBindingLinks : MemoryBinding[*];
|
|
103
|
+
metadata def <memoryBinding> MemoryBindingMetadata :> SemanticMetadata {
|
|
104
|
+
:> annotatedElement : SysML::AllocationDefinition;
|
|
105
|
+
:> annotatedElement : SysML::AllocationUsage;
|
|
106
|
+
:>> baseType = memoryBindingLinks meta SysML::Usage;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// AADL `actual_connection_binding`. Which physical medium carries a
|
|
110
|
+
// component exchange. The source is the ComponentExchange rather than the
|
|
111
|
+
// `ComponentConnects` link, because the exchange is the ELEMENT that owns
|
|
112
|
+
// the budget (§19.3) and a link instance is not something the graph can
|
|
113
|
+
// bind to; it is also exactly where the latency the medium contributes has
|
|
114
|
+
// to be accounted.
|
|
115
|
+
allocation def ConnectionBinding :> MemoRelationship, Allocations::Allocation {
|
|
116
|
+
attribute allocatedBandwidth : String;
|
|
117
|
+
attribute mediumLatencyMs : Real;
|
|
118
|
+
end boundExchange : ComponentExchange :>> source;
|
|
119
|
+
end medium : NetworkMedium :>> target;
|
|
120
|
+
}
|
|
121
|
+
abstract connection connectionBindingLinks : ConnectionBinding[*];
|
|
122
|
+
metadata def <connectionBinding> ConnectionBindingMetadata :> SemanticMetadata {
|
|
123
|
+
:> annotatedElement : SysML::AllocationDefinition;
|
|
124
|
+
:> annotatedElement : SysML::AllocationUsage;
|
|
125
|
+
:>> baseType = connectionBindingLinks meta SysML::Usage;
|
|
43
126
|
}
|
|
44
127
|
|
|
45
128
|
// ─── AADL-style flow modeling (SAE AS5506) ───────────────────────────
|
|
@@ -68,8 +151,8 @@ package memo_architecture_realization_deployment {
|
|
|
68
151
|
part def EndToEndFlow specializes ArchitectureElement {
|
|
69
152
|
attribute latencyBudgetMs : Real;
|
|
70
153
|
attribute analysisPurpose : String;
|
|
71
|
-
ref sourceFunction :
|
|
72
|
-
ref sinkFunction :
|
|
154
|
+
ref sourceFunction : MemoFunction[0..1];
|
|
155
|
+
ref sinkFunction : MemoFunction[0..1];
|
|
73
156
|
ref logicalSegments : LogicalComponent[0..*];
|
|
74
157
|
// Runtime C&C components (SEI) — the elements actually bound to hardware.
|
|
75
158
|
ref softwareSegments : SoftwareComponent[0..*];
|
|
@@ -79,12 +162,24 @@ package memo_architecture_realization_deployment {
|
|
|
79
162
|
// segment per traversed component boundary (AADL flow-spec → end-to-end).
|
|
80
163
|
connection def FlowComprisesSpec :> MemoRelationship {
|
|
81
164
|
attribute segmentOrder : Integer;
|
|
82
|
-
end endToEndFlow : EndToEndFlow;
|
|
83
|
-
end spec : FlowSpecification;
|
|
165
|
+
end endToEndFlow : EndToEndFlow :>> source;
|
|
166
|
+
end spec : FlowSpecification :>> target;
|
|
167
|
+
}
|
|
168
|
+
abstract connection flowComprisesSpecLinks : FlowComprisesSpec[*];
|
|
169
|
+
metadata def <flowComprisesSpec> FlowComprisesSpecMetadata :> SemanticMetadata {
|
|
170
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
171
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
172
|
+
:>> baseType = flowComprisesSpecLinks meta SysML::Usage;
|
|
84
173
|
}
|
|
85
174
|
// The flow traverses a software→hardware binding; latency accrues here.
|
|
86
175
|
connection def FlowTraversesBinding :> MemoRelationship {
|
|
87
|
-
end endToEndFlow : EndToEndFlow;
|
|
88
|
-
end deploymentUnit : DeploymentUnit;
|
|
176
|
+
end endToEndFlow : EndToEndFlow :>> source;
|
|
177
|
+
end deploymentUnit : DeploymentUnit :>> target;
|
|
178
|
+
}
|
|
179
|
+
abstract connection flowTraversesBindingLinks : FlowTraversesBinding[*];
|
|
180
|
+
metadata def <flowTraversesBinding> FlowTraversesBindingMetadata :> SemanticMetadata {
|
|
181
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
182
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
183
|
+
:>> baseType = flowTraversesBindingLinks meta SysML::Usage;
|
|
89
184
|
}
|
|
90
185
|
}
|
|
@@ -22,9 +22,34 @@ package memo_architecture_realization_physical {
|
|
|
22
22
|
attribute capacityMB : String;
|
|
23
23
|
attribute nonVolatile : Boolean;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
// A physical boundary feature: the connector the outside world plugs into.
|
|
26
|
+
//
|
|
27
|
+
// A `port def` (Track A1), not a part. It was `part def PhysicalPort
|
|
28
|
+
// specializes InterfaceElement` for one reason — the exchange endpoints
|
|
29
|
+
// were `MemoPart`-typed, so anything that terminated an exchange had to be
|
|
30
|
+
// a part (CR-ONT-002, since rewritten). Track A0 made those ends
|
|
31
|
+
// metaclass-neutral, and KerML forbids a port from specializing a
|
|
32
|
+
// part-based type, so the specialization moves to `MemoPort`.
|
|
33
|
+
//
|
|
34
|
+
// `direction` is gone: the port usage carries `in` / `out` / `inout`
|
|
35
|
+
// natively (Track A2). `DirectionKind` survives for the non-port
|
|
36
|
+
// constructs that still need it — see memo_core_enumerations.
|
|
37
|
+
//
|
|
38
|
+
// `portKind` is declared here AND on SoftwarePort rather than on a shared
|
|
39
|
+
// base. `MemoPort` is the identification core and nothing else — the block
|
|
40
|
+
// comment in memo_core_common makes that a stated invariant across all
|
|
41
|
+
// five bases — and pushing `portKind` down onto DataPort, SensorPort,
|
|
42
|
+
// CommandPort, and LogicalPort would give them a second classifier beside
|
|
43
|
+
// the ones they already carry (`interfaceType`, `sensorDomain`,
|
|
44
|
+
// `commandDomain`, `contentKind`). An intermediate `abstract port def`
|
|
45
|
+
// holding one attribute is a class standing in for an attribute, which is
|
|
46
|
+
// what the lean direction removes. One attribute, two sites, no new type.
|
|
47
|
+
port def PhysicalPort specializes MemoPort {
|
|
26
48
|
attribute portKind : InterfaceKind;
|
|
49
|
+
// AADL port category (plan C2) — see SoftwarePort. A physical port
|
|
50
|
+
// carries it for the same reason: a sampled sensor line and a queued
|
|
51
|
+
// interrupt line fail differently under overload.
|
|
52
|
+
attribute portCategory : PortCategoryKind;
|
|
27
53
|
attribute connectorType : String;
|
|
28
|
-
attribute direction : DirectionKind;
|
|
29
54
|
}
|
|
30
55
|
}
|