Releases: Systems-Modeling/SysML-v2-Pilot-Implementation
2022-07 - SysML v2 Pilot Implementation
This is an incremental update to the 2022-06 release. It corresponds to Eclipse plugin version 0.26.0.
Language Features
The notation for a number of kinds of elements has been extended to allow them to have bodies ({
...}
).
[PR #381]
KerML
-
Relationships. The
relationship
notation has be extended to allow any kind of element to be declared as an owned related element of a relationship, not justelement
declarations and annotations. In addition, the following relationship notations have also been extended to allow similar relationship bodies.- import
- alias
- specialization (including subclassification, subsetting and redefinition)
- conjugation
- disjoining
- inverting
- featuring
-
Multiplicities. The
multiplicity
declaration notation can now have a full feature body.
SysML
-
Relationships. The import, alias and dependency notations have been extended to allow bodies, but these bodies can only contain annotations (comments, documentation, textual representation or metadata).
-
Action body elements. The following notations (used within action definitions and actions usages) can now have full usage bodies.
- Guarded successions (
first
sourceName
if
condition
then
targetName
;
) - Target successions (
then
targetName
;
andif
condition
then
targetName
;
) - Control nodes (
fork
,join
,decision
,merge
)
- Guarded successions (
-
Transition usages. Within state definition and usage bodies, transition usages can now have full action bodies.
Model Libraries
Kernel Libraries
-
Subdirectories. The Kernel Libraries directory has been reorganized into three subdirectories:
- Kernel Semantic Library – Library models that provide the base types for required implicit specializations in KerML user model constructs, plus additional semantic models for more advanced capabilities (such as state-based behavior, etc.).
- Kernel Data Type Library – Library models of standard data types that can be used in user models.
- Kernel Function Library – Library models of standard functions that can be used in user models, including functions corresponding to all the operators in the KerML expression syntax.
[PR #384]
-
Local clocks.
- Clocks. The singleton
defaultClock
feature has been renamed touniversalClock
. The defaults for theclock
parameters of theTimeOf
andDurationOf
functions have been changed fromdefaultClock
tolocalClock
(see below). - Occurrences. A
localClock
feature has been added toOccurrence
that defaults toClocks::universalClock
. ThelocalClock
of anOccurrence
is passed down as the default for each of its composite suboccurrences. - SpatialFrames. The defaults for the
clock
parameters of various functions in this package have been changed fromdefaultClock
toframe.localClock
. - Triggers. The defaults for the
clock
parameters ofTriggerAt
andTriggerWhen
have been changed fromdefaultClock
tolocalClock
.
[PR #382]
- Clocks. The singleton
Domain Libraries
-
Local clocks.
- Time. The singleton
defaultClock
part has been renamed touniversalClock
. The defaults for theclock
parameters of theTimeOf
andDurationOf
calculation definitions have been changed fromdefaultClock
tolocalClock
. - SpatialItems. The existing declaration of
localClock
forSpatialItem
has been updated to redefineOccurrences::localClock
and default toTime::universalClock
.
[PR #382]
- Time. The singleton
The above updates for local clocks allow, for example, the following:
part context {
// This defines a local clock used by default within the “context” part.
part :>> localClock = Time::Clock();
state behavior {
entry; then S1;
state S1;
transition
first S1
// The time instant in the trigger is, by default,
// relative to context::localClock.
accept at Time::Iso8601DateTime("22-05-12T00:00:00")
then S2;
state S2;
}
}
Backward Incompatibilities
The following textual notations have been removed, because they are considered to have become redundant or unnecessary as the notation has evolved.
[PR #381]
-
Logical operators. For certain Boolean operators, the expression notation currently includes both operator symbols (adapted from C/Java expression syntax) and equivalent operator keywords (introduced later). This release removes the operator symbols in favor of the keywords.
Removed Retained !
not
&&
and
||
or
^^
xor
=>
implies
... ? ... : ...
if
... ? ...
else
...
Note that the pure logical operators
&
and|
have also been retained. -
Parameter declaration. The textual syntax previously allowed for a parenthesized functional notation for declaring the parameters of a behavioral element (e.g., behaviors and steps in KerML and action definitions and usages in SysML), similarly to how parameters are declared in many programming languages. However, in KerML and SysML, parameters are simply directed features of behavioral elements which can also be declared in the body of a behavioral element. This release removes the parenthesized notation in favor of consistently using the same directed feature declaration syntax used for structural elements (e.g., ports).
Previously allowed
action def A ( x : T1, out y : T2 ); calc def B ( x : T1; ) return : T2;
Alternative using directed features
action def A { in x : T1, out y : T2 } calc def C { in x : T1; return : T2; }
Note that the direction must be provided when declaring a parameter as a directed feature (unlike the special parameter notation, in which
in
was the default), otherwise the feature will not be directed and not considered a parameter. Parenthesized functional notation is can still be used for invoking a function or calculation in an expression, e.g.,C(t1)
. -
flow from
shorthand. The textual notation previously allowed for aflow from
shorthand on a usage declaration, for a flow connection into that usage, similar to the feature value shorthand for a binding. This has been eliminated. -
Prefix comments. Previously, a comment starting with
/**
(i.e., with two stars instead of one) was parsed as a "prefix comment", which was automatically about the lexically following element in a namespace body. This notation has been eliminated in favor of using a documentation (doc
) comment nested in the body of the element being annotated. In order to allow this more generally, the textual syntax has also been extended to allow bodies on elements that where not able to have them before (see "Language Features" above).(For this release only, the previous prefix comment notation will generate a warning that the notation is no longer supported. This warning will be removed in the next release, at which point the notation will simply parse as a regular comment without any warning.)
Jupyter
None.
Visualization
- PlantUML
- Feature values whose value expression is a feature reference or a feature chain are now visualized as binding connectors on interconnection and action views.
[PR #379]
- Feature values whose value expression is a feature reference or a feature chain are now visualized as binding connectors on interconnection and action views.
- Tom Sawyer
- Fixed the visualization of connectors on structural interconnection diagrams.
Technical Updates
- Derived properties. The implementation for all derived properties has been moved from handwritten, in-line method code in metamodel
Impl
classes into separate delegate classes, using the Eclipse "setting delegate" mechanism.
[PR #380]
Bug Fixes
- State and state transition performances. Errors in the Kernel Library models for
StatePerformance
andStateTransitionPerformance
have been corrected.
[PR #383]
2022-06 - SysML v2 Pilot Implementation
This is an incremental update to the 2022-05 release. It corresponds to Eclipse plugin version 0.25.0.
Language Features
None.
Model Library
Metadata Domain Library
-
Refinement. A metadata definition for
Refinement
(short namerefinement
) has been added to the existingModelingMetadata
package. This can be applied to a dependency declaration to model a refinement relationship in which the source elements refine the target elements. No formal semantics is provided for this relationship at this time. For example:part def DesignModel; package Specification; requirement def SystemRequirements; #refinement dependency DesignModel to Specification, SystemRequirements;
[PR #377]
-
Parameters of Interest. The new
ParametersOfInterestMetadata
package contains two metadata definitions for marking attribute usages that as aMeasureOfEffectiveness
(short namemoe
) or aMeasureOfPerformance
(short namemop
).
[PR #375] -
Images. The new
ImageMetadata
package includes the following.-
Image
attribute definition, which captures the data necessary for the physical definition of a graphical image. This can be used directly withinIcon
annotations (see below), or it can be used to create library models of image usages that can be referenced fromIcon
annotations. Alternatively, the images themselves can be physically stored in separate resources from the SysML model and referenced by URI. -
Icon
metadata definition, which can be used to annotate a model element with an image to be used to show render the element on a diagram and/or a small image to be used as an adornment on a graphical or textual rendering. Alternatively, another metadata definition can be annotated with anIcon
to indicate that any model element annotated by the containing metadata can be rendered according to theIcon
.
[PR #373]
-
Requirements Derivation Domain Library
This new model library contains two packages to address the modeling of derived requirements.
-
DerivationsConnections
package.Derivation
is an abstract connection definition with no ends, but having two non-end requirement usages, one for anoriginalRequirement
and one for all correspondingderivedRequirements
. This connection definition also asserts that theoriginalRequirement
value is not one of thederivedRequirements
values and, if the check of theoriginalRequirement
is true, then the checks for all thederivedRequirements
are true.
-
RequirementDerivation
package.DerivationMetadata
(short namederivation
) is semantic metadata for declaringDerivation
connections.OriginalRequirementMetadata
andDerivedRequirementMetadata
(short namesoriginal
andderived
– note that "derived" is already a reserved word) are semantic metadata for marking usages representing original and derived requirements, particularly on the end features ofDerivation
connections.
A connection definition or usage specializing Derivation
can add one end feature for the desired original requirement, subsetting originalRequirement
, and one or more end features for the derived requirements, subsetting derivedRequirements
. This can be modeled succinctly using the metadata from the RequirementDerivation
package (which also publicly reexports the content of the DerivationsConnection
package).
For example:
requirement req1;
requirement req1_1;
requirement req1_2;
#derivation connection {
end #original :> req1;
end #derive :> req1_1;
end #derive :> req1_2;
}
[PR #378]
Cause and Effect Domain Library
This new model library contains two packages to address cause-and-effect modeling.
-
CausationConnections
package.Multicausation
is an abstract connection definition with no ends, but having two non-end features that collect cause occurrences and effect occurrences. This connection definition also asserts constraints that the the intersection of causes and effects is empty and that all causes exist (i.e, have at least started) before all effects.Causation
as a binary connection definition that specializesMulticausation
for the simple case of a binary relationship between one cause and one effect.
-
CauseAndEffect
package.CausationMetadata
is a metadata definition that can be used to annotate whether a causationisNecessary
and/orisSufficient
, and what itsprobability
is.MulticausationSemanticMetadata
andCausationSemanticMetadata
(short namesmulticausation
andcausation
) are semantic metadata for declaring (respectively)Multicausation
andCausation
connection definitions and usages.CauseMetadata
andEffectMetadata
(short namescause
andeffect
) are semantic metadata for marking usages as representing causes or effects in causations (particularly on the end features of multicausation connections).
A connection usage typed by Multicausation
can add end features to relate the desired causes and effects. Each such end feature should subset one of the desired causes or effects and subset either the causes
(for a cause) or effects
(for an effect) feature of Mulitcausation
. A binary causation can be modeled by a connection usage typed by Causation
, in which case the first related element is the cause and the second one is the effect.
This modeling approach is simplified by use of the semantic metadata from the CauseAndEffect
package (which also publicly reexports the content of the CausationConnections
package).
// Causes and effects can be any kinds of occurrences.
occurrence a;
item b;
part c;
action d;
// The #multicausation keyword identifies this as a Multicausation connection.
// The ends tagged #cause are the causes, and the ends tagged #effect are the effects.
#multicausation connection {
end #cause :> a;
end #cause :> b;
end #effect :> c;
end #effect :> d;
}
Instead of tagging the ends of the connection, the connected usages can instead be identified as causes and effects, allowing for a more compact connector syntax. Note that each such usage can be a cause or an effect, but not both.
#cause causeA :> a;
#cause causeB :> b;
#effect effectC :> c;
#effect effectD :> d;
#multicausation connect ( causeA, causeB, effectC, effectD );
For a binary causation, it is not necessary to use the #cause
and #effect
keywords, because the first related element is always the cause and the second related element is always the effect.
#causation connect a to c;
CausationMetadata
includes isNecessary
, isSufficient
and probability
attributes that can be used with causation and multicausation connections. (No further formal semantic model has been provided for these attributes at this time.)
#causation connect b to d {
@CausationMetadata {
isNecessary = true;
probability = 0.1;
}
}
[PR #376]
Backward Incompatibilities
None.
Jupyter
None.
Visualization
- PlantUML
None. - Tom Sawyer
None.
Technical Updates
None.
Bug Fixes
2022-05 - SysML v2 Pilot Implementation
This is an incremental update to the 2022-04 release. It corresponds to Eclipse plugin version 0.24.0.
Language Features
-
Feature inverses (KerML only). A new feature inverting relationship has been added. The basic notation for this relationship is
inverting
name
inverse
featureInverted
of
invertingFeature
;
The
inverting
name
part may be omitted.A feature inverting that is owned by its
featureInverted
may be specified in the declaration of that Feature:feature
featureInverted
inverse of
invertingFeature
;
The
inverse of
invertingFeature
part must come after any specialization or conjugation part in the Feature declaration. However, it is now allowable to specify the chaining, disjoining, inverting and featuring parts of a Feature declaration in any order.Two features related by a feature inverting relationship are asserted to be inverses of each other. The features can be arbitrarily nested. So, for example, given
classifier A { feature b1 :B { feature c1 : C; } }
and
classifier C { feature b2 : B { feature a2 : A inverse of A::b1::c1; } }
then it must always be the case that, for any
a1 : A
,a1.b1.c1.b2.a2 == a1
.
[PR #361] [PR #366]
Model Library
Kernel Library
-
Base. A new
that
feature has been added as a nested feature ofthings
, the base for all features. It is constrained inAnything
(the base type of everything) such that thethat
reference for all values reached by navigating through any nested feature of anything is the nesting thing.For example, given
classifier Example { feature f; } feature x : Example[1];
the value of
x.f.that
isx
.
[PR #365] -
Occurrences. Space modeling additions:
- inner and outer space boundaries. In
Occurrence
,inner
andouter
occurrence references have been added, nested underspaceBoundary
. These are space slices that also have nospaceBoundary,
where theouter
one surrounds theinner
ones (seeSurroundedBy
below). - OutsideOf associations. The following new associations from Occurrence to itself (indirectly) specialize the existing association
OutsideOf
:JustOutsideOf
, linking occurrences that have space slices with no space between them (MatesWith
).MatesWith
, specializingJustOutsideOf
, linking occurrences that have no space between them.InnerSpaceOf
, linking an occurrence to another that completely occupies the space surrounded by aninner
space boundary of the first occurrence. AddedOccurrence::innerSpaceOccurrences
as the cross-navigation feature for this.SurroundedBy
, linking an occurrence that is included in space by aninnerSpaceOccurrence
of the other. Types additional connectors inOccurrence
that ensurespaceBoundary
surroundsspaceInterior
andspaceInterior
surroundsinner
space boundaries.
[PR #360]
- inner and outer space boundaries. In
-
Performances. A new
this
feature provides a context for performances similar to the "this" pointer in object-oriented programming languages such as C++, Java and JavaScript. For all occurrences that are not performances (such as items and parts in SysML),this
defaults toself
. For performances that are owned via composite features of an object (including owned actions of a part),this
is the owning object. For performances that are owned via composite features of a performance (such as subactions in SysML),this
defaults to the same value as for the owning performance.So, for example, an action declared at "package level" will be the
this
reference for all subactions in the composition tree it roots:package Example1 { action def A { action b { action c; } } action a : A; // a.b.c.this == a }
On the other hand, an action declared within a part definition will have an instance of that part definition as the
this
reference for itself and all subactions within it:package Example2 { part def C { action a { action b; } } part c : C; // c.a.b.this == c }
[PR #365]
Systems Library
-
Items. Space modeling additions:
- Generalized
Item::envelopingShapes
to cover curves and surfaces enveloping two dimensional shapes. - Added
Item::boundingShapes
specializingenvelopingShapes
asStructuredSpaceObjects
in which every face/edge intersects the item. - Added
Item::voids
as the SysML name forinnerSpaceOccurrences
. DefinedisSolid
as having novoids
.
[PR #360]
- Generalized
-
Actions.
AcceptAction
has areceiver
parameter that references the occurrence via which anincomingTransfer
may be accepted. The declaration forAcceptAction
has been updated so that the defaultreceiver
isthis
(see description above). In the concrete syntax for accept actions, thereceiver
is specified using avia
clause. The default is used if novia
clause is given. For example, inpart def Device { state Device_Behavior { state off; transition first off accept On_Signal then on; state on; } }
the default receiver for
accept On_Signal
is the instance ofDevice
owning theDevice_Behavior
performance. (Note that this is similar to the concept of the "context object" for event pooling in UML/SysML v1.)Note. Performed actions and exhibited states are always referential, not composite. Therefore, the subactions of a performed action or exhibited state do not have the performing or exhbiiting part as their
this
reference. Instead,this
is determined by the composite structure that actually contains the action or state being performed/exhibited.
[PR #365]
Backward Incompatibilities
- Reserved words (KerML). Added:
inverting
inverse
this
andthat
. The new featurethis
is inherited by all kinds of occurrences (e.g. SysML items, parts, actions, etc.). The featurethat
is inherited by all nested features (SysML usages). Therefore, the namesthis
orthat
for features in user models.
[PR #365]- MeasurementReferences. The Quantities and Units Domain LIbrary package
UnitsAndScales
has been renamed toMeasurementReferences
, which better reflects what it contains (units and scales are kinds of measurement references). References to the package in all other library and example models in the repository have been updated to the new name.
[PR #369] - Subsetting validation. The validation of the owner of a subsetted feature has been tightened. This may cause some new warnings in existing models. This can usually be corrected using the dot notation.
[PR #368]
Jupyter
None.
Visualization
- PlantUML
- Improved the rendering of features whose types are vector quantities.
[PR #362 ]
- Improved the rendering of features whose types are vector quantities.
- Tom Sawyer
None.
Technical Updates
- Security advisories. Removed
yarn.lock
and prevented it from being recommitted for the JupyterLab extension. This eliminates security advisory notifications related to declared version dependencies.
[PR #363]
Bug Fixes
2022-04 - SysML v2 Pilot Implementation
This is an incremental update to the 2022-03.1 release. It corresponds to Eclipse plugin version 0.23.0.
Language Features
- Short names. What was previously called the "human ID" of an element is now known as its short name. However, the surface notation remains the same, e.g.,
part
<shortName> longDescriptiveName;
. Aliases can now also have short names, e.g.,alias
<shortAlias> longDescriptiveAlias
for
longDescriptiveName;
. The name resolution rules for short names are identical to those for regular names.
[PR #359] - Owning membership. The owned members of a namespace are now related to the namespace using a specialized membership relationship called an owning membership. Previously, the name of an element was derived as the member name given in the membership that owned it. Now, the element name is no longer derived and, instead, the owned member name of an owning membership is derived as the name of its owned member element. This has no effect on the surface notation, but may effect how a model is traversed, e.g., by a tool using the API.
[PR #359] - Invocation arguments. The argument expressions in an invocation expression are now parsed as feature values on the argument parameters, similarly to how parameter values would naturally be bound in a KerML
expr
or SysMLcalc
usage. For example,F(x=1, y=2)
now parses essentially equivalently to[PR #359]expr : F { in feature redefines x = 1; in feature redefines y = 2; }
Model Library
Kernel Library
- Control functions. The
expr
features on various Functions in theControlFunctions
package have now all been marked asin
parameters, which work consistently with the new parsing for invocation expressions, as described above. Previously, these features were not parameters and were handled as special cases for the invocations of these Functions.
[PR #357]
Quantities and Units Domain Library
- UnitsAndScales.
CoordinateFrame
has been added as a specialization ofVectorMeasurementReference
along with three concrete specializations ofCoordinateTransformation
, namelyCoordinateFramePlacement
,TranslationRotationSequence
andAffineTransformationMatrix3D
. Minor updates have been made to other models in theUnitsAndScales
package consistent with this.
[PR #354]
Geometry Domain Library
-
ShapeItems. The
ShapeItems
library model has been revised and significantly expanded.
[PR #357] -
SpatialItems.
SpacialItem
has been updated to use the newCoordinateFrame
type.
[PR #354]
Backward Incompatibilities
- Reserved words (KerML). Added:
chains
Removed:is
- Features (KerML only).
- The
feature
x
is
y;
notation for un-owned features is no longer supported. - The
feature
x
is
a.b.c;
notation for named feature chains has been replaced with thechains
clause in a feature declaration, e.g.,feature
x
chains
a.b.c;
. This clause may be used in conjunction with all other parts of a regular feature declaration. It comes after any specialization part and before any disjoining or type featuring part, e.g.,feature
x : T
subsets
y
chains
a.b.c
disjoint with
z;
- The
- Invocations. As part of the update to the parsing of invocation expressions, there are some additional validations that existing models could now potentially fail.
- If an invocation expression uses named argument notation, then each of the arguments must all name input parameters of the invoked function, and any parameter must be referenced at most once.
- If a body expression (i.e., one with the form
{...}
) is used as the argument of an invocation expression, then the corresponding parameter of the invoked function must have anEvaluation
type (which is the case, e.g., if the parameter is a KerMLexpr
or SysMLcalc
).
[PR #359]
- Coordinate frames.
- A general
VectorMeasurementReference
no longer has aplacement
. Instead, use aCoordinateFrame
whosetransformation
is aCoordinateFramePlacement
. - Various specializations of
VectorMeasurementReference
in the ISQ library models that previously had names of the form...CoordinateSystem
now have names of the form...CoordinateFrame
(e.g.,ISQBase::Cartesian3dSpatialCoordinateSystem
is now calledISQBase::Cartesian3dSpatialCoordinateFrame
).
[PR #354]
- A general
- Shapes. In a small number of cases, changes to the
ShapeItems
library model may not be compatible with uses of the previous version of this model. Corrections should be obvious from reviewing the latestShapeItems
model.
[PR #357]
Jupyter
None.
Visualization
- PlantUML
- Minor improvements as part of baseline update.
[PR #359]
- Minor improvements as part of baseline update.
- Tom Sawyer
- Fixed visualization of connectors on behavioral connector diagrams.
Technical Updates
None.
Bug Fixes
- Model libraries. Fixed the
SystemUtil.isModelLibrary
method so that it works correctly on Windows.
[PR #358]
2022-03.1 - SysML v2 Pilot Implementation
This release is the same as the 2022-03 release, except that it adds highlighting for user-defined keywords in Jupyter. It corresponds to Eclipse plugin version 0.22.1.
The release notes for 2022-03 are repeated below for convenience
Language Features
-
Metadata annotation.
- Definition. Previously, metadata was defined simply as a
datatype
in KerML or anattribute def
in SysML. Now it is defined using ametaclass
in KerML (which is a kind ofstruct
) or ametadata def
in SysML (which is a kind ofitem def
). - Usage. Most syntactic restrictions on a feature declared in the body of a
metadata
declaration have been removed. In particular, it is now possible for a feature defined in the body of ametadata
declaration to itself have nested subfeatures. However, some additional validation checks have also been implemented for such features (see details under "Backwards Incompatibilities" below). - Annotated elements. A metadata definition or usage now, by default, inherits an
annotatedElement
feature from the Kernel base metaclassMetaobject
. If this feature is (concretely) subsetted or redefined in a metadata definition or usage to have a more restrictive metaclass (using the reflectiveKerML
orSysML
models) than the default ofKerML::Element
, then the metadata can only annotate elements consistent with that metaclass. For example, if a metadata definition includes the redefinition:>> annotatedElement : SysML::PartUsage;
, then any usage of that definition can only annotate part usages.
[PR #347]
- Definition. Previously, metadata was defined simply as a
-
Semantic metadata. The new Kernel Library package
Metaobjects
defines the metaclassSemanticMetadata
(see below). Any metaclass or metadata definition that specializesSemanticMetadata
should bind the inheritedbaseType
feature to a reference to a feature or usage from a user library model (see "Casting" below on how to do this). When such a specialization ofSemanticMetadata
is used to annotate an appropriate type declaration, the specifiedbaseType
is used as the implicit base specialization of the annotated type.- If the annotated type is a Feature/Usage, then the annotated feature implicitly subsets the
baseType
. - If the annotated type is a Classifier/Definition, then the annotated classifier implicitly subclassifies each type of the
baseType
.
Note. It is currently only possible to specify a feature or usage as a
baseType
. This will be expanded to also allow classifiers in the future.
[PR #349] - If the annotated type is a Feature/Usage, then the annotated feature implicitly subsets the
-
Casting. The cast operator
as
has been implemented for model-level evaluable expressions. In addition, if the target type of the case is a metaclass, and the argument expression evaluates to a feature whose abstract syntax metaclass conforms to the given metaclass, then the result is a "meta-upcast" to the metaobject representation of the feature. E.g., ifvehicle
is a part usage, thenvehicle
as
KerML::Feature
evaluates, as a model-level evaluable expression, to a MetadataFeature forvehicle
with typeSysML::PartUsage
. This can be used, for example, to bindbaseType = vehicle
as
KerML::Feature;
forSemanticMetadata
.
[PR #349] -
Keywords (SysML only). A user-defined keyword is a (possibly qualified) metaclass/metadata definition name or human ID preceded by the symbol
#
. Such a keyword can be used in the SysML textual notation in package, dependency, definition and usage declarations.- The user-defined keyword is placed immediately before the language-defined (reserved) keyword for the declaration and specifies a metadata annotation of the declared element. For example, if
SafetyCritical
is a visible metadata definition, then#SafetyCritical
part
brakes;
is equivalent topart
brakes { @SafetyCritical; }
. It is not possible to specify nested features for a metadata feature annotation in the keyword notation. - If the given metaclass or metadata definition is a kind of
SemanticMetadata
, then the implicit specialization rules given above for "Semantic metadata" apply. In addition, a user-defined keyword for semantic metadata may also be used to declare a definition or usage without using any language-defined keyword. For example, ifprovider
is the human ID of a specialization ofSemanticMetadata
whosebaseType
is the featureserviceProviders : ServiceProvider
, then#provider
def
BankingService;
is a definition with an implicit subclassification ofServiceProvider
and#provider bankingService;
is a usage with an implicit subsetting ofserviceProviders
.
[PR #349]
- The user-defined keyword is placed immediately before the language-defined (reserved) keyword for the declaration and specifies a metadata annotation of the declared element. For example, if
Model Library
Kernel Library
-
Metaobjects. This is a new package with the following members.
- Metaclass
Metaobject
(subclassifiesObjects::Object
) is the implicit base type of all metaclasses. - Metaclass
SemanticMetadata
(subclassifiesMetaobject
) is used to extend the language implicit specialization mechanism for use with user-defined semantic libararies (see "Semantic metadata" above). - Feature
metaobjects
is the implicit base type of all metadata features. (This is not itself a metadata features, because a metadata feature is an annotating element, whilemetaobjects
is not.)
[PR #347]
- Metaclass
-
KerML. All
struct
declarations in theKerML
package have been changed tometaclass
(withElement
implicitly subclassifyingMetaobject
). (Note that the reflectiveKerML
abstract syntax model still does not include any features on these metaclasses.)
[PR #347]
Systems Library
-
Metadata. This is new package with the following members.
- Metadata definition
MetadataItem
(subclassifiesItems::Item
andMetaobjects::Metaobject
) is the implicit base type of all metadata definitions. - Item usage
metadataItems
is the implicit base type of all metadata usages. (This is not itself a metadata usage, because a metadata usages is an annotating element, whilemetadataItems
is not.)
[PR #347]
- Metadata definition
-
SysML. All
item def
declarations in theSysML
package have been changed tometadata def
. (Note that the reflectiveSysML
abstract syntax model still does not include any features on these metadata definitions.)
[PR #347]
Analysis and Metadata Domain Libraries
- Metadata definitions. Those attribute definitions in packages
AnalysisTooling
,ModelingMetadata
andRiskMetadata
that were intended to be used to define metadata have been changed to metadata definitions.
[PR #347]
Backward Incompatibilities
-
Keywords. KerML: added
metaclass
. SysML: removedfeature
. -
Annotations. An annotation relationship is no longer added to an annotating element that is an owned member of a namespace and does not explicitly specify any annotated elements (i.e., no
about
part). Instead, its owning namespace is simply considered to be the annotated element by default, without the need for an annotation relationship. (There is no change to the concrete syntax notation.)
[PR #347] -
Documentation. Documentation is now a special kind of comment that always has its owning element as its single annotated element, rather than a special kind of annotation association to a regular comment element. (There is no change to the
doc
notation, just a different mapping to the abstract syntax.)
[PR #347] -
Prefix Comments. The
comment
keyword is now used for a prefix comment (/**
...*/
), e.g., to give it a name, rather than thedoc
keyword. Previously, prefix comments were supposed comments owned by the following element using a documentation relationship, but it was difficult to implement them that way. They are now ordinary (non-documentation) comments that are just always about the lexically following element.
[PR #347] -
Metadata.
- The following validation checks are now performed on the declaration of a metadata feature or usage:
- It must be defined by a concrete metaclass (in KerML) or metadata definition (in SysML).
- Each of its nested features/usages (if any) must pass the following validation checks:
- It must redefine a feature (owned or inherited) of a generalization of its owning feature.
- If it has a feature value, the value expression must be model-level-evaluable.
- Each of its nested features (if any) must also pass these validation checks.
- Usages declared in the body of a metadata usage are now parsed as reference usages. The optional keyword for their declaration is therefore now
ref
instead offeature
.
[PR #347]
- The following validation checks are now performed on the declaration of a metadata feature or usage:
-
Classifier base type. A validation check has been added that a classifier or definition directly or indirectly specializes the correct library base type. This will typically only be violated for vacuous circular specializations or invalid circular conjugations.
[PR #351]
Jupyter
- Highlighting. User-defined keywords starting with
#
are highlighted like reserved words.
Visualization
-
PlantUML
- Improve rendering of connections.
- Support visualization of
- inherited feature ends or expressions.
- nested features in metadata annotations
- ports with directed features
[PR #348]
-
Tom Sawyer
None.
Technical Updates
- Vulnerability. Updated
yarn.lock
to address security alerts.
[PR #346]
Bug Fixes
2022-03 - SysML v2 Pilot Implementation
This is an incremental update to the 2022-02 release. It corresponds to Eclipse plugin version 0.22.0.
Language Features
-
Metadata annotation.
- Definition. Previously, metadata was defined simply as a
datatype
in KerML or anattribute def
in SysML. Now it is defined using ametaclass
in KerML (which is a kind ofstruct
) or ametadata def
in SysML (which is a kind ofitem def
). - Usage. Most syntactic restrictions on a feature declared in the body of a
metadata
declaration have been removed. In particular, it is now possible for a feature defined in the body of ametadata
declaration to itself have nested subfeatures. However, some additional validation checks have also been implemented for such features (see details under "Backwards Incompatibilities" below). - Annotated elements. A metadata definition or usage now, by default, inherits an
annotatedElement
feature from the Kernel base metaclassMetaobject
. If this feature is (concretely) subsetted or redefined in a metadata definition or usage to have a more restrictive metaclass (using the reflectiveKerML
orSysML
models) than the default ofKerML::Element
, then the metadata can only annotate elements consistent with that metaclass. For example, if a metadata definition includes the redefinition:>> annotatedElement : SysML::PartUsage;
, then any usage of that definition can only annotate part usages.
[PR #347]
- Definition. Previously, metadata was defined simply as a
-
Semantic metadata. The new Kernel Library package
Metaobjects
defines the metaclassSemanticMetadata
(see below). Any metaclass or metadata definition that specializesSemanticMetadata
should bind the inheritedbaseType
feature to a reference to a feature or usage from a user library model (see "Casting" below on how to do this). When such a specialization ofSemanticMetadata
is used to annotate an appropriate type declaration, the specifiedbaseType
is used as the implicit base specialization of the annotated type.- If the annotated type is a Feature/Usage, then the annotated feature implicitly subsets the
baseType
. - If the annotated type is a Classifier/Definition, then the annotated classifier implicitly subclassifies each type of the
baseType
.
Note. It is currently only possible to specify a feature or usage as a
baseType
. This will be expanded to also allow classifiers in the future.
[PR #349] - If the annotated type is a Feature/Usage, then the annotated feature implicitly subsets the
-
Casting. The cast operator
as
has been implemented for model-level evaluable expressions. In addition, if the target type of the case is a metaclass, and the argument expression evaluates to a feature whose abstract syntax metaclass conforms to the given metaclass, then the result is a "meta-upcast" to the metaobject representation of the feature. E.g., ifvehicle
is a part usage, thenvehicle
as
KerML::Feature
evaluates, as a model-level evaluable expression, to a MetadataFeature forvehicle
with typeSysML::PartUsage
. This can be used, for example, to bindbaseType = vehicle
as
KerML::Feature;
forSemanticMetadata
.
[PR #349] -
Keywords (SysML only). A user-defined keyword is a (possibly qualified) metaclass/metadata definition name or human ID preceded by the symbol
#
. Such a keyword can be used in the SysML textual notation in package, dependency, definition and usage declarations.- The user-defined keyword is placed immediately before the language-defined (reserved) keyword for the declaration and specifies a metadata annotation of the declared element. For example, if
SafetyCritical
is a visible metadata definition, then#SafetyCritical
part
brakes;
is equivalent topart
brakes { @SafetyCritical; }
. It is not possible to specify nested features for a metadata feature annotation in the keyword notation. - If the given metaclass or metadata definition is a kind of
SemanticMetadata
, then the implicit specialization rules given above for "Semantic metadata" apply. In addition, a user-defined keyword for semantic metadata may also be used to declare a definition or usage without using any language-defined keyword. For example, ifprovider
is the human ID of a specialization ofSemanticMetadata
whosebaseType
is the featureserviceProviders : ServiceProvider
, then#provider
def
BankingService;
is a definition with an implicit subclassification ofServiceProvider
and#provider bankingService;
is a usage with an implicit subsetting ofserviceProviders
.
[PR #349]
- The user-defined keyword is placed immediately before the language-defined (reserved) keyword for the declaration and specifies a metadata annotation of the declared element. For example, if
Model Library
Kernel Library
-
Metaobjects. This is a new package with the following members.
- Metaclass
Metaobject
(subclassifiesObjects::Object
) is the implicit base type of all metaclasses. - Metaclass
SemanticMetadata
(subclassifiesMetaobject
) is used to extend the language implicit specialization mechanism for use with user-defined semantic libararies (see "Semantic metadata" above). - Feature
metaobjects
is the implicit base type of all metadata features. (This is not itself a metadata features, because a metadata feature is an annotating element, whilemetaobjects
is not.)
[PR #347]
- Metaclass
-
KerML. All
struct
declarations in theKerML
package have been changed tometaclass
(withElement
implicitly subclassifyingMetaobject
). (Note that the reflectiveKerML
abstract syntax model still does not include any features on these metaclasses.)
[PR #347]
Systems Library
-
Metadata. This is new package with the following members.
- Metadata definition
MetadataItem
(subclassifiesItems::Item
andMetaobjects::Metaobject
) is the implicit base type of all metadata definitions. - Item usage
metadataItems
is the implicit base type of all metadata usages. (This is not itself a metadata usage, because a metadata usages is an annotating element, whilemetadataItems
is not.)
[PR #347]
- Metadata definition
-
SysML. All
item def
declarations in theSysML
package have been changed tometadata def
. (Note that the reflectiveSysML
abstract syntax model still does not include any features on these metadata definitions.)
[PR #347]
Analysis and Metadata Domain Libraries
- Metadata definitions. Those attribute definitions in packages
AnalysisTooling
,ModelingMetadata
andRiskMetadata
that were intended to be used to define metadata have been changed to metadata definitions.
[PR #347]
Backward Incompatibilities
-
Keywords. KerML: added
metaclass
. SysML: removedfeature
. -
Annotations. An annotation relationship is no longer added to an annotating element that is an owned member of a namespace and does not explicitly specify any annotated elements (i.e., no
about
part). Instead, its owning namespace is simply considered to be the annotated element by default, without the need for an annotation relationship. (There is no change to the concrete syntax notation.)
[PR #347] -
Documentation. Documentation is now a special kind of comment that always has its owning element as its single annotated element, rather than a special kind of annotation association to a regular comment element. (There is no change to the
doc
notation, just a different mapping to the abstract syntax.)
[PR #347] -
Prefix Comments. The
comment
keyword is now used for a prefix comment (/**
...*/
), e.g., to give it a name, rather than thedoc
keyword. Previously, prefix comments were supposed comments owned by the following element using a documentation relationship, but it was difficult to implement them that way. They are now ordinary (non-documentation) comments that are just always about the lexically following element.
[PR #347] -
Metadata.
- The following validation checks are now performed on the declaration of a metadata feature or usage:
- It must be defined by a concrete metaclass (in KerML) or metadata definition (in SysML).
- Each of its nested features/usages (if any) must pass the following validation checks:
- It must redefine a feature (owned or inherited) of a generalization of its owning feature.
- If it has a feature value, the value expression must be model-level-evaluable.
- Each of its nested features (if any) must also pass these validation checks.
- Usages declared in the body of a metadata usage are now parsed as reference usages. The optional keyword for their declaration is therefore now
ref
instead offeature
.
[PR #347]
- The following validation checks are now performed on the declaration of a metadata feature or usage:
-
Classifier base type. A validation check has been added that a classifier or definition directly or indirectly specializes the correct library base type. This will typically only be violated for vacuous circular specializations or invalid circular conjugations.
[PR #351]
Jupyter
None.
Visualization
-
PlantUML
- Improve rendering of connections.
- Support visualization of
- inherited feature ends or expressions.
- nested features in metadata annotations
- ports with directed features
[PR #348]
-
Tom Sawyer
None.
Technical Updates
- Vulnerability. Updated
yarn.lock
to address security alerts.
[PR #346]
Bug Fixes
- Multiplicity subsetting. Fixed the KerML grammar for
MultiplicitySubset
.
[PR #350] - Circular conjugation. Fixed stack overflow caused by a circular conjugation declaration.
[PR #351] - Non-ASCII characters. Revised the loading of libraries for Jupyter so that UTF-8 is always used as the character encoding (regardless of the platform default).
[PR #352] - Space modeling. Corrected errors related to space modeling in the Kernel Library
Occurrences
andObjects
models, in the Geometry Domain Library `...
2022-02 - SysML v2 Pilot Implementation
This is an incremental update to the 2022-01 release. It corresponds to Eclipse plugin version 0.21.0.
Language Features
- Feature chain expressions. Expressions of the form
expr.x.y.z
that were previously parsed as path step expressions are now parsed in a slightly simpler and more semantically correct way as feature chain expressions.
Model Library
Kernel Library
- Occurrences
- Added modeling for spatial aspects of
Occurrence
and for constructive relations on occurrences of union, intersection and difference. - Added associations to represent spatial relationships
SpaceSliceOf
,SpaceShotOf
andOutsideOf
, and the spacetime relationshipWithOut
.
- Added modeling for spatial aspects of
- Objects
- Added specializations of
Object
forBody
,Surface
,Curve
andPoint
, of inner space dimension 3, 2, 1 and 0, respectively. - Added
StructuredSpaceObject
to represent anObject
that is broken up into cells of the same or lower inner space dimension (faces, edges and vertices).
- Added specializations of
- SpatialFrame (new). Models spatial frames of reference for quantifying the position vector of a point in a three-dimensional space.
- VectorValues (new). Provides a basic model of abstract vectors as well as concrete vectors whose components are numerical values.
- VectorFunctions (new). Defines abstract functions on
VectorValue
corresponding to the algebraic operations provided by a vector space with inner product. It also includes concrete implementations of these functions specifically forCartesianVectorValue
. - TrigFunctions (new). Defines basic trigonometric functions on real numbers and provides a constant feature for
pi
.
Systems Library
- Items. Added the following features:
shape
- The shape of an item is its spatial boundary.envelopingShapes
- Other shapes that spatially envelop an item.isSolid
- An Item is solid if it is three-dimensional and has a non-empty shape (boundary).
Quantities and Units Domain Library
- Quantities.
VectorQuantityValue
is now a kind ofNumericalVectorValue
(fromVectorValues
). - VectorCalculations. Revised to provide calculation definitions for
VectorQuantityValue
that specialize the corresponding functions fromVectorFunctions
.
Geometry Domain Library
- SpatialItems (new). Models physical items that have a spatial extent and act as a spatial frame of reference for obtaining position and displacement vectors of points within them.
- ShapeItems (new). Provides a model of items that represent basic geometric shapes.
Backward Incompatibilities
- Select and collect expressions. The new shorthand notation for
expr
->select{
...}
isexpr
.?{
...}
. The shorthand notation previously used for select,expr
.{
...}
, is now a shorthand forexpr
->collect{
...}
. - Suboccurrences. The feature
suboccurrences
ofOccurrence
has been renamed tospaceEnclosedOccurrences
. - Sum and product functions. The
sum
andproduct
functions have been moved intoNumericalFunctions
and removed fromDataFunctions
andScalarFunctions
. - Mathemetical function names. Non-operator mathematical functions from the various Kernel mathematical function packages have been updated to have a more consistent convention of names starting with a lower case letter.
- BasicGeometry. The
BasicGeometry
model previously in the Geometry Domain Library has been deleted.
Jupyter
None.
Visualization
- PlantUML
None. - Tom Sawyer
None.
Technical Updates
None.
Bug Fixes
Implementation
- Assumed and required constraints. Fixed the implmentation of
getAssumedConstraintImpl
andgetRequiredConstraintImpl
inRequirementUsageImpl
. - Owned connections. Fixed the implementation of
getOwnedConnection
inDefinitionImpl
. - Validation. Corrected the multiplicity lower bound validation for end features.
Library
- Portions. Constrained the portions of an occurrence to have the same life as the occurrences they are portions of.
- PortionOf. Corrected the order of the end features of the
Occurrences::PortionOf
association. - SnapshotOf. Corrected the multiplicity of
SnapshotOf::snapshottedOccurrence
. - VectorQuantityValue. Updated
Collections::Array
to allow dimensionless arrays of a single value. This then allows aVectorQuantityValue
to be dimensionless (order 0), correcting the former inconsistency ofScalarQuantityValue
(with order 0) being a specialization ofVectorQuantityValue
(previously required to have order 1).
2022-01 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-12 release. It corresponds to Eclipse plugin version 0.20.0.
Language Features
KerML
- Return parameters. It is now possible to mark a parameter declared in a function body as the
return
parameter in the KerML textual notation (as was already possible in SysML).
SysML
-
Accept actions. The notation for accept actions (used either within an action model or in a transition) has been updated to allow the payload parameter to be declared with a feature value or incoming flow. In this case, an accepted transfer must have a payload identical to the bound or flowed value.
accept
payloadName
:
PayloadType
=
valueExpression
;
accept
payloadName
:
PayloadType
flow from
source
;
Note. The syntactic form
accept
PayloadType
;
, without a colon in the payload declaration, is still allowed and still represents a declaration of the payload type, not its name. A binding or flow cannot be included in a declaration of this form. -
Change triggers. A change trigger of the form
when
changeCondition
can now be used in place of a feature value in a payload declaration. ThechangeCondition
must be a Boolean-valued expression, and the trigger fires when the expression result changes from false to true (or if the result is true when first evaluated).accept
payloadName
:
PayloadType
when
changeCondition
;
Note. The explicit declaration of the payload parameter is optional, allowing the simple form
accept when
changeCondition
;
. The formaccept
payloadName
when
changeCondition
;
is also allowed, but this represents a declaration of the payload name, not its type. -
Time triggers. A time trigger of the form
at
timeExpression
orafter
durationExpression
can now be used in place of a feature value in a payload declaration. ThetimeExpression
must result in aTimeInstantValue
, and the trigger fires at that time (relative to the default clock). ThedurationExpression
must result in aDurationValue
, and the trigger fires after the elapse of that duration (on the default clock).accept
payloadName
:
PayloadType
at
timeExpression
;
accept
payloadName
:
PayloadType
after
durationExpression
;
Note. Simplified payload declarations are allowable for time triggers, similarly to change triggers.
Model Library
- FeatureReferencePerformances. The Kernel Library package
FeatureAccessPerformances
has been renamed toFeatureReferencingPerformances
, and the following behaviors have been added to it:FeatureMonitorPerformance
EvaluationResultMonitorPerformance
BooleanEvaluationResultMonitorPerformance
BooleanEvaluationResultToMonitorPerformance
- Clocks and Triggers. The following packages have been added to the Kernel Library:
Observation
– models monitoring for change and notifying registered observers.Clocks
– models clocks that provide a current time reference, with functions for getting the time and duration of an Occurrence relative to a clock.Triggers
– provides convenience functions for creating monitored change signals for change triggers, absolute time triggers and relative time triggers.
- Time. A specialization of the Kernel
Clock
model has been added to the Quantities and Units LibraryTime
package, using time instant and duration quantity values. - SI.
ScalarQuantityValue
in the Quantities and Units LibraryQuantities
package is now a specialization ofNumericalValue
instead ofScalarValue
.
Backward Incompatibilities
- Keywords.
- KerML: Added: return
- SysML: Added: when at after
- FeatureReferencePerformances. The Kernel Library package
FeatureAccessPerformances
has been renamed toFeatureReferencingPerformances
. - SI. The Quantities and Units Library package
SI
no longer importsQuantityCalculations
. These means that theSI
package no longer re-exports the the calculation definitions fromQuantityCalculations
or various other members re-exported fromQuantityCalculations
(such as fromScalarValues
andQuantities
). - Time. The order of the public owned features of the
Iso8601DateTime
andIso8601DateTimeStructure
calculation definitions in the Quantities and Units Library has been changed so the non-redefining parameters come first (allowing a more natural use of positional argument notation when invoking these calculations). - USCustomaryUnits. Units other than actual US customary units have been removed from this package.
Jupyter
None.
Visualization
- PlantUML
- Imports (both element and package, recursive or not) are now rendered using the dashed arrow notation. A new option, SHOWIMPORTED, has been added which shows imported elements as well as the traversed elements.
- Imports (both element and package, recursive or not) are now rendered using the dashed arrow notation. A new option, SHOWIMPORTED, has been added which shows imported elements as well as the traversed elements.
- Tom Sawyer
None.
Technical Updates
None.
Bug Fixes
- KerML relationship notation. Fixed the KerML grammar so that
- A Relationship that is an owned related element of another relationship can have unowned related Eeements.
- A Relationship can have only owned related elements.
- All owned related elements of a relationship are added to its targets.
2021-12 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-11 release. It corresponds to Eclipse plugin version 0.19.0.
Language Features
- If actions. An if action evaluates a Boolean-valued condition. If the result is true, it performs a nested then action, otherwise it performs a nested else action.
- An if action has the form
action
ifName
if
condition
action
thenActionName
{
...}
else action
elseActionName
{
...}
- The
action
declaration part may be omitted for the entire if action, the then action and/or the else action:
if
condition
{
...}
else
{
...}
The curly braces are required, even if the body of the then action or else action is empty, unless the else action is itself an if action, in which case a simplified notation can be used:
if
condition
{
...}
else if
{
...}
else
{
...}
This is equivalent to
if
condition
{
...}
else
{
if
{
...}
else
{
...} }
- The else action is optional. If it is omitted, then no action is performed if the
condition
is false.
- An if action has the form
- While-loop actions. A while-loop action repeatedly performs a nested body action as long as a Boolean-valued while condition is true and an until condition is false. The while condition is evaluated before each iteration, and the until condition is evaluated after the iteration.
- A while loop action has the form
action
whileLoopName
while
whileCondition
action
bodyName
{
...}
until
untilCondition
;
- The
action
declaration part may be omitted for the entire while-loop action and/or the body action:
while
whileCondition
{
...}
until
untilCondition
;
The curly braces are required, even if the body is empty. - The until condition is optional. If it is omitted, then the default is
until
false
(that is, no effect).
while
whileCondition
{
...}
- The while condition may be replaced with the keyword
loop
, which is equivalent towhile
true
.
loop
{
...}
until
untilCondition
;
If the until condition is also omitted, then the action specifies a non-terminating loop.
loop
{
...}
- A while loop action has the form
- For-loop actions. A for-loop action iterates over the values resulting from the evaluation of a sequence expression, assigning each in turn to a for variable feature and performing a nested body action for the assigned value.
- A for-loop action has the form
action
forLoopName
for
forVariableDecl
in
sequenceExpr
action
bodyActionName
{
...}
- The
action
declaration part may be omitted for the entire for-loop action and/or the body action:
for
loopVariableDecl
in
sequenceExpr
{
...}
- A for-loop action has the form
- Path expressions. Previously, a path expression of the form
expr
.a.b.c
was parsed as a tree of path step expressions. That is, it was parsed like(
expr
.a).b).c)
. Such expressions are now parsed so that a trailing path of two or more features parses as a feature chain. That is,expr
.a.b.c
parses as a single expression that applies the feature chain (e.g.,a.b.c
) to the result of the expressionexpr
.
Model Library
- Occurrences. The
HappensDuring
andHappensBefore
associations in theOccurrences
Kernel Library model have been updated with cross-relation and transitivity constraints and the semantic constraints on theHappensJustBefore
association have been simplified. - Actions. Added the action definitions
IfThenAction
,IfThenElseAction
,LoopAction
,WhileLoopAction
andForLoopAction
, along with corresponding base usages, to theActions
Systems Library model. - SI. The
longName
feature binding has been removed from unit declarations. The declarations have been revised so that the declared unit name is its "long name" and its human ID is its abbreviation. Due to the name resolution rules for human IDs, this should have no effect on existing user models. - USCustomaryUnits. A large number of additional units have been added to the
USCustomaryUnits
model from the Quantities and Units Domain Library, based on the NIST SP811 standard. (Note, however, that a further update to this package is expected in the next release.) All unit declarations in the package now also use the same naming convention described above for theSI
package.
Backward Incompatibilities
- Keywords. SysML: Added: loop until while.
- Implicit typing. The following improvements have been made to the implicit typing of certain expressions, which may result in new type warnings in some places.
- The result of a path step expression (e.g.,
expr
.a.b.c
) is typed like the result of the feature or feature chain being accessed (e.g.,a.b.c
). - The result of a path select expression (i.e.,
expr
.{
...}
) is typed like the result of its first argument (expr
), which is the expression that evaluates to the collection being selected from. - The result of an invocation expression used as a constructor for a non-function type (e.g.,
ItemType(
...)
) is typed by the type being constructed (e.g.,ItemType
).
- The result of a path step expression (e.g.,
- Measurement unit "long names". The
longName
feature has been removed from theTensorMeasurementReference
definition in theUnitsAndScale
model from the Quantities and Units Library. IflongName
was being bound in a unit declaration, the value should instead be used as the name of the unit, with the short name or abbreviation used as the human ID.
Jupyter
None.
Visualization
- PlantUML
None. - Tom Sawyer
None.
Technical Updates
- Content assist. The Xtext generation workflows have been updated to remove the generation of content assist code, including the content-assist-specific parser. This was necessary due to a problem with the generation of the content-assist parser (see the in PR #313), and it resolves the known issue of the editors hanging when content assist is triggered (see issue #220). A custom implementation of content assist may be considered in the future, as time and resources permit.
Bug Fixes
- Operands. Fixed the duplicated serialization into XMI of the
operands
of an OperatorExpression. This also eliminated the duplicate validation checks and error messages onoperands
.
2021-11 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-10 release. It corresponds to Eclipse plugin version 0.18.0.
Language features
-
Assignment actions. An assignment action is used to change the value of a feature at the time of performance of the action.
-
Assignment to feature in scope. Assigns the result of
valueExpression
to the feature with afeatureName
in the current scope.assign
featureName
:=
valueExpression
;
Example:
assign
currentStatus := StatusEnum::Nominal;
-
Assignment to feature of a target occurrence. Assigns the result of a
valueExpression
to the feature with namefeatureName
of the occurrence that is the result of atargetExpression
.assign
targetExpression
.
featureName
:=
valueExpression
;
Example:
assign
trailer.trailerFrame.coupler := vehicle.hitch;
Note: In this case the
targetExpression
is the path step expressiontrailer.trailerFrame
, and thevalueExpression
is also a path step expression,vehicle.hitch
. ThefeatureName
iscoupler
.
-
-
Initial values. An initial value is specified when declaring a feature similarly to a bound value, but using the symbol
:=
rather than=
. The feature is set to the specified initial value at the start of the lifetime of its containing occurrence, and, unlike if a bound value was specified, the initial value can be subsequently changed using an assignment action.attribute
count : Integer := 0;
It is also possible to mark an initial value as a default, in which case it may be overridden in a redefinition of the feature.
item
sensor
default
:= primarySensor;
-
Invocation using feature chains. Feature chains can now be used as the target of invocation expressions.
directory.addressOf(userName)
-
Implicit typing. If a feature is declared without an explicit feature typing, but with a feature value, then the feature is implicitly typed by the result type of the feature value expression.
attribute
color = ColorEnum::red; // color implicity has type ColorEnum.
Note that this also works if the feature value is initial and/or default.
Model Library
- AssignmentAction. Added the action definition
AssignmentAction
and the action usageassignmentActions
to the SysMLActions
model library.
Backward incompatibilities
-
Keywords. SysML: Added: assign.
-
Risk metadata. The enumerated values for the
LevelEnum
andRiskLevelEnum
in theRiskMetadata
model have been renamed fromL
,M
,H
tolow
,medium
,high
. -
Trade studies. The calculation definition
ObjectiveFunction
in theTradeStudies
model has been renamedEvaluationFunction
and the corresponding calculation featureTradeStudy::objectiveFunction
has been renamedevaluationFunction
. -
Enumerations. Previously, if a feature was typed by an enumeration definition, then the name of an enumerated value from the definition could be used as a feature value without qualification. However, it is now necessary to qualify the name, unless it has otherwise been imported into the local namespace.
attribute
color : ColorEnum = ColorEnum::red; // Qualification is necessary.
Jupyter
None.
Visualization
- PlantUML
- Added new view for cases, including analysis cases, verification cases and use cases.
- Added special rendering for actors and stakeholders in the tree view.
- Added compartment rendering for connections.
- Corrected the rendering of flow connections in the interconnection view.
- Tom Sawyer
- Implemented visualization of "proxy" connections and connection points.
- Implemented a view that combines aspects of a tree and a nesting view, through actions that expand single nodes as nesting or as a tree.
Technical Updates
- Eclipse. Updated the development baseline to Eclipse version 2021-09.
Bug Fixes
- Variations. Declaring a case (of any kind) to be a variation no longer results in a spurious "A variation must only have variant owned members." error.
- Protected visibility. Fixed the resolution of the name of an inherited member with
protected
visibility when referenced in a nested scope. Also updated handling of protected visibility to conform to the current specification that resolution of qualified names requires that all segments but the first havepublic
visibility. - Feature value scoping. Names in feature value expressions are now resolved starting with the scope of the owning namespace of the corresponding feature declaration, not in the scope of the feature itself, eliminating anomalous resolution to members of the feature. (Note, however, that this causes the backwards incompatibility for enumerations described above.)
- Metadata visualization. For PlantUML, fixed the visualization of feature chains used to specify a metadata feature.
- Requirement constraints. For PlantUML, fixed the visualization of
require
andassume
constraints in the constraint compartment of a requirement definition or usage.