Skip to content

2024-07 - SysML v2 Pilot Implementation

Compare
Choose a tag to compare
@seidewitz seidewitz released this 08 Aug 21:52
· 64 commits to master since this release

This is an incremental update to the 2024-05 release (there was no 2024-06 release). It corresponds to Eclipse plugin version 0.43.2.

New Features

None.

Backward Incompatibilities

  1. Import visibility.

    • All imports (other than view usage expose declarations) now have private visibility by default in the KerML and SysML v2 abstract syntax models. In the textual notation, it will be mandatory to declare the visibility explicitly, even for private. However, in order to allow a transitional period, import declarations without an explicit visibility indicator will continue to be default public, but will give a warning message: "Default public import is deprecated; make private if possible". Import declarations with this warning will result in syntax errors in the next release.
    • In addition, imports at the top-level in a model (that is, not nested in any other namespace, and, so, importing into the "root namespace") are now required to be private. (This prevents the "re-export" of names imported into a root namespace directly back into the global scope, which simplifies global name resolution.)
    • Expose declarations are kinds of imports. However, unlike regular imports, expose declarations are know required to have protected visibility. That is, elements exposed by the declaration are visible only within the exposing view usage and any specializations of that view usage. Since the visibility is always protected, a visibility indicator is no longer part of the syntax of an expose declaration.

    [PR #582]

  2. Action invocation. Previously, invoking a KerML behavior (as opposed to a function) or SysML v2 action definition (as opposed to a calculation definition) in an expression was specified as performing the behavior, but resulting in a null (empty) result value. This is now changed so such an invocation is treated as a "constructor expression" for the behavior or action, returning the behavior performance itself, which allows access to the values of any output parameters of the behavior or action. For example, in the following model, the value of a_out will be 3.

    action def A {
        in x;
        out y = x;
    }
    action a = A(x = 3);
    ref a_out = a.y;
    

    [PR #582]

  3. Analysis actions. The definition for AnalysisAction has been removed from the Systems Library model AnalysisCases. The subactions of an AnalysisCase can be any kind of action, so there was no need for a special kind of AnalysisAction.

    [PR #583]

Issue Resolutions

KerML

  1. KerML Metamodel. The KerML abstract and concrete syntax have been updated consistent with the resolutions of the following KerML FTF issues. Changes affecting user models are described under "Backward Incompatibilities" above.

    • KERML_-37 Add derived property for targetFeature
    • KERML_-67 Invocation of a non-functional behavior
    • KERML_-73 Disallow public imports at root level
    • KERML_-74 Make imports private by default

    The resolution of the following issue from KerML FTF2 Ballot 1 was already consistent with previous implementation:

    • KERML_-75 Restrict the functionality of recursive import

    [PR #582]

  2. KerML Model Libraries. Th reflective abstract syntax model KerML in the Kernel Semantic Library has been updated consistent with the resolution of the following KerML FTF issue. In addition, an explicit public keyword has been added to all public imports in the textual notation for all models in the Kernel Model Libraries, consistent with the resolution to issue KERML_-74.

    • KERML_-65 isOrdered and isUnique are missing from the reflective abstract syntax binding

    [PR #582]

SysML

  1. SysML Metamodel. The SysML abstract and concrete syntax have been updated consistent with the resolutions to the following SysML v2 FTF issues. Changes affecting user models are described under "Backward Incompatibilities" above.

    • SYSML2_-183 checkStateUsageExclusiveStateSpecialization and checkStateUsageSubstateSpecialization have problems
    • SYSML2_-187 There is no need for AnalysisAction [also affects the model library]
    • SYSML2_-207 Update language description and concrete syntax related to imports

    [PR #582] [PR #583]

  2. SysML Model Libraries. The models States, AnalysisActions and SysML in the Systems Model Library have been updated consistent with the resolutions to the following SysML v2 FTF issues. In addition, an explicit public keyword has been added to all public imports in the textual notation for all models in the Systems Model Library and Domain Model Libraries, consistent with the resolution to issue SYSML2_-207.

    • SYSML2_-184 StateAction::substates has an implied subsetting of exclusiveStates
    • SYSML2_-187 There is no need for AnalysisAction [also affects the abstract syntax]
    • SYSML2_-209 isOrdered and isUnique are missing from the reflective abstract mapping

    [PR #582] [PR #583]

Jupyter

None.

Visualization (PlantUML)

  1. Multiplicities in nodes. Rendering of multiplicities inside node symbols is now supported, in addition to rendering multiplicities on edges. Three new style options have been added:

    • NODEMULTIPLICITY – Show multiplicities in nodes. (This is the default for the TREE view.)
    • EDGEMULTIPLICITY – Show multiplicities on edges.
    • IMPLICITMULTIPLICITY – Show implicit multiplicities as well. (Even if multiplicity is not specified explicitly for a feature, the visualizer renders the default or inherited multiplicity.)

    [PR #584]

  2. Bug fixes. See below.

Technical Updates

None.

Bug Fixes

  1. Inherited features of non-standard libraries (PlantUML). Fixes a bug (introduced in PR #556) that caused inherited features of non-standard libraries to be wrongly hidden.

    [PR #573]

  2. Nested inherited features on a connection (PlantUML). Properly renders nested features referenced by connections.

    [PR #574]

  3. Inherited features (PlantUML). Fixes a bug (introduced in PR #561) that caused memberships of inherited features to be incorrectly rendered. Also corrects the rendering of subsettings of inherited features.

    [PR #577]