@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
|
@@ -10,7 +10,7 @@ package memo_rules_closure {
|
|
|
10
10
|
// ─── Risk Layer Rules ────────────────────────────────────────────────
|
|
11
11
|
|
|
12
12
|
constraint def HazardMitigationRule :> MemoConsistencyRule {
|
|
13
|
-
attribute id = "CR-MED-001";
|
|
13
|
+
attribute :>> id = "CR-MED-001";
|
|
14
14
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
15
15
|
attribute appliesTo = "Hazard";
|
|
16
16
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -20,7 +20,7 @@ package memo_rules_closure {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
constraint def HazardSeverityRule :> MemoConsistencyRule {
|
|
23
|
-
attribute id = "CR-MED-002";
|
|
23
|
+
attribute :>> id = "CR-MED-002";
|
|
24
24
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
25
25
|
attribute appliesTo = "Hazard";
|
|
26
26
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -30,7 +30,7 @@ package memo_rules_closure {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
constraint def RiskControlVerificationRule :> MemoConsistencyRule {
|
|
33
|
-
attribute id = "CR-MED-003";
|
|
33
|
+
attribute :>> id = "CR-MED-003";
|
|
34
34
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
35
35
|
attribute appliesTo = "RiskControlMeasure";
|
|
36
36
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -40,7 +40,7 @@ package memo_rules_closure {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
constraint def InitialRiskMatrixRule :> MemoConsistencyRule {
|
|
43
|
-
attribute id = "CR-MED-004";
|
|
43
|
+
attribute :>> id = "CR-MED-004";
|
|
44
44
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
45
45
|
attribute appliesTo = "Risk";
|
|
46
46
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -52,7 +52,7 @@ package memo_rules_closure {
|
|
|
52
52
|
// ─── Requirements Layer Rules ────────────────────────────────────────
|
|
53
53
|
|
|
54
54
|
constraint def SysReqTraceRule :> MemoConsistencyRule {
|
|
55
|
-
attribute id = "CR-MED-010";
|
|
55
|
+
attribute :>> id = "CR-MED-010";
|
|
56
56
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
57
57
|
attribute appliesTo = "Requirement[requirementKind=system]";
|
|
58
58
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -62,7 +62,7 @@ package memo_rules_closure {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
constraint def SwReqTraceRule :> MemoConsistencyRule {
|
|
65
|
-
attribute id = "CR-MED-011";
|
|
65
|
+
attribute :>> id = "CR-MED-011";
|
|
66
66
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
67
67
|
attribute appliesTo = "Requirement[requirementKind=software]";
|
|
68
68
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -80,7 +80,7 @@ package memo_rules_closure {
|
|
|
80
80
|
// ─── Architecture Layer Rules ────────────────────────────────────────
|
|
81
81
|
|
|
82
82
|
constraint def SwComponentSafetyClassRule :> MemoConsistencyRule {
|
|
83
|
-
attribute id = "CR-MED-020";
|
|
83
|
+
attribute :>> id = "CR-MED-020";
|
|
84
84
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
85
85
|
attribute appliesTo = "SoftwareModule";
|
|
86
86
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -90,7 +90,7 @@ package memo_rules_closure {
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
constraint def SwComponentReqRule :> MemoConsistencyRule {
|
|
93
|
-
attribute id = "CR-MED-021";
|
|
93
|
+
attribute :>> id = "CR-MED-021";
|
|
94
94
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
95
95
|
attribute appliesTo = "SoftwareModule";
|
|
96
96
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -100,7 +100,7 @@ package memo_rules_closure {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
constraint def LogicalFunctionAllocationRule :> MemoConsistencyRule {
|
|
103
|
-
attribute id = "CR-MED-022";
|
|
103
|
+
attribute :>> id = "CR-MED-022";
|
|
104
104
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
105
105
|
attribute appliesTo = "SystemFunction";
|
|
106
106
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -112,7 +112,7 @@ package memo_rules_closure {
|
|
|
112
112
|
// ─── Verification Layer Rules ────────────────────────────────────────
|
|
113
113
|
|
|
114
114
|
constraint def VerificationCaseMethodRule :> MemoConsistencyRule {
|
|
115
|
-
attribute id = "CR-MED-030";
|
|
115
|
+
attribute :>> id = "CR-MED-030";
|
|
116
116
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
117
117
|
attribute appliesTo = "VerificationCase";
|
|
118
118
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -122,7 +122,7 @@ package memo_rules_closure {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
constraint def VerificationCaseTargetRule :> MemoConsistencyRule {
|
|
125
|
-
attribute id = "CR-MED-031";
|
|
125
|
+
attribute :>> id = "CR-MED-031";
|
|
126
126
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
127
127
|
attribute appliesTo = "VerificationCase";
|
|
128
128
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -132,7 +132,7 @@ package memo_rules_closure {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
constraint def EvidenceProductionRule :> MemoConsistencyRule {
|
|
135
|
-
attribute id = "CR-MED-032";
|
|
135
|
+
attribute :>> id = "CR-MED-032";
|
|
136
136
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
137
137
|
attribute appliesTo = "VerificationCase";
|
|
138
138
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -144,7 +144,7 @@ package memo_rules_closure {
|
|
|
144
144
|
// ─── Cybersecurity Layer Rules ───────────────────────────────────────
|
|
145
145
|
|
|
146
146
|
constraint def ThreatMitigationRule :> MemoConsistencyRule {
|
|
147
|
-
attribute id = "CR-MED-040";
|
|
147
|
+
attribute :>> id = "CR-MED-040";
|
|
148
148
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
149
149
|
attribute appliesTo = "Threat";
|
|
150
150
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -154,7 +154,7 @@ package memo_rules_closure {
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
constraint def AssetThreatLinkRule :> MemoConsistencyRule {
|
|
157
|
-
attribute id = "CR-MED-041";
|
|
157
|
+
attribute :>> id = "CR-MED-041";
|
|
158
158
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
159
159
|
attribute appliesTo = "CybersecurityAsset";
|
|
160
160
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -166,7 +166,7 @@ package memo_rules_closure {
|
|
|
166
166
|
// ─── Interface Rules ─────────────────────────────────────────────────
|
|
167
167
|
|
|
168
168
|
constraint def LogicalInterfaceDirectionRule :> MemoConsistencyRule {
|
|
169
|
-
attribute id = "CR-MED-050";
|
|
169
|
+
attribute :>> id = "CR-MED-050";
|
|
170
170
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
171
171
|
attribute appliesTo = "Interface";
|
|
172
172
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -178,7 +178,7 @@ package memo_rules_closure {
|
|
|
178
178
|
// ─── Conditional Rules ───────────────────────────────────────────────
|
|
179
179
|
|
|
180
180
|
constraint def SafetyClassCVerificationRule :> MemoConsistencyRule {
|
|
181
|
-
attribute id = "CR-MED-101";
|
|
181
|
+
attribute :>> id = "CR-MED-101";
|
|
182
182
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
183
183
|
attribute appliesTo = "SoftwareModule";
|
|
184
184
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -203,7 +203,7 @@ package memo_rules_closure {
|
|
|
203
203
|
// triggers. Chrome must be DECLARED `decoration`; an element left
|
|
204
204
|
// unclassified fails rather than passing as scenery.
|
|
205
205
|
constraint def UiElementDesignRecordRule :> MemoConsistencyRule {
|
|
206
|
-
attribute id = "CR-MED-110";
|
|
206
|
+
attribute :>> id = "CR-MED-110";
|
|
207
207
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
208
208
|
attribute appliesTo = "UIElement";
|
|
209
209
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -217,7 +217,7 @@ package memo_rules_closure {
|
|
|
217
217
|
// The interactive-form restriction lives in the predicate because it spans
|
|
218
218
|
// several enum values.
|
|
219
219
|
constraint def ControlInvokesFunctionRule :> MemoConsistencyRule {
|
|
220
|
-
attribute id = "CR-MED-111";
|
|
220
|
+
attribute :>> id = "CR-MED-111";
|
|
221
221
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
222
222
|
attribute appliesTo = "UIElement";
|
|
223
223
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -230,7 +230,7 @@ package memo_rules_closure {
|
|
|
230
230
|
// unconfirmed machine guess must never reach a design review looking like
|
|
231
231
|
// an engineering decision.
|
|
232
232
|
constraint def BoundsDetectionConfirmedRule :> MemoConsistencyRule {
|
|
233
|
-
attribute id = "CR-MED-112";
|
|
233
|
+
attribute :>> id = "CR-MED-112";
|
|
234
234
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
235
235
|
attribute appliesTo = "UIElement";
|
|
236
236
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -242,7 +242,7 @@ package memo_rules_closure {
|
|
|
242
242
|
// A screenshot with no build behind it is undated design intent, not
|
|
243
243
|
// evidence of what the device does.
|
|
244
244
|
constraint def ScreenCaptureProvenanceRule :> MemoConsistencyRule {
|
|
245
|
-
attribute id = "CR-MED-113";
|
|
245
|
+
attribute :>> id = "CR-MED-113";
|
|
246
246
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
247
247
|
attribute appliesTo = "ScreenCapture";
|
|
248
248
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -7,7 +7,7 @@ package memo_rules_crosslayer {
|
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
|
|
9
9
|
constraint def RiskToReqTraceRule :> MemoConsistencyRule {
|
|
10
|
-
attribute id = "XL-001";
|
|
10
|
+
attribute :>> id = "XL-001";
|
|
11
11
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
12
12
|
attribute appliesTo = "Hazard";
|
|
13
13
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -17,7 +17,7 @@ package memo_rules_crosslayer {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
constraint def ReqToArchTraceRule :> MemoConsistencyRule {
|
|
20
|
-
attribute id = "XL-002";
|
|
20
|
+
attribute :>> id = "XL-002";
|
|
21
21
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
22
22
|
attribute appliesTo = "Requirement[requirementKind=system]";
|
|
23
23
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -12,7 +12,7 @@ package memo_rules_ontology {
|
|
|
12
12
|
// ─── Structure ───────────────────────────────────────────────────────
|
|
13
13
|
|
|
14
14
|
constraint def ContainmentAcyclicRule :> MemoConsistencyRule {
|
|
15
|
-
attribute id = "CR-ONT-001";
|
|
15
|
+
attribute :>> id = "CR-ONT-001";
|
|
16
16
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
17
17
|
attribute appliesTo = "Model";
|
|
18
18
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -21,7 +21,7 @@ package memo_rules_ontology {
|
|
|
21
21
|
constraint { true }
|
|
22
22
|
}
|
|
23
23
|
constraint def NestedPartConnectedRule :> MemoConsistencyRule {
|
|
24
|
-
attribute id = "AR-IBD-001";
|
|
24
|
+
attribute :>> id = "AR-IBD-001";
|
|
25
25
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
26
26
|
// Internal-block connectivity is a structural-architecture concern, so
|
|
27
27
|
// the subject is the structural component — not every MemoPart. UI
|
|
@@ -44,7 +44,7 @@ package memo_rules_ontology {
|
|
|
44
44
|
// ─── Deployment and realization ──────────────────────────────────────
|
|
45
45
|
|
|
46
46
|
constraint def RuntimeTracesToModuleRule :> MemoConsistencyRule {
|
|
47
|
-
attribute id = "CR-ONT-011";
|
|
47
|
+
attribute :>> id = "CR-ONT-011";
|
|
48
48
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
49
49
|
attribute appliesTo = "SoftwareComponent";
|
|
50
50
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -53,7 +53,7 @@ package memo_rules_ontology {
|
|
|
53
53
|
constraint { true }
|
|
54
54
|
}
|
|
55
55
|
constraint def PatientContactCharacterizedRule :> MemoConsistencyRule {
|
|
56
|
-
attribute id = "CR-ONT-032";
|
|
56
|
+
attribute :>> id = "CR-ONT-032";
|
|
57
57
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
58
58
|
attribute appliesTo = "PhysicalComponent";
|
|
59
59
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -65,7 +65,7 @@ package memo_rules_ontology {
|
|
|
65
65
|
// ─── Assurance coverage ──────────────────────────────────────────────
|
|
66
66
|
|
|
67
67
|
constraint def SafetyCriticalFunctionVerifiedRule :> MemoConsistencyRule {
|
|
68
|
-
attribute id = "CR-ONT-040";
|
|
68
|
+
attribute :>> id = "CR-ONT-040";
|
|
69
69
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
70
70
|
attribute appliesTo = "MemoFunction";
|
|
71
71
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -74,16 +74,16 @@ package memo_rules_ontology {
|
|
|
74
74
|
constraint { true }
|
|
75
75
|
}
|
|
76
76
|
constraint def CriticalTaskValidatedRule :> MemoConsistencyRule {
|
|
77
|
-
attribute id = "CR-ONT-041";
|
|
77
|
+
attribute :>> id = "CR-ONT-041";
|
|
78
78
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
79
|
-
attribute appliesTo = "
|
|
79
|
+
attribute appliesTo = "OperativeAction[criticality=high]";
|
|
80
80
|
attribute severity = RuleSeverityKind::error;
|
|
81
81
|
attribute rationaleText = "Critical tasks (criticality high or catastrophic) must trace to usability validation (FDA HF guidance; IEC 62366-1 summative evaluation).";
|
|
82
82
|
attribute predicateExpression = "not(criticality == 'high' or criticality == 'catastrophic') or validates->size() >= 1";
|
|
83
83
|
constraint { true }
|
|
84
84
|
}
|
|
85
85
|
constraint def UseErrorTracesToHazardRule :> MemoConsistencyRule {
|
|
86
|
-
attribute id = "CR-ONT-042";
|
|
86
|
+
attribute :>> id = "CR-ONT-042";
|
|
87
87
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
88
88
|
attribute appliesTo = "UseError";
|
|
89
89
|
attribute severity = RuleSeverityKind::warning;
|
|
@@ -113,9 +113,9 @@ package memo_rules_ontology {
|
|
|
113
113
|
// Several of these are WIDER than the end they replace, and deliberately so:
|
|
114
114
|
// the ends were being violated by content that already shipped. `composes`
|
|
115
115
|
// was typed MemoPart/MemoPart and links StateMachine (a state def) to
|
|
116
|
-
//
|
|
116
|
+
// OperativeAction (an action def); `verifiedBy`'s source was typed MemoPart and
|
|
117
117
|
// most of its sources are requirement defs; `precedes` was typed
|
|
118
|
-
//
|
|
118
|
+
// a part-only type and joins OperativeAction to OperativeAction.
|
|
119
119
|
// A rule that reproduced the old type exactly would have failed on the
|
|
120
120
|
// flagship example on the day it landed. What each rule asserts is the
|
|
121
121
|
// constraint the end MEANT, stated so it can be checked.
|
|
@@ -127,7 +127,7 @@ package memo_rules_ontology {
|
|
|
127
127
|
// and the admissible types so the report is still actionable.
|
|
128
128
|
|
|
129
129
|
constraint def SatisfiedBySourceKindRule :> MemoConsistencyRule {
|
|
130
|
-
attribute id = "CR-ONT-060";
|
|
130
|
+
attribute :>> id = "CR-ONT-060";
|
|
131
131
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
132
132
|
attribute appliesTo = "Model";
|
|
133
133
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -136,16 +136,16 @@ package memo_rules_ontology {
|
|
|
136
136
|
constraint { true }
|
|
137
137
|
}
|
|
138
138
|
constraint def SatisfiedByTargetKindRule :> MemoConsistencyRule {
|
|
139
|
-
attribute id = "CR-ONT-061";
|
|
139
|
+
attribute :>> id = "CR-ONT-061";
|
|
140
140
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
141
141
|
attribute appliesTo = "Model";
|
|
142
142
|
attribute severity = RuleSeverityKind::error;
|
|
143
|
-
attribute rationaleText = "A requirement is satisfied by a designed
|
|
144
|
-
attribute predicateExpression = "targetsOf(satisfiedBy)->forAll(conformsTo(
|
|
143
|
+
attribute rationaleText = "A requirement is satisfied by a designed part, a behaviour, or a port. Never by another requirement or by a document.";
|
|
144
|
+
attribute predicateExpression = "targetsOf(satisfiedBy)->forAll(conformsTo(MemoPart) or construct == 'action' or construct == 'port')";
|
|
145
145
|
constraint { true }
|
|
146
146
|
}
|
|
147
147
|
constraint def VerifiedByTargetKindRule :> MemoConsistencyRule {
|
|
148
|
-
attribute id = "CR-ONT-062";
|
|
148
|
+
attribute :>> id = "CR-ONT-062";
|
|
149
149
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
150
150
|
attribute appliesTo = "Model";
|
|
151
151
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -154,25 +154,25 @@ package memo_rules_ontology {
|
|
|
154
154
|
constraint { true }
|
|
155
155
|
}
|
|
156
156
|
constraint def AllocatedToSourceKindRule :> MemoConsistencyRule {
|
|
157
|
-
attribute id = "CR-ONT-063";
|
|
157
|
+
attribute :>> id = "CR-ONT-063";
|
|
158
158
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
159
159
|
attribute appliesTo = "Model";
|
|
160
160
|
attribute severity = RuleSeverityKind::error;
|
|
161
|
-
attribute rationaleText = "Allocation runs from a function or a behaviour to where it runs. The source end of AllocatedTo is
|
|
162
|
-
attribute predicateExpression = "sourcesOf(allocatedTo)->forAll(conformsTo(
|
|
161
|
+
attribute rationaleText = "Allocation runs from a function or a behaviour to where it runs. The source end of AllocatedTo is a part or an action.";
|
|
162
|
+
attribute predicateExpression = "sourcesOf(allocatedTo)->forAll(conformsTo(MemoPart) or construct == 'action')";
|
|
163
163
|
constraint { true }
|
|
164
164
|
}
|
|
165
165
|
constraint def AllocatedToTargetKindRule :> MemoConsistencyRule {
|
|
166
|
-
attribute id = "CR-ONT-064";
|
|
166
|
+
attribute :>> id = "CR-ONT-064";
|
|
167
167
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
168
168
|
attribute appliesTo = "Model";
|
|
169
169
|
attribute severity = RuleSeverityKind::error;
|
|
170
|
-
attribute rationaleText = "A function is allocated to
|
|
171
|
-
attribute predicateExpression = "targetsOf(allocatedTo)->forAll(conformsTo(
|
|
170
|
+
attribute rationaleText = "A function is allocated to a part — including a system or actor — as ARCADIA System Analysis requires.";
|
|
171
|
+
attribute predicateExpression = "targetsOf(allocatedTo)->forAll(conformsTo(MemoPart))";
|
|
172
172
|
constraint { true }
|
|
173
173
|
}
|
|
174
174
|
constraint def ComposesParentKindRule :> MemoConsistencyRule {
|
|
175
|
-
attribute id = "CR-ONT-065";
|
|
175
|
+
attribute :>> id = "CR-ONT-065";
|
|
176
176
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
177
177
|
attribute appliesTo = "Model";
|
|
178
178
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -181,7 +181,7 @@ package memo_rules_ontology {
|
|
|
181
181
|
constraint { true }
|
|
182
182
|
}
|
|
183
183
|
constraint def ComposesChildKindRule :> MemoConsistencyRule {
|
|
184
|
-
attribute id = "CR-ONT-066";
|
|
184
|
+
attribute :>> id = "CR-ONT-066";
|
|
185
185
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
186
186
|
attribute appliesTo = "Model";
|
|
187
187
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -190,16 +190,16 @@ package memo_rules_ontology {
|
|
|
190
190
|
constraint { true }
|
|
191
191
|
}
|
|
192
192
|
constraint def PrecedesEndKindRule :> MemoConsistencyRule {
|
|
193
|
-
attribute id = "CR-ONT-067";
|
|
193
|
+
attribute :>> id = "CR-ONT-067";
|
|
194
194
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
195
195
|
attribute appliesTo = "Model";
|
|
196
196
|
attribute severity = RuleSeverityKind::error;
|
|
197
|
-
attribute rationaleText = "Precedence orders things that happen:
|
|
198
|
-
attribute predicateExpression = "sourcesOf(precedes)->forAll(conformsTo(
|
|
197
|
+
attribute rationaleText = "Precedence orders things that happen: parts or behaviours, at both ends.";
|
|
198
|
+
attribute predicateExpression = "sourcesOf(precedes)->forAll(conformsTo(MemoPart) or construct == 'action') and targetsOf(precedes)->forAll(conformsTo(MemoPart) or construct == 'action')";
|
|
199
199
|
constraint { true }
|
|
200
200
|
}
|
|
201
201
|
constraint def PerformsPerformerKindRule :> MemoConsistencyRule {
|
|
202
|
-
attribute id = "CR-ONT-068";
|
|
202
|
+
attribute :>> id = "CR-ONT-068";
|
|
203
203
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
204
204
|
attribute appliesTo = "Model";
|
|
205
205
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -208,7 +208,7 @@ package memo_rules_ontology {
|
|
|
208
208
|
constraint { true }
|
|
209
209
|
}
|
|
210
210
|
constraint def EnablesEnablerKindRule :> MemoConsistencyRule {
|
|
211
|
-
attribute id = "CR-ONT-069";
|
|
211
|
+
attribute :>> id = "CR-ONT-069";
|
|
212
212
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
213
213
|
attribute appliesTo = "Model";
|
|
214
214
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -217,7 +217,7 @@ package memo_rules_ontology {
|
|
|
217
217
|
constraint { true }
|
|
218
218
|
}
|
|
219
219
|
constraint def BindsToInterfaceEndKindRule :> MemoConsistencyRule {
|
|
220
|
-
attribute id = "CR-ONT-070";
|
|
220
|
+
attribute :>> id = "CR-ONT-070";
|
|
221
221
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
222
222
|
attribute appliesTo = "Model";
|
|
223
223
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -226,12 +226,12 @@ package memo_rules_ontology {
|
|
|
226
226
|
constraint { true }
|
|
227
227
|
}
|
|
228
228
|
constraint def CrossesTrustBoundaryEndKindRule :> MemoConsistencyRule {
|
|
229
|
-
attribute id = "CR-ONT-071";
|
|
229
|
+
attribute :>> id = "CR-ONT-071";
|
|
230
230
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
231
231
|
attribute appliesTo = "Model";
|
|
232
232
|
attribute severity = RuleSeverityKind::error;
|
|
233
233
|
attribute rationaleText = "A boundary is a boundary element or a port; what crosses it is an asset or an exchange item.";
|
|
234
|
-
attribute predicateExpression = "sourcesOf(crossesTrustBoundary)->forAll(conformsTo(InterfaceElement) or construct == 'port') and targetsOf(crossesTrustBoundary)->forAll(conformsTo(
|
|
234
|
+
attribute predicateExpression = "sourcesOf(crossesTrustBoundary)->forAll(conformsTo(InterfaceElement) or construct == 'port') and targetsOf(crossesTrustBoundary)->forAll(conformsTo(MemoPart) or construct == 'item')";
|
|
235
235
|
constraint { true }
|
|
236
236
|
}
|
|
237
237
|
|
|
@@ -241,21 +241,21 @@ package memo_rules_ontology {
|
|
|
241
241
|
// reached with sourcesOf/targetsOf. They are resolved here by looking the id
|
|
242
242
|
// up in the kind extent, which is the same statement made the long way.
|
|
243
243
|
constraint def ComponentExchangeSourceEndpointKindRule :> MemoConsistencyRule {
|
|
244
|
-
attribute id = "CR-ONT-072";
|
|
244
|
+
attribute :>> id = "CR-ONT-072";
|
|
245
245
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
246
246
|
attribute appliesTo = "ComponentExchange";
|
|
247
247
|
attribute severity = RuleSeverityKind::error;
|
|
248
248
|
attribute rationaleText = "An exchange starts at a component or at a boundary port. Stating it as a rule is what let the endpoint refs stop being MemoPart-typed, which is what lets PhysicalPort and SoftwarePort become port defs.";
|
|
249
|
-
attribute predicateExpression = "attributes.sourceEndpoint == '' or allOfKind('
|
|
249
|
+
attribute predicateExpression = "attributes.sourceEndpoint == '' or allOfKind('MemoPart')->exists(id == subject.attributes.sourceEndpoint) or allOfKind('InterfaceElement')->exists(id == subject.attributes.sourceEndpoint) or allOfKind('MemoPort')->exists(id == subject.attributes.sourceEndpoint)";
|
|
250
250
|
constraint { true }
|
|
251
251
|
}
|
|
252
252
|
constraint def ComponentExchangeTargetEndpointKindRule :> MemoConsistencyRule {
|
|
253
|
-
attribute id = "CR-ONT-073";
|
|
253
|
+
attribute :>> id = "CR-ONT-073";
|
|
254
254
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
255
255
|
attribute appliesTo = "ComponentExchange";
|
|
256
256
|
attribute severity = RuleSeverityKind::error;
|
|
257
257
|
attribute rationaleText = "An exchange ends at a component or at a boundary port, on the same grounds as CR-ONT-072.";
|
|
258
|
-
attribute predicateExpression = "attributes.targetEndpoint == '' or allOfKind('
|
|
258
|
+
attribute predicateExpression = "attributes.targetEndpoint == '' or allOfKind('MemoPart')->exists(id == subject.attributes.targetEndpoint) or allOfKind('InterfaceElement')->exists(id == subject.attributes.targetEndpoint) or allOfKind('MemoPort')->exists(id == subject.attributes.targetEndpoint)";
|
|
259
259
|
constraint { true }
|
|
260
260
|
}
|
|
261
261
|
|
|
@@ -266,7 +266,7 @@ package memo_rules_ontology {
|
|
|
266
266
|
// "answerable to exactly one component" is the whole content of the concept.
|
|
267
267
|
|
|
268
268
|
constraint def ComponentFunctionAllocatedRule :> MemoConsistencyRule {
|
|
269
|
-
attribute id = "CR-ONT-074";
|
|
269
|
+
attribute :>> id = "CR-ONT-074";
|
|
270
270
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
271
271
|
attribute appliesTo = "ComponentFunction";
|
|
272
272
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -275,7 +275,7 @@ package memo_rules_ontology {
|
|
|
275
275
|
constraint { true }
|
|
276
276
|
}
|
|
277
277
|
constraint def FunctionDecomposesIntoFunctionsRule :> MemoConsistencyRule {
|
|
278
|
-
attribute id = "CR-ONT-075";
|
|
278
|
+
attribute :>> id = "CR-ONT-075";
|
|
279
279
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
280
280
|
attribute appliesTo = "MemoFunction";
|
|
281
281
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -294,7 +294,7 @@ package memo_rules_ontology {
|
|
|
294
294
|
// the ends and can never answer it. Naming the flow is what the grammar's
|
|
295
295
|
// restored FlowDeclaration name makes possible at all.
|
|
296
296
|
constraint def ExchangeHasFlowRule :> MemoConsistencyRule {
|
|
297
|
-
attribute id = "CR-ONT-076";
|
|
297
|
+
attribute :>> id = "CR-ONT-076";
|
|
298
298
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
299
299
|
attribute appliesTo = "ComponentExchange";
|
|
300
300
|
attribute severity = RuleSeverityKind::error;
|
|
@@ -304,9 +304,9 @@ package memo_rules_ontology {
|
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
constraint def AlternateScenarioHasBaseRule :> MemoConsistencyRule {
|
|
307
|
-
attribute id = "CR-ONT-043";
|
|
307
|
+
attribute :>> id = "CR-ONT-043";
|
|
308
308
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
309
|
-
attribute appliesTo = "
|
|
309
|
+
attribute appliesTo = "OperativeScenario";
|
|
310
310
|
attribute severity = RuleSeverityKind::error;
|
|
311
311
|
attribute rationaleText = "Alternate, exception, and recovery scenarios must identify their base scenario or variation point — never duplicate the workflow.";
|
|
312
312
|
attribute predicateExpression = "not(variantKind == 'alternate' or variantKind == 'exception' or variantKind == 'recovery') or baseScenario->size() == 1 or variationPoint != ''";
|
|
@@ -7,7 +7,7 @@ package memo_rules_quantitative {
|
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
|
|
9
9
|
constraint def HazardMaxControlsRule :> MemoConsistencyRule {
|
|
10
|
-
attribute id = "QT-001";
|
|
10
|
+
attribute :>> id = "QT-001";
|
|
11
11
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
12
12
|
attribute appliesTo = "Hazard";
|
|
13
13
|
attribute severity = RuleSeverityKind::info;
|
|
@@ -17,7 +17,7 @@ package memo_rules_quantitative {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
constraint def SwComponentMaxInterfacesRule :> MemoConsistencyRule {
|
|
20
|
-
attribute id = "QT-002";
|
|
20
|
+
attribute :>> id = "QT-002";
|
|
21
21
|
attribute tailoring = RuleTailoringKind::assurance;
|
|
22
22
|
attribute appliesTo = "SoftwareModule";
|
|
23
23
|
attribute severity = RuleSeverityKind::info;
|