Missing features#
SysML v2 is a very rich modeling language, and the backend covers the part of it that can be turned into running code. The features listed on the overview page and on the sub-pages are supported for both code targets unless a page says otherwise. What follows is the other side of that line: constructs that are limited, ignored on purpose, or not there yet. The list is not exhaustive — take a look at the GitHub examples to see what is used in practice.
Limited or not supported#
- Absolute-time transitions (
accept at …) — timed transitions useaccept afteronly - Timed transitions are evaluated in seconds; other time units are not converted (use
0.001[SI::second]for 1 ms) - Inner transitions (not supported by SysML)
- Unit conversion and dimensional analysis — units are normalized so that different spellings of the same unit compare equal, but values are never rescaled. A unit is carried into the generated code as a comment and takes no part in arithmetic:
1000 [SI::watt]and1 [SI::kilowatt]both generate the number as written, so a model has to stay consistent about the unit it works in (see Attributes) - The OMG standard library — name-compatible stubs for
ScalarValuesandISQare bundled so thatsubsets ISQ::lengthbinds and editors stay quiet, but they are a small subset and are not emitted into the generated code - Keywords qualifying an attribute, such as
orderedorunique, are accepted and then ignored - An enumeration typed by an attribute definition, whose entries bind a value per feature; entries with a plain value (
enum def Level {LOW = 1; HIGH = 2;}) are supported - Filter conditions on an import (
import P::**[@Approval];) are read and dropped - The select and collect expressions
xs.?{…}andxs.{…}; a message on the console says where one was left out send … to <part>is resolved only on a transition of a state machine. Inside the body of an action, writesend … via <port>, which works in both places- Inter-part communication beyond ports and connections
- Many other SysML features not shown in the examples
Language areas outside the executable subset#
Whole language areas describe intent rather than behavior and are therefore not generated —
among them use case, requirement, constraint, assert, analysis, allocation,
metadata and view / viewpoint.
These are parsed and reported, not silently dropped. A model containing them still generates everything else, and each one is named on the console so you can see what was left out:
model.sysml:3:4: W3170: 'requirement def MassLimit' is parsed and not generated.
There is no C++ mapping for this SysML construct.
W3170: 1 construct(s) were parsed and not generated.That way a model can keep its requirements beside the parts they constrain without the
generator pretending to implement them. calc is the exception in this group: it is not
accepted by the parser and stops the run with a syntax error.
See also the Modeling Guide supported-features summary and the Diagnostics reference.