Releases: Systems-Modeling/SysML-v2-Pilot-Implementation
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
datatypein KerML or anattribute defin SysML. Now it is defined using ametaclassin KerML (which is a kind ofstruct) or ametadata defin SysML (which is a kind ofitem def). - Usage. Most syntactic restrictions on a feature declared in the body of a
metadatadeclaration have been removed. In particular, it is now possible for a feature defined in the body of ametadatadeclaration 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
annotatedElementfeature 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 reflectiveKerMLorSysMLmodels) 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
Metaobjectsdefines the metaclassSemanticMetadata(see below). Any metaclass or metadata definition that specializesSemanticMetadatashould bind the inheritedbaseTypefeature 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 ofSemanticMetadatais used to annotate an appropriate type declaration, the specifiedbaseTypeis 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
ashas 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., ifvehicleis a part usage, thenvehicleasKerML::Featureevaluates, as a model-level evaluable expression, to a MetadataFeature forvehiclewith typeSysML::PartUsage. This can be used, for example, to bindbaseType = vehicleasKerML::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
SafetyCriticalis a visible metadata definition, then#SafetyCriticalpartbrakes;is equivalent topartbrakes { @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, ifprovideris the human ID of a specialization ofSemanticMetadatawhosebaseTypeis the featureserviceProviders : ServiceProvider, then#providerdefBankingService;is a definition with an implicit subclassification ofServiceProviderand#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
metaobjectsis the implicit base type of all metadata features. (This is not itself a metadata features, because a metadata feature is an annotating element, whilemetaobjectsis not.)
[PR #347]
- Metaclass
-
KerML. All
structdeclarations in theKerMLpackage have been changed tometaclass(withElementimplicitly subclassifyingMetaobject). (Note that the reflectiveKerMLabstract 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::ItemandMetaobjects::Metaobject) is the implicit base type of all metadata definitions. - Item usage
metadataItemsis the implicit base type of all metadata usages. (This is not itself a metadata usage, because a metadata usages is an annotating element, whilemetadataItemsis not.)
[PR #347]
- Metadata definition
-
SysML. All
item defdeclarations in theSysMLpackage have been changed tometadata def. (Note that the reflectiveSysMLabstract 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,ModelingMetadataandRiskMetadatathat 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
aboutpart). 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
docnotation, just a different mapping to the abstract syntax.)
[PR #347] -
Prefix Comments. The
commentkeyword is now used for a prefix comment (/**...*/), e.g., to give it a name, rather than thedockeyword. 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
refinstead 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.lockto 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
OccurrencesandObjectsmodels, 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.zthat 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
Occurrenceand for constructive relations on occurrences of union, intersection and difference. - Added associations to represent spatial relationships
SpaceSliceOf,SpaceShotOfandOutsideOf, and the spacetime relationshipWithOut.
- Added modeling for spatial aspects of
- Objects
- Added specializations of
ObjectforBody,Surface,CurveandPoint, of inner space dimension 3, 2, 1 and 0, respectively. - Added
StructuredSpaceObjectto represent anObjectthat 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
VectorValuecorresponding 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.
VectorQuantityValueis now a kind ofNumericalVectorValue(fromVectorValues). - VectorCalculations. Revised to provide calculation definitions for
VectorQuantityValuethat 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
suboccurrencesofOccurrencehas been renamed tospaceEnclosedOccurrences. - Sum and product functions. The
sumandproductfunctions have been moved intoNumericalFunctionsand removed fromDataFunctionsandScalarFunctions. - 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
BasicGeometrymodel 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
getAssumedConstraintImplandgetRequiredConstraintImplinRequirementUsageImpl. - Owned connections. Fixed the implementation of
getOwnedConnectioninDefinitionImpl. - 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::PortionOfassociation. - SnapshotOf. Corrected the multiplicity of
SnapshotOf::snapshottedOccurrence. - VectorQuantityValue. Updated
Collections::Arrayto allow dimensionless arrays of a single value. This then allows aVectorQuantityValueto 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
returnparameter 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.
acceptpayloadName:PayloadType=valueExpression;acceptpayloadName:PayloadTypeflow fromsource;
Note. The syntactic form
acceptPayloadType;, 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
whenchangeConditioncan now be used in place of a feature value in a payload declaration. ThechangeConditionmust 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).acceptpayloadName:PayloadTypewhenchangeCondition;
Note. The explicit declaration of the payload parameter is optional, allowing the simple form
accept whenchangeCondition;. The formacceptpayloadNamewhenchangeCondition;is also allowed, but this represents a declaration of the payload name, not its type. -
Time triggers. A time trigger of the form
attimeExpressionorafterdurationExpressioncan now be used in place of a feature value in a payload declaration. ThetimeExpressionmust result in aTimeInstantValue, and the trigger fires at that time (relative to the default clock). ThedurationExpressionmust result in aDurationValue, and the trigger fires after the elapse of that duration (on the default clock).acceptpayloadName:PayloadTypeattimeExpression;acceptpayloadName:PayloadTypeafterdurationExpression;
Note. Simplified payload declarations are allowable for time triggers, similarly to change triggers.
Model Library
- FeatureReferencePerformances. The Kernel Library package
FeatureAccessPerformanceshas been renamed toFeatureReferencingPerformances, and the following behaviors have been added to it:FeatureMonitorPerformanceEvaluationResultMonitorPerformanceBooleanEvaluationResultMonitorPerformanceBooleanEvaluationResultToMonitorPerformance
- 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
Clockmodel has been added to the Quantities and Units LibraryTimepackage, using time instant and duration quantity values. - SI.
ScalarQuantityValuein the Quantities and Units LibraryQuantitiespackage is now a specialization ofNumericalValueinstead ofScalarValue.
Backward Incompatibilities
- Keywords.
- KerML: Added: return
- SysML: Added: when at after
- FeatureReferencePerformances. The Kernel Library package
FeatureAccessPerformanceshas been renamed toFeatureReferencingPerformances. - SI. The Quantities and Units Library package
SIno longer importsQuantityCalculations. These means that theSIpackage no longer re-exports the the calculation definitions fromQuantityCalculationsor various other members re-exported fromQuantityCalculations(such as fromScalarValuesandQuantities). - Time. The order of the public owned features of the
Iso8601DateTimeandIso8601DateTimeStructurecalculation 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
actionifNameifconditionactionthenActionName{...}else actionelseActionName{...} - The
actiondeclaration part may be omitted for the entire if action, the then action and/or the else action:
ifcondition{...}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:
ifcondition{...}else if{...}else{...}
This is equivalent to
ifcondition{...}else{if{...}else{...} } - The else action is optional. If it is omitted, then no action is performed if the
conditionis 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
actionwhileLoopNamewhilewhileConditionactionbodyName{...}untiluntilCondition; - The
actiondeclaration part may be omitted for the entire while-loop action and/or the body action:
whilewhileCondition{...}untiluntilCondition;
The curly braces are required, even if the body is empty. - The until condition is optional. If it is omitted, then the default is
untilfalse(that is, no effect).
whilewhileCondition{...} - The while condition may be replaced with the keyword
loop, which is equivalent towhiletrue.
loop{...}untiluntilCondition;
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
actionforLoopNameforforVariableDeclinsequenceExpractionbodyActionName{...} - The
actiondeclaration part may be omitted for the entire for-loop action and/or the body action:
forloopVariableDeclinsequenceExpr{...}
- A for-loop action has the form
- Path expressions. Previously, a path expression of the form
expr.a.b.cwas 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.cparses as a single expression that applies the feature chain (e.g.,a.b.c) to the result of the expressionexpr.
Model Library
- Occurrences. The
HappensDuringandHappensBeforeassociations in theOccurrencesKernel Library model have been updated with cross-relation and transitivity constraints and the semantic constraints on theHappensJustBeforeassociation have been simplified. - Actions. Added the action definitions
IfThenAction,IfThenElseAction,LoopAction,WhileLoopActionandForLoopAction, along with corresponding base usages, to theActionsSystems Library model. - SI. The
longNamefeature 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
USCustomaryUnitsmodel 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 theSIpackage.
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
longNamefeature has been removed from theTensorMeasurementReferencedefinition in theUnitsAndScalemodel from the Quantities and Units Library. IflongNamewas 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
operandsof 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
valueExpressionto the feature with afeatureNamein the current scope.assignfeatureName:=valueExpression;Example:
assigncurrentStatus := StatusEnum::Nominal; -
Assignment to feature of a target occurrence. Assigns the result of a
valueExpressionto the feature with namefeatureNameof the occurrence that is the result of atargetExpression.assigntargetExpression.featureName:=valueExpression;Example:
assigntrailer.trailerFrame.coupler := vehicle.hitch;Note: In this case the
targetExpressionis the path step expressiontrailer.trailerFrame, and thevalueExpressionis also a path step expression,vehicle.hitch. ThefeatureNameiscoupler.
-
-
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.attributecount : 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.
itemsensordefault:= 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.
attributecolor = 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
AssignmentActionand the action usageassignmentActionsto the SysMLActionsmodel library.
Backward incompatibilities
-
Keywords. SysML: Added: assign.
-
Risk metadata. The enumerated values for the
LevelEnumandRiskLevelEnumin theRiskMetadatamodel have been renamed fromL,M,Htolow,medium,high. -
Trade studies. The calculation definition
ObjectiveFunctionin theTradeStudiesmodel has been renamedEvaluationFunctionand the corresponding calculation featureTradeStudy::objectiveFunctionhas 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.
attributecolor : 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
protectedvisibility 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 havepublicvisibility. - 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
requireandassumeconstraints in the constraint compartment of a requirement definition or usage.
2021-10 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-09 release. It corresponds to Eclipse plugin version 0.17.0.
Language features
- Derived and read-only features. In both KerML and SyML, the keywords derived and readonly can be used when declaring a feature/usage with metaproperty
isDerived = trueorisReadOnly = true, respectively. - Package body elements. Removed the restriction in the SysML syntax on declaring flow connections directly at package level (i.e., not as the feature of a definition or usage).
Model Library
- HappensJustBefore. Added the association
HappensJustBeforeto the Kernel LibraryOccurrencesmodel, to represent the relationship of one occurrence happening just before another, that is, when no occurrence exists that is after the first occurrence and before the second occurrence. (This is the "meet" relation in the Allen time interval formalism.)
Backward incompatibilities
- Keywords.
- KerML: Added: derived readonly. Removed: id stream.
- SysML: Added: binding derived readonly. Removed: id stream.
- Human IDs. In both KerML and SysML, the syntax for declaring a human ID has changed from
idnameto<name>. - Flow connections. In both KerML and SysML, the keyword for flow connections has changed from
streamtoflow. The keyword for succession flow connections has changed fromflowtosuccession flow. - Binding connections. The SysML syntax for named binding connections has changed from
bindnameassource=target;tobindingnamebindsource=target;The syntax for unnamed binding connections remains unchanged:bindsource=target;. - Successions. The SysML syntax for unnamed successions has changed from
successionsourcethentarget;tofirstsourcethentarget;. The syntax for named successions remains unchanged:successionnamefirstsourcethentarget;
Jupyter
None.
Visualization
- Tom Sawyer
- Revised visualization of human IDs.
- Revised visualization of human IDs.
- PlantUML
- Revised visualization of human IDs.
Bug Fixes
- Include use case usages. Fixed the implementation of effective names of include use case usages.
2021-09 - SysML v2 Pilot Implementation
This is a maintenance update to the 2021-08 release. It corresponds to Eclipse plugin version 0.16.0.
Language features
No updates.
Model Library
- Connections. Added
FlowConnection/flowConnectionsandSuccessionFlowConnection/successionFlowConnectionsbase types to theConnectionslibrary model. - Kernel. Updated some Kernel Library package documentation consistent with KerML specification document.
Backward incompatibilities
- Flow connections. Due to the new library model for
message,streamandflowconnections, it is no longer allowable to use them as the target ofperformactions. Useeventorref subsetsinstead.
Jupyter
None.
Visualization
- Tom Sawyer
None. - PlantUML
- Visualization of parameters and inherited members.
- Visualization of subsetting in textual feature representation.
- New style options:
- SHOWINHERITED – Show inherited members
- SHOWLIB – Show elements of the standard libraries
- COMPMOST – Show as many memberships in a compartment as possible
Bug Fixes
- Allocation definitions. Ensured that all allocation definitions directly or indirectly specialize the base
Allocationtype, no matter how many ends they have. - Association and connection ends. Ensured that the ends of non-binary associations and connection definitions directly or indirectly subset
Link::participant. - Connector ends. Limited the special scoping of the targets of connector end subsettings to the first subsetting (i.e., the one giving the related element for the end).
2021-08.1 - SysML v2 Pilot Implementation
This release is the same as the 2021-08 release, except that it fixes a bug in the %publish Jupyter magic command. It corresponds to Eclipse plugin version 0.15.2.
The release notes for 2021-08 are repeated below for convenience, with the additional bug fix shown in bold.
Language features
No updates.
Model Library
Improved documentation comments in Metadata and Analysis library models.
Backward incompatibilities
None.
Jupyter
- Show JSON. Added a
--style jsonoption to the%showcommand to show model elements in a JSON representation. - Export JSON. Added an
%exportcommand to export model elements to a file in a JSON representation. - Installer. Updated the Jupyter installer to pull from conda-forge and npm.
Visualization
- Tom Sawyer
- Visualization of binding connectors nested in action parameters.
- Visualization of item flows nested in source actions.
- PlantUML
- Visualization of simple sequence diagrams.
Bug Fixes
- KerML Grammar. For
FeatureTyping, corrected thegeneralizationkeyword tospecialization. - SysML Grammar
ActionBodyItem- Added alias members.Parameter- Added UseCaseUsage parameters.StateBodyItem- Added alias members.
- Link. Fixed the spurious implicit specialization by
LinkofBinaryLink. - XMI. Fixed a possible
IndexOutOfBoundsExceptionwhen save SysML modes to XMI. - Event Occurrence Usages. - Made instances of EventOccurrenceUsage (and all subclasses) to be always referential.
- Feature Chains. - Corrected resolution of feature chains used as connector ends.
- Satisfying Features. - Corrected the implementation of the derivation of
SatisfyRequirementUsage::satisfyingFeature. - Tom Sawyer. Fixed membership of elements in the outline view.
- PlantUML. Fixed rendering of unnamed actions and states and of satisfying feature links.
- Publishing. Restored the writing of derived property values when publishing a model from Jupyter.
2021-08 - SysML v2 Pilot Implementation
This is a maintenance update to the 2021-06 release (there was no 2021-07 release). It corresponds to Eclipse plugin version 0.15.1.
Language features
No updates.
Model Library
Improved documentation comments in Metadata and Analysis library models.
Backward incompatibilities
None.
Jupyter
- Show JSON. Added a
--style jsonoption to the%showcommand to show model elements in a JSON representation. - Export JSON. Added an
%exportcommand to export model elements to a file in a JSON representation. - Installer. Updated the Jupyter installer to pull from conda-forge and npm.
Visualization
- Tom Sawyer
- Visualization of binding connectors nested in action parameters.
- Visualization of item flows nested in source actions.
- PlantUML
- Visualization of simple sequence diagrams.
Bug Fixes
- KerML Grammar. For
FeatureTyping, corrected thegeneralizationkeyword tospecialization. - SysML Grammar
ActionBodyItem- Added alias members.Parameter- Added UseCaseUsage parameters.StateBodyItem- Added alias members.
- Link. Fixed the spurious implicit specialization by
LinkofBinaryLink. - XMI. Fixed a possible
IndexOutOfBoundsExceptionwhen save SysML modes to XMI. - Event Occurrence Usages. - Made instances of EventOccurrenceUsage (and all subclasses) to be always referential.
- Feature Chains. - Corrected resolution of feature chains used as connector ends.
- Satisfying Features. - Corrected the implementation of the derivation of
SatisfyRequirementUsage::satisfyingFeature. - Tom Sawyer. Fixed membership of elements in the outline view.
- PlantUML. Fixed rendering of unnamed actions and states and of satisfying feature links.
2021-06.1 - SysML v2 Pilot Implementation
This is an incremental update to the 2021-05 release. It corresponds to Eclipse plugin version 0.14.1.
This release is the same as the 2021-06 release, except that it fixes a missing update to the textual notation for transitions, to allow dot notation to be used for the transition source. The release notes for 2021-06 are repeated below for convenience.
Language features
KerML and SySML
- Import.
a. Member Import. Single member import is no longer equivalent to aliasing. The notationimportnamespaceQualifiedName::elementName;now imports the membership in the imported namespace given bynamespaceQualifiedNamewhose member name is given byelementName. This works properly even if givenelementNameis an alias name. IfnamespaceQualifiedNameis not given, thenelementNameis resolved in the containing scope of the import.
b. Recursive Import. As previously, a recursive import of the formimportnamespaceQualifiedName::**;includes the members of the namespace given bynamespaceQualifiedNameas well as members recursively imported from namespaces contained in the given namespace. There is now also a new formimportnamespaceQualifiedName*::**;that recursively imports the members of namespaces contained in the the namespace given bynamespaceQualifiedName, but does not include the direct members of the given namespace itself.
c. Import All. Using the keywordsimport allrather than justimportnow imports memberships without regard to visibility. - Implies operator. The symbol
=>can now be used as an alternative operator forimplies. - Feature Value Defaults. As previously, the feature value notation
feature=expression;declares that a feature is bound to the result of the given expression (using a binding connector). This means that a redefinition of the feature that binds it to a different result will usually be semantically inconsistent. It is now possible to instead declare a default feature value using the formfeaturedefault=defaultExpression;orfeaturedefaultdefaultExpression;. In this case, unless the default is overridden, the actual binding of the feature to the result of the default expression is deferred until the containing type is instantiated. The default can be overridden in a redefinition of the feature, either with a new default or a non-default binding. - Feature Chaining. A feature chain is a sequence of feature references represented using dot notation of the form
f_1.f_2. ... .f_n(similar to a property path in SysML v1). Feature chains of this form can now be used as the targets of subsetting and redefinition relationships, as well as to specify the ends of connectors and the sources and targets of flows. (Dot notation can also still be used in expressions to represent the more general form of a path step expression.)
KerML Only
- Feature Chains. The notation
featurememberNameisf_1.f_2. ... .f_n;can be used to declare a named feature specified by a feature chain. - Negated Invariants. The syntax for Invariants has been extended to allow
inv trueandinv false, to declare Boolean expressions that are invariantly true or invariantly false, respectively.inv trueis the default, corresponding to the currentinvsyntax. - Disjoining. The notation
disjoiningidentificationdisjointtypeDisjoinedfromdisjoiningType;indicates that type given bytypeDisjoinedis disjoint from the type given bydisjoiningType(thedisjoiningidentificationpart is optional). That is, it declares that no instance oftypeDisjoinedis also classified bydisjoiningType. One or more such disjoining relationships can also be included directly in the declaration of thetypeDisjoined, using the notationfeaturetypeDisjoineddisjoint fromdisjoiningType,disjoiningType... ;(thedisjoint frompart comes after any specialization part, but before afeatured bypart). - Feature members. Adding the keyword
memberto the start of a feature declaration contained in a type now indicates that the feature is owned via a membership relationship, not a feature membership. That is, while the feature will be declared in the namespace of the containing type, it will not be featured by that type and will, instead, be featured byAnything, unless the feature declaration includes an explicitfeatured bypart.
SysML Only
- Ports. Port definitions and usages are now considered to be kinds of occurrence definitions and usages. This allows then to, e.g., be used as the target of an
eventdeclaration. - Perform Actions. Perform action usages are now considered to be kinds of event occurrence usages.
- Reference Usages. Previously, a usage declaration without a kind keyword defaulted to an attribute usage. For example
mass : MassValue;was equivalent toattributemass : MassValue;. The default has now been changed to a reference usage, so thatmass : MassValue;is now equivalent torefmass : MassValue;For a usage of an attribute definition this is semantically equivalent to the previous default (since attribute usages are always referential), but it also allows referential usages of any other kind of definition to be declared using the default form. (Composite usages must still be declared using the appropriate kind keyword.) - Assert Constraint Usages. The notation for assert constraint usages has been extended to also allow
assert not, meaning that the constraint is asserted to be false instead of true. - Satisfy Requirement Usages. The notation for satisfy requirement usages has been extended to allow it to start with an optional
assertkeyword, to emphasize that it is a kind of constraint assertion. In addition, thenotkeyword can be added in front ofsatisfyto indicate that a requirement is not satisfied. That is,satisfyrequirementbysubject;andassert satisfyrequirementbysubject;both assert thatsubjectsatisfiesrequirement, whilenot satisfyrequirementbysubject;andassert not satisfyrequirementbysubject;assert thatsubjectdoes not satisfyrequirement. - Multiplicity Defaults. Previously, when a usage was declared without an explicit multiplicity, the multiplicity was inherited from any implicit or explicit subsetted features. Since all the base features from the library have the most general multiplicity
0..*, this meant that0..*was the effective default multiplicity if no more constraining multiplicity was given. Now, a default multiplicity of1..1is automatically added to attribute usages, item usages (including part usages, but not connection usages) and port usages, if both of the following conditions are met (if a default is not added, then the multiplicity is inherited, as previously):- The usage is owned by a type (i.e., a definition or usage, not a package).
- The usage does not have any explicit subsettings or redefinitions.
- Parallel States. A state definition or usage can now be declared to be a parallel state by placing the keyword
parallelbefore the start of its body, e.g.,state defNameparallel{ ... }orstatename:Definitionparallel{ ... }. A parallel state is one for which all its nested states run concurrently ("in parallel"). Therefore, a parallel state is not allowed to contain any successions or transitions that restrict the performance of its nested states. - State Subactions. Previously,
entry,doandexitactions had to appear at the very beginning of the body of a state definition or usage. Now they may appear anywhere in the body, in any order (but at most one of each). - Use Cases. Use cases have now been added to the language as kinds of cases. Use case definitions and usages can be declared using the keywords
use case defanduse case, respectively. Included use case usages can be specified with a notation similar to perform action usages, but using the keywordincludeinstead ofperform. (The traditional use case "extend" relationship has not yet been implemented.) - Actors. Actors can be declared as special parameters of requirements and cases (not just use cases), similarly to the way the subject of a requirement or case is declared. An actor parameter is declared as a part usage, but using the keyword
actorinstead ofpart, i.e., with the formactorusageDeclaration;. A requirement or case can have multiple actor parameters. - Connections. Previously, binding connectors, successions and item flows were adopted into the SysML language directly from KerML. This has been updated so, when they are used in SysML, they are considered to be SysML usages. This means that these elements can now participate in variant modeling, individual modeling, etc, just like other SysML usages.
Model Library
Kernel Library
- Scalar Values. The Number types have been updated so that Real specializes Complex, Rational specializes Real and Integer specializes Rational. The relevant functions packages have also been updated to remove up-conversion functions that are no longer necessary.
- Exponentiation. Missing specializations of of
'^'have been added to all those Kernel Library functions packages that already include'**'.
Systems Library
- Use Cases. A library package has been ...