@memoarchitect/ontology 0.8.22 → 0.8.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/examples/connected-patient-monitor/memo.package.yaml +3 -0
- 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 +2 -2
- 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 +1 -1
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +5 -3
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +1 -2
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +52 -82
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +6 -19
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +0 -3
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +3 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -6
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -3
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +1 -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/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +15 -24
- 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/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/software_only_medical_device.sysml +1 -1
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +36 -49
- 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/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +2 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +14 -15
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +1 -2
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +4 -8
- 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/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/container_extension.sysml +2 -2
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/ros/memo.package.yaml +1 -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 +1 -1
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +4 -4
- package/src/architecture/functional/functions/memo_functions.sysml +6 -6
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
- package/src/architecture/implementation/ui/memo_ui.sysml +8 -8
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -1
- 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 +2 -3
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +18 -100
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +0 -1
- package/src/architecture/operational/workflows/memo_workflows.sysml +20 -22
- package/src/architecture/realization/deployment/memo_deployment.sysml +10 -10
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +2 -2
- 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 +1 -1
- package/src/core/common/memo_common.sysml +9 -5
- package/src/core/relationships/memo_relationships.sysml +8 -8
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +20 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/ontology/ontology_invariants.sysml +40 -40
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -29
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -2
- package/src/viewpoints/context/context_viewpoint.sysml +1 -2
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -2
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -2
- package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -2
- package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +1 -2
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -2
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/default/memo.package.yaml +2 -0
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/samd/memo.package.yaml +2 -0
|
@@ -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,17 @@ package memo_architecture_operational_scenarios {
|
|
|
106
52
|
attribute selectionRationale : String;
|
|
107
53
|
}
|
|
108
54
|
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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;
|
|
55
|
+
// A workflow is composed of one or more scenarios (nominal + alternate
|
|
56
|
+
// paths). ScenarioOccurrence/Executes were removed: an actual execution is
|
|
57
|
+
// a native SysML *usage* of the scenario, not a separate def + relation.
|
|
58
|
+
connection def HasScenario :> MemoRelationship {
|
|
59
|
+
end owningWorkflow : OperationalWorkflow :>> source;
|
|
60
|
+
end pathScenario : OperativeScenario :>> target;
|
|
143
61
|
}
|
|
144
|
-
abstract connection
|
|
145
|
-
metadata def <
|
|
62
|
+
abstract connection hasScenarioLinks : HasScenario[*];
|
|
63
|
+
metadata def <hasScenario> HasScenarioMetadata :> SemanticMetadata {
|
|
146
64
|
:> annotatedElement : SysML::ConnectionDefinition;
|
|
147
65
|
:> annotatedElement : SysML::ConnectionUsage;
|
|
148
|
-
:>> baseType =
|
|
66
|
+
:>> baseType = hasScenarioLinks meta SysML::Usage;
|
|
149
67
|
}
|
|
150
68
|
}
|
|
@@ -1,31 +1,60 @@
|
|
|
1
1
|
package memo_architecture_operational_structure {
|
|
2
|
+
private import Metaobjects::SemanticMetadata;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
|
|
4
5
|
private import memo_core_common::*;
|
|
5
6
|
private import memo_core_enumerations::*;
|
|
6
7
|
private import memo_core_relationships::*;
|
|
7
|
-
private import
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
private import memo_architecture_operational_use_cases::*;
|
|
9
|
+
|
|
10
|
+
// IEC 62366-1 / ISO 14971 intended use: the medical device's declared
|
|
11
|
+
// purpose and the root of the operational spine. A MemoMission, because
|
|
12
|
+
// "mission" has no medical-device meaning — intended use is what a device
|
|
13
|
+
// exists to do. Was in memo_assurance_requirements; moved here as the
|
|
14
|
+
// operational-world root.
|
|
15
|
+
part def IntendedUse specializes MemoMission {
|
|
16
|
+
attribute indication : String;
|
|
17
|
+
attribute contraindication : String;
|
|
18
|
+
attribute patientPopulation : String;
|
|
19
|
+
attribute clinicalBenefit : String;
|
|
20
|
+
attribute regulatoryClassification : String;
|
|
14
21
|
}
|
|
15
|
-
part def OperationalEntity specializes
|
|
22
|
+
part def OperationalEntity specializes MemoPart {
|
|
16
23
|
attribute entityKind : OperationalEntityKind;
|
|
17
24
|
attribute operationalDomain : String;
|
|
18
25
|
attribute responsibility : String;
|
|
19
26
|
}
|
|
20
|
-
part def OperationalCapability specializes
|
|
27
|
+
part def OperationalCapability specializes MemoPart {
|
|
21
28
|
attribute capabilityLevel : String;
|
|
22
29
|
attribute preCondition : String;
|
|
23
30
|
attribute postCondition : String;
|
|
24
31
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
|
|
33
|
+
// The intended use requires these operational capabilities (ARCADIA:
|
|
34
|
+
// Mission Requires Capability).
|
|
35
|
+
connection def RequiresCapability :> MemoRelationship {
|
|
36
|
+
end requiringIntendedUse : IntendedUse :>> source;
|
|
37
|
+
end requiredCapability : OperationalCapability :>> target;
|
|
38
|
+
}
|
|
39
|
+
abstract connection requiresCapabilityLinks : RequiresCapability[*];
|
|
40
|
+
metadata def <requiresCapability> RequiresCapabilityMetadata :> SemanticMetadata {
|
|
41
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
42
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
43
|
+
:>> baseType = requiresCapabilityLinks meta SysML::Usage;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// An operational capability enables a use case (the ability the actor draws
|
|
47
|
+
// on to accomplish the goal). Capability is tied to the use case, not to
|
|
48
|
+
// individual activities.
|
|
49
|
+
connection def EnablesUseCase :> MemoRelationship {
|
|
50
|
+
end enablingCapability : OperationalCapability :>> source;
|
|
51
|
+
end enabledUseCase : UseCase :>> target;
|
|
52
|
+
}
|
|
53
|
+
abstract connection enablesUseCaseLinks : EnablesUseCase[*];
|
|
54
|
+
metadata def <enablesUseCase> EnablesUseCaseMetadata :> SemanticMetadata {
|
|
55
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
56
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
57
|
+
:>> baseType = enablesUseCaseLinks meta SysML::Usage;
|
|
29
58
|
}
|
|
30
59
|
|
|
31
60
|
}
|
|
@@ -40,7 +40,6 @@ package memo_architecture_operational_use_cases {
|
|
|
40
40
|
ref primaryUser : User[0..1];
|
|
41
41
|
ref supportingActors : OperationalParticipant[0..*];
|
|
42
42
|
ref useContext : UseContext[0..1];
|
|
43
|
-
ref originatingNeeds : Need[0..*];
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
connection def Motivates :> MemoRelationship {
|
|
@@ -37,20 +37,24 @@ package memo_architecture_operational_workflows {
|
|
|
37
37
|
attribute completionCondition : String;
|
|
38
38
|
attribute recoveryPathSummary : String;
|
|
39
39
|
attribute timingConstraints : String;
|
|
40
|
-
ref involvedActors : OperationalParticipant[0..*];
|
|
41
40
|
attribute environmentSummary : String;
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
// The use case a workflow realizes. Many workflows may trace to one use
|
|
44
|
+
// case; the use case does not own its workflows (the trace points upward,
|
|
45
|
+
// workflow → use case).
|
|
46
|
+
connection def RealizesUseCase :> MemoRelationship {
|
|
47
|
+
end realizingWorkflow : OperationalWorkflow :>> source;
|
|
48
|
+
end realizedUseCase : UseCase :>> target;
|
|
49
|
+
}
|
|
50
|
+
abstract connection realizesUseCaseLinks : RealizesUseCase[*];
|
|
51
|
+
metadata def <realizesUseCase> RealizesUseCaseMetadata :> SemanticMetadata {
|
|
52
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
53
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
54
|
+
:>> baseType = realizesUseCaseLinks meta SysML::Usage;
|
|
52
55
|
}
|
|
53
56
|
|
|
57
|
+
|
|
54
58
|
// decision / fork / join / handoff.
|
|
55
59
|
enum def ControlNodeKind {
|
|
56
60
|
enum decision;
|
|
@@ -69,8 +73,6 @@ package memo_architecture_operational_workflows {
|
|
|
69
73
|
attribute parallelismRationale : String[0..1];
|
|
70
74
|
attribute joinCondition : String[0..1];
|
|
71
75
|
attribute informationTransferred : String[0..1];
|
|
72
|
-
ref fromRole : OperationalParticipant[0..1];
|
|
73
|
-
ref toRole : OperationalParticipant[0..1];
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
// Resources a workflow requires: information, materials, or equipment by
|
|
@@ -82,18 +84,14 @@ package memo_architecture_operational_workflows {
|
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
// ── Workflow-level relationships ─────────────────────────────
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
// An element supports (affords, enables) an action — e.g. a UI element
|
|
88
|
+
// that affords a user task. Use-case and capability tracing are direct
|
|
89
|
+
// refs now (OperationalWorkflow.useCase,
|
|
90
|
+
// OperativeAction.contributesToCapabilities), so the former
|
|
91
|
+
// SupportKind discriminator is gone: what used to be three enum values
|
|
92
|
+
// that each implied a different target type are now two typed refs plus
|
|
93
|
+
// this one plain relation.
|
|
92
94
|
connection def Supports :> MemoRelationship {
|
|
93
|
-
attribute supportKind : SupportKind;
|
|
94
|
-
// The accepted endpoints span SysML metaclasses: an operational
|
|
95
|
-
// workflow or other action may support a use case, task, or
|
|
96
|
-
// capability. They therefore have no single MEMO base type.
|
|
97
95
|
end supporter :>> source;
|
|
98
96
|
end supported : MemoAction :>> target;
|
|
99
97
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// Deployment (allocation) view: SoftwareModule buildsInto
|
|
2
|
-
//
|
|
1
|
+
// Deployment (allocation) view: SoftwareModule buildsInto SoftwareDeploymentUnit;
|
|
2
|
+
// SoftwareDeploymentUnit deploysTo ProcessingNode. Software deploys only to capable
|
|
3
3
|
// execution nodes (rules/crosslayer).
|
|
4
4
|
//
|
|
5
5
|
// `HostedBy` is NOT part of that chain, and this comment used to claim it was
|
|
6
6
|
// ("SoftwareComponent hostedBy ProcessingNode"). It is
|
|
7
|
-
// `processingNode :
|
|
7
|
+
// `processingNode : ProcessingNode -> hostAssembly : PhysicalAssembly`:
|
|
8
8
|
// physical hosting of a node by the assembly it is mounted in, running the
|
|
9
9
|
// other way and between different things. Software reaches a node through
|
|
10
10
|
// DeploysTo.
|
|
@@ -26,14 +26,14 @@ package memo_architecture_realization_deployment {
|
|
|
26
26
|
private import memo_architecture_logical_structure::*;
|
|
27
27
|
private import memo_architecture_logical_interfaces::*; // ComponentExchange
|
|
28
28
|
|
|
29
|
-
part def
|
|
29
|
+
part def SoftwareDeploymentUnit specializes MemoPart {
|
|
30
30
|
attribute unitKind : String;
|
|
31
31
|
attribute version : String;
|
|
32
32
|
attribute integrityProtection : String;
|
|
33
33
|
attribute installationMechanism : String;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
part def RuntimeEnvironment specializes
|
|
36
|
+
part def RuntimeEnvironment specializes MemoPart {
|
|
37
37
|
attribute environmentKind : String;
|
|
38
38
|
attribute osOrRtos : String;
|
|
39
39
|
attribute providedServices : String;
|
|
@@ -42,7 +42,7 @@ package memo_architecture_realization_deployment {
|
|
|
42
42
|
|
|
43
43
|
connection def BuildsInto :> MemoRelationship {
|
|
44
44
|
end module : SoftwareModule :>> source;
|
|
45
|
-
end deploymentUnit :
|
|
45
|
+
end deploymentUnit : SoftwareDeploymentUnit :>> target;
|
|
46
46
|
}
|
|
47
47
|
abstract connection buildsIntoLinks : BuildsInto[*];
|
|
48
48
|
metadata def <buildsInto> BuildsIntoMetadata :> SemanticMetadata {
|
|
@@ -52,7 +52,7 @@ package memo_architecture_realization_deployment {
|
|
|
52
52
|
}
|
|
53
53
|
connection def DeploysTo :> MemoRelationship {
|
|
54
54
|
attribute deploymentKind : DeploymentKind;
|
|
55
|
-
end deploymentUnit :
|
|
55
|
+
end deploymentUnit : SoftwareDeploymentUnit :>> source;
|
|
56
56
|
end node : ProcessingNode :>> target;
|
|
57
57
|
}
|
|
58
58
|
abstract connection deploysToLinks : DeploysTo[*];
|
|
@@ -140,7 +140,7 @@ package memo_architecture_realization_deployment {
|
|
|
140
140
|
enum path;
|
|
141
141
|
}
|
|
142
142
|
// A flow declared at a logical component boundary (in-port → out-port).
|
|
143
|
-
part def FlowSpecification specializes
|
|
143
|
+
part def FlowSpecification specializes MemoPart {
|
|
144
144
|
attribute flowKind : FlowSpecKind;
|
|
145
145
|
ref inPort : LogicalPort[0..1];
|
|
146
146
|
ref outPort : LogicalPort[0..1];
|
|
@@ -148,7 +148,7 @@ package memo_architecture_realization_deployment {
|
|
|
148
148
|
// A complete source→sink flow traced across the layers and the software→
|
|
149
149
|
// hardware binding it traverses. `latencyBudgetMs` and `analysisPurpose`
|
|
150
150
|
// (latency | fault-propagation | security) drive the AADL-style analysis.
|
|
151
|
-
part def EndToEndFlow specializes
|
|
151
|
+
part def EndToEndFlow specializes MemoPart {
|
|
152
152
|
attribute latencyBudgetMs : Real;
|
|
153
153
|
attribute analysisPurpose : String;
|
|
154
154
|
ref sourceFunction : MemoFunction[0..1];
|
|
@@ -174,7 +174,7 @@ package memo_architecture_realization_deployment {
|
|
|
174
174
|
// The flow traverses a software→hardware binding; latency accrues here.
|
|
175
175
|
connection def FlowTraversesBinding :> MemoRelationship {
|
|
176
176
|
end endToEndFlow : EndToEndFlow :>> source;
|
|
177
|
-
end deploymentUnit :
|
|
177
|
+
end deploymentUnit : SoftwareDeploymentUnit :>> target;
|
|
178
178
|
}
|
|
179
179
|
abstract connection flowTraversesBindingLinks : FlowTraversesBinding[*];
|
|
180
180
|
metadata def <flowTraversesBinding> FlowTraversesBindingMetadata :> SemanticMetadata {
|
|
@@ -6,7 +6,7 @@ package memo_architecture_realization_physical {
|
|
|
6
6
|
|
|
7
7
|
private import memo_core_common::*;
|
|
8
8
|
private import memo_core_enumerations::*;
|
|
9
|
-
part def ProcessingNode specializes
|
|
9
|
+
part def ProcessingNode specializes MemoPart {
|
|
10
10
|
attribute nodeKind : ProcessingNodeKind;
|
|
11
11
|
attribute processorArchitecture : String;
|
|
12
12
|
attribute memoryMB : String;
|
|
@@ -17,7 +17,7 @@ package memo_architecture_realization_physical {
|
|
|
17
17
|
attribute supportsContainerization : Boolean;
|
|
18
18
|
attribute realTimeCapable : Boolean;
|
|
19
19
|
}
|
|
20
|
-
part def MemoryDevice specializes
|
|
20
|
+
part def MemoryDevice specializes MemoPart {
|
|
21
21
|
attribute memoryKind : String;
|
|
22
22
|
attribute capacityMB : String;
|
|
23
23
|
attribute nonVolatile : Boolean;
|
|
@@ -75,7 +75,7 @@ Runtime behaviour: the components executing in the system and the connectors thr
|
|
|
75
75
|
#### 3.2.1 Runtime Environments
|
|
76
76
|
|
|
77
77
|
```memo-query
|
|
78
|
-
kind: [RuntimeEnvironment,
|
|
78
|
+
kind: [RuntimeEnvironment, SoftwareDeploymentUnit]
|
|
79
79
|
display: table
|
|
80
80
|
columns: name, layer, doc
|
|
81
81
|
sort: name
|
|
@@ -101,12 +101,12 @@ Software elements mapped to their execution environments.
|
|
|
101
101
|
#### 3.3.1 Deployment Units
|
|
102
102
|
|
|
103
103
|
```memo-query
|
|
104
|
-
kind:
|
|
104
|
+
kind: SoftwareDeploymentUnit
|
|
105
105
|
traverse: outgoing deploysTo
|
|
106
106
|
display: table
|
|
107
107
|
columns: name, kind, layer, doc
|
|
108
108
|
sort: name
|
|
109
|
-
empty: "No deployments defined. Add DeploysTo links from
|
|
109
|
+
empty: "No deployments defined. Add DeploysTo links from SoftwareDeploymentUnit to the processing node."
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
---
|
|
@@ -10,7 +10,7 @@ package memo_assurance_cybersecurity {
|
|
|
10
10
|
private import memo_assurance_verification_validation::*;
|
|
11
11
|
private import memo_architecture_operational_scenarios::*;
|
|
12
12
|
|
|
13
|
-
part def CybersecurityAsset specializes
|
|
13
|
+
part def CybersecurityAsset specializes MemoPart {
|
|
14
14
|
attribute assetKind : AssetKind;
|
|
15
15
|
attribute confidentialityNeed : String;
|
|
16
16
|
attribute integrityNeed : String;
|
|
@@ -99,7 +99,7 @@ package memo_assurance_cybersecurity {
|
|
|
99
99
|
}
|
|
100
100
|
connection def RealizedByScenario :> MemoRelationship {
|
|
101
101
|
end realizedThreat : RequirementDriver :>> source;
|
|
102
|
-
end scenario :
|
|
102
|
+
end scenario : OperativeScenario :>> target;
|
|
103
103
|
}
|
|
104
104
|
abstract connection realizedByScenarioLinks : RealizedByScenario[*];
|
|
105
105
|
metadata def <realizedByScenario> RealizedByScenarioMetadata :> SemanticMetadata {
|
|
@@ -21,7 +21,7 @@ package memo_assurance_human_factors {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
connection def CommitsUseError :> MemoRelationship {
|
|
24
|
-
end task :
|
|
24
|
+
end task : OperativeAction :>> source;
|
|
25
25
|
end useError : UseError :>> target;
|
|
26
26
|
}
|
|
27
27
|
abstract connection commitsUseErrorLinks : CommitsUseError[*];
|
|
@@ -32,7 +32,7 @@ package memo_assurance_human_factors {
|
|
|
32
32
|
}
|
|
33
33
|
connection def EvaluatesTask :> MemoRelationship {
|
|
34
34
|
end evaluation : MemoEvidence :>> source;
|
|
35
|
-
end task :
|
|
35
|
+
end task : OperativeAction :>> target;
|
|
36
36
|
}
|
|
37
37
|
abstract connection evaluatesTaskLinks : EvaluatesTask[*];
|
|
38
38
|
metadata def <evaluatesTask> EvaluatesTaskMetadata :> SemanticMetadata {
|
|
@@ -7,22 +7,6 @@ package memo_assurance_requirements {
|
|
|
7
7
|
private import memo_assurance_requirements_needs::*;
|
|
8
8
|
part def RiskDriver specializes RequirementDriver { attribute driverKind : String; }
|
|
9
9
|
|
|
10
|
-
// ISO 14971 risk-analysis inputs. These are model elements so hazards,
|
|
11
|
-
// scenarios, requirements, and DHF records can trace to the exact use
|
|
12
|
-
// definition or foreseeable misuse that motivated them.
|
|
13
|
-
part def IntendedUse specializes DocumentedElement {
|
|
14
|
-
attribute indication : String;
|
|
15
|
-
attribute contraindication : String;
|
|
16
|
-
attribute patientPopulation : String;
|
|
17
|
-
attribute clinicalBenefit : String;
|
|
18
|
-
attribute regulatoryClassification : String;
|
|
19
|
-
}
|
|
20
|
-
part def ReasonablyForeseeableMisuse specializes DocumentedElement {
|
|
21
|
-
attribute misuseContext : String;
|
|
22
|
-
attribute foreseeableBasis : String;
|
|
23
|
-
attribute affectedUseContext : String;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
10
|
// The kind of requirement. Was a subclass branch (SystemRequirement /
|
|
27
11
|
// SoftwareRequirement / HardwareRequirement) plus a parallel design-control
|
|
28
12
|
// specification hierarchy (DesignControlSpecification / System- / Software- /
|
|
@@ -42,14 +26,14 @@ package memo_assurance_requirements {
|
|
|
42
26
|
|
|
43
27
|
requirement def Requirement specializes MemoRequirement {
|
|
44
28
|
attribute requirementKind : RequirementKind;
|
|
45
|
-
attribute statement : String;
|
|
29
|
+
attribute :>> statement : String;
|
|
46
30
|
attribute sourceKind : RequirementSourceKind;
|
|
47
31
|
attribute concernKind : ConcernKind;
|
|
48
32
|
// Editorial state is the inherited `status : ElementStatusKind` — the
|
|
49
33
|
// one status vocabulary in MEMO. Whether a requirement is implemented,
|
|
50
34
|
// verified, or validated is read from its Realizes / VerifiedBy /
|
|
51
35
|
// Validates links, not restated here.
|
|
52
|
-
attribute acceptanceCriteria : String;
|
|
36
|
+
attribute :>> acceptanceCriteria : String;
|
|
53
37
|
attribute subjectDescription : String;
|
|
54
38
|
attribute actorDescription : String;
|
|
55
39
|
attribute assumptionSummary : String;
|
|
@@ -184,7 +184,7 @@ package memo_assurance_safety_risk_analysis {
|
|
|
184
184
|
:>> baseType = identifiesHazardLinks meta SysML::Usage;
|
|
185
185
|
}
|
|
186
186
|
connection def HasFailureMode :> MemoRelationship {
|
|
187
|
-
end element :
|
|
187
|
+
end element : MemoPart :>> source;
|
|
188
188
|
end failureMode : FailureMode :>> target;
|
|
189
189
|
}
|
|
190
190
|
abstract connection hasFailureModeLinks : HasFailureMode[*];
|
|
@@ -6,6 +6,18 @@ package memo_assurance_safety_risk {
|
|
|
6
6
|
private import memo_core_common::*;
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
private import memo_assurance_requirements::*;
|
|
9
|
+
|
|
10
|
+
// ISO 14971 / IEC 62366-1 risk-analysis input. A model element so hazards,
|
|
11
|
+
// scenarios, requirements, and DHF records can trace to the foreseeable
|
|
12
|
+
// misuse that motivated them. Its counterpart, IntendedUse, is now the
|
|
13
|
+
// operational-world root (memo_architecture_operational_structure::IntendedUse,
|
|
14
|
+
// a MemoMission).
|
|
15
|
+
part def ReasonablyForeseeableMisuse specializes MemoPart {
|
|
16
|
+
attribute misuseContext : String;
|
|
17
|
+
attribute foreseeableBasis : String;
|
|
18
|
+
attribute affectedUseContext : String;
|
|
19
|
+
}
|
|
20
|
+
|
|
9
21
|
part def Risk specializes RiskDriver {
|
|
10
22
|
attribute probabilityEstimate : ProbabilityKind;
|
|
11
23
|
attribute severityEstimate : SeverityKind;
|
|
@@ -34,7 +34,7 @@ package memo_assurance_verification_validation {
|
|
|
34
34
|
// Safety-critical functions must trace to verification (rules/coverage).
|
|
35
35
|
connection def ExecutesScenario :> MemoRelationship {
|
|
36
36
|
end verificationCase : VerificationCase :>> source;
|
|
37
|
-
end scenario :
|
|
37
|
+
end scenario : OperativeScenario :>> target;
|
|
38
38
|
}
|
|
39
39
|
abstract connection executesScenarioLinks : ExecutesScenario[*];
|
|
40
40
|
metadata def <executesScenario> ExecutesScenarioMetadata :> SemanticMetadata {
|
|
@@ -78,7 +78,6 @@ package memo_core_common {
|
|
|
78
78
|
// MemoPart so all existing content inherits the dimensions. ───
|
|
79
79
|
part def RequirementDriver specializes MemoPart;
|
|
80
80
|
abstract part def VerifiableElement specializes MemoPart;
|
|
81
|
-
abstract part def ArchitectureElement specializes MemoPart;
|
|
82
81
|
part def InterfaceElement specializes MemoPart;
|
|
83
82
|
enum def EvidenceKind { enum testArtifact; enum evidence; enum formativeEvaluation; enum usabilityValidation; enum securityClaim; }
|
|
84
83
|
part def MemoEvidence specializes MemoPart {
|
|
@@ -108,10 +107,15 @@ package memo_core_common {
|
|
|
108
107
|
// description registers every MemoPart now carries: a title and its place
|
|
109
108
|
// in a document. The former `shortDescription`/`longDescription` pair is
|
|
110
109
|
// gone — short is inherited, and `description` IS the long form.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
// Top-level goal a system or operation exists to fulfil, with its success
|
|
111
|
+
// criteria and context. Domain layers specialize it; the medical-device
|
|
112
|
+
// intended use (memo_architecture_operational_structure::IntendedUse) is a
|
|
113
|
+
// MemoMission. Specializes MemoPart directly — name/description/rationale
|
|
114
|
+
// already live there, so no DocumentedElement layer is needed.
|
|
115
|
+
abstract part def MemoMission specializes MemoPart {
|
|
116
|
+
attribute missionKind : String;
|
|
117
|
+
attribute successCriteria : String;
|
|
118
|
+
attribute operationalContext : String;
|
|
115
119
|
}
|
|
116
120
|
|
|
117
121
|
// ─── Construct-specific foundations (non-part metaclasses) ───────
|
|
@@ -79,12 +79,12 @@ package memo_core_relationships {
|
|
|
79
79
|
// SystemFunction a part def with its behaviour stapled on through a
|
|
80
80
|
// separate action def, and what makes `allocate <function> to <actor>` —
|
|
81
81
|
// ARCADIA's own System Analysis mechanism — illegal, since Actor is a
|
|
82
|
-
// MemoPart but not
|
|
82
|
+
// MemoPart but not a narrower part subtype.
|
|
83
83
|
//
|
|
84
84
|
// Several of the relaxed ends were ALREADY being violated by real content
|
|
85
|
-
// before they were relaxed: `composes` links parts to
|
|
86
|
-
//
|
|
87
|
-
// `precedes` links
|
|
85
|
+
// before they were relaxed: `composes` links parts to OperativeAction
|
|
86
|
+
// (an action def) and to SoftwarePort/PhysicalPort;
|
|
87
|
+
// `precedes` links OperativeAction to OperativeAction; `allocatedTo`
|
|
88
88
|
// has ActionUsage sources; `bindsToInterface` targets an `interface def`,
|
|
89
89
|
// which an InterfaceElement-typed end cannot hold. The types were not
|
|
90
90
|
// buying the strictness they appeared to buy.
|
|
@@ -160,7 +160,7 @@ package memo_core_relationships {
|
|
|
160
160
|
|
|
161
161
|
connection def ThreatenedBy :> MemoRelationship {
|
|
162
162
|
attribute threatRole : String;
|
|
163
|
-
end protectedAsset :
|
|
163
|
+
end protectedAsset : MemoPart :>> source;
|
|
164
164
|
end realizedThreat : RequirementDriver :>> target;
|
|
165
165
|
}
|
|
166
166
|
abstract connection threatenedByLinks : ThreatenedBy[*];
|
|
@@ -218,8 +218,8 @@ package memo_core_relationships {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
connection def HostedBy :> MemoRelationship {
|
|
221
|
-
end processingNode :
|
|
222
|
-
end hostAssembly :
|
|
221
|
+
end processingNode : MemoPart :>> source;
|
|
222
|
+
end hostAssembly : MemoPart :>> target;
|
|
223
223
|
}
|
|
224
224
|
abstract connection hostedByLinks : HostedBy[*];
|
|
225
225
|
metadata def <hostedBy> HostedByMetadata :> SemanticMetadata {
|
|
@@ -248,7 +248,7 @@ package memo_core_relationships {
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
connection def AnalyzedBy :> MemoRelationship {
|
|
251
|
-
end element :
|
|
251
|
+
end element : MemoPart :>> source;
|
|
252
252
|
end analysisArtifact : AnalysisArtifact :>> target;
|
|
253
253
|
}
|
|
254
254
|
abstract connection analyzedByLinks : AnalyzedBy[*];
|
|
@@ -5,11 +5,11 @@ package memo_methodology_workflow {
|
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
6
|
|
|
7
7
|
// Named for its axis: this is a step in a METHODOLOGY workflow (a lifecycle
|
|
8
|
-
// stage with entry/exit criteria), distinct from
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
8
|
+
// stage with entry/exit criteria), distinct from an OPERATIONAL workflow's
|
|
9
|
+
// steps, which are OperativeActions performed by users or the system. The
|
|
10
|
+
// two carry different attributes and must not share a short name — an
|
|
11
|
+
// overloaded name resolves by load order and silently validates a usage
|
|
12
|
+
// against the wrong type.
|
|
13
13
|
action def MethodologyWorkflowStep :> MemoAction {
|
|
14
14
|
attribute stage : WorkflowStageKind;
|
|
15
15
|
attribute objectiveDescription : String;
|