Releases: Systems-Modeling/SysML-v2-Pilot-Implementation
2021-05a - SysML v2 Pilot Implementation
This is an incremental update to the 2021-04 release. It corresponds to Eclipse plugin version 0.13.1.
This release is the same as the 2021-05 release, except that it fixes four bugs and updates the Quantities and Units Library and PlantUML visualization. The release notes for 2021-05 are repeated below along with the additional changes introduced in this revision. Added items have bold headings.
Language features
Occurrences
- Occurrences. An occurrence is something that has a life over time and possibly a spacial extent. In SysML v2, items, actions and constraints (and their further specializations) are all kinds of occurrences (but attributes are not). It is now possible to model an occurrence without committing to what kind of occurrence it is using the definition and usage notations
occurrence def
andoccurrence
. - Individuals. The syntax for individuals has been expanded.
- Individual definitions and usages can now be made on all kinds of occurrences, i.e.,
individual part def
/individual part
,individual action def
/individual action
, etc. - The notations
individual def
andindividual
default toindividual occurrence def
andindividual occurrence
. - Every individual usage of any kind must have exactly one type that is an individual definition. However, individual usages may now also have additional types that are not individual definitions.
- Individual definitions and usages can now be made on all kinds of occurrences, i.e.,
- Time slices and snapshots. The time slice and snapshot notation has been updated.
- The
timeslice
andsnapshot
notations are no longer restricted to individuals, allowing any kind of occurrence type. The kind of occurrence can be explicitly given in the declaration, e.g.,timeslice part
,snapshot action
, etc. - A
timeslice
orsnapshot
usage without an explicit type that is nested in the body of occurrence definition or usage (of any kind) is implicitly a time slice or snapshot of its containing occurrence. - A
timeslice
orsnapshot
usage with a type that is an individual definition implicitly represents a time slice or snapshot of the defined individual. To make atimeslice
orsnapshot
declaration explicitly an individual usage, the notationsindividual timeslice
andindividual snapshot
can be used.
- The
- Event occurrences. A notation has been added for event occurrences.
- The notation
event occurrence
name
;
represents an identified suboccurrence of a containing occurrence. That is, it is equivalent toref occurrence
name
:> suboccurrences;
. - The notation
event
qualifedName
;
declares an event occurrence by reference to an occurrence usage owned elsewhere. It is equivalent toref occurrence
:>
qualifiedName
:> suboccurrences;
. - The
event occurrence
notation can be considered a generalization ofperform action
andexhibit state
. However, unlikeperform
andexhibit
, the referentialevent
notation does not take its effective name from the occurrence usage it references. This is because it is expected thatevent
will commonly be used to reference thesource
andtarget
of messages (see below), which would result in name conflicts between multiple such events in one namespace.
- The notation
- Messages. A notation has been added for messages, which are item flows without explicitly specified
sourceOutput
andtargetInput
features.- Messages are notated as special kinds of connectors:
message
name
of
FlowType
from
source
to
target
;
. Thename
andFlowType
are optional. - As an item flow, the implicit type of a message is the Kernel library type
Transfer
. A message can also be explicitly typed with any specialization ofTransfer
.
- Messages are notated as special kinds of connectors:
Logical Expressions
- Exclusive or. The exclusive-or operator has been changed from
^
to^^
. This allows^
to be used as an exponentiation operator. (The existing**
exponentiation operator has also been retained for now.) - Keyword operators. Keywords have been introduced as alternatives for certain existing symbolic operators.
Keyword | Symbol |
---|---|
and |
&& |
or |
|| |
xor |
^^ |
not |
! |
- Implies. A new
implies
operator has been add for logical implication. Note that this is a conditional operator: the expressionx
implies
y
is equivalent tonot
x
or
y
or!
x
||
y
. That is, ifx
evaluates to false, theny
is not evaluated and the implication results in true. - Conditional. A new syntax
if
test
?
x
else
y
has been introduced as an alternative for the conditional expressiontest
?
x
:
y
.
Library Models
- State space representation. The
StateSpaceRepresentation
package in the Analysis Domain Library has been updated to use vector quantities. - Feature access and control performances. A new
FeatureAccessPerformances
package has been added to the Kernel Library, and theControlPerformances
package has been updated with base behavior for conditional and looping constructs. However, the abstract and contract syntax have not been updated to take advantage of these new models yet. - Henry unit. The Quantities and Units library has been updated to make Henry [H] an InductanceUnit as well as a PermeanceUnit.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML:
and implies not or xor
- SysML:
and event implies message not occurrence or xor
- KerML:
- Exclusive or. The operator symbol for exclusive or is now
^^
rather than^
. The operator symbol^
now denotes exponentiation. - Precedence. The precedence of the logical operators has been changed so that
and
and&&
have the same precedence as&
, andor
and||
have the same precedence as|
. The precedence ofimplies
is lower than the or operators. - Transfer ends. The ends of a
Transfer
have been renamed fromtransferSource
/transferTarget
tosource
/target
. This means that the ends of a named message can be referenced asmessageName::source
andmessageName::target
(e.g., when used with theevent
notation).
Visualization
- Tom Sawyer
- Big fixes.
- Big fixes.
- PlantUML
- Updated the visualization of individuals, snapshots and time slices.
- Connectors. Implemented visualization of connectors with ends specified using dot notation.
Bug Fixes
- Dot notation. Allowed the new "dot notation" to be used to specify the ends of item flows.
- Name hiding. Fixed a bug that could cause other scope names to be hidden when using filtered import.
- Visualization.
- Fixed bugs in the Tom Sawyer tool that could case initial loading of diagrams to be empty and disabled the the load project action if the web page was refreshed.
- Fixed a bug in the PlantUML visualization that caused referential features to be rendered using black-diamond (composite) notation.
- XMI export. Fixed a bug in the XMI export utility that sometimes caused member names not to be written to the XMI file.
- Dot notation name resolution. Fixed a bug that caused name resolution to fail for dot notation with more than three features.
- Dot notation and flow notation. Fixed a bug that caused a spurious warning when dot notation was used with the shorthand flow notation.
- Occurrence usage specialization. Corrected the implicit specialization of nested occurrence portion usages when they have no explicit feature typing.
- State definitions. Fixed the SysML grammar to allow individual and variation state defs.
Technical Improvements
- Eclipse 2021-03. The pilot implementation is now being developed and tested using Eclipse 2021-03 and Java 11.
- XMI utility. The XMI export utility has been updated to use element UUIDs as XMI IDs, rather than using the default xpath mechanism for cross-references.
- Syntax highlighting. The utility that generates syntax highlighting files from the Xtext grammars has been updated to automatically generate the Jupyter highlighting configuration.
2021-05 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-04 release. It corresponds to Eclipse plugin version 0.13.0.
Language features
Occurrences
- Occurrences. An occurrence is something that has a life over time and possibly a spacial extent. In SysML v2, items, actions and constraints (and their further specializations) are all kinds of occurrences (but attributes are not). It is now possible to model an occurrence without committing to what kind of occurrence it is using the definition and usage notations
occurrence def
andoccurrence
. - Individuals. The syntax for individuals has been expanded.
- Individual definitions and usages can now be made on all kinds of occurrences, i.e.,
individual part def
/individual part
,individual action def
/individual action
, etc. - The notations
individual def
andindividual
default toindividual occurrence def
andindividual occurrence
. - Every individual usage of any kind must have exactly one type that is an individual definition. However, individual usages may now also have additional types that are not individual definitions.
- Individual definitions and usages can now be made on all kinds of occurrences, i.e.,
- Time slices and snapshots. The time slice and snapshot notation has been updated.
- The
timeslice
andsnapshot
notations are no longer restricted to individuals, allowing any kind of occurrence type. The kind of occurrence can be explicitly given in the declaration, e.g.,timeslice part
,snapshot action
, etc. - A
timeslice
orsnapshot
usage without an explicit type that is nested in the body of occurrence definition or usage (of any kind) is implicitly a time slice or snapshot of its containing occurrence. - A
timeslice
orsnapshot
usage with a type that is an individual definition implicitly represents a time slice or snapshot of the defined individual. To make atimeslice
orsnapshot
declaration explicitly an individual usage, the notationsindividual timeslice
andindividual snapshot
can be used.
- The
- Event occurrences. A notation has been added for event occurrences.
- The notation
event occurrence
name
;
represents an identified suboccurrence of a containing occurrence. That is, it is equivalent toref occurrence
name
:> suboccurrences;
. - The notation
event
qualifedName
;
declares an event occurrence by reference to an occurrence usage owned elsewhere. It is equivalent toref occurrence
:>
qualifiedName
:> suboccurrences;
. - The
event occurrence
notation can be considered a generalization ofperform action
andexhibit state
. However, unlikeperform
andexhibit
, the referentialevent
notation does not take its effective name from the occurrence usage it references. This is because it is expected thatevent
will commonly be used to reference thesource
andtarget
of messages (see below), which would result in name conflicts between multiple such events in one namespace.
- The notation
- Messages. A notation has been added for messages, which are item flows without explicitly specified
sourceOutput
andtargetInput
features.- Messages are notated as special kinds of connectors:
message
name
of
FlowType
from
source
to
target
;
. Thename
andFlowType
are optional. - As an item flow, the implicit type of a message is the Kernel library type
Transfer
. A message can also be explicitly typed with any specialization ofTransfer
.
- Messages are notated as special kinds of connectors:
Logical Expressions
- Exclusive or. The exclusive-or operator has been changed from
^
to^^
. This allows^
to be used as an exponentiation operator. (The existing**
exponentiation operator has also been retained for now.) - Keyword operators. Keywords have been introduced as alternatives for certain existing symbolic operators.
Keyword | Symbol |
---|---|
and |
&& |
or |
|| |
xor |
^^ |
not |
! |
- Implies. A new
implies
operator has been add for logical implication. Note that this is a conditional operator: the expressionx
implies
y
is equivalent tonot
x
or
y
or!
x
||
y
. That is, ifx
evaluates to false, theny
is not evaluated and the implication results in true. - Conditional. A new syntax
if
test
?
x
else
y
has been introduced as an alternative for the conditional expressiontest
?
x
:
y
.
Library Models
- State space representation. The
StateSpaceRepresentation
package in the Analysis Domain Library has been updated to use vector quantities. - Feature access and control performances. A new
FeatureAccessPerformances
package has been added to the Kernel Library, and theControlPerformances
package has been updated with base behavior for conditional and looping constructs. However, the abstract and contract syntax have not been updated to take advantage of these new models yet.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML:
and implies not or xor
- SysML:
and event implies message not occurrence or xor
- KerML:
- Exclusive or. The operator symbol for exclusive or is now
^^
rather than^
. The operator symbol^
now denotes exponentiation. - Precedence. The precedence of the logical operators has been changed so that
and
and&&
have the same precedence as&
, andor
and||
have the same precedence as|
. The precedence ofimplies
is lower than the or operators. - Transfer ends. The ends of a
Transfer
have been renamed fromtransferSource
/transferTarget
tosource
/target
. This means that the ends of a named message can be referenced asmessageName::source
andmessageName::target
(e.g., when used with theevent
notation).
Visualization
- Tom Sawyer
- Big fixes.
- Big fixes.
- PlantUML
- Updated the visualization of individuals, snapshots and time slices.
Bug Fixes
- Dot notation. Allowed the new "dot notation" to be used to specify the ends of item flows.
- Name hiding. Fixed a bug that could cause other scope names to be hidden when using filtered import.
- Visualization.
- Fixed bugs in the Tom Sawyer tool that could case initial loading of diagrams to be empty and disabled the the load project action if the web page was refreshed.
- Fixed a bug in the PlantUML visualization that caused referential features to be rendered using black-diamond (composite) notation.
- XMI export. Fixed a bug in the XMI export utility that sometimes caused member names not to be written to the XMI file.
Technical Improvements
- Eclipse 2021-03. The pilot implementation is now being developed and tested using Eclipse 2021-03 and Java 11.
- XMI utility. The XMI export utility has been updated to use element UUIDs as XMI IDs, rather than using the default xpath mechanism for cross-references.
- Syntax highlighting. The utility that generates syntax highlighting files from the Xtext grammars has been updated to automatically generate the Jupyter highlighting configuration.
2021-04 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-03 release. It corresponds to Eclipse plugin version 0.12.0.
Language features
Expressions
- Expression Bodies. Previously, it has been possible to define expression "bodies" using the usual curly bracket notation (e.g.,
expr e { ... }
in KerML andcalc c { ... }
in SysML). It is now possible to use bracketed bodies within the regular expression notation to represent an expression that is passed unevaluated. Parameters are denoted using nested features. For example,{
in
x : Integer; x + 1 }
denotes an expression that takes a single Integer input and returns that value incremented by one. Such expression bodies can be passed as arguments in an invocation (e.g.,Integrate({
in
x : Integer; x + 1 })
), but cannot themselves be invoked without being bound to a feature. (Note that curly brackets are no longer used for sequence construction expressions; see Backwards Incompatibilities below.) - Arrow Notation. The
->
notation for sequence expressions has been generalized to work for invoking any functions, with the first argument for the invocation given as the expression before the arrow. That is, an invocation such asa->F(b, c)
is equivalent toF(a, b, c)
for a general any functionF
with the correct signature. The previous special notation for sequence expressions is now a special case of this, using an expression body for the second argument, e.g.,list->select ({
in
x : Integer; x > 1 })
. As a shorthand, the parentheses may be omitted if the second argument is an expression body:list->select {
in
x : Integer; x > 1 }
. - Dot Notation for Collect. A new dot notation
expr
.
name
has been introduced, wherename
is the name of a public feature in the context of the namespace of the result of the expressionexpr
. Functionally, such a dot expression is equivalent toexpr
-> collect {
name
}
, where{
name
}
is an expression body that accepts an input and applies the named feature to it . - Dot Notation for Select. Similarly to the dot notation for collect above, the notation
expr
.{ ... }
is equivalent toexpr
-> select {...}
. - Dot Notation for Feature Paths. The dot notation may also be used in a limited form instead of qualified names to specify feature paths as connector ends. For example, a connection such as
connect
a::b::c
to
x::y::z;
may now be specified instead asconnect
a.b.c
to
x.y.z;
Unlike qualified names, which are always resolved statically to the base declaration of a feature regardless of inheritance, the dot notation captures the actual feature path in the abstract syntax. This means that it is no longer necessary to redefine inherited features to provide a local connection point, just to avoid "must have same context" warning messages. - Index Notation. The index notation
... [ ... ]
has been generalized to allow a sequence of indices within the brackets. In particular, this can be used to index multi-dimensional arrays. For example, ifa
is a two-dimensional array, thena[1,2]
evaluates to the element in the first row, second column. - Casting. A notation
expr
as
Type
has been added to cast the result of evaluating the expressionexpr
to the namedType
. Such a cast expression is equivalent toexpr
-> select {
in
x; x
istype
Type
}
. That is, it "filters" the sequence of values resulting from the evaluation ofexpr
, retaining only those values that are instances of the given type.
Stakeholders, Concerns and Renderings
- Stakeholders A stakeholder represents an entity that has concerns that are required to be addressed. Stakeholder definitions and usages can now be specified using the
stakeholder def
andstakeholder
keywords, respectively. - Concerns. A concern is a special kind of requirement that may affect one or more stakeholders. Concern definitions and usages can now be specified using the
concern def
andconcern
keywords, respectively. In addition,- An affected stakeholder may be referenced from a concern using the keyword
affect
. - A framed concern may be referenced from a requirement using the keyword
frame
. (Note that viewpoints are kinds of requirements. Concerns are often used in viewpoint modeling.)
- An affected stakeholder may be referenced from a concern using the keyword
- View Renderings. A new keyword
render
has been added to simplify the referential declaration of the rendering to be used for a view.
Library Models
- Standard Renderings. New library elements have been added to the Views package to define a preliminary set of standard renderings:
asTextualNotation
,asTreeDiagram
,asInterconnectionDiagram
,asElementTable
. These are named to read well when used with the newrender
keyword, e.g.,render
asTreeDiagram;
. - Reflective Abstract Syntax. Preliminary reflective library models for KerML and SysML abstract syntax (with those package names) have been added to the Kernel and Systems model libraries, respectively. Currently, these include only definitions of abstract syntax metaclasses, with no metaproperties. However, they may be used in filter expressions to test if an element is an instance of a certain metaclass (e.g.,
import
SystemModel::**[@SysML::PartUsage];
selects all PartUsages in SystemModel). - Quantities and Units. The packages ISQCondensedMatter and ISQInformation have been added to the Quantities and Units model library, covering ISO 80000 Part 12 Condensed Matter Physics and Part 13 Information Science and Technology, respectively. This completes the coverage of all parts of ISO 80000 in the Quantities and Units model library.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML: None
- SysML: affect concern frame stakeholder
- Sequence Construction. Previously, sequence construction expressions used curly brackets, either for an element list (e.g.,
{1, 2, 3}
) or for a range (e.g,{1..2}
). This has been changed to, instead, use parentheses for an element list (e.g.,(1, 2, 3)
) and to not require any bracketing at all for ranges (e.g.,1..2
). Note that sequences of this sort are not values themselves, but simply represent multiple-valued properties of a certain multiplicity. They are therefore "flat", that is, for example, the sequence(1, (2, 3), 4)
is equivalent to(1, 2, 3, 4)
. Any parenthesized single expression is a sequence of length 1, which is just the same as the value of the corresponding un-parethesized expression (e.g.,(2)
has the same value as2
, as one would expect for regular parenthesizing). Finally,null
is equivalent to the empty sequence()
. - Qualified Names. While not permitted according to the draft specification documents, the pilot implementation previously still allowed the dot notation to be used as an alternative to the double-colon notation for qualified names. However, the dot notation is now used for feature path expressions (see above) and can no longer be used in qualified names. In general, a dot separated path of names can only be used instead of a qualified name in contexts in which a feature reference expression would be allowed or to specify a connector end (but not, e.g., as the target of an import or a specialization).
- Control Functions. The function name used in the arrow (
->
) notation was previously assumed to always be from the ControlFunctions library package (i.e.,collect
,select
,reject
,forAll
,exists
, etc.) and, therefore, didn't need to be imported or qualified in order to be resolved. However, with the generalization of this notation (see above), any function can now be used with the arrow notation, and normal name resolution rules apply for the function name. Therefore, any legacy models that use the ControlFunctions with the arrow notation will need appropriate imports added to avoid name resolution errors (e.g.,import
ControlFunctions::*;
). - Sequence Functions. Several functions that operate on sequences (such as
size
,isEmpty
,includes
, etc.) have been moved from the BaseFunctions library package to a new SequenceFunctions package, and some additional ones have been added.
Jupyter
- Using the
-h
option on any magic command (e.g.,%publish -h
) will now produce a brief help message giving command usage and options.
Visualization
- Tom Sawyer
- Re-implemented the Package view.
- Re-implemented the Package view.
- PlantUML
- Added a new Jupyter command
%view
to render a view usage using PlantUML.
- Added a new Jupyter command
Bug Fixes
- Missing Multiplicity. Explicit multiplicity of
[1]
has been added as appropriate to many of the parameters of functions in the Kernel Library functions packages.
2021-03a - SysML v2 Pilot Implementation
This is an incremental update to the 2021-02 release. It corresponds to Eclipse plugin version 0.11.1.
(This release is identical to 2021-03 release, except that it fixes three bugs and implements a performance improvement for recursive import. The release notes for 2021-03 are repeated below along with the additional changes introduced in this revision. Added items have bold headings.)
Language features
- Port Types. A port usage had been restricted to being typed by a single port definition. It now may be typed by one or more type definitions (including types inherited through subsetting and redefinition).
- Units Notation. The notation
num
[
unit
]
can now be used for quantities with units, rather thannum
@[
unit
]
. The old units notationnum
@[
unit
]
is now deprecated and should no longer be used. - Tensor and Vector Quantities. The Quantities and Units model library has been extensively updated to allow for tensor and vector quantities. The
QuantityValue
attribute definition is now an alias for the most generalTensorQuantityValue
attribute definition, which has specializationsVectorQuantityValue
andScalarQuantityValue
. Similarly,MeasurementReference
is now an alias forTensorMeasurementReference
, which has specializationsVectorMeasurementReference
andScalarMeasurementReference
.MeasurementUnit
specializesScalarMeasurementReference
. - Array. A multi-dimensional
Array
type has been added toCollections
, the Kernel Library model of collection types. This is used as the base type forTensorQauntityValue
andTensorMeasurementValue
.
Backward incompatibilities
- Quantity Values. The definition of
QuantityValue
has been revised to include explicit quantity dimensions relative to a system of units. This effects user models if they define new quantity values. However, for most previous usages of quantities and standard units, user models should be unaffected. - Quantities. The quantity attribute
Quantities::quantity
has been renamedQuantities::quantities
, and it is now an alias fortensorQuantities
. For scalar quantities, useQuantities::scalarQuantities
. - SpeedValue. The quantity definition
VelocityValue
has been renamedSpeedValue
, which is aScalarQuantityValue
, with corresponding quantityspeed
. For vector velocity quantities, use the new quantity definitionCartesian3dVelocityVector
(aVectorQuantityValue
with aCartesian3dVelocityCoordinateSystem
) and corresponding quantityvelocityVector
. (These elements are all available from theISQ
package, re-exported fromISQSpaceTime
.) - Integer Division. The return type of the
IntegerFunctions::'/'
function is nowRational
instead ofInteger
. - Collections. The library packages
NonScalarValues
andNonScalarFunctions
have been renamedCollections
andCollectionFunctions
. - Sampled Functions. The data type
NonScalarValue::SampledFunctionValue
is nowCollections::SampledFunction
. It's definition has also changed, from having two multivalued attributes for domain and range values to a single multivalued attributesamples
, each element of which has adomainValue
and arangeValue
. - Recursive Import. A recursive import (i.e., one using
**
) now excludes elements inherited via generalizations to library types that are implicitly inserted into a user model. This greatly improves the performance of processing a model using recursive imports, while only slightly restricting likely user capability. (Further refinements in this area are under consideration.)
Visualization
- Tom Sawyer
- Implemented the visualization of variations and variants.
- Implemented the visualization of variations and variants.
- PlantUML
- Added a help option to the
%viz
command.%viz -h
now produces a brief description of usage and options.
- Added a help option to the
Bug Fixes
- ISQ Units. Removed certain redundant ISQ unit definitions.
- PlantUML. Fixed a possible stack overflow due to circular import of a definition element.
- Deployment. Fixed build failure when deploying from a release-tagged commit.
- SatisfyRequirementUsage. Fixed the default subsetting for a SatisfyRequirementUsage that is nested in a ItemDefinition/ItemUsage or PartDefinition/PartUsage.
- SourceEnd. Fixed the setting of the SourceEnd of a BindingConnector for the subject of a SatisfyRequirementUsage.
- Circular Import. Fixed a problem with the outline view that could cause the editor to hang if there is a nested circular import.
Technical Improvements
- Implicit Generalization. The code for creating implicit generalizations and computed redefinitions has been moved out of the EMF
Impl
classes into the adapter classes previously created for performing transformations. - Conda Publishing. The Jupyter kernel for SysML is now configured to be published to Conda for each release, pending approval of the conda-forge team.
2021-03 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-02 release. It corresponds to Eclipse plugin version 0.11.0.
Language features
- Port Types. A port usage had been restricted to being typed by a single port definition. It now may be typed by one or more type definitions (including types inherited through subsetting and redefinition).
- Units Notation. The notation
num
[
unit
]
can now be used for quantities with units, rather thannum
@[
unit
]
. The old units notationnum
@[
unit
]
is now deprecated and should no longer be used. - Tensor and Vector Quantities. The Quantities and Units model library has been extensively updated to allow for tensor and vector quantities. The
QuantityValue
attribute definition is now an alias for the most generalTensorQuantityValue
attribute definition, which has specializationsVectorQuantityValue
andScalarQuantityValue
. Similarly,MeasurementReference
is now an alias forTensorMeasurementReference
, which has specializationsVectorMeasurementReference
andScalarMeasurementReference
.MeasurementUnit
specializesScalarMeasurementReference
. - Array. A multi-dimensional
Array
type has been added toCollections
, the Kernel Library model of collection types. This is used as the base type forTensorQauntityValue
andTensorMeasurementValue
.
Backward incompatibilities
- Quantity Values. The definition of
QuantityValue
has been revised to include explicit quantity dimensions relative to a system of units. This effects user models if they define new quantity values. However, for most previous usages of quantities and standard units, user models should be unaffected. - Quantities. The quantity attribute
Quantities::quantity
has been renamed toQuantities::quantities
, and it is now an alias fortensorQuantities
. For scalar quantities, useQuantities::scalarQuantities
. - SpeedValue. The quantity definition
VelocityValue
has been renamedSpeedValue
, which is aScalarQuantityValue
, with corresponding quantityspeed
. For vector velocity quantities, use the new quantity definitionCartesian3dVelocityVector
(aVectorQuantityValue
with aCartesian3dVelocityCoordinateSystem
) and corresponding quantityvelocityVector
. (These elements are all available from theISQ
package, re-exported fromISQSpaceTime
.) - Integer Division. The return type of the
IntegerFunctions::'/'
function is nowRational
instead ofInteger
. - Collections. The library packages
NonScalarValues
andNonScalarFunctions
have been renamedCollections
andCollectionFunctions
. - Sampled Functions. The data type
NonScalarValue::SampledFunctionValue
is nowCollections::SampledFunction
. It's definition has also changed having two multivalued attributes for domain and range values to a single multivalued attributesamples
, each element of which has adomainValue
and arangeValue
.
Visualization
- Tom Sawyer
- Implemented the visualization of variations and variants.
- Implemented the visualization of variations and variants.
- PlantUML
- Added a help option to the
%viz
command.%viz -h
now produces a brief description of usage and options.
- Added a help option to the
Bug Fixes
- ISQ Units. Removed certain redundant ISQ unit definitions.
- PlantUML. Fixed a possible stack overflow due to circular import of a definition element.
- Deployment. Fixed build failure when deploying from a release-tagged commit.
Technical Improvements
- Implicit Generalization. The code for creating implicit generalizations and computed redefinitions has been moved out of the EMF
Impl
classes into the adapter classes previously created for performing transformations. - Conda Publishing. The Jupyter kernel for SysML is now published to Conda for each release. This is then used by the Jupyter installer distributed in the release.
2021-02b - SysML v2 Pilot Implementation
This is an incremental update to the 2021-01 release. It corresponds to Eclipse plugin version 0.10.2.
(This release is identical to 2021-02 release, except that it fixes two bugs that could possibly cause stack overflows. The release notes for 2021-02 are repeated below.)
Language features
- Allocation. An allocation specifies that some or all of the responsibility to realize the intent of a source element is assigned to to a target element. Allocation definitions and usages have been added to the language to model this, as specialized kinds of connection definitions and usages.
- Accept Action Receivers. An accept action can now can now specifically specify a "receiver" through which a transfer is to be accepted. This is particularly useful to model for accepting a transfer received at a specific port of a part containing the accept action.
- Send and Accept Action Library Model. The library model for
SendAction
andAcceptAction
has changed. In particular, the payload being sent or received and the target or receiver for the action are modeled as parameters of the action, and the transfer between send and accept actions is modeled as an outgoing transfer of the send action and an incoming transfer of the accept action. - Occurrences Library Model. The model for
Occurrences::Occurrence
has been updated to includeincomingTransfersToSelf
andoutgoingTransfersFromSelf
, consistent with the documentation for this class in the KerML Specification document.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML: none
- SysML: allocation allocate for
- Trade Studies. The imports into the
Trade Studies
library package have been made private.
Visualization
- Tom Sawyer
- Implemented the showing of the element hierarchy in the Model Elements tab.
- Updated send and accept action visualization.
- PlantUML
- Implemented visualization of send and accept actions using specialized icons.
- Implemented visualization of enumerations.
Bug Fixes
- Transition Sources. Fixed the setting of the source state of a transition.
- Jupyter. Fixed a web page freeze when an unmatched single quote is typed in a Jupyter notebook cell.
- PlantUML.
- Fixed the rendering of decision nodes and conditional successions.
- Fixed a possible stack overflow when traversing a membership with an un-owned member element.
Technical Improvements
- Expression Grammar. The expression syntax common to KerML and SysML has been refactored into a separate grammar.
- Transformation Adapters. The code for doing semantic "transformations" has been moved out of the EMF
Impl
classes into a separate hierarchy ofEAdapters
. Most utility method code has also been moved to separate utility classes. - Deployment. A deploy step has been added to the Travis continuous integration build that pushed Maven packages to the GitHub Packages registry. The
jupyter-system-kernel
release packages are also uploaded to JitPack. - PlantUML Update Site. Because of the planned closing of access to bintray, the update site for the PlantUML extensions has been moved. (See org.omg.sysml.site/README.md for details.)
2021-02a - SysML v2 Pilot Implementation
This is an incremental update to the 2021-01 release. It corresponds to Eclipse plugin version 0.10.1.
(This release is identical to 2021-02 release, except that it fixes a bug that could possibly cause a stack overflow when checking inheritance of protected features. The release notes for 2021-02 are repeated below.)
Language features
- Allocation. An allocation specifies that some or all of the responsibility to realize the intent of a source element is assigned to to a target element. Allocation definitions and usages have been added to the language to model this, as specialized kinds of connection definitions and usages.
- Accept Action Receivers. An accept action can now can now specifically specify a "receiver" through which a transfer is to be accepted. This is particularly useful to model for accepting a transfer received at a specific port of a part containing the accept action.
- Send and Accept Action Library Model. The library model for
SendAction
andAcceptAction
has changed. In particular, the payload being sent or received and the target or receiver for the action are modeled as parameters of the action, and the transfer between send and accept actions is modeled as an outgoing transfer of the send action and an incoming transfer of the accept action. - Occurrences Library Model. The model for
Occurrences::Occurrence
has been updated to includeincomingTransfersToSelf
andoutgoingTransfersFromSelf
, consistent with the documentation for this class in the KerML Specification document.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML: none
- SysML: allocation allocate for
- Trade Studies. The imports into the
Trade Studies
library package have been made private.
Visualization
- Tom Sawyer
- Implemented the showing of the element hierarchy in the Model Elements tab.
- Updated send and accept action visualization.
- PlantUML
- Implemented visualization of send and accept actions using specialized icons.
- Implemented visualization of enumerations.
Bug Fixes
- Transition Sources. Fixed A bug in the setting of the source state of a transition.
- Jupyter. Fixed a bug causing the web page to freeze when an unmatched single quote is typed in a Jupyter notebook cell.
- PlantUML. Fixed bug in the rendering of decision nodes and conditional successions.
Technical Improvements
- Expression Grammar. The expression syntax common to KerML and SysML has been refactored into a separate grammar.
- Transformation Adapters. The code for doing semantic "transformations" has been moved out of the EMF
Impl
classes into a separate hierarchy ofEAdapters
. Most utility method code has also been moved to separate utility classes. - Deployment. A deploy step has been added to the Travis continuous integration build that pushed Maven packages to the GitHub Packages registry. The
jupyter-system-kernel
release packages are also uploaded to JitPack. - PlantUML Update Site. Because of the planned closing of access to bintray, the update site for the PlantUML extensions has been moved. (See org.omg.sysml.site/README.md for details.)
2021-02 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-01 release. It corresponds to Eclipse plugin version 0.10.0.
Language features
- Allocation. An allocation specifies that some or all of the responsibility to realize the intent of a source element is assigned to to a target element. Allocation definitions and usages have been added to the language to model this, as specialized kinds of connection definitions and usages.
- Accept Action Receivers. An accept action can now can now specifically specify a "receiver" through which a transfer is to be accepted. This is particularly useful to model for accepting a transfer received at a specific port of a part containing the accept action.
- Send and Accept Action Library Model. The library model for
SendAction
andAcceptAction
has changed. In particular, the payload being sent or received and the target or receiver for the action are modeled as parameters of the action, and the transfer between send and accept actions is modeled as an outgoing transfer of the send action and an incoming transfer of the accept action. - Occurrences Library Model. The model for
Occurrences::Occurrence
has been updated to includeincomingTransfersToSelf
andoutgoingTransfersFromSelf
, consistent with the documentation for this class in the KerML Specification document.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML: none
- SysML: allocation allocate for
- Trade Studies. The imports into the
Trade Studies
library package have been made private.
Visualization
- Tom Sawyer
- Implemented the showing of the element hierarchy in the Model Elements tab.
- Updated send and accept action visualization.
- PlantUML
- Implemented visualization of send and accept actions using specialized icons.
- Implemented visualization of enumerations.
Bug Fixes
- Transition Sources. Fixed A bug in the setting of the source state of a transition.
- Jupyter. Fixed a bug causing the web page to freeze when an unmatched single quote is typed in a Jupyter notebook cell.
- PlantUML. Fixed bug in the rendering of decision nodes and conditional successions.
Technical Improvements
- Expression Grammar. The expression syntax common to KerML and SysML has been refactored into a separate grammar.
- Transformation Adapters. The code for doing semantic "transformations" has been moved out of the EMF
Impl
classes into a separate hierarchy ofEAdapters
. Most utility method code has also been moved to separate utility classes. - Deployment. A deploy step has been added to the Travis continuous integration build that pushed Maven packages to the GitHub Packages registry. The
jupyter-system-kernel
release packages are also uploaded to JitPack. - PlantUML Update Site. Because of the planned closing of access to bintray, the update site for the PlantUML extensions has been moved. (See org.omg.sysml.site/README.md for details.)
2021-01 - SysML v2 Pilot Implementation
This is an incremental update to the 2020-12 release. It corresponds to Eclipse plugin version 0.9.0.
Language features
- Recursive import. An import ending in
::**
rather than::*
(i.e., of the formimport
namespaceName
::**;
) will now not only import the public members of the named namespace, but will also, recursively, import the public members of all public owned members of the namespace. - Element import filtering. It is now possible to filter the imported members of a package using a model-level evaluable Boolean expression, providing a basic "smart package" capability. Currently, such expressions can only query the metadata annotations of an element (and their attribute values), not the actual metamodel properties of the element.
- A filter member can be included in a package using the syntax
filter
conditionExpression
;
. Any imported member included in the package must meet all the filter conditions for the package. - Filter members can also be included in view definitions and view usages. The exposed elements of a view usage are filtered by all the filter conditions of the view usage and those of its view definition.
- A filter condition can be added to any import using the syntax
import
namespaceName
::*[
conditionExpression
];
. This will result in the import of only elements that meet the given filter condition expression. A filtered import may also be recursive (using::**
), and it may include multiple filter condition expressions, all of which must be met by any imported element.
- A filter member can be included in a package using the syntax
- Structures. Previously, a KerML Class classified Objects and a Behavior classified Performances. Objects and Performances are both kinds of Occurrences, but there was no abstract syntax for distinguishing Classifiers that classify any kind of Occurrence. This has been changed so that a Class can classify any kind of Occurrence, and a Structure (keyword struct) is used to specifically classify Objects. Structure and Behavior are now both peer subclasses of Class in the abstract syntax.
- Associations. Previously, a KerML Association was a subclass of Class in the abstract syntax, classifying Links that were kinds of Objects. This meant that all Links where Occurrences that existed over time. This was problematic for model-library Associations like HappensBefore and HappensDuring, which actually define time ordering and, therefore, cannot exist in time themselves. This has been changed so that Association is a kind of Classifier and a peer to Class and DataType, and Link is a direct specialization of Anything. An AssociationStructure is then both an Association and a Structure, classifying LinkObjects that are both Links and Objects, with the same Occurrence semantics that Link previously had. SysML ConnectionDefinitions are now kinds of AssociationStructures.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML: filter struct
- SysML: filter
- Units operator. The units operator
@[
is now a single token. This means that it is no longer legal to have a space between the@
and the[
. For example,1000@[kg]
and1000 @[kg]
are both legal, but1000@ [kg]
is not.
Jupyter
- Magic command arguments. Arguments to Jupyter "magic" commands (such as
%show
and%publish
) that name SysML elements will now resolve for pre-loaded library elements as well as for user-model elements.
Note. The names used in magic commands still must always be fully qualified. Imports done within previous cells are not recognized. Due to the magic command syntax processing, any name that contains spaces or other special characters must be surrounded (in its entirety) in double quotes (e.g.,"'Name with spaces'::nameWithoutSpaces"
). - List command. A new
%list
command has been added.- Used without an argument (
%list
), the command lists all the top-level library packages that have been loaded. - Used with the name of an element (
%list
qualifiedName
), the command lists the type, human Id (if any), primary name and UUID for the named element. - Used with import syntax (
%list
qualifiedNamespaceName
::*
), the command lists all the public members of the named namespace. Recursive import and filter condition syntax can also be used (%list
qualifiedNamespaceName
::**[
conditionExpression
]
), giving a basic model query capability.
- Used without an argument (
Visualization
- Tom Sawyer
- Implemented a mechanism to add new views into the active diagram. This allows the creation of diagrams that have different kinds of views at the same time (at this moment decomposition and interconnection views).
- Implemented a mechanism to add new views into the active diagram. This allows the creation of diagrams that have different kinds of views at the same time (at this moment decomposition and interconnection views).
- PlantUML
- None.
- None.
Technical Improvements
- Implicit relationships. Similarly to implicit Generalizations (as implemented in 2020-11), implicit TypeFeaturing and BindingConnector relationships are no longer physically inserted into the model, but are recorded separately. This further improves improves performance with respect to Xtext lazy-linking proxy resolution. After normal processing is complete, the implicit TypeFeaturings and BindingConnectors can be explicitly inserted into the model using the
Feature::addImplicitTypeFeaturing
andType::addImplicitBindingConnectors
methods. - Automatic Testing. The Maven build has been updated to automatically run unit tests.
2020-12 - SysML v2 Pilot Implementation
This is an incremental update to the 2020-11 release. It corresponds to Eclipse plugin version 0.8.0.
Language features
- Enumeration definitions. An initial capability has been added for enumeration definitions, as kinds of attribute definitions whose values are restricted to a specific enumerated set.
- Metadata annotations. Elements can now be annotated with metadata based on user-defined data types.
- Analysis domain models. An
Analysis
domain library has been added, with the following models:AnalysisAnnotations
- Definitions of annotations to support integration with analysis tooling.StateSpaceRepresentation
- Initial framework for analyses of a state space and its dynamics.TradeStudies
- Framework for analyses carrying out trade-off studies.
- Namespaces. Previously, the metaclass Package was the direct superclass of Type, and the package notation was used for packages that were not types. Now, Package and Type are peers, with the common superclass Namespace. The package keyword still denotes a Package, which is a Namespace but not a Type. In KerML (but not SysML) there is also a namespace notation for a Namespaces that is not differentiated as a Package or Type.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML: metadata namespace
- SysML: enum metadata
- Systems library packages.
- The
Analyses
library package has been renamed toAnalysisCases
. - The
Verifications
library package has been renamed toVerificationCases
.
- The
Visualization
- Tom Sawyer
- A rake symbol is now shown to indicate that an element has further decomposition.
- IBDs are now shown as interconnection diagrams inside a frame.
- PlantUML
- Bug fixes.
- Bug fixes.
Technical Improvements
- Syntax transformations. Syntactic transformations formerly done opportunistically have now all been moved out of getter operations and are performed solely as part of the derived state computation after parsing (or when otherwise specifically invoked). This eliminates the issues that transactional EMF clients had with unexpected modifications to the model tree.
- Travis continuous integration. The repository is now configured to use Travis-CI for continuous integration.
- Outline tree view. A bug with the displaying of operator expressions in the outline tree view of the Eclipse Xtext editor has been fixed.