Skip to content

2022-08 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 15 Sep 05:47

This is an incremental update to the 2022-07 release. It corresponds to Eclipse plugin version 0.27.0.

Language Features

KerML

  1. Unioning, intersecting and differencing. New relationships have been added for the unioning, intersecting and differencing of types. They are notated using new clauses that can be used in any kind of type declaration (including classifiers, features, connectors, etc.), included in the set of clauses that appear after the specialization part of the declaration.

    • unionsA, B, ... – Specifies that the declared type has unioning relationships with each of the types A, B, ..., meaning that the declared type classifies everything that is classified by any of the listed types.
    • intersectsA, B, ... – Specifies that the declared type has intersecting relationships with each of the types A, B, ..., meaning that the declared type classifies everything that is classified by all of the listed types.
    • differencesA, B, ... – Specifies that the declared type has differencing relationships with each of the types A, B, ..., meaning that the declared type classifies everything that is classified by the first type but is not classified by any of the remaining types.
    class Adult;
    class Child;
    
    class Person unions Adult, Child {
        feature dependents : Child[*];
        feature offspring : Person[*];
        feature grownOffspring : Adult[*] :> offspring;
        feature dependentOffspring : Child[*] :> dependents, offspring 
            differences offspring, grownOffspring 
            intersects dependents, offspring;
    }
    

    [PR #396]

  2. Reference subsetting. Previously, the related feature of a connector was related to a connector end using a regular subsetting relationship. Now a special referencing subsetting relationship is used instead, syntactically distinguishing the related feature from other subsetting features the connector end might have. Notationally, this means that, in the named connector end notation, the new keyword references or the equivalent symbol ::> must be used.

    connector :A from a1 ::> f to a2 ::> g;
    connector :B (b1 ::> f, b2 ::> g, b3 ::> h);
    connector :B {
        end b1 references f subsets x;
        end b2 subsets y references g;
        end b3 references h;
    }
    

    [PR #394]

SysML

  1. Flow connection definition. Previously, flow connection usages were typed by regular connection definitions specializing the base type FlowConnection. Now flow connection definitions have been added, and flow connection usages must (implicitly or explicitly) be typed by flow connection definitions. The notation is the same as for regular connection definitions, but using the keyword flow def instead of connection def. A flow connection definition is a connection definition, an action definition and a kernel interaction. A flow connection usage is now also an action usage, in addition to being a connection usage and a kernel item flow.
    [PR #390]

  2. Reference subsetting. Reference subsetting is also used in the following places in SysML.

    • Connections. To identify the related features of connections, as for KerML connectors (see above).
      connection :A connect a1 ::> f to a2 ::> g;
      connection :B connect (b1 ::> f, b2 ::> g, b3 ::> h);
      connection :B {
         end b1 references f subsets x;
         end b2 subsets y references g;
         end b3 references h;
      }
      
    • Usages. To identify the features referenced by certain kinds of usages.
      • The asserted constraint of an assert constraint usage.
      • The satisfied requirement of a satisfy requirement usage.
      • The event occurrence of an event occurrence usage.
      • The performed action of a perform action usage.
      • The exhibited state of an exhibit state usage.
      • The included use case of an include use case usage.
      perform a; // This is equivalent to the following action.
      perform action references a;
      
      // The performed action is "a" in both of the following.
      perform action a1 references a subsets b;
      perform action a2 :> b ::> a;
      
      satisfy r by p; // This is equivalent to the following satisfy.
      satisfy requirement references r by p;
      
    • Relationships. To identify the features referenced by certain kinds of membership relationships.
      • The constraint referenced by a requirement constraint membership (assume or require).
      • The concern referenced by a framed concern membership (frame).
      • The requirement referenced by a requirement verification membership (verify).
      • The rendering referenced by a view rendering membership (render).
      requirement r {
         require c; // This is equivalent to the following required constraint.
         require constraint references c;
      
         // The referenced constraint is "c" in both of the following.
         assume constraint ac1 references c subsets d;
         assume constraint ac2 :> d ::> c;
      }
      
    • Variants. The notation variantreferenced-usage now parses to a reference usage with a reference subsetting to the referenced-usage. However, there is no surface notational change, and there is no requirement to use reference subsetting otherwise in variant declarations.
      part p;
      variation part q {
         variant p; // This is equivalent to the following.
         variant ref p1 references p;
         variant part p2 subsets p; // But this is also still acceptable.
      }
      

    [PR #394]

  3. User-defined keywords. The notation has been updated to allow user-defined keywords in the following additional places.

    • assume#keywordconstraintconstraint-usage
    • require#keywordconstraintconstraint-usage
    • frame#keywordconcernconcern-usage
    • verify#keywordrequirementrequirement-usage
    • actor#keywordusage
    • stakeholder#keywordusage
    • subject#keywordusage
    • objective#keywordrequirement-usage

    Note. In items 1–4, the constraint, concern, or requirement keyword is optional when a user-defined keyword is included. However, if neither keyword is included, then the declaration is a reference, rather than the declaration of a named usage. For example, requireaGoal; is equivalent to require constraint referencesaGoal;, while require #goalaGoal;is equivalent to require #goal constraintaGoal;, where aGoal is a name of the required constraint usage, not a reference to another constraint usage.
    [PR #397]

Model Libraries

Systems Library

  1. Connections. FlowConnection and SuccessionFlowConnection have been made flow connection definitions. flowConnections and successionFlowConnections have been made messages (that is, flow connection usages without target output or source input features declared).
    [PR #390]

Backward Incompatibilities

  1. Reserved words.
    • KerML: differences intersects references unions
    • SysML: references
  2. Reference subsetting. The reference subsetting must now be used in the named notation for the related features of a connector or connection end. In other cases in SysML, reference subsetting should be used to retain the same meaning as previously. For example, in perform actionpasubsetsa; (or perform actionpa :> a;), a is no longer the performed action, it is simply a subsetted action. Instead, use perform actionpareferencesa; (or perform actionpa ::> a;).
    [PR #394]
  3. Prefix comments. Prefix comments (i.e, comments starting with /**) will no longer generate a warning. They will simply be parsed as regular comments about the namespace they are a member of (not about the following member). For example, in
    package P {
        /** This is a comment */
        attribute x;
    }
    
    the comment parses as being about package P (not x) with the body text * This is a comment.
    [PR #390]

Jupyter

None.

Visualization

  1. PlantUML

    • Updated to visualize language extensions with <<#...>> in the title. In addition, two new styles have been added:
      • HIDEMETADATA – Do not render callouts to show metadata.
      • SHOWMETACLASS – Always show metaclasses for types as well as metadata usages.

    [PR #385]

  2. Tom Sawyer
    None.

Technical Updates

None

Bug Fixes

  1. ItemFlow::itemType Fixed an error in the implementation of the derivation of itemType that caused an IndexOutOfBoundsException.
    [PR #386]
  2. Message ends. Corrected bugs related to the parsing of message declarations.
    [PR #387]
  3. Conditional succession. Corrected the computation of the featuring type of an implicit connector/connection.
    [PR #388]
  4. Usage::isComposite. Fixed the default for the isComposite property of a usage.
    [PR #389]
  5. Conjugate port types (PlantUML). Fixed the rendering of conjugate port types (by using the effective name).
    [PR #391]
  6. State actions (PlantUML). Removed the slash from the rendering of state actions.
    [PR #392]
  7. Anonymous packages (PlantUML). Fixed the rendering of packages without names.
    [PR #393]
  8. Cyclic types (PlantUML). Prevented a StackOverflowException when rendering cyclic types.
    [PR #395]