SysML 1.7 RTF Avatar
  1. OMG Issue

SYSML17 — Lower and Upper Explained

  • Key: SYSML17-389
  • Status: open  
  • Source: Elparazim ( Edward Roberts)
  • Summary:

    I believe the reason Lower and Upper were added into the standard was to allow for multiplicities that did not follow the multiplicity rules of the standard... I have an example... and I think an example should be in the standard to clarify this mystifying need for lower and upper... because it is not clear really why they are needed...

    suppose I have the following
    part1[3..4]
    part2[3..7]
    part3[4..6]

    and I want to bind a BoundReferece x to part1.part2.part3 in block y... now I can take several approaches...
    1. <<boundReference>> x:Part3 [*[ - this removes the double maintenance problem when multiplicities of the paths change does not restrict anything
    2. <<boundReference>> x:Part3 [36..168] - this mimics the multiplicities of the path, so really no restriction
    3. <<boundReference>> x:Part3 [2..10] - this restricts the number of part3s that there can be at the end of that path

    option 3 could have also been specified as
    <<boundReference>> x:Part3 [*]

    {lower=2,upper=10}

    now block z specializes block x and I have another property a such that
    <<endPathMultiplicity>> a:Part3[*[

    {redefines x,lower=5,upper=20}

    but this only works if x has multiplicity * otherwise
    <<endPathMultiplicity>> a:Part3 [5..20[

    {redefines x}

    if x is <<boundReference>> x:Part3 [2..10] does not work
    because 5..20 is not a restriction of 2..10

    This is why lower and upper can be different (but constrained by) the multiplicity

  • Reported: SysML 1.6 — Sun, 25 Oct 2020 14:00 GMT
  • Updated: Tue, 27 Oct 2020 19:38 GMT