Skip to content

Releases: Systems-Modeling/SysML-v2-Pilot-Implementation

2021-06.1 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 05 Aug 16:50
91c5494

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

  1. Import.
    a. Member Import. Single member import is no longer equivalent to aliasing. The notation importnamespaceQualifiedName::elementName; now imports the membership in the imported namespace given by namespaceQualifiedName whose member name is given by elementName. This works properly even if given elementName is an alias name. If namespaceQualifiedName is not given, then elementName is resolved in the containing scope of the import.
    b. Recursive Import. As previously, a recursive import of the form importnamespaceQualifiedName::**; includes the members of the namespace given by namespaceQualifiedName as well as members recursively imported from namespaces contained in the given namespace. There is now also a new form importnamespaceQualifiedName*::**; that recursively imports the members of namespaces contained in the the namespace given by namespaceQualifiedName, but does not include the direct members of the given namespace itself.
    c. Import All. Using the keywords import all rather than just import now imports memberships without regard to visibility.
  2. Implies operator. The symbol => can now be used as an alternative operator for implies.
  3. 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 form featuredefault=defaultExpression; or featuredefaultdefaultExpression;. 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.
  4. 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

  1. Feature Chains. The notation featurememberNameisf_1.f_2. ... .f_n; can be used to declare a named feature specified by a feature chain.
  2. Negated Invariants. The syntax for Invariants has been extended to allow inv true and inv false, to declare Boolean expressions that are invariantly true or invariantly false, respectively. inv true is the default, corresponding to the current inv syntax.
  3. Disjoining. The notation disjoiningidentificationdisjointtypeDisjoinedfromdisjoiningType; indicates that type given by typeDisjoined is disjoint from the type given by disjoiningType (the disjoiningidentification part is optional). That is, it declares that no instance of typeDisjoined is also classified by disjoiningType. One or more such disjoining relationships can also be included directly in the declaration of the typeDisjoined, using the notation featuretypeDisjoineddisjoint fromdisjoiningType,disjoiningType... ; (the disjoint from part comes after any specialization part, but before a featured by part).
  4. Feature members. Adding the keyword member to 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 by Anything, unless the feature declaration includes an explicit featured by part.

SysML Only

  1. 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 event declaration.
  2. Perform Actions. Perform action usages are now considered to be kinds of event occurrence usages.
  3. Reference Usages. Previously, a usage declaration without a kind keyword defaulted to an attribute usage. For example mass : MassValue; was equivalent to attributemass : MassValue;. The default has now been changed to a reference usage, so that mass : MassValue; is now equivalent to refmass : 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.)
  4. 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.
  5. Satisfy Requirement Usages. The notation for satisfy requirement usages has been extended to allow it to start with an optional assert keyword, to emphasize that it is a kind of constraint assertion. In addition, the not keyword can be added in front of satisfy to indicate that a requirement is not satisfied. That is, satisfyrequirementbysubject; and assert satisfyrequirementbysubject; both assert that subject satisfies requirement, while not satisfyrequirementbysubject; and assert not satisfyrequirementbysubject; assert that subject does not satisfy requirement.
  6. 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 that 0..* was the effective default multiplicity if no more constraining multiplicity was given. Now, a default multiplicity of 1..1 is 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.
  7. Parallel States. A state definition or usage can now be declared to be a parallel state by placing the keyword parallel before the start of its body, e.g., state defNameparallel{ ... } or statename: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.
  8. State Subactions. Previously, entry, do and exit actions 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).
  9. 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 def and use case, respectively. Included use case usages can be specified with a notation similar to perform action usages, but using the keyword include instead of perform. (The traditional use case "extend" relationship has not yet been implemented.)
  10. 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 actor instead of part, i.e., with the form actorusageDeclaration;. A requirement or case can have multiple actor parameters.
  11. 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

  1. 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.
  2. Exponentiation. Missing specializations of of '^' have been added to all those Kernel Library functions packages that already include '**'.

Systems Library

  1. Use Cases. A library package has been ...
Read more

2021-06 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 03 Aug 19:57

This is an incremental update to the 2021-05 release. It corresponds to Eclipse plugin version 0.14.0.

Language features

KerML and SySML

  1. Import.
    a. Member Import. Single member import is no longer equivalent to aliasing. The notation importnamespaceQualifiedName::elementName; now imports the membership in the imported namespace given by namespaceQualifiedName whose member name is given by elementName. This works properly even if given elementName is an alias name. If namespaceQualifiedName is not given, then elementName is resolved in the containing scope of the import.
    b. Recursive Import. As previously, a recursive import of the form importnamspaceQualifiedName::**; includes the members of the namespace given by namespaceQualifiedName as well as members recursively imported from namespaces contained in the given namespace. There is now also a new form importnamspaceQualifiedName*::**; that recursively imports the members of namespaces contained in the the namespace given by namspaceQualifiedName, but does not include the direct members of the given namespace itself.
    c. Import All. Using the keywords import all rather than just import now imports memberships without regard to visibility.
  2. Implies operator. The symbol => can now be used as an alternative operator for implies.
  3. 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 form featuredefault=defaultExpression; or featuredefaultdefaultExpression;. 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.
  4. 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

  1. Feature Chains. The notation featurememberNameisf_1.f_2. ... .f_n; can be used to declare a named feature specified by a feature chain.
  2. Negated Invariants. The syntax for Invariants has been extended to allow inv true and inv false, to declare Boolean expressions that are invariantly true or invariantly false, respectively. inv true is the default, corresponding to the current inv syntax.
  3. Disjoining. The notation disjoiningidentificationdisjointtypeDisjoinedfromdisjoiningType; indicates that type given by typeDisjoined is disjoint from the type given by disjoiningType (the disjoiningidentification part is optional). That is, it declares that no instance of typeDisjoined is also classified by disjoiningType. One or more such disjoining relationships can also be included directly in the declaration of the typeDisjoined, using the notation featuretypeDisjoineddisjoint fromdisjoiningType,disjoiningType... ; (the disjoint from part comes after any specialization part, but before a featured by part).
  4. Feature members. Adding the keyword member to 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 by Anything, unless the feature declaration includes an explicit featured by part.

SysML Only

  1. 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 event declaration.
  2. Perform Actions. Perform action usages are now considered to be kinds of event occurrence usages.
  3. Reference Usages. Previously, a usage declaration without a kind keyword defaulted to an attribute usage. For example mass : MassValue; was equivalent to attributemass : MassValue;. The default has now been changed to a reference usage, so that mass : MassValue; is now equivalent to refmass : 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.)
  4. 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.
  5. Satisfy Requirement Usages. The notation for satisfy requirement usages has been extended to allow it to start with an optional assert keyword, to emphasize that it is a kind of constraint assertion. In addition, the not keyword can be added in front of satisfy to indicate that a requirement is not satisfied. That is, satisfyrequirementbysubject; and assert satisfyrequirementbysubject; both assert that subject satisfies requirement, while not satisfyrequirementbysubject; and assert not satisfyrequirementbysubject; assert that subject does not satisfy requirement.
  6. 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 that 0..* was the effective default multiplicity if no more constraining multiplicity was given. Now, a default multiplicity of 1..1 is 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.
  7. Parallel States. A state definition or usage can now be declared to be a parallel state by placing the keyword parallel before the start of its body, e.g., state defNameparallel{ ... } or statename: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.
  8. State Subactions. Previously, entry, do and exit actions 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).
  9. 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 def and use case, respectively. Included use case usages can be specified with a notation similar to perform action usages, but using the keyword include instead of perform. (The traditional use case "extend" relationship has not yet been implemented.)
  10. 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 actor instead of part, i.e., with the form actorusageDeclaration;. A requirement or case can have multiple actor parameters.
  11. 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

  1. 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.
  2. Exponentiation. Missing specializations of of '^' have been added to all those Kernel Library functions packages that already include '**'.

Systems Library

  1. Use Cases. A library package has been added forUseCases, with base definition UseCase and base usage useCases.
  2. Actors. An actors feature has been added to Cases::Case and Requirements::Requirement.
  3. Items and Parts. There have been updates to some of the features in the Item and Part definitions.
  4. Ports. Port now specializes Occurrence and ports n...
Read more

2021-05a - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 28 Jun 19:57

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

  1. 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 and occurrence.
  2. 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 and individual default to individual occurrence def and individual 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.
  3. Time slices and snapshots. The time slice and snapshot notation has been updated.
    • The timeslice and snapshot 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 or snapshot 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 or snapshot usage with a type that is an individual definition implicitly represents a time slice or snapshot of the defined individual. To make a timeslice or snapshot declaration explicitly an individual usage, the notations individual timeslice and individual snapshot can be used.
  4. Event occurrences. A notation has been added for event occurrences.
    • The notation event occurrencename; represents an identified suboccurrence of a containing occurrence. That is, it is equivalent to ref occurrencename:> suboccurrences;.
    • The notation eventqualifedName; declares an event occurrence by reference to an occurrence usage owned elsewhere. It is equivalent to ref occurrence:>qualifiedName:> suboccurrences;.
    • The event occurrence notation can be considered a generalization of perform action and exhibit state. However, unlike perform and exhibit, the referential event notation does not take its effective name from the occurrence usage it references. This is because it is expected that event will commonly be used to reference the source and target of messages (see below), which would result in name conflicts between multiple such events in one namespace.
  5. Messages. A notation has been added for messages, which are item flows without explicitly specified sourceOutput and targetInput features.
    • Messages are notated as special kinds of connectors: messagenameofFlowTypefromsourcetotarget;. The name and FlowType 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 of Transfer.

Logical Expressions

  1. 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.)
  2. Keyword operators. Keywords have been introduced as alternatives for certain existing symbolic operators.
Keyword Symbol
and &&
or ||
xor ^^
not !
  1. Implies. A new implies operator has been add for logical implication. Note that this is a conditional operator: the expression ximpliesy is equivalent to notxory or !x||y. That is, if x evaluates to false, then y is not evaluated and the implication results in true.
  2. Conditional. A new syntax iftest? xelsey has been introduced as an alternative for the conditional expression test?x:y.

Library Models

  1. State space representation. The StateSpaceRepresentation package in the Analysis Domain Library has been updated to use vector quantities.
  2. Feature access and control performances. A new FeatureAccessPerformances package has been added to the Kernel Library, and the ControlPerformances 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.
  3. Henry unit. The Quantities and Units library has been updated to make Henry [H] an InductanceUnit as well as a PermeanceUnit.

Backward incompatibilities

  1. 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
  2. Exclusive or. The operator symbol for exclusive or is now ^^ rather than ^. The operator symbol ^ now denotes exponentiation.
  3. Precedence. The precedence of the logical operators has been changed so that and and && have the same precedence as &, and or and || have the same precedence as |. The precedence of implies is lower than the or operators.
  4. Transfer ends. The ends of a Transfer have been renamed from transferSource/transferTarget to source/target. This means that the ends of a named message can be referenced as messageName::source and messageName::target (e.g., when used with the event notation).

Visualization

  1. Tom Sawyer
    • Big fixes.
  2. PlantUML
    • Updated the visualization of individuals, snapshots and time slices.
    • Connectors. Implemented visualization of connectors with ends specified using dot notation.

Bug Fixes

  1. Dot notation. Allowed the new "dot notation" to be used to specify the ends of item flows.
  2. Name hiding. Fixed a bug that could cause other scope names to be hidden when using filtered import.
  3. 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.
  4. XMI export. Fixed a bug in the XMI export utility that sometimes caused member names not to be written to the XMI file.
  5. Dot notation name resolution. Fixed a bug that caused name resolution to fail for dot notation with more than three features.
  6. Dot notation and flow notation. Fixed a bug that caused a spurious warning when dot notation was used with the shorthand flow notation.
  7. Occurrence usage specialization. Corrected the implicit specialization of nested occurrence portion usages when they have no explicit feature typing.
  8. State definitions. Fixed the SysML grammar to allow individual and variation state defs.

Technical Improvements

  1. Eclipse 2021-03. The pilot implementation is now being developed and tested using Eclipse 2021-03 and Java 11.
  2. 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.
  3. 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

Choose a tag to compare

@seidewitz seidewitz released this 15 Jun 06:09
35b59b3

This is an incremental update to the 2021-04 release. It corresponds to Eclipse plugin version 0.13.0.

Language features

Occurrences

  1. 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 and occurrence.
  2. 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 and individual default to individual occurrence def and individual 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.
  3. Time slices and snapshots. The time slice and snapshot notation has been updated.
    • The timeslice and snapshot 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 or snapshot 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 or snapshot usage with a type that is an individual definition implicitly represents a time slice or snapshot of the defined individual. To make a timeslice or snapshot declaration explicitly an individual usage, the notations individual timeslice and individual snapshot can be used.
  4. Event occurrences. A notation has been added for event occurrences.
    • The notation event occurrencename; represents an identified suboccurrence of a containing occurrence. That is, it is equivalent to ref occurrencename:> suboccurrences;.
    • The notation eventqualifedName; declares an event occurrence by reference to an occurrence usage owned elsewhere. It is equivalent to ref occurrence:>qualifiedName:> suboccurrences;.
    • The event occurrence notation can be considered a generalization of perform action and exhibit state. However, unlike perform and exhibit, the referential event notation does not take its effective name from the occurrence usage it references. This is because it is expected that event will commonly be used to reference the source and target of messages (see below), which would result in name conflicts between multiple such events in one namespace.
  5. Messages. A notation has been added for messages, which are item flows without explicitly specified sourceOutput and targetInput features.
    • Messages are notated as special kinds of connectors: messagenameofFlowTypefromsourcetotarget;. The name and FlowType 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 of Transfer.

Logical Expressions

  1. 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.)
  2. Keyword operators. Keywords have been introduced as alternatives for certain existing symbolic operators.
Keyword Symbol
and &&
or ||
xor ^^
not !
  1. Implies. A new implies operator has been add for logical implication. Note that this is a conditional operator: the expression ximpliesy is equivalent to notxory or !x||y. That is, if x evaluates to false, then y is not evaluated and the implication results in true.
  2. Conditional. A new syntax iftest? xelsey has been introduced as an alternative for the conditional expression test?x:y.

Library Models

  1. State space representation. The StateSpaceRepresentation package in the Analysis Domain Library has been updated to use vector quantities.
  2. Feature access and control performances. A new FeatureAccessPerformances package has been added to the Kernel Library, and the ControlPerformances 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

  1. 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
  2. Exclusive or. The operator symbol for exclusive or is now ^^ rather than ^. The operator symbol ^ now denotes exponentiation.
  3. Precedence. The precedence of the logical operators has been changed so that and and && have the same precedence as &, and or and || have the same precedence as |. The precedence of implies is lower than the or operators.
  4. Transfer ends. The ends of a Transfer have been renamed from transferSource/transferTarget to source/target. This means that the ends of a named message can be referenced as messageName::source and messageName::target (e.g., when used with the event notation).

Visualization

  1. Tom Sawyer
    • Big fixes.
  2. PlantUML
    • Updated the visualization of individuals, snapshots and time slices.

Bug Fixes

  1. Dot notation. Allowed the new "dot notation" to be used to specify the ends of item flows.
  2. Name hiding. Fixed a bug that could cause other scope names to be hidden when using filtered import.
  3. 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.
  4. 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

  1. Eclipse 2021-03. The pilot implementation is now being developed and tested using Eclipse 2021-03 and Java 11.
  2. 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.
  3. 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

Choose a tag to compare

@seidewitz seidewitz released this 17 May 19:39

This is an incremental update to the 2021-03 release. It corresponds to Eclipse plugin version 0.12.0.

Language features

Expressions

  1. Expression Bodies. Previously, it has been possible to define expression "bodies" using the usual curly bracket notation (e.g., expr e { ... } in KerML and calc 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, {inx : 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({inx : 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.)
  2. 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 as a->F(b, c) is equivalent to F(a, b, c) for a general any function F 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 ({inx : Integer; x > 1 }). As a shorthand, the parentheses may be omitted if the second argument is an expression body: list->select {inx : Integer; x > 1 }.
  3. Dot Notation for Collect. A new dot notation expr.name has been introduced, where name is the name of a public feature in the context of the namespace of the result of the expression expr. Functionally, such a dot expression is equivalent to expr-> collect {name}, where {name} is an expression body that accepts an input and applies the named feature to it .
  4. Dot Notation for Select. Similarly to the dot notation for collect above, the notation expr.{ ... } is equivalent to expr-> select {...}.
  5. 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 connecta::b::ctox::y::z; may now be specified instead as connecta.b.ctox.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.
  6. 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, if a is a two-dimensional array, then a[1,2] evaluates to the element in the first row, second column.
  7. Casting. A notation exprasType has been added to cast the result of evaluating the expression expr to the named Type. Such a cast expression is equivalent to expr-> select {inx; xistypeType}. That is, it "filters" the sequence of values resulting from the evaluation of expr, retaining only those values that are instances of the given type.

Stakeholders, Concerns and Renderings

  1. 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 and stakeholder keywords, respectively.
  2. 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 and concern 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.)
  3. 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

  1. 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 new render keyword, e.g., renderasTreeDiagram;.
  2. 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., importSystemModel::**[@SysML::PartUsage]; selects all PartUsages in SystemModel).
  3. 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

  1. Keywords. The following new keywords have been added as reserved words:
    • KerML: None
    • SysML: affect concern frame stakeholder
  2. 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 as 2, as one would expect for regular parenthesizing). Finally, null is equivalent to the empty sequence ().
  3. 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).
  4. 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., importControlFunctions::*;).
  5. 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

  1. 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

  1. Tom Sawyer
    • Re-implemented the Package view.
  2. PlantUML
    • Added a new Jupyter command %view to render a view usage using PlantUML.

Bug Fixes

  1. 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

Choose a tag to compare

@seidewitz seidewitz released this 18 Apr 21:49

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

  1. 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).
  2. Units Notation. The notation num[unit] can now be used for quantities with units, rather than num@[unit]. The old units notation num@[unit] is now deprecated and should no longer be used.
  3. 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 general TensorQuantityValue attribute definition, which has specializations VectorQuantityValue and ScalarQuantityValue. Similarly, MeasurementReference is now an alias for TensorMeasurementReference, which has specializations VectorMeasurementReference and ScalarMeasurementReference. MeasurementUnit specializes ScalarMeasurementReference.
  4. Array. A multi-dimensional Array type has been added to Collections, the Kernel Library model of collection types. This is used as the base type for TensorQauntityValue and TensorMeasurementValue.

Backward incompatibilities

  1. 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.
  2. Quantities. The quantity attribute Quantities::quantity has been renamed Quantities::quantities, and it is now an alias for tensorQuantities. For scalar quantities, use Quantities::scalarQuantities.
  3. SpeedValue. The quantity definition VelocityValue has been renamed SpeedValue, which is a ScalarQuantityValue, with corresponding quantity speed. For vector velocity quantities, use the new quantity definition Cartesian3dVelocityVector (a VectorQuantityValue with a Cartesian3dVelocityCoordinateSystem) and corresponding quantity velocityVector. (These elements are all available from the ISQ package, re-exported from ISQSpaceTime.)
  4. Integer Division. The return type of the IntegerFunctions::'/' function is now Rational instead of Integer.
  5. Collections. The library packages NonScalarValues and NonScalarFunctions have been renamed Collections and CollectionFunctions.
  6. 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 attribute samples, each element of which has a domainValue and a rangeValue.
  7. 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

  1. Tom Sawyer
    • Implemented the visualization of variations and variants.
  2. PlantUML
    • Added a help option to the %viz command. %viz -h now produces a brief description of usage and options.

Bug Fixes

  1. ISQ Units. Removed certain redundant ISQ unit definitions.
  2. PlantUML. Fixed a possible stack overflow due to circular import of a definition element.
  3. Deployment. Fixed build failure when deploying from a release-tagged commit.
  4. SatisfyRequirementUsage. Fixed the default subsetting for a SatisfyRequirementUsage that is nested in a ItemDefinition/ItemUsage or PartDefinition/PartUsage.
  5. SourceEnd. Fixed the setting of the SourceEnd of a BindingConnector for the subject of a SatisfyRequirementUsage.
  6. 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

  1. 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.
  2. 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

Choose a tag to compare

@seidewitz seidewitz released this 14 Apr 20:07
4425d3e

This is an incremental update to the 2021-02 release. It corresponds to Eclipse plugin version 0.11.0.

Language features

  1. 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).
  2. Units Notation. The notation num[unit] can now be used for quantities with units, rather than num@[unit]. The old units notation num@[unit] is now deprecated and should no longer be used.
  3. 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 general TensorQuantityValue attribute definition, which has specializations VectorQuantityValue and ScalarQuantityValue. Similarly, MeasurementReference is now an alias for TensorMeasurementReference, which has specializations VectorMeasurementReference and ScalarMeasurementReference. MeasurementUnit specializes ScalarMeasurementReference.
  4. Array. A multi-dimensional Array type has been added to Collections, the Kernel Library model of collection types. This is used as the base type for TensorQauntityValue and TensorMeasurementValue.

Backward incompatibilities

  1. 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.
  2. Quantities. The quantity attribute Quantities::quantity has been renamed to Quantities::quantities, and it is now an alias for tensorQuantities. For scalar quantities, use Quantities::scalarQuantities.
  3. SpeedValue. The quantity definition VelocityValue has been renamed SpeedValue, which is a ScalarQuantityValue, with corresponding quantity speed. For vector velocity quantities, use the new quantity definition Cartesian3dVelocityVector (a VectorQuantityValue with a Cartesian3dVelocityCoordinateSystem) and corresponding quantity velocityVector. (These elements are all available from the ISQ package, re-exported from ISQSpaceTime.)
  4. Integer Division. The return type of the IntegerFunctions::'/' function is now Rational instead of Integer.
  5. Collections. The library packages NonScalarValues and NonScalarFunctions have been renamed Collections and CollectionFunctions.
  6. 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 attribute samples, each element of which has a domainValue and a rangeValue.

Visualization

  1. Tom Sawyer
    • Implemented the visualization of variations and variants.
  2. PlantUML
    • Added a help option to the %viz command. %viz -h now produces a brief description of usage and options.

Bug Fixes

  1. ISQ Units. Removed certain redundant ISQ unit definitions.
  2. PlantUML. Fixed a possible stack overflow due to circular import of a definition element.
  3. Deployment. Fixed build failure when deploying from a release-tagged commit.

Technical Improvements

  1. 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.
  2. 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

Choose a tag to compare

@seidewitz seidewitz released this 16 Mar 02:28

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

  1. 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.
  2. 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.
  3. Send and Accept Action Library Model. The library model for SendAction and AcceptAction 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.
  4. Occurrences Library Model. The model for Occurrences::Occurrence has been updated to include incomingTransfersToSelf and outgoingTransfersFromSelf, consistent with the documentation for this class in the KerML Specification document.

Backward incompatibilities

  1. Keywords. The following new keywords have been added as reserved words:
    • KerML: none
    • SysML: allocation allocate for
  2. Trade Studies. The imports into the Trade Studies library package have been made private.

Visualization

  1. Tom Sawyer
    • Implemented the showing of the element hierarchy in the Model Elements tab.
    • Updated send and accept action visualization.
  2. PlantUML
    • Implemented visualization of send and accept actions using specialized icons.
    • Implemented visualization of enumerations.

Bug Fixes

  1. Transition Sources. Fixed the setting of the source state of a transition.
  2. Jupyter. Fixed a web page freeze when an unmatched single quote is typed in a Jupyter notebook cell.
  3. 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

  1. Expression Grammar. The expression syntax common to KerML and SysML has been refactored into a separate grammar.
  2. Transformation Adapters. The code for doing semantic "transformations" has been moved out of the EMF Impl classes into a separate hierarchy of EAdapters. Most utility method code has also been moved to separate utility classes.
  3. 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.
  4. 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

Choose a tag to compare

@seidewitz seidewitz released this 13 Mar 05:12

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

  1. 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.
  2. 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.
  3. Send and Accept Action Library Model. The library model for SendAction and AcceptAction 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.
  4. Occurrences Library Model. The model for Occurrences::Occurrence has been updated to include incomingTransfersToSelf and outgoingTransfersFromSelf, consistent with the documentation for this class in the KerML Specification document.

Backward incompatibilities

  1. Keywords. The following new keywords have been added as reserved words:
    • KerML: none
    • SysML: allocation allocate for
  2. Trade Studies. The imports into the Trade Studies library package have been made private.

Visualization

  1. Tom Sawyer
    • Implemented the showing of the element hierarchy in the Model Elements tab.
    • Updated send and accept action visualization.
  2. PlantUML
    • Implemented visualization of send and accept actions using specialized icons.
    • Implemented visualization of enumerations.

Bug Fixes

  1. Transition Sources. Fixed A bug in the setting of the source state of a transition.
  2. Jupyter. Fixed a bug causing the web page to freeze when an unmatched single quote is typed in a Jupyter notebook cell.
  3. PlantUML. Fixed bug in the rendering of decision nodes and conditional successions.

Technical Improvements

  1. Expression Grammar. The expression syntax common to KerML and SysML has been refactored into a separate grammar.
  2. Transformation Adapters. The code for doing semantic "transformations" has been moved out of the EMF Impl classes into a separate hierarchy of EAdapters. Most utility method code has also been moved to separate utility classes.
  3. 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.
  4. 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

Choose a tag to compare

@seidewitz seidewitz released this 12 Mar 03:50

This is an incremental update to the 2021-01 release. It corresponds to Eclipse plugin version 0.10.0.

Language features

  1. 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.
  2. 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.
  3. Send and Accept Action Library Model. The library model for SendAction and AcceptAction 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.
  4. Occurrences Library Model. The model for Occurrences::Occurrence has been updated to include incomingTransfersToSelf and outgoingTransfersFromSelf, consistent with the documentation for this class in the KerML Specification document.

Backward incompatibilities

  1. Keywords. The following new keywords have been added as reserved words:
    • KerML: none
    • SysML: allocation allocate for
  2. Trade Studies. The imports into the Trade Studies library package have been made private.

Visualization

  1. Tom Sawyer
    • Implemented the showing of the element hierarchy in the Model Elements tab.
    • Updated send and accept action visualization.
  2. PlantUML
    • Implemented visualization of send and accept actions using specialized icons.
    • Implemented visualization of enumerations.

Bug Fixes

  1. Transition Sources. Fixed A bug in the setting of the source state of a transition.
  2. Jupyter. Fixed a bug causing the web page to freeze when an unmatched single quote is typed in a Jupyter notebook cell.
  3. PlantUML. Fixed bug in the rendering of decision nodes and conditional successions.

Technical Improvements

  1. Expression Grammar. The expression syntax common to KerML and SysML has been refactored into a separate grammar.
  2. Transformation Adapters. The code for doing semantic "transformations" has been moved out of the EMF Impl classes into a separate hierarchy of EAdapters. Most utility method code has also been moved to separate utility classes.
  3. 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.
  4. 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.)