2022-08 - SysML v2 Pilot Implementation
This is an incremental update to the 2022-07 release. It corresponds to Eclipse plugin version 0.27.0.
Language Features
KerML
-
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 typesA, 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 typesA, 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 typesA, 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]
-
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
referencesor 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
-
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 keywordflow definstead ofconnection 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] -
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 (
assumeorrequire). - 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; } - The constraint referenced by a requirement constraint membership (
- Variants. The notation
variantreferenced-usagenow parses to a reference usage with a reference subsetting to thereferenced-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]
- Connections. To identify the related features of connections, as for KerML connectors (see above).
-
User-defined keywords. The notation has been updated to allow user-defined keywords in the following additional places.
assume#keywordconstraintconstraint-usagerequire#keywordconstraintconstraint-usageframe#keywordconcernconcern-usageverify#keywordrequirementrequirement-usageactor#keywordusagestakeholder#keywordusagesubject#keywordusageobjective#keywordrequirement-usage
Note. In items 1–4, the
constraint,concern, orrequirementkeyword 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 torequire constraint referencesaGoal;, whilerequire #goalaGoal;is equivalent torequire #goal constraintaGoal;, whereaGoalis a name of the required constraint usage, not a reference to another constraint usage.
[PR #397]
Model Libraries
Systems Library
- Connections.
FlowConnectionandSuccessionFlowConnectionhave been made flow connection definitions.flowConnectionsandsuccessionFlowConnectionshave been made messages (that is, flow connection usages without target output or source input features declared).
[PR #390]
Backward Incompatibilities
- Reserved words.
- KerML:
differences intersects references unions - SysML:
references
- KerML:
- 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;(orperform actionpa :> a;),ais no longer the performed action, it is simply a subsetted action. Instead, useperform actionpareferencesa;(orperform actionpa ::> a;).
[PR #394] - 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, inthe comment parses as being about packagepackage P { /** This is a comment */ attribute x; }P(notx) with the body text* This is a comment.
[PR #390]
Jupyter
None.
Visualization
-
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]
- Updated to visualize language extensions with <<#...>> in the title. In addition, two new styles have been added:
-
Tom Sawyer
None.
Technical Updates
None
Bug Fixes
- ItemFlow::itemType Fixed an error in the implementation of the derivation of
itemTypethat caused anIndexOutOfBoundsException.
[PR #386] - Message ends. Corrected bugs related to the parsing of
messagedeclarations.
[PR #387] - Conditional succession. Corrected the computation of the featuring type of an implicit connector/connection.
[PR #388] - Usage::isComposite. Fixed the default for the
isCompositeproperty of a usage.
[PR #389] - Conjugate port types (PlantUML). Fixed the rendering of conjugate port types (by using the effective name).
[PR #391] - State actions (PlantUML). Removed the slash from the rendering of state actions.
[PR #392] - Anonymous packages (PlantUML). Fixed the rendering of packages without names.
[PR #393] - Cyclic types (PlantUML). Prevented a
StackOverflowExceptionwhen rendering cyclic types.
[PR #395]