Skip to content

2023-01 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 14 Feb 19:02

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

(Note: This is an SST-internal release. There is no public release planned for 2023-01.)

Language Features

  1. Index expressions. The bracket notation ...[...] for index expressions has been replaced with a new notation ...#(...) (parentheses are required). The bracket notation continues to be used for constructing quantities with units (e.g., 10.0[km]).

    attribute list [*] ordered = ("a", "b", "c");
    attribute a = list#(1); // value is "a"
    attribute b = list#(2); // value is "b"
    
    attribute arr : Collections::Array {
      :>> dimensions = (2, 3);
      :>> elements = ("a", "b", "c",
                      "x", "y", "z");
    }
    attribute c = arr#(1,3); // value is "c"
    attribute y = arr#(2,2); // value is "y"
    

    [PR #466]

  2. Timeslices and snapshots. The abstract syntax has been simplified for occurrence usages that are time slices and snapshots, eliminating the concept of a "portioning feature". The textual notation is unchanged, but now time slices and snapshot usages implicitly subset the timeSlices or snapshots features (respectively) of each occurrence definition by which they are explicitly defined, if any, or, otherwise, the occurrence definition or usage in which they are nested.

    occurrence def AircraftFlight {
        // Implicitly subsets "timeSlices" of AircraftFlight.
        timeslice occurrence inAir;
    }
    
    // Implicitly featured by AircraftFlight.
    // Implicitly subsets "timeSlices" of AircraftFlight.
    timeslice occurrence preFlight : AircraftFlight;
    

    [PR #454]

Model Libraries

  1. Deterministic UUIDs. Implemented the generation of deterministic, named-based (version 5) UUIDs as the elementIds for standard model library elements with a non-null qualifiedName.
    [PR #457]

Kernel Semantic Library

  1. BaseFunctions. Added an abstract function for #.
    [PR #466]
  2. SequenceFunctions and CollectionFunctions. Changed the specializations of [ to corresponding specializations of #.
    [PR #466]
  3. StatePerformances. Added the feature incomingTransitionTrigger to StatePerformance, whose value is the MessageTransfer accepted to trigger a transition into a StatePerformance. (This is inherited by StateAction in SysML.)
    [PR #455]

Systems Model Library

  1. Geometry. Simplified the SpatialItems model to eliminate the need for CompoundSpatialItem. Now, any SpatialItem with one or more componentItems is considered to be a compound union of those items, while a SpatialItem without any compoundItems occurs on its own, separately from its subitems.
    [PR #468]
  2. Quantities and Units.
    • Added definitions for curved definitions for curved spatial coordinate frames (3D spherical, cylindrical and planetary) and associated vector quantities in addition to existing Cartesian frames and vectors.
      [PR #406]
    • Added a universalCartesianSpatial3dCoordinateFrame singleton to be used as a default coordinate frame (similar to the Time::universalClock singleton).
      [PR #406]
    • Added a transform calculation definition to VectorCalculations, which transforms a VectorQuantityValue from a source to a target CoordinateFrame.
      [PR #406]
    • Added models for TensorCalculations and MeasurementRefCalculations.
      [PR #467]

Backward Incompatibilities

  1. Bracket notation. The following validation checks have been added, to catch previous uses of the bracket notation for indexing:

    • KerML. A warning whenever the bracket notation is used: "Use #(...) for indexing".
    • SysML. A warning when the bracket notation is used and the second argument is not a measurement reference: "Should be a measurement reference (unit)".

    [PR #466]

  2. Vector quantities and coordinate frames. A consistent naming convention has been adopted for the names of vector and coordinate frame types and features in library packages Quantities.sysml, MeasurementReferences.sysml and ISQSpaceTime.sysml. As a result, some names of existing elements have changed. The following is an example of successive levels of specialization:

    • VectorQuantityValue, ThreeVectorValue (from KerML)
      • '3dVectorQuantityValue' (alias ThreeDVectorQuantityValue)
        • Position3dVector
          • CartesianPosition3dVector
          • CylindricalPosition3dVector
          • SphericalPosition3dVector
          • PlanetaryPosition3dVector

    [PR #406]

Jupyter

None.

Visualization

  1. PlantUML
    None.

  2. Tom Sawyer
    None.

Technical Updates

  1. Abstract syntax files. The following UML abstract syntax model files are now available in the org.omg.sysml/model directory, reflecting the normative metamodel URIs that will be used for the OMG submission.

    • KerML_only.uml – Contains just the KerML abstract syntax metaclasses, all in a single flat package named kerml.
      URI: https://www.omg.org/spec/KerML/20230201
    • SysML_only.uml – Contains just the SysML abstract syntax metaclasses, all in a single flat package named sysml, referencing KerML elements from KerML_only.uml.
      URI: https://www.omg.org/spec/SysML/20230201
    • SysML.uml – Contains the combined SysML and KerML abstract syntax metaclasses (as before), all in a single flat package named sysml.
      URI: https://www.omg.org/spec/SysML/20230201

    [PR #452]

  2. ECore metamodel. Since the Ecore metamodel SysML.ecore is generated from SysML.uml, the sysml EPackage from it is now registered using the URI https://www.omg.org/spec/SysML/20230201 (rather than http://www.omg.org/spec/SysML/2.0, as it has been previously).
    [PR #452]

  3. XMI editor features. A omg.org.sysml.editor.feature has been created for the omg.org.sysml.edit and omg.org.sysml.editor plugins introduced in the last release, and this new feature has been added to omg.org.sysml.site for the Eclipse installation.
    [PR #453]

Bug Fixes

  1. ControlPerformances. Constrained the earlier/later occurrences of DecisionPerformance::outgoingHBLink/MergePerformance::incomingHBLink to be the performance.
    [PR #456]
  2. Links and Transfers. Made the following read-only: Link::participant, BinaryLink::source/target, Transfer::isInstant, FlowTransfer::isMove/isPush.
    [PR #459]
  3. Exponential operator. Implemented ^ as an exponential operator for model-level evaluable expression evaluation.
    [PR #460]
  4. ItemFlows and FlowConnectionUsages. Corrected the implicit specialization for ItemFlows and FlowConnectionUsages.
    [PR #461]
  5. ActionUsages. Corrected the implicit specialization for an ActionUsage as an enclosedPerformance.
    [PR #462]
  6. StateActions. Corrected the subsettings of StateAction::entryAction, exitAction and doAction.
    [PR #463]
  7. Requirements. Made RequirementCheck::assumptions, constraints, subrequirements and concerns all composite. Also corrected various specializations of Actions::subactions that should have been composite.
    [PR #464]
  8. Occurrences.
    • Made Occurrence::self subset spaceTimeCoincidentOccurrences.
      [PR #465]
    • Made Occurrence::spaceTimeCoincidentOccurrences subset timeCoincidentOccurrences (and other related changes).
      [PR #470]