Cameo2026x SysMLv2 Plugin issue quick notes

This page identifies a possible issue, inconsistency, concern, error, or bug!
One of the ways Webel IT Australia helps promote tools, technologies, and languages is by donating a lot of time identifying, tracking, and reporting potential issues, in order to help vendors and developers improve the tools and technologies. In some cases, we also offer workarounds and advice for users. All issues tracked on our public site are offered most constructively and with sincerest gratitude to the tool vendors and technology developers.
DISCLAIMER: Vendors do not officially endorse issue analysis by Webel IT Australia.
Icon class
icon_class
far fa-sticky-note
icon_class_computed
far fa-sticky-note
Note kind
Policy level
Specification keywords
Keywords
Some quick notes from Dr Darren on the Cameo 2026x SysMLv2 Plugin (as of Feb 2026). This web page will be updated (or perhaps deleted completely) as the SysMLv2 Plugin matures.
Please note that these remarks are strictly about the tool plugin implementation so far and NOT about SysMLv2 as a language

SysMLv2 specification page numbers refer to:

To the tool developers. As a long-time Cameo customer and SysML advocate please know that I am most grateful for your efforts so far.

Whilst I am confident the Cameo implementation for SysMLv2 will become very powerful, as it currently stands I would not yet recommend it for use on industrial strength projects unless you have a very large organisation with a large R&D department and can absorb the time it will take for shortcomings to be addressed and spend sponsored time reporting bugs and issues. And you'll need a lot of patience!

My recommendation for smaller organisations for now is to still use the tried and tested SysMLv1 in Magic Cyber-Systems Engineer ® (Cameo Systems Modeler®) (with its wider ecosystem of supporting features) and then rely later on the SysMLv1 to SysMLv2 conversion support (whilst perhaps becoming familiar with the SysMLv2 language in an exploratory spirit as a side-project).

Whilst not as powerful as a fully-fledged IDE, the textual representation code editor is quite good. It has some degree of context awareness and prompting on elements, and collapsible groups. Pre-validation prevents synchronising against invalid sysml code. However, see remarks below about the need for "localised" textual representation code editing (instead of editing code for an entire project).

Some shortcomings AFAICT and suggestions:

The inline parsing of valid SysMLv2 constructs is grossly broken and some valid constructs are taken as element names.
This author assumes that inline parsing support is work in progress; in the meantime use the specification dialog instead.
Not enough of the textual representation notations from the SysMLv2 are supported yet
Recognition of short names seems be faulty.
Not nearly enough drag n' drop support yet.
One has to constantly move between the textual representation view and the model diagrams as not enough is supported graphically
The ability to bind attributes between elements that satisfy requirements and the corresponding attributes of requirements seems to be unsupported including in the textual representation
Support for entry of default and bound values via specification dialogs appears to be broken (one has to use the textual representation
Display Others does not work with multi select
It is not clear how to show alias names on alias relationships
variation part does not show as «variation part» and variant part does not show as «variant part»
Extract Definition is buggy!
It is not clear how show the Package with imported package (nested notation) (see Table 3. Packages – Representative Notation)
It is not clear how show the Pacakage with «alias» member (unowned) notation (see Table 3. Packages – Representative Notation)
The variants and variant parts compartments of p.39 do not seem to be supported yet (although there are other ways of graphically representing the variants)
The relationships compartment of p.39 does not seem to be supported yet (although most relationships can be easily represented graphically.)
It is not clear how to declare an attribute readonly)
It is not clear how to create an «event» relationship from a part to an event occurence (see p.52).
The individual parts compartment (see p.52) is not supported. Just use the parts compartment.
The occurences compartment (see p.52) is not supported.
The timeslices compartment (see p.53) is not supported. Use Display Features.
The snapshots compartment (see p.53) is not supported. Use Display Features.
Inline // code comments (not Comments) get deleted

Note concerning the above that it is not clear to this author whether // inline code comments are officially supported by the textual representation language but they are used liberally in the SysMLv2 specification itself and are useful, but one can always simply use Comment /* ...*/ form instead

There is a real need for portion-wise "local" editing of the textual representation code instead of having to edit the textual representation of the entire model.

The Display -> Relationships -> Display Others feature only handles some cases. For example, relationships between a timeslice and snapshot can't be created using Display Others (use Display Features on the timeslice instead).

BTW Cameo 2026x uses the verbose «individual timeslice occurence» and «individual snapshot occurence» keywords instead of «timeslice» and «snapshot» as shown on p.52 of the spec (it is not known whether Cameo is perhaps more consistent in this regard than the spec).

Some textual representations from the spec that fail completely or have graphical representations that don't correspond with the spec figures,


enum = value1 [unit1];

action def setX(c : C, newX : Real) {
  language "alf"
  /* c.x = newX;
   * WriteLine("Set new x");
  */
}

Given:
package P1 { 
  item A; 
  item B;
  alias  CCC for B {
    doc /* Documentation of the alias. */
  }
  private alias D for B; 
}
The import C below fails:
package P2 {
  private import P1::A;
  private import P1::C; // Imported with name "C". 
  package Q {
    import C; // "C" is re-imported from P2 into Q. 
  }
}
The above works though if you use private import C;.
The following may just be a permissible graphical representation variation point. The representation of multiplicity is "reversed" compared with the SysMLv2 spec figures. Given for example:
part part1 : Part1 [0..1];
The spec represents this as (see Graphical Notation p.38):
«part»
part1: Part1 [0..1]
Cameo represents this as:
«part»
part1[0..1] : Part1
Note however from the spec:
The multiplicity of a usage can be given in square brackets [... ] after the name part of the declaration of a usage (if it is named) or after one of the owned specialization clauses in the declaration (but, in all cases, only one multiplicity may be specified). (This allows for a notation style consistent with previous modeling languages, in which the multiplicity is always placed after the declared type.)

Some feature suggestions

Whilst I can see the benefit of having separate 'Show inherited' for each compartment category it would be good to have a single 'Show inherited all' override.

Whilst the new table generation and customisation system is very powerful it is dire need of improved graphical support (those new to SysML are not going to manage that code based table easily).


Relates to
Related notes
Related notes (backlinks)
Related snippets (extracts)
Visit also
Visit also (backlinks)