Skip to content

2025-07 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 06 Aug 20:16
· 32 commits to master since this release
af9c208

This is an incremental update to the 2025-06 release. It corresponds to Eclipse plugin version 0.51.0.

Language Features

Bug fixes.

Model Libraries

Kernel Semantic Library

  1. Name collisions. The following models were updated to avoid name collisions due to diamond inheritance:

    • FeatureReferencingPerformances
    • Objects
    • Observation
    • Occurrences
    • Transfers

    [PR #679]

  2. Transfers. The features transfers and messageTransfers are now steps instead of flows. As a result, these features no longer have spurious implied subsettings of flowTransfers.
    [PR #682]

  3. Transition performances. In the TransitionPerformance model, in TransitionPerformance::accept, the nested redefinition of receive was removed and replaced with a binding connector. This allows the receive parameter of the accepter in a SysML TransitionUsage to be redefined and bound.
    [PR #683]

Kernel Function Library

  1. Name collisions. The VectorFunctions model was updated to avoid name collisions due to diamond inheritance.
    [PR #679]

Systems Library

  1. Trade studies. The TradeStudies model for TradeStudyObjectives has been updated to avoid validation errors when the objective of a TradeStudy is redefined as intended, to give it a concrete type such as MinimizeObjective or MaximizeObjective.
    [PR #676]

  2. Name collisions. The following models were updated to avoid name collisions due to diamond inheritance:

    • Actions
    • Connections
    • Flows
    • Items
    • Metadata
    • Parts
    • Ports
    • SysML
    • Views

    [PR #679]

  3. Flows. The flow definition Message and the flow usage messages no longer have owned end features. As a result, messages no longer has a spurious implied subsetting of flows.
    [PR #682]

  4. Assignments. In the Actions model, in Action::assignments, a nested owned parameter target was added. This ensures that the parameters redefined by an ActionUsage are target and replacementValues, in that order.
    [PR #683]

Geometry Domain Library

  1. Name collisions. The following models were updated to avoid name collisions due to diamond inheritance:

    • ShapeItems
    • SpatialItems

    [PR #679]

Quantities and Units Domain Library

  1. Name collisions. The following models were updated to avoid name collisions due to diamond inheritance:
    • SI
    • USCustomaryUnits

Requirement Derivation Domain Library

  1. Name collisions. The DerivationConnections model was updated to avoid name collisions due to diamond inheritance.

Backward Incompatibilities

  1. Subjects and objectives. Previously, if a requirement definition/usage or case definition/usage was parsed without an owned subject and/or objective, then a subject or objective element was physically inserted into the parse tree by the relevant adapter. Starting with this release, these insertions are no longer being done, which is more conformant with the SysML specification. However, the previous insertion of subjects meant that the validation checks for the subject being the first parameter were satisfied even if the subject was not declared explicitly and there were additional parameters. This is no longer necessarily the case.

    For example, the following requirement definition would previously have not produced an error, but now results in a "Subject must be first parameter" validation error.

    requirement def R {
        // Error: Subject must be first parameter.
        in x;
    }
    

    In particular, stakeholders and actors are kinds of parameters, so a subject must always be explicitly declared if stakeholders and/or actors are also declared.

    concern c {
        subject; // Required to avoid error.
        stakeholder s;
    }
    use case uc {
        subject; // Required to avoid error.
        actor a;
    }
    

    Note that this is the case even when specializing a supertype with an inheritable subject:

    use case uc1 {
        subject subj;
    }
    use case uc2 :> uc1 {
        subject subj; // Implied redefinition of uc1::subj.
        actor a;
    }
    use case uc3 :> uc, uc1 {
        subject; // Required to avoid "Only one subject is allowed" error.
    }
    

    [PR #677]

  2. Validation. Existing models may now get distinguishibility warnings that were not previously generated. For example, the following model previously did not cause a warning, but now it does as indicated.

    part def Vehicle {
        part wheels [2..*] : Wheel;
    }
    part def Car :> Vehicle {
        part :>> wheels [3..4];
    }
    part def Truck :> Vehicle {
        part :>> wheels [4..18];
    }
    part def SUV :> Car, Truck; // Warning: Duplicate of inherited member name 'wheel'
    

    The warning can be removed by redefining both Vehicle::wheels and Truck::wheels within SUV:

    part def SUV :> Car, Truck {
        part :>> Car::wheels, Truck::wheels;
    }
    

    [PR #679]

  3. Spatial items. The item definition SpatialItems::SpatialItem from the Geometry Model Library redefines the feature localClock so that it is typed by Time::Clock from the Quantities and Units Domain Library. However, localClock is also redefined in Occurrences::Occurrence::suboccurrences, which is indirectly specialized by Items::Item::subitems. As a result, declaring a subitem that is a SpatialItem within another SpatialItem now results in a warning.

    item def SpacialItemWithSubitem :> SpatialItem {
        // Warning: Duplicate of inherited name 'localClock' from SpatialItem, suboccurrences
        item aSubItem : SpatialItem; // implied subsetting of subitems
    }
    

    In order to avoid having to further redefine localClock within every such subitem declaration, additional features have been added to SpatialItem:

    • subSpatialItems – Subset this for subitems that are SpatialItems.
    • subSpatialParts – Subset this for subparts that are SpatialItems.
    • componentParts – Subset this for component items that are parts (instead of subsetting componentItems).
    item def SpacialItemWithSubSpacialItems :> SpatialItem {
        item aSubSpaitalItem :> subSpatialItem;
        part aSubSpaitalPart :> subSpatialPart;
    }
    item def SpacitalItemWithComponents :> SpatialItem {
        item aComponentItem :> componentItems; // Per specification
        part aComponentPart :> componentParts;
    }
    

    [PR #679]

  4. Messages. The end features source and target of Mssages::Message and Messages::messages are now inherited and are no longer occurrence usages. This means that they cannot be used as the referenced occurrences in an event occurrence usage. However, this is appropriate, because the referenced events for a message should instead be sourceEvent and targetEvent which are still occurrence usages.
    [PR #682]

  5. Binary connectors/connections. Correction of the validateConnectorBinarySpecialization check may result both in cases in which a previously valid connector/connection declaration becomes invalid or a previously invalid declaration becomes valid.
    [PR #682]

Issue Resolutions

The KerML 1.1 ans SysML 2.1 RTFs have not yet approved any issue resolutions. However, this release includes proactive resolutions to the following issues to correct library models, largely to avoid validation errors that have now been identified due to corrections in validation checking.

KerML

  • KERML11-76 Library models have inherited member name collisions
  • KERML11-78 Transfers::transfers and Transfers::flowTransfers subset each other
  • KERML11-79 TransitionPerformance::accept is incorrect

SysML

  • SYSML21-318 Diamond inheritance problem with TradeStudy
  • SYSML21-322 Library models have inherited member name collisions
  • SYSML21-324 Flows::messages and Flows::flows subset each other
  • SYSML21-327 AssignmentAction parameters get reordered

Jupyter

None.

Visualization (PlantUML)

None.

Technical Updates

None.

Bug Fixes

  1. Conditional succession. Fixed the setting of the source of a shorthand conditional succession.
    [PR #678]
  2. isDistinguishableFrom. Corrected the implementation of the Membership::isDistinguishableFrom operation.
    [PR #680]
  3. Implied binding connectors. Corrected the insertion of implied binding connectors during XMI or JSON export.
    [PR #681]
  4. Binary connector validation. Corrected the implementation of the check of the constraint validateConnectorBinarySpecialization to properly handle redefined features when counting connector ends.
    [PR #682]
  5. Parameters and end features. Fixed the computation of the parameters and end features of a type, particularly as used in determining the implied redefinitions of these features.
    [PR #683]