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 added for
UseCases, with base definitionUseCaseand base usageuseCases. - Actors. An
actorsfeature has been added toCases::CaseandRequirements::Requirement. - Items and Parts. There have been updates to some of the features in the
ItemandPartdefinitions. - Ports.
Portnow specializesOccurrenceandportsnow specializesoccurrences. - Transitions. There are technical updates to the modeling of transitions in both the
ActionsandStatespackages. - Verification Method. The attribute definition
VerificationMethodhas been added to theVerificationCasespackage, for use as a metadata annotation type.
Domain Libraries
- Time. The
Timepackage in the Quantities and Units Domain Library now supports the modeling of- Time instants
- Time scales
- The Coordinated Universal Time (UTC) scale
- ISO 8601-1 date and time representation
- Metadata. A Metadata Domain Library has been added, with the following two packages containing attribute definitions intended for use as metadata annotation types:
ModelingMetadatawith attribute definitions forStatusInfo,RationaleandIssue.RiskMetadatawith attribute definitions forRiskLevelandRisk.
Backward incompatibilities
- Keywords. The following new keywords have been added as reserved words:
- KerML:
conjugate default disjoining disjoint member - SysML:
actor default include parallel use via(and the keywordaffecthas been removed)
- KerML:
- Aliases. The notation for an alias has been changed from
aliasqualifiedNameasaliasName;toaliasaliasNameforqualifiedName;. The short formaliasqualifiedName;is no longer allowed. (UseimportqualifiedName;instead.) - Expose.
exposenow always imports elements without regard to visibility (likeimport all, see above). - Literals. Literals for Booleans, strings and numbers are now recognized as having the appropriate library type (i.e.,
Boolean,String,IntegerorReal). This may result in some additional validation warnings from type conformance checks not previously carried out. - Unlimited Natural. The
UnlimitedNaturaltype has been removed from theScalarValuespackage and the associatedUnlimitedNaturalFunctionslibrary model has been removed from the Kernel Library. The value*is now considered to represent "positive infinity" in an extended number range, and it has typePositive. (Negative infinity can be represented as-*.) - Invocation expressions. The symbol
=>has now been replaced with=in the named-argument notation for invocation expressions. For example, an invocation of the previously of the formComputePosition(x_init => x_0, v_avg => v, delta_t => dt)is now writtenComputePosition(x_init = x_0, v_avg = v, delta_t = dt). - Connectors. The symbol
=>has now been replaced with:>in the named-connector end and n-ary connector notations. For example a binary connection previously of the formconnectdevice => sensortobus => CAN_bus;is now writtenconnectdevice :> sensortobus :> CAN_bus;and an n-ary connection previously of the formconnect(consumer => c, server => s, publisher => p);is now writtenconnect(consumer :> c, server :> s, publisher :> p);(The symbol:>is used here instead of=because=would indicate binding, and connector ends don't bind to their related elements, they subset them. Using binding connectors for connector ends would result in a circularity.) - Feature Accessibility. A statically resolvable reference to a feature that is not semantically "accessible" will now produce a warning message. In many cases, such a warning is resolvable by using dot notation to reference the feature instead of using a qualified name.
- Conjugation. In the KerML conjugation relationship notation, the
typekeyword has been replaced withconjugate. This allows theconjugationidentificationpart to be optional in the notationconjugationidentificationconjugateconjugatedTypeconjugatesoriginalType; - Stakeholders. Stakeholder definitions and usages have been removed from the SysML language. Instead, stakeholders can now be declared as special kinds of parameters of requirements (note that concerns and viewpoints are kinds of requirements), using the
stakeholderkeyword, e.g.,concernsysStructure {stakeholdersysEng : Person; }. The keywordaffectis no longer used. - Transitions. To avoid ambiguity with the new freedom for positioning state subactions (see above), it is no longer possible to use the shorthand form
doactionthentarget;for a transition usage that has an effect action but not a guard and whose source is implicitly the lexically preceding state. Instead the formtransition doactionthentarget;must be used. (Thetransitionkeyword can now also be used if the transition has anacceptand/orifclause, but it is then optional.) - Accept actions. The
forkeyword has been replaced withviain the notation for accept action usages. - Deprecated Functions. The following deprecated functions have been removed from the Kernel Library:
BaseFunctions:allInstancesBaseFunctions::instanceofDataFunctions::'@['(also removed in ScalarFunctions and QuantityCalculations)StringFunctions::Size(useLengthinstead)
- SampledFunction.
SampledFunctionhas been moved from the Kernel LibraryCollectionspackage to a newSampledFunctionsAnalysis Domain Library package, andSampleandInterpolatefunctions (calculation definitions) have been added.
Visualization
- Tom Sawyer
- Visualization of connectors whose ends are specified using feature chains.
- Visualization of connectors whose ends are specified using feature chains.
- PlantUML
- Visualization of connectors whose ends are specified using feature chains.
- Metadata annotation visualization using note symbols.
Bug Fixes
- Default Specialization. Ensured that default specializations are added whenever necessary, even if the type being declared already has an owned specialization of the same kind (unless the specialization is of a type that is already a subtype of the default type).
- Alias members. Fixed the accidental exclusion of alias members from KerML Behavior and Function bodies.
- Successions. Updated the succession shorthand (
then) notation to work correctly between messages/item flows that are not owned by an action definition or usage. (There are still special rules for this notation within actions.) - Connections/Interfaces. Updated the
ConnectionsandInterfaceslibrary models to add baseBinaryConnectionandBinaryInterfacetypes, so that non-binary connections and interfaces can also be handled properly. - Reflection. Corrected errors in the
KerMLandSysMLreflective abstract syntax packages and updated them to the 2021-06 baseline (but still only including metaclasses with no properties). - PlantUML. Fixed an error caused by expression text with line breaks.