SysML 1.6 RTF Avatar
  1. OMG Issue

SYSML16 — Copy constraints #2 and #3 shoud be merged together

  • Key: SYSML16-365
  • Status: closed  
  • Source: Airbus Group ( Mr. Yves Bernard)
  • Summary:

    Copy constraint#2 states:

    The text property of the client requirement is constrained to be a read-only copy of the text property of the supplier requirement.

    While Copy constraint#3 states:

    Constraint [2] is applied recursively to all subrequirements.

    They should be merged in one unique constraint so that the requested recursivity could be formally stated in OCL using an helper operation

  • Reported: SysML 1.5 — Thu, 21 Sep 2017 08:33 GMT
  • Disposition: Duplicate or Merged — SysML 1.6
  • Disposition Summary:

    Merged with SysML16-274

    To be fixed as part of SYSML16-311

    • Add an "Operations" sub clause with the following operation definition:
      isCopy (in req1 : AbstractRequirement, in req2 : AbstractRequirement) : Boolean [1]
    bodyCondition:
    let subReq1: Set(AbstractRequirement) = AbstractRequirement.allInstances()->select(r | req1.base_NamedElement.ownedElement->includes(r.base_NamedElement)) in
    let subReq2: Set(AbstractRequirement) = AbstractRequirement.allInstances()->select(r | req2.base_NamedElement.ownedElement->includes(r.base_NamedElement)) in
    req1.text = req2.text and
    subReq1->size() = subReq2->size() and
    subReq1->forAll(r1 | subReq2->exists(r2 | self.isCopy(r1, r2) ))
    
    • Constraint#2's textual statement shall be replaced by:
      The text property of the client requirement is constrained to be a read-only copy of the text property of the supplier requirement and this applies recursively to all subrequirements (i.e. requirements related by a containement relationship)
    • Constraint#2's OCL statement shall be:
      let cltReq: AbstractRequirement = AbstractRequirement.allInstances()->any(r | self.base_Abstraction.client->includes(r.base_NamedElement)) in
      let supReq: AbstractRequirement = AbstractRequirement.allInstances()->any(r | self.base_Abstraction.supplier->includes(r.base_NamedElement)) in
      self.isCopy(cltReq, supReq)
      
    • Constrain#3 shall be deleted
  • Updated: Mon, 1 Apr 2019 18:17 GMT