Skip to content

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

2021-01 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 09 Feb 22:17

This is an incremental update to the 2020-12 release. It corresponds to Eclipse plugin version 0.9.0.

Language features

  1. Recursive import. An import ending in ::** rather than ::* (i.e., of the form importnamespaceName::**;) will now not only import the public members of the named namespace, but will also, recursively, import the public members of all public owned members of the namespace.
  2. Element import filtering. It is now possible to filter the imported members of a package using a model-level evaluable Boolean expression, providing a basic "smart package" capability. Currently, such expressions can only query the metadata annotations of an element (and their attribute values), not the actual metamodel properties of the element.
    • A filter member can be included in a package using the syntax filterconditionExpression;. Any imported member included in the package must meet all the filter conditions for the package.
    • Filter members can also be included in view definitions and view usages. The exposed elements of a view usage are filtered by all the filter conditions of the view usage and those of its view definition.
    • A filter condition can be added to any import using the syntax importnamespaceName::*[conditionExpression];. This will result in the import of only elements that meet the given filter condition expression. A filtered import may also be recursive (using ::**), and it may include multiple filter condition expressions, all of which must be met by any imported element.
  3. Structures. Previously, a KerML Class classified Objects and a Behavior classified Performances. Objects and Performances are both kinds of Occurrences, but there was no abstract syntax for distinguishing Classifiers that classify any kind of Occurrence. This has been changed so that a Class can classify any kind of Occurrence, and a Structure (keyword struct) is used to specifically classify Objects. Structure and Behavior are now both peer subclasses of Class in the abstract syntax.
  4. Associations. Previously, a KerML Association was a subclass of Class in the abstract syntax, classifying Links that were kinds of Objects. This meant that all Links where Occurrences that existed over time. This was problematic for model-library Associations like HappensBefore and HappensDuring, which actually define time ordering and, therefore, cannot exist in time themselves. This has been changed so that Association is a kind of Classifier and a peer to Class and DataType, and Link is a direct specialization of Anything. An AssociationStructure is then both an Association and a Structure, classifying LinkObjects that are both Links and Objects, with the same Occurrence semantics that Link previously had. SysML ConnectionDefinitions are now kinds of AssociationStructures.

Backward incompatibilities

  1. Keywords. The following new keywords have been added as reserved words:
    • KerML: filter struct
    • SysML: filter
  2. Units operator. The units operator @[ is now a single token. This means that it is no longer legal to have a space between the @ and the [. For example, 1000@[kg] and 1000 @[kg] are both legal, but 1000@ [kg] is not.

Jupyter

  1. Magic command arguments. Arguments to Jupyter "magic" commands (such as %show and %publish) that name SysML elements will now resolve for pre-loaded library elements as well as for user-model elements.
    Note. The names used in magic commands still must always be fully qualified. Imports done within previous cells are not recognized. Due to the magic command syntax processing, any name that contains spaces or other special characters must be surrounded (in its entirety) in double quotes (e.g., "'Name with spaces'::nameWithoutSpaces").
  2. List command. A new %list command has been added.
    • Used without an argument (%list), the command lists all the top-level library packages that have been loaded.
    • Used with the name of an element (%listqualifiedName), the command lists the type, human Id (if any), primary name and UUID for the named element.
    • Used with import syntax (%listqualifiedNamespaceName::*), the command lists all the public members of the named namespace. Recursive import and filter condition syntax can also be used (%listqualifiedNamespaceName::**[conditionExpression]), giving a basic model query capability.

Visualization

  1. Tom Sawyer
    • Implemented a mechanism to add new views into the active diagram. This allows the creation of diagrams that have different kinds of views at the same time (at this moment decomposition and interconnection views).
  2. PlantUML
    • None.

Technical Improvements

  1. Implicit relationships. Similarly to implicit Generalizations (as implemented in 2020-11), implicit TypeFeaturing and BindingConnector relationships are no longer physically inserted into the model, but are recorded separately. This further improves improves performance with respect to Xtext lazy-linking proxy resolution. After normal processing is complete, the implicit TypeFeaturings and BindingConnectors can be explicitly inserted into the model using the Feature::addImplicitTypeFeaturing and Type::addImplicitBindingConnectors methods.
  2. Automatic Testing. The Maven build has been updated to automatically run unit tests.

2020-12 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 16 Jan 20:59

This is an incremental update to the 2020-11 release. It corresponds to Eclipse plugin version 0.8.0.

Language features

  1. Enumeration definitions. An initial capability has been added for enumeration definitions, as kinds of attribute definitions whose values are restricted to a specific enumerated set.
  2. Metadata annotations. Elements can now be annotated with metadata based on user-defined data types.
  3. Analysis domain models. An Analysis domain library has been added, with the following models:
    • AnalysisAnnotations - Definitions of annotations to support integration with analysis tooling.
    • StateSpaceRepresentation - Initial framework for analyses of a state space and its dynamics.
    • TradeStudies - Framework for analyses carrying out trade-off studies.
  4. Namespaces. Previously, the metaclass Package was the direct superclass of Type, and the package notation was used for packages that were not types. Now, Package and Type are peers, with the common superclass Namespace. The package keyword still denotes a Package, which is a Namespace but not a Type. In KerML (but not SysML) there is also a namespace notation for a Namespaces that is not differentiated as a Package or Type.

Backward incompatibilities

  1. Keywords. The following new keywords have been added as reserved words:
    • KerML: metadata namespace
    • SysML: enum metadata
  2. Systems library packages.
    • The Analyses library package has been renamed to AnalysisCases.
    • The Verifications library package has been renamed to VerificationCases.

Visualization

  1. Tom Sawyer
    • A rake symbol is now shown to indicate that an element has further decomposition.
    • IBDs are now shown as interconnection diagrams inside a frame.

  2. PlantUML
    • Bug fixes.

Technical Improvements

  1. Syntax transformations. Syntactic transformations formerly done opportunistically have now all been moved out of getter operations and are performed solely as part of the derived state computation after parsing (or when otherwise specifically invoked). This eliminates the issues that transactional EMF clients had with unexpected modifications to the model tree.
  2. Travis continuous integration. The repository is now configured to use Travis-CI for continuous integration.
  3. Outline tree view. A bug with the displaying of operator expressions in the outline tree view of the Eclipse Xtext editor has been fixed.

2020-11 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 16 Dec 22:28

This is an incremental update to the 2020-10 release. It corresponds to Eclipse plugin version 0.7.0.

Language features

  1. Verification Cases. The requirement(s) being verified by a verification case can now be identified in the objective of the case using the verify keyword. A verification case is now also expected to return a result of type Verifications::VerdictKind, which is an enumeration with allowed values pass, fail, inconclusive and error.
  2. Required and assumed constraints. Required and assumed constraints in a requirement definition or usage (i.e., those identified with the require or assume keywords) that reference a named constraint but are not given an explicit local name now inherit the name of the referenced constraint.
  3. Quantities and Units Library models for two additional parts of ISO 80000 have been added to the Quantities and Units model library: Part 8 - Acoustics and Part 11 - Characteristic Numbers.
  4. Occurrences model. The Occurrences library model has been updated so that no Occurrence happens before itself and every Occurrence happens during itself.
  5. Type featuring. The new TypeFeaturing relationship has been added to KerML, to allow the declaration that a Feature is featured by a Type without it necessarily being a member of that Type. The FeatureMembership relationship now specializes both Membership and TypeFeaturing.

Backward incompatibilities

  1. Keywords. The following new keywords have been added as reserved words:
    • KerML: featured featuring
    • SysML: verify
  2. Required and assumed constraints. An element cannot be given the same explicit name as the inherited effective name of a required or assumed constraint in the same namespace.

Visualization

  1. Tom Sawyer
    • State model visualization has been added.

  2. PlantUML
    • An option has been added to show nested ports in port compartments.
    • The headers for perform-action and exhibit-state usages have been updated from «performAction» and «exhibitState» to «perform action» and «exhibit state»

Technical Improvements

  1. Non-notifying ELists. Replaced the use of the regular EObjectEList in the return type of getters for derived properties with NonNotifyingEObjectEList. This improves performance by not invalidating Xtext caches, and it resolves (some) problems with using EMF transaction-based tooling with the code.
  2. Implicit Generalizations. No longer physically insert implicit (especially default) Generalizations into the model during name resolution, but, instead, record them separately. This greatly reduces problems with the Xtext lazy linking process and avoids (most) changes to the model containment tree in ways that would be unexpected when using EMF code (e.g., when calling a getter). After normal processing is complete, the implicit Generalizations for a Type can be explicitly inserted into the model using the Type::addImplicitGeneralizations method.
  3. JupyterLab extension. Published the JupyterLab extension to NPM as a package, so that JupyterLab users can install the extension from within their application.
  4. Maven build. Extended the Maven build to include compiling all Xtend code. Since the Java files generated from Xtend code are not persisted in the repository, ensuring they are built avoids having builds outside of the Eclipse environment being incomplete.
  5. XMI deserialization. Fixed a bug that caused the memberName of a Membership to always be set to null when deserializing the XMI representation of a model, even if it was set in the XMI.

2020-10 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 11 Nov 03:42

This release is an incremental update to the 2020-09 release. It corresponds to Eclipse plugin version 0.6.0.

Language Features

There are no new language features in this release.

Visualization

  1. Tom Sawyer. No updates in this release.

  2. PlantUML. PlantUML-based visualization has been significantly updated to more closely reflect the desired graphical representation for SysML v2 and includes preliminary visualizations for all implemented SysML v2 constructs.

Jupyter

  1. JupyterLab. Jupyter integration now supports using SysML v2 notebooks with JupyterLab.

  2. Installer. The Jupyter installer has been significantly refactored, including the installation of the JupyterLab extension for SysML. At the end, the user is also prompted to start JupyterLab, instead of Jupyter Notebook.

2020-09 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 19 Oct 19:50

This release corresponds to Eclipse plugin version 0.5.0. The following are changes since the 2020-06 release (the previous public release).

Language features

  1. Dependencies. Dependencies can now be defined between one or more client elements and one more supplier elements in a model.
  2. Human IDs. A human-specified ID can now be given to any model element (previously such IDs were only supported on requirements). Unlike an element name, the human ID of an element is inherent to that element rather than being relative to some namespace. The human ID of an element can be used as an alias name for it in a qualified name.
  3. Comment Bodies. Comment bodies are now processed to removed surrounding /* and */ markers and line-initial *s, as specified in the initial submission specification.
  4. Documentation Comments. Comments using the doc keyword now identify special documentation comments directly owned by their annotated element. Requirement text is now specified using documentation comments for the requirement, rather than just being the first regular comment.
  5. Textual Representation. Any element can now have a textual representation annotation. In particular, this can be used to give the text for an “opaque” element in a given language.
  6. Subject Parameters. Subject parameters for requirements and cases are now specified as features in the bodies of those elements using the subject keyword, rather than as the first parameter.
  7. Parameter flow-feature syntax. Parameters in general may now be declared inside the body of behavioral elements (actions, states, calculations, constraints, requirements, cases) in the same way that flow features are declared on structural elements, by prefixing the declaration with the appropriate direction (in, out, inout). For calculations and cases, the result parameter can also be so declared by using the keyword return in place of a direction.
  8. Verification Cases. An initial concrete syntax has been added for verification cases, but this is simply a placeholder and not yet fully supported in the language.
  9. View and Viewpoint Modeling. An initial concrete syntax has been added for views, viewpoints and renderings, but this is preliminary and not yet complete.
  10. Quantities and Units. The Quantities and Units model library has been significantly extended to include many quantity kinds and units defined in additional parts of the ISO 80000 standard, including Atomic and Nuclear, Chemistry and Molecular, Electromagnetism, Light, Mechanics, and Thermodynamics (Space and Time was already included in 2020-06).

Backward incompatibilities

  1. Keywords. The following new keywords have been added as reserved words:
    all, dependency, doc, expose, istype, language, rendering, rep, subject, verification, view, viewpoint

  2. Action Syntax. The syntax of named perform, accept and send action usages, and named exhibit state usages, has been changed to be more consistent.

    • perform performingAction as performedAction
      becomes
      perform action performingAction :> performedAction

    • exhibit exhibitingState as exhibitedState
      becomes
      exhibit state exhibitingState :> exhibitedState

    • accept acceptingAction (sig : Signal)
      becomes
      action acceptingAction accept sig : Signal
      (note, in particular, the parentheses are no longer required)

    • send sendingAction of Signal() to target
      becomes
      action sendingAction send Signal() to target

  3. Distinguishibility Validation. A warning validation has been added that checks whether all owned members in a namespace have names that are distinguishable from each other, from the names of inherited members and the human IDs of any owned elements. This check can fail, in particular, if an element is defined with the same name as an inherited element, without explicitly redefining the inherited element.

Visualization

  1. Tom Sawyer
    • Structural modeling has been improved to reflect planned standard visualization for SysML v2.
    • Action compartments are now shown on parts and “performed by” compartments on actions.
    • Small arrows are now shown in ports to reflect flow feature direction.
    • Behavioral modeling has been improved to render control flows and control nodes.

  2. PlantUML
    • Action/activity modeling has been added.
    • Guards and effects are now shown on transitions in state machine diagrams.
    • Alias names are now properly rendered for elements.

2020-08 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 22 Sep 17:15

Internal SST release.

2020-07 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 25 Aug 22:12

Internal SST release.

2020-06 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 16 Jul 02:59

This release corresponds to Eclipse plugin version 0.4.0. The following are changes since the 2020-03 release (the previous public release).

Language features

  1. New definition/usage keywords. New keywords have been introduced corresponding to the consistent definition/usage terminology in the 2020-06 baseline of the abstract syntax. The old keywords still work as synonyms for the new keywords.
    • blockpart def
    • assoc blockconnection def
    • linkconnection
    • value typeattribute def
    • valueattribute
    • activityaction def
  2. Item definition and usage. An item is a model of something that exists in space and time but is not considered to necessarily itself be a system or part of a system. An item may be spatially discrete (like a part) or continuous (like water or fuel), and it may flow through, be stored in or be acted upon by a system.
  3. Case definition and usage. A case is a model of the steps necessary to produce a desired result regarding some subject, satisfying a specific objective. The objective of a case is modeled as a requirement.
  4. Analysis case definition and usage. An analysis case is a case carrying out an analysis on its subject. The steps of an analysis case may be drawn from a set of analysis actions that abstract typical capabilities to be applied by analytical tools during an analysis.
  5. Variability modeling. Any kind of definition or usage may be identified as a variation that models a point at which a selection can be made between a specified set of choices during the configuration of a system. All the members of a variation must be variant usages that model the allowable choices for configuration of the variation.
  6. Succession shorthand. The then shorthand can now be used to show succession between individual usages (particularly snapshots and time slices).
  7. Behavioral usages with direction. It is now possible to declare a direction on behavioral usages (e.g, “in action …”).
  8. Nested behavioral usages. It is now possible to have behavioral usages generally nested in action and state usages (this allows, in particular, the nesting of constraint usages in action and state usages).
  9. Space and time quantities and units. The new package ISQSpaceTime in the Quantities and Units domain library covers all quantities and units defined in ISO 80000 Part 3 Space and Time.

Backward incompatibilities

  1. Keywords. The following new keywords have been added as reserved words:
    attribute, analysis, calc, case, connection, item, objective, return, variation, variant
  2. Direction and end keyword placement. The keywords in, out, inout and end now always come before other keywords. For example, the previously allowed syntax part in x; and part end x; must now be written in part x; and end part x;, respectively.
  3. Behavioral definition and usage specialization. The specialization parts for the declaration of behavioral definitions and usages (actions, states, calculations, constraints, requirements, cases and analysis cases) must now come before the parameter parts. For example, the previously allowed syntax action def A (in x) :> B; and action a: A (in x = y) :>> b; must now be written action def A :> B (in x); and action a: A :>> b (in x = y);, respectively.
  4. Measurement units. Measurement units are now attributes, rather than parts. This is consistent with the ability to perform arithmetic operations on measurement units (e.g., kg*m/s). This mostly affects user models that define new measurement units. Models that simply use standard units from the SI or US Customary Units libraries should generally be unaffected.
  5. Public imports in quantities and units models. The use of public import in the Quantities and Units packages has been limited to the cases listed below. This may result in name resolution errors when reprocessing existing models that import Quantities and Units library models. Such errors can be fixed by either explicitly qualifying the names in question or by importing them directly from the appropriate package.
    • The SI package re-exports names from the ISQ package (e.g., quantity value types, such as LengthValue, etc.) and SIPrefixes (e.g., centi, milli, kilo, etc.).
    • The USCustomaryUnits package re-exports names from the ISQ package.

Validations

  1. Default validation. Previous default metamodel validation checking has been disabled (which greatly reduces the cascade of unclear messages due to small errors).
  2. Typing errors. Validation checks have been implementing for the typing of specific SysML elements (e.g., a port usage must be typed by a port definition, etc.).
  3. Warnings. The following warning validations have been implemented (some of which were previously errors). Unlike errors, warnings do not prevent a model from being fully syntactically processed, though it may not be semantically valid.
    • Connected features should have a common context. This warning indicates that there is no common containing context from which a connector and each of its connected features can be reach by valid ownership paths.
    • Bound features should have conforming types. This warning indicates that the types of the features connected by a binding connector do not actually allow for the possibility of the bound features having common values.
    • Subsetting/redefining feature should not be nonunique if subsetted/redefined feature is unique (previously an error).
    • Subsetting/redefining feature should not have larger multiplicity upper bound (previously an error). This is only checked if the upper bounds are given as literal values.
    • Redefining feature should not have smaller multiplicity lower bound (previously an error). This is only checked if the lower bounds are given as literal values.
    • Owner of redefining feature should be a specialization of owner of redefined feature. A redefinition is supposed to be of a feature that would otherwise be inherited, and inherited features come from the generalizations of the owner of the redefining feature.
    • Owner of redefining feature should not be the same as owner of redefined feature. This also follows from the requirement that a redefinition be of a feature that would otherwise be inherited.
    • A package-level feature should not be redefined (by another package-level feature). A feature that is declared in a package that is not a type is effectively considered to be a feature of the most general type Anything. Therefore, redefining a feature at “package-level” with another feature at package-level would be like redefining a feature with the same effective owner, Anything.

Visualization

  1. Tom Sawyer
    • Tree and interconnection views have been significantly updated based on user feedback.
    • A basic action model view has been added.
  2. PlantUML
    • PlantUML visualization is now available in Jupyter Notebook using the '%viz' magic command.
    • An interconnection view has been added.
    • Errors in state visualization have been corrected.

2020-05 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 11 Jun 14:58

Internal SST release.

2020-04 - SysML v2 Pilot Implementation

Choose a tag to compare

@seidewitz seidewitz released this 16 May 02:39

Internal SST release.