Skip to content

memo_rules_crosslayer

SysML API

Public namespace memo::rules::crosslayer
Declared package memo_rules_crosslayer
Source src/rules/crosslayer/cross_layer_rules.sysml

Namespace hierarchy

memo → memo::rules → memo::rules::crosslayer

Packages

Package
memo_rules_crosslayer

Imports

Visibility Target
private ScalarValues::*
private memo_core_consistency_rules::*
private memo_core_enumerations::*
private memo_core_common::*
private memo_core_common::MemoIdentity
private memo_artifacts_standards_traceability::EnforcesClause
private memo_artifacts_standards_iec_62304::*
private memo_artifacts_standards_iso_14971::*

Declarations

Name SysML kind Description Specializes
RiskToReqTraceRule constraint def Constraint that checks risk to req trace rule. MemoConsistencyRule
ReqToArchTraceRule constraint def Constraint that checks req to arch trace rule. MemoConsistencyRule

RiskToReqTraceRule

constraint def RiskToReqTraceRule :> MemoConsistencyRule
Property Value
Description Constraint that checks risk to req trace rule.
Kind constraint def
Abstract No
Specializes MemoConsistencyRule
Owning package memo_rules_crosslayer

ReqToArchTraceRule

constraint def ReqToArchTraceRule :> MemoConsistencyRule
Property Value
Description Constraint that checks req to arch trace rule.
Kind constraint def
Abstract No
Specializes MemoConsistencyRule
Owning package memo_rules_crosslayer

Source

rules/crosslayer/cross_layer_rules.sysml
// Cross-layer traceability constraints evaluated from their ontology-owned
// predicate expressions.
package memo_rules_crosslayer {
    private import ScalarValues::*;

    private import memo_core_consistency_rules::*;
    private import memo_core_enumerations::*;

    private import memo_core_common::*;
    private import memo_core_common::MemoIdentity;
    private import memo_artifacts_standards_traceability::EnforcesClause;
    private import memo_artifacts_standards_iec_62304::*;
    private import memo_artifacts_standards_iso_14971::*;
    constraint def RiskToReqTraceRule :> MemoConsistencyRule {
        @MemoIdentity { :>> providedId = "XL-001"; }
        attribute tailoring = RuleTailoringKind::assurance;
        attribute domain = RuleDomainKind::medicalDevice;
        attribute obligation = RuleObligationKind::required;
        // To confirm: inferred from the clause scopes; confirm.
        attribute appliesTo = "Hazard";
        attribute severity = RuleSeverityKind::warning;
        attribute rationaleText = "Risk-requirement traceability required for regulatory submissions.";
        attribute predicateExpression = "derivesFrom->size() >= 1";
        constraint { true }
    }
    #EnforcesClause dependency from RiskToReqTraceRule to iso14971::iso14971Clause7::iso14971Clause7_2, iec62304::iec62304Clause5::iec62304Clause5_2::iec62304Clause5_2_3;

    constraint def ReqToArchTraceRule :> MemoConsistencyRule {
        @MemoIdentity { :>> providedId = "XL-002"; }
        attribute tailoring = RuleTailoringKind::assurance;
        attribute domain = RuleDomainKind::medicalDevice;
        attribute obligation = RuleObligationKind::required;
        // To confirm: inferred from the clause scope; confirm.
        attribute appliesTo = "Requirement[requirementType=system]";
        attribute severity = RuleSeverityKind::warning;
        attribute rationaleText = "Requirements-to-architecture traceability per IEC 62304.";
        attribute predicateExpression = "satisfiedBy->size() >= 1";
        constraint { true }
    }
    #EnforcesClause dependency from ReqToArchTraceRule to iec62304::iec62304Clause5::iec62304Clause5_3::iec62304Clause5_3_1;

}