Cameo Simulation Toolkit: HOWTO test an EnumerationLiteral value in a (Groovy) script in an OpaqueAction/Behavior. Use kind.name == "value"
SysMLv1: MagicDraw/Cameo: GOTCHA: If you DRAG a Signal onto a Block symbol it will create a Reception. One way to create a Property typed by a Signal is to use a composite Association. Or just create an untyped Property then type it by the Signal.
ISSUE: Cameo Simulation Toolkit: v2024x: Although does not respect inheritance of attributes of Signals on SendSignalAction or un-marshalling AcceptEventAction DOES require them on 'effect' Behaviors.
SysMLv1: Cameo Simulation Toolkit: GOTCHA: Do not use Associations with Signal attributes, they will become null when fed as argument values for Parameters of 'effect' Behaviors of Transitions
SysMLv1/UML2: Whilst fUML does not support InterruptibleActivityRegion, there are still ways to interrupt a StructuredActivityNode in Cameo Simulation Toolkit
SysMLv1.7/fUMLv1.4: Cameo Simulation Toolkit v2024x: Using an extending Enumeration literal as a parameter argument value runs but a WARN is issued.
ISSUE: Cameo Simulation Toolkit: v2024x: Does not show argument Pins corresponding to inherited attributes of Signal on SendSignalAction or an un-marshalling AcceptEventAction. No known UML2.5.1 or fUML-1.4 constraint; no obvious tool display option.
TIP: SysMLv1/UML: Cameo Simulation Toolkit: HOWTO convert an fUML ReadLine CLI String to a Boolean for cleaner DecisionNode tests against a LiteralBoolean [true] guard.
TIP/GOTCHA: SysMLv1/fUML: Cameo Simulation Toolkit: If you have a ControlFlow loop with a DecisionNode test you MUST have a MergeNode for the continuation path ControlFlow (typically entered also from an InitialNode or other loop starting point).
TIP/GOTCHA: SysMLv1/UML: Cameo Simulation Toolkit: If you use a «decisionInputFlow» to a DecisionNode you MUST also have a ControlFlow to the DecisionNode; if you don't use an explicit «decisionInputFlow» you don't need the "extra" ControlFlow
GOTCHA: MagicDraw/Cameo: SysMLv1/UML: The argument context required to see results in Evaluation Mode for custom OpaqueBehavior scripts might not be the same as required for use in an Operation From Model for a Derived Property on a table column
GOTCHA: MagicDraw/Cameo: SysMLv1/UML: If you can extract model info using an OpaqueBehavior and you can see that in the Evaluation Mode in the Expression Editor it might not appear in a column in the Generic Table Diagram because the final Type is not set
GOTCHA: MagicDraw/Cameo: SysMLv1/UML: The 'name' of a Derived Property is parsed and sometimes displayed quite differently in column names. Be careful when mixing lower case and UPPER CASE in the middle of Derived Property names.
Webel: SysMLv1: MagicDraw/Cameo: CON: Using anonymous property and/or action names is not ideal for Element Compartment and Note callout displays when Usage level allocation is used. But allocation table and matrix views are better anyway.
The Webel recipe for pragramatic SE with SysML adopts the MagicDraw/Cameo tool friendly approach of using a SystemContext as 'subject' of top-level UseCases (although using a System as 'subject' can also be used).
SysML: MagicDraw/Cameo: Use query view tables, matrices, and maps, use them a lot! They help communicate well with other stakeholders. Learn how to use the Generic Table diagram type, custom relations, Simple Navigation & Metachain Navigation (expert)!
SysMLv1: MagicDraw/Cameo: HOWTO show "missing" ItemFlows after using Display Related Elements to re-draw Associations and Connectors. Use the 'Show Realised Item Flows' and 'Realize All Item Flows' smart manipulators.
Webel IT's summaries of MagicGrid® for SysML/MBSE with Cameo are offered for the interest of MagicGrid users for informative and educational purposes only. They are not recommendations to use (or not use) MagicGrid, and are not officially endorsed.
Webel: SysMLv1: Overview of annotated Diagram Slides and Note pages related to general high level SysML modelling principles (some specific to MagicDraw/Cameo). Recommended reading for all Webel SysML/MBSE course attendees.
SysML: Cameo/MagicDraw: ItemFlow notation/indication on ObjectFlow edges in SysML Activity Diagrams is a tool-specific feature, although it was proposed and discussed (but DEFERRED) as part of the OMG SysMLv1 Revision Task Force (RTF).
SysMLv1: MagicDraw/Cameo: Having a SystemContext as the 'subject' of each main UseCase plays nicely with the feature for automated creation of usage-level allocation swimlanes in SysML Activity Diagrams for part properties. But it's not the only way.
SysMLv1: MagicDraw/Cameo: Synchronising ItemFlows on Connectors with ObjectFlows in Activities using the Item Flow Manager. Nice!
TIP: Mathematica: The IntelliJ IDEA Plugin for Mathematica is HEAPS better than the Eclipse-based Wolfram Workbench (at least for the Wolfram Language as used by Webel projects)!
TIP: SysMLv1: MagicDraw/Cameo: Activity Diagrams: Consider using the Pin display mode 'Name And Type Labels Inside' for 'Position of Labels'. Dr Darren swears by it!
TIP: UML/SysML: MagicDraw/Cameo: Activity Diagrams: Pins: You can display the 'multiplicity' of the underlying Parameter on Pins symbols using Edit Compartments. (The 'multiplicity' shows anyway if the :Type is shown.)
TIP: UML/SysML: MagicDraw/Cameo: Activity Diagrams: ActivityParameterNodes: Displaying the underlying 'parameter::multiplicity' using Edit Compartments is extremely useful!
UML/SysML: MagicDraw/Cameo: Edit Compartments: ActivityParameterNode: Can't select the 'parameter::multiplicity'? Run the synchronisation between the Activity in the direction Synchronize Activity Parameter Nodes by Activity Parameter then try again!
Mathematica: TIP: Notebooks: Automatic Cell Grouping driving you up the wall? Try Manual Grouping and make it part of your workflow!
Webel: Psy/MPsy: Psychrometrics for Mathematica: '$HC' in a function name indicates pure sensible heating or cooling (with no change in water vapour content). Such functions may also be used in the pure sensible portion of a 2-step treatment.
Cameo Simulation Toolkit: You can use Mathematica as an external maths engine to share maths between an OpaqueBehavior and a ConstraintBlock using custom auto-loaded Mathematica functions (keeps a project nice and DRY and respects Single Source of Truth)
HOWTO: MagicDraw/Cameo: v2022Refresh1: JDK 11 download compatible with the modelling tools AND Apple Silicon (ARM) machines (such as M1 Max)
Webel: SysML4Mathematica: Convention: A Mathematica Blank '_' (which pattern-matches any Expression) is represented by a custom SysML ValueType '_'
SysML1.x: MagicDraw/Cameo: The nested property path concept is implemented using a vendor-specific stereotype extension NestedPropertyPath
SysML1.x: MagicDraw/Cameo: The value property concept is implemented using a vendor-specific stereotype extension ValueProperty
SysML1.x: MagicDraw/Cameo: The shared property concept is implemented using a vendor-specific stereotype extension SharedProperty
SysML1.x: MagicDraw/Cameo: The reference property concept is implemented using a vendor-specific stereotype extension ReferenceProperty
SysML1.x: MagicDraw/Cameo: The part property concept is implemented using a vendor-specific stereotype extension PartProperty
SysML1.x: MagicDraw/Cameo: The block property concept is implemented using a vendor-specific stereotype extension BlockProperty
SysML1.x: MagicDraw/Cameo: The constraint parameter concept is implemented using a vendor-specific stereotype extension ConstraintParameter
SysML1.x: MagicDraw/Cameo: The constraint property concept is (was) implemented using a vendor-specific stereotype extension ConstraintProperty [VENDOR-DEPRECATED]
ISSUE/GOTCHA: MagicDraw/Cameo v2022x: UML/SysML: If you "rename" an ActivityParameterNode symbol on the frame of an Activity Diagram it actually renames the underlying Parameter (only) NOT the name of the ActivityParameterNode element!
SysML/UML: MagicDraw/Cameo: The name of an ActivityParameterNode does not always stay in synch with its Parameter (and it is not always desirable that it does).
SysML/UML: MagicDraw/Cameo: Activity Diagrams: All Pins of CallBehaviorActions and CallOperationActions MUST be displayed (synchronised). All ActivityParameterNodes MUST be shown on the frame of an Activity Diagram.
SysML/UML: MagicDraw/Cameo: GOTCHA: Connecting a typed OutputPin to an untyped (UNSPECIFIED) InputPin with an ObjectFlow changes the type of the InputPin
Webel: SysML4Mathematica: Convention: A '$E' in a function name indicates that all parameters (arguments and return) are Mathematica '_' expressions. However, when representing such functions as Activities they may end up getting strongly typed in tools!
Webel: SysML4Mathematica: Cameo Systems Modeler: Can perform calculations with a custom Quantity ValueType (for Mathematica) directly, but DOES NOT perform units-aware algebra (no automatic conversions)
SysML/UML: MagicDraw/Cameo: To display the body of an OpaqueBehavior on a usage (CallBehaviorAction) in an Activity Diagram use an element property callout of 'Body' into a Note with a handle to the CallBehaviorAction
ISSUE: MagicDraw/Cameo: v2022x Golden, v2022xRefresh1: Comment can't connect anchor to another Comment as annotatedElement
[FIXED in v2022Refresh1]: BUG: MagicDraw/Cameo: 19SP3/v2022xGolden: Activity Diagrams: Pin display mode 'Position of Labels' does not stick, label positions in Diagrams have sometimes moved after re-opening a project [and "FIX"] ARCHIVAL (2022): This content is now considered historical only!
Webel: SysML: MagicDraw/Cameo: Strongly recommend that you set the Perspective to 'Full Featured' and 'Expert' at the very beginning at the start of every new project
UML/SysML: TIP: Using Cameo Simulation Toolkit will strengthen your use of Activity Diagrams even when they are "just" analysis diagrams
Webel: WISHLIST: MagicDraw/Cameo: UML/SysML: Ability to freeze the Feature lines shown on symbols under Edit Compartments so that the diagram does not "break" when new Features are added elsewhere (reduce graphical coupling)
The integration between Wolfram Workbench and Mathematica is partly gammy (as of latest versions 2022-08-23)
MagicDraw/Cameo: 2022xGolden: TIP/GOTCHA: Mac: HOWTO Load the available plugins in the Resource/Plugin Manager
Mathematica: Wolfram Workbench: Sometimes the Outline view gets completely out of sync with the .m or .wl Package code
Mathematica: Wolfram Workbench: Sometimes the code syntax checking goes haywire (with red nearly everywhere) for no good reason (even when the code load and runs fine in Mathematica). WORKAROUND: Just restart Eclipse.
Mathematica: TIP: Try //Dataset on just about anything and be amazed! Click on nearly anything to navigate through nearly anything in impressively interactive human-readable format.
Wolfram Workbench for Mathematica: Limitation: Using more than one '$' sign within function names blocks navigation on function usages.
GOTCHA/BUG: Cameo Simulation Toolkit v2021xR1 + Mathematica: Delegation to Mathematica from ConstraintBlocks FAILS if any of the input or output parameters are larger than 99999 because they get interpreted as 1.0e5 and that trips something! Aarrrggggh!
HOWTO access custom (user-defined) Mathematica functions using Mathematica v13.2 as an external maths engine for SysML Parametrics (ConstraintBlocks) in Magic Model Analyst (Cameo Simulation Toolkit) versions 2021x, 2021xR1, 2022xR1
Mathematica + Magic Model Analyst (Cameo Simulation Toolkit) for SysML Parametrics: GOTCHA: You must use a regular '=' on the SysML side, not the Mathematica '==' (or it will be intepreted as a constraint condition to test, not an equation to solve).
HOWTO use Mathematica v12.3.2 as an external maths engine for SysML Parametrics (ConstraintBlocks) in Magic Model Analyst (Cameo Simulation Toolkit) versions 2021x, 2021xR1, 2022xR1
Mathematica: TIP: Package Editor mode: Use cell division between every function in .wl library files to make them more readable (and to make it easier to apply at least some degree automated code formatting per function).
Webel: Mathematica: WISHLIST: Support for EXTRACTABLE structured documentation for individual arguments of functions RIGHT IN/NEAR THE CODE. Yes it is needed, really it is. (And ::usage support for "methods" would be nice too.)
Webel: Mathematica: WISHLIST: Support for decent vendor-supported, built-in, fully fledged, IDE-friendly, object-orientation (OO)! [With or without the use of state, which is a choice, not obligatory, and OO doesn't throw functional away]
Cameo Simulation Toolkit: v19SP3: GOTCHA/BUG: When a Property is typed by an abstract Block an instance of a concrete specialising Block (where available) will automatically be created and assigned even when the lower multiplicity is 0
MagicDraw/Cameo 19SP3/v2022xGolden: [FIXED in v2022xRefresh1]: Activity Diagrams: Pin display mode 'Position of Labels' does not work correctly for 'Name And Type Labels Inside', only shows the Name inside (not the Label) [and WORKAROUND] ARCHIVAL (2022): This content is now considered historical only!
Cameo Simulation Toolkit: You can assign the results of simulations calculations on instances to the default values of properties of the Classes/Blocks that type the instance.
TIP/GOTCHA: MagicDraw SysML/Cameo: In Parametric Diagrams create BindingConnectors involving part properties by selecting the constraint parameter symbol first and use the smart manipulator (otherwise you might accidentally create a regular Connector)
UML/SysML: MagicDraw/Cameo: 19SP3: Instance Table Diagram sometimes does not display the values for nested value properties
UML/SysML: MagicDraw/Cameo: Instance Table Diagrams are one of the most powerful features of MagicDraw/Cameo! Learn to use them to progressively test, debug, and evolve your models as you work!
UML/SysML: MagicDraw/Cameo 19SP3: GOTCHA/TIP: An Instance Table will not display a row for instances typed by an abstract Class/Block (although one can show such instances as InstanceSpecification symbols on a Class Diagram or Block Definition Diagram)
UML/SysML: Cameo Simulation Toolkit 19SP3: GOTCHA/TIP: ConstraintBlock constraints: Not every available constraint language can handle Enumeration literals (if in doubt choose 'English')
MagicDraw/Cameo: 19SP3: Although a 0..* or 1..* Property can carry more than one value, the interface only permits assignment of a single Property::defaultValue through the specification dialog
UML: Cameo Simulation Toolkit 19SP3: GOTCHA: CreateObjectAction ignores an Artifact as 'classifier' even though Artifact is a Classifier
GOTCHA: UML/SysML: Cameo Simulation Toolkit 19SP3: A [true] or [false] guard on an ActivityEdge MUST be a LiteralBoolean, not just characters typed in, or the evaluation may give unexpected or ill-defined results
UML/SysML: Cameo Simulation Toolkit 19SP3: A parent Activity with a DecisionNode that uses a Activity as a decisionInput Behavior terminates immediately after the decisionInput terminates (but OpaqueBehavior works)
UML/SysML: Cameo Simulation Toolkit 19SP3: GOTCHA: Will not evaluate a guard using a token from a decisionInputFlow UNLESS a decisionInput Behaviour is explicitly defined (but Alf does)
Webel electronics modelling recipe for SysML: Diagrams can be made less verbose by using stereotype icon shape display mode, by not showing names and types on obvious Ports, by hiding context-specific values, and by omitting {net} tagged values.
MagicDraw/Cameo: Rule: Internal Block Diagram and Block structure compartment: only one symbol for a given Property may be shown.
MagicDraw/Cameo: Display option: You can choose whether to show Domain Specific Language (DSL) stereotypes: 'None', 'All', 'Only Last'
Webel Parsing Analysis: If you have a unique URL for a domain source «document» you MAY additionally set it as an external hyperlink in the MagicDraw/Cameo tool (as well as setting it as the unique 'url' tagged value that acts as the '/uri').
Webel Parsing Analysis: As StateMachine Diagrams are always owned by an element that is not eventually under the Source Input Zone they should not be used as «pa» diagrams. Elicit States instead via the /member section of the specification dialog.
MagicDraw/Cameo v19SP3: The display of units can't be disabled on the initialValues compartment for context-specific values, which can lead to inconsistencies when an OpaqueExpression that references value property names is used.
MagicDraw/Cameo v19SP3: UML/SysML: HOWTO Set an OpaqueExpression on a Slot that seems to be stuck on a numerical value.
MagicDraw/Cameo v19SP3: vs SysPhS-1.1: OpaqueExpression for Slot value exports to Modelica as 'null' if only uses a single variable. WORKAROUND/HACK prefix the variable with '1 *' [FIXED in v2021x]
MagicDraw/Cameo v19SP3: vs SysPhS-1.1: Modelica export: Direct binding from a PhSVariable value property within a FlowProperty of a Port to an inner value property does not flatten. WORKAROUND: Use an intermediate constraint property.
MagicDraw/Cameo v19SP3: Does not support display of context-specific values on a FlowProperty symbol within a Port in an IBD
MagicDraw/Cameo: Modelica export: Need environment option to disable generation of layout annotations (not just on individual export dialog)
MagicDraw/Cameo v19SP3+SysPhS-1.1: On export to Modelica sometimes repeats parts of an equation into an extending model.
MagicDraw/Cameo v19SP3+SysPhS-1.1: Does not cleanly export INLINE Modelica 'if/then/else' statements (a.k.a. "switching" form)
SysPhS: MagicDraw/Cameo v19SP3: Export to Modelica does not interpret as 'start' the default on a PhSVariable assigned via ElementValue to a PhSConstant
MagicDraw/Cameo: GOTCHA: When applying a numerical default to a value property make sure the value property has already been typed by Real or Integer (or a ValueType that extends one of them) otherwise it will assign a LiteralString as default.
MagicDraw/Cameo v19SP3: SysPhS: If you have a custom ValueType it MUST extend Real either directly or indirectly or it will not be seen on export to Modelica.
Cameo Simulation Toolkit v19SP3: The "hover" feature for showing values of objects may show duplicates if there are redefined value properties.
Cameo Simulation Toolkit: Before you run a simulation consider enabling Auto Open Diagrams under Environment Options -> Simulation. Alternatively, consider using split horizontal or vertical window groups (if there are only a few relevant diagrams).
MagicDraw SysML/Cameo: If you have a SINGLE Allocate from an Activity to a Block it will set that Block to be the Behavior::/context for that Activity.
MagicDraw SysML/Cameo has a nice feature 'Tools > Delegate Port(s)' accessible from the context menu for splitting Connectors that cross block boundaries into multiple Connectors with "exporting" Ports.
MagicDraw/Cameo: SysML Parametrics: To colour instance table cells to indicate broken constraints you need to create at least one Simulation Configuration Diagram, which loads a validation profile with colour coding rules.
MagicDraw/Cameo v19SP3 vs SysML&SysPhS: Export to Modelica: The exported layout annotations appear to be completely broken (at least vs Wolfram SystemModeler) just de-select generation of them on export.
MagicDraw/Cameo: Display options: On an 'entry', 'doActivity', or 'exit' Behavior of a State you may choose to display the specification code of an OpaqueBehavior or just its name.
MagicDraw SysML/Cameo 19SP3: Sometimes on application of an ItemFlow to a Connector with Ports typed by Blocks or InterfaceBlocks that have a FlowProperty of the same type (but different direction) it shows two ItemFlow arrows
MagicDraw/Cameo v19SP3 vs SysML&SysPhS: The sample project for the Humidifier example uses DEPRECATED FlowPorts (and sets values directly on them in the StateMachines).
MagicDraw/Cameo v19SP3 vs SysML&SysPhS: GOTCHA: Will NOT correctly export a SysML-1.6 «~interfaceBlock» to Modelica (but does cope with a tilde ~ prefix in the name of a plain InterfaceBlock)
MagicDraw/Cameo vs SysML&SysPhS: GOTCHA: Will NOT export a non-normative System «system» block to Modelica, it only recognises a plain Block «block»!
MagicDraw/Cameo: On dragging a Property onto another Property set it as redefining, the multiplicity of the redefining Property is set to [0..*] if the redefined (dragged) Property only has <UNSPECIFED> Multiplicity
WISHLIST: MagicDraw/Cameo: Ability to set project-wide option to NOT set the multiplicity of a redefining Property to [0..*] on using drag-n-drop when the redefined (dragged) Property has <UNSPECIFED> Multiplicity
Webel: UML/SysML: Navigation: ALWAYS offer a way out of a diagram (usually up a hierarchy, but possibly across) using a navigable symbol (linked to a diagram) and/or a diagram symbol. Avoid "cul-de-sacs"! [But beware of shared package cross-dependencies]
SysPhS-1.1: GOTCHA: The term "initial values" is sometimes just used to refer to the start values for a simulation run in Modelica or Simulink. It does NOT always mean the additional context-specific values mechanism of SysML beyond Property::defaultValue
SysML: Using redefined Property and Property::defaultValue to create deep hierarchical value configurations of "initial values" configurations for SysPhS simulation is notoriously fiddly and requires experience and patience. Better tool support is needed!
MagicDraw SysML/Cameo: You can customise the generic query table diagram kind to check that the context Blocks of your Parametric Diagrams only contain BindingConnectors (not Connectors)
MagicDraw/Cameo: v19SP3: Property created by dragging onto a Class or Block a symbol of a Classifier named with a single letter capital name 'N' has a poor name 'N:N'
MagicDraw/Cameo: You can drag a Class symbol onto a Class symbol (in a Class Diagram) or a Block symbol or ValueType symbol onto or Block symbol (in a Block Definition Diagram) to create a new part property or value property
MagicDraw/Cameo: You can drag out a Property (or Port) from a Class or Block symbol to create an Association with the Property (or Port) as one end
MagicDraw/SysML vs SysPhS-1.1: Can't reproduce the "shortcut" property path representation of some properties nested within Ports as shortcut symbols fully inside the diagram frame. (Might be a specification diagram style issue.)
MDSysML/Cameo 19SP3: SysPhSLibrary vs SysPhS-1.1: RealVectorSignalIn2Element extends RealVectorSignalElement not RealVectorSignalInElement, RealVectorSignalOut2Element extends RealVectorSignalElement not RealVectorSignalOutElement (and so on)
MDSysML/Cameo 19SP3 SysPhSLibrary vs SysPhS-1.1: SimulinkBlock and ModelicaBlock specialise ExternalModel not Block
MDSysML/Cameo 19SP3: The SysPhS versions of Conductance, Frequency, siemens, and hertz, are not explicitly provided in the MagicDraw/Cameo model library
MDSysML/Cameo 19SP3: SysPhSLibrary vs SysPhS-1.1: Does not represent the elements in 'Figure 32: Elements for signal flows of electrical quantities'
SysPhS-1.1: Use of 'Criteria = u2~=0' for Simulink for Real.Routing.Switch::u2 inconsistent with BooleanInput of control port Modelica.Blocks.Logical.Switch::u2
SysPhS-1.1 (and MDSysML/Cameo 19SP3 SysPhSLibrary): Use of RealSignalInElement for Real.Routing.Switch::u2 inconsistent with BooleanInput of control port Modelica.Blocks.Logical.Switch::u2
MDSysML/Cameo 19SP3: SysPhSLibrary vs SysPhS-1.1: Continuous.Integrator is missing the 'init' PhSConstant (maps to y_start in Modelica)
SysPhS: MagicDraw/Cameo: In the sysphs_profile the properties for PhSVariable have multiplicity [1], so the defaults always appear explicitly (but may be overridden): isContinuous: Boolean = true, isConserved: Boolean = false, changeCycle: Real = 0
MDSysML19SP3: Validation engine does not report value properties with AggregationKind other than composite
MagicDraw SysML/Cameo: 19SP3: Does not seem to support export to Modelica from a Package [use a SysML Block as root instead]
MagicDraw SysML/Cameo: SysPhS: Export to Modelica: It does not seem to matter whether you give the language of Constraints as 'Modelica' or 'sysphs' (although SysPhS specifies a restricted SysPhS expression grammar)
MagicDraw SysML/Cameo: GOTCHA: A Constraint created and applied to a ConstraintBlock via the sidebar menu is NOT owned by the ConstraintBlock!
MagicDraw SysML/Cameo: 19SP3: Export to Modelica from TestBed (for SignalProcessor) sample does not validate in Wolfram SystemModeler
MagicDraw SysML/Cameo: 19SP3: Export to Modelica from SysPhS sample for HumidifierSystem does not execute in Wolfram SystemModeler Simulation Centre
Cameo Simulation Toolkit matches the Parameters of an effect Behavior and a trigger Operation on a Transition under the hood.
Cameo Simulation Toolkit: GOTCHA: In the Variable pane reference properties are hidden by default (show them using the Options pulldown menu)
BUG: Cameo Simulation Toolkit 19SP3: StateMachine: Crashes with an irrelevant "memory error" report if you fire a signal Trigger during execution of an 'entry' Activity with a timer
UML-2.5.1 does NOT permit a trigger or guard on a Transition from an initial pseudostate in a StateMachine but Cameo/MagicDraw does (please avoid).
Cameo: You can create a Simulation Configuration element in a Simulation Configuration Diagram (and you may then copy it to a BDD or Package Diagram if desired).
MDSysML/Cameo: Unless a custom ValueType is otherwise specified through specialisation it is behaves like a Real for the purposes of data entry for value properties typed by that ValueType
MagicDraw/Cameo: A structured ValueType can have value properties (each typed by a ValueType), but they list in an 'attributes' compartment (not a 'values' compartment)
In Package Diagrams and Block Definition Diagrams use the owner indicator display option for Classifier symbol headers to indicate the owner (except where a containment operator suffices). The mode 'Below Element Name' is preferred.
GOTCHA: Cameo: If you run a parametrics calculation from an instance symbol in a diagram it will just show computed values in the simulation window; if you run from an Instance Table diagram it will populate the instance Slots with the computed values.
MagicDraw/Cameo: HOWTO share a "Block-to-Block" ItemFlow - that was created by 'Between Part Types' mode - between two Connectors. (FYI only, not a Webel-recommended technique.)
Webel: SysMLv1: MagicDraw/Cameo: AVOID the "default" SysML Item Flow Creation Mode 'Between Part Types' completely. Use 'Direct' mode, change it as soon as you start any SysML project under Options → Project → General → SysML [Helps prevent a clash/issue]
SysMLv1: MagicDraw/Cameo: If redisplay of an Association with an InformationFlow or ItemFlow creates a strange extra dashed line with «ItemFlow» keywords (separate from the Association) just remove (only) that extra dashed line from the diagram.
Webel: MagicDraw/Cameo: STRONGLY RECOMMEND: On EVERY project of ANY kind set the Environment Perspective to 'Full Featured' and check the Expert box, even if you are a "novice". For SysML use 'Full-Featured' not just 'System Engineer'!
Cameo/MagicDraw: The Classifier specification setting 'isAbstract' is (for reasons that beggar belief or engineering reason) not by default visible in the Element specification dialog. Enable expertise level 'All' (and for always everwhere).
Webel: MagicDraw/Cameo: Set EVERY element properties & symbol properties filter to 'All' (yes, not just 'Expert', to 'All', even if you are a "novice" on your first project) in EVERY dialog and every project option setting. Use the search filters!
MagicDraw/Cameo: You can control how or whether applied Sterotypes are displayed on most Element symbols using the 'Show Stereotypes' display option (and in some cases this affects how the entire symbol is displayed).
MagicDraw/Cameo: You can assign values to 'tagged values' of Stereotypes via the Tags section in the specification dialog. Make sure you have one of the 'On Shape' or 'In Compartment' Show Tagged Values display options enabled.
MagicDraw/Cameo: You can assign or un-assign one or more Stereotypes to one or more selected Elements at once using the 'Stereotype' context menu item
MagicDraw/Cameo: You can drag-n-drop most applicable Stereotype types from the model browser onto an Element's symbol in a Diagram to apply it to that Element (does not work in all cases).
MagicDraw/Cameo: You and can drag-n-drop the icon for most Diagram types from the model browser onto a symbol in a Diagram to make it the default hyperlink for that Element; clicking on that Element symbol will then open up that Diagram.
MagicDraw/Cameo: You and can choose which Features, element properties, or tagged values of Stereotypes to show on most symbol compartment types
ALL Model-Based Engineering: Just because you can't see a Feature or some other aspect of a SysML (or UML) Element in a tool on a symbol does NOT mean it does not exist in the underlying model (repository)! The model is not just what is DISPLAYED!
Rule #1: A UML or SysML Element in a tool is NOT just an Element symbol in a diagram! A Note is not an Element (compare with a Comment).
MagicDraw/Cameo: Keep most elements out of the top-level of a project (i.e. not directly under the project Root). Have one top-level index/content/package diagram.
Webel: Recommend maintain a basic black-and-white style file for starting new projects. Webel course attendees have access to a basic Webel.stl file (or clone and tune the 'OMG SysML style').
Webel: MagicDraw/Cameo: First recommended display style settings and project option steps for every SysML (and UML) project. [Includes TIP: DO NOT show the Diagram Name in the optional Diagram Info adornment, show it on the Diagram frame only]
MagicDraw/Cameo: GOTCHA: ‘entry’, ‘exit’, ‘doActivity’ are all subsets of ‘ownedElement’; to use an existing Activity without changing its owner you need to create a “wrapper” Activity. Beware the tool does not simply move your Activity!
MagicDraw: Has an additional tool-specific notation and feature sometimes called "ball-and-socket dependency wiring" for use with provided and required Interfaces in Class Diagrams and some other definition-level diagrams.
MagicDraw/Cameo: The context menu item 'Tools > Define Context-Specific Value' will only ever be available in an Internal Block Diagram on a part property symbol typed by a Block that has a value property!
MagicDraw/Cameo: The context menu item 'Tools > Define Context-Specific Value' will only be available UNTIL you have assigned one! Thereafter it does not appear anymore because the tool will have already created a tree of instances to carry the values.
MagicDraw/Cameo: For context-specific values you do not have to deal with fiddly instances, you can edit the values directly in the 'initialValues' compartment! Enable 'Tools > Define Context Specific Initial Value' on a part whose Block has a value.
MagicDraw/Cameo: By default assumes custom units are both Unit and DerivedUnit and that quantity kinds are both QuantityKind and DerivedQuantityKind. Just remove the "Derived" variants if they don't apply and add the "Simple" variants.
MagicDraw/Cameo: The ordering of feature in a SysML IBD :features compartment may differ from that in its defining Block (and there are no corresponding display options for controlling sorting).
MagicDraw/Cameo: BUG: Sometimes the 'Show Inherited' display feature does not work immediately on Class and Block compartments or SysML IBD :features compartments unless you toggle a compartment (close then re-open it).
MagicDraw/Cameo: When you create an InstanceSpecification in a diagram it will a Select Classifier dialog. It is often faster to Cancel that and then just drag a Classifier onto the instance symbol from the diagram or model tree.
MagicDraw/Cameo: The display option 'Show Value Type Units' does not seem to work on the Slots of an InstanceSpecification in a BDD
MagicDraw/Cameo: In a BDD the diagram sidebar menu item for Enumeration is a UML Enumeration with ValueType applied (so properties typed by it will list as value properties in the 'values' compartment on a Block).
MagicDraw/Cameo v19SP3: The SysML 'properties' compartment of a ValueType is called 'attributes' like in UML2.5.1 for DataTypes [CLAIMED FIXED in v2021x]
MagicDraw/Cameo has many tool-specific Stereotype icons, most of which can be hidden in most diagrams using Stereotype and icon display options.
MagicDraw/Cameo: If you want to show a Property or Port listed both in its corresponding compartment on a Class or Block symbol and as the end of an Association in the same diagram, set the display option Show Association Ends As Attributes/Ports to 'all'
MagicDraw/Cameo: If you can't find Usage on a particular diagram just use a Dependency then the refactor context menu item.
MagicDraw/Cameo: You can set a Property as redefined/subsetted by another in a Class Diagram or BDD by dragging its label from an Association end onto the label of another Property on an Association end then choosing 'Set As Redefined/Subsetted Property'
MagicDraw/Cameo: Has a symbol display option 'Show Inherited' applicable to (amongst others) Features of Class and Block symbols, Property symbols, and underlying Featured of Property symbols in SysML IBDs when using SysML Feature Compartments
MagicDraw/Cameo: Does not show the “structure” label at the top of an internal structure compartment.
MagicDraw/Cameo v19SP3: uses the Block compartment name 'signal receptions' instead of just 'receptions'. [CLAIMED FIXED in v2021x]
MagicDraw/Cameo: You can set many fields in an Element's specification dialog just by dragging compatible elements from the model browser onto the value area of the field.
MagicDraw/Cameo: supports HTML hyperlinks directly on model elements, and they are launchable from model element symbols in diagrams.
MagicDraw/Cameo: supports HTML (including hyperlinks) in String based tagged value (Stereotype property) fields. Just activate HTML mode during tagged value editing.
MagicDraw/Cameo: The apparent grouping of member elements under an ElementGroup node in the model tree can cause complications for searching and for the Cameo Collaborator exports.
Webel Parsing Analysis: If you are processing lots of text from one source «document» create a STUB «snippet» with that «document» set as 'source' and just make copies of it in the model browser as needed. Big time saver!
Webel Parsing Analysis: If you wish to show a «snippet» comment symbol (with its body text) in a presentation diagram (that is NOT a «pa» diagram) remove the '/member' tagged value from display so the only visible tagged value is 'source'.
In MagicDraw/Cameo the dashed line symbol from a UML Comment or SysMLv1.x ElementGroup to an annotatedElement is called an 'anchor'.
MagicDraw/Cameo: Many table cells are interactive! You can, for example, edit the 'name' of elements. Most columns are also sortable. And you can navigate from element cells to elements in the model browser via context menu items.
MagicDraw/Cameo: The default swimlanes in SysML Activity Diagrams are AllocateActivityPartition swimlanes with the «allocate» keyword applied.
MagicDraw/Cameo: In SysML Activity Diagrams you can only set the allocation mode in to 'usage' or 'definition' for an entire AllocateActivityPartition group at once, not for individual AllocateActivityPartition columns or rows.
MagicDraw/Cameo: The Allocate relationship is available on many element kinds on most SysML diagram types as a smart manipulator (click symbol once then look at right of symbol).
MagicDraw/Cameo: The Allocate relationship is available in all SysML diagram types under the Common sidebar menu group (but you can only use it to make allocations between elements that both appear in a given diagram).
MagicDraw/Cameo: You can allocate an Action to any NamedElement in the model via its specification box under the Allocations section by dragging and dropping an element (such as a part Property) from the model browser onto the Allocate To field.
MagicDraw/Cameo 19SP3: The property path in callout does always correspond to the SysML spec examples.
MagicDraw/Cameo: Use a Customization to set the «keyword» on a custom Stereotype. Make sure to save, close, then re-open the project afterwards!
MagicDraw/Cameo: You can easily create your own extensions of Block to act as subjects of UseCases. The tool knows how to handle the rectangular ‘subject’ notation on Use Case Diagrams
MagicDraw/Cameo: Learn how to effectively use and customise the powerful table, matrix, and relation map diagrams and how to create custom queries, implied relations, and custom properties. It will open up a whole new world of enjoyable power modelling!
MagicDraw/Cameo can parse the 'text' field of some mathematical Requirements and populate the constraint (and also then the constraint parameters) of a ConstraintBlock that refines a Requirement (your mileage varies).
MagicDraw/Cameo: The default 'Implied Satisfy' relation will claim a Requirement is satisfied by any direct composite aggregation parent Block or composite aggregation ancestor Block of a part property
MagicDraw/Cameo does not explictly support tracking of satisfaction and verification of composite/compound requirements, but the "implied relations" facility can help.
Magicdraw/Cameo has a powerful "implied relation" facility for use in query tables, dependency matrices, and as element properties
MagicDraw/Cameo: If a particular symbol for a tool does not support compartments for the requirements relationships 'refines', 'satisfies', 'tracedFrom' and 'verifies' use a callout into a Note instead
MagicDraw/Cameo: If you must use the Documentation field in the specification dialog for a Requirement element DO NOT use it to state the Requirement because that is WET not DRY. Instead just use the Requirement 'name' and/or the 'text'.
MagicDraw/Cameo 19SP3: Validation of required and provided Interfaces proxied between a ProxyPort and a part with a compatible contract fails
MagicDraw/Cameo 19SP3: Does not yet handle Property-wise Type compatibility validation of FlowProperty contracts (it only handles them at the level of entire Block types). Webel asserts the spec is inconsistent w.r.t. ProxyPort connection compatibility.
MagicDraw/Cameo: Using the display option to show labels inside Port rectangle symbols or to use SysML compartments on Port symbols hides any flow direction indicators.
MagicDraw/Cameo: HOWTO get back an InformationFlow or ItemFlow when it vanishes from a redrawn Connector. Use the 'Show Realised Item Flows' and 'Realize All Item Flows' smart manipulators!
In MagicDraw SysML or Cameo Systems Modeler if you drag a Classifier onto an Association or Connector, it will in fact create a SysML ItemFlow not a UML InformationFlow
MagicDraw UML/SysML/Cameo 19SP3: Sometimes on application of a named Association as the Type of a Connector that already has an InformationFlow (or ItemFlow) applied, the direction of the InformationFlow (or ItemFlow) indicator swaps.
MagicDraw/Cameo: You can easily find all elements a Stereotype has been applied to using Edit > Find OR via a Generic Table Diagram with the Stereotype as the 'Element type' (with or without sub-types).
MagicDraw/Cameo 19SP3 still supports the DEPRECATED UML Port conjugation (but it is recommended here that you DO NOT use it, even though there might be future migration for such directly conjugated Ports).
MagicDraw/Cameo: Stereotypes should be created/managed in UML Profile Diagrams and owned by Profile packages, but Stereotypes and Metaclasses can be displayed on UML Class Diagrams and SysML Block Definition Diagrams
[HISTORICAL] MagicDraw/Cameo 19SP3: Does NOT yet support ~InterfaceBlock [NOW SUPPORTED in 2024x Golden] ARCHIVAL (2023): This content is now considered historical only!
MagicDraw/Cameo: To callout the element properties of Diagram's context Element into a Note in that Diagram use the context menu item Represent Diagram Context on the Note!
MagicDraw/Cameo: Does not copy identical text from a supplier Requirement to a client Requirement on application of the Copy relationship (but DOES offer to fix it when the validation engine warning fires).
MagicDraw/Cameo: How disable icons in requirement relationship compartments and tagged values compartment on Requirement symbol?
MagicDraw/Cameo: By implementation the name of some Stereotype attributes and operations is UpperCase instead of lowerCase like in the UML and SysML specs
MagicDraw/Cameo: One can choose between 'usage' level or 'definition' level allocation modes on AllocateActivityPartition swimlanes. The setting always applies to all AllocateActivityPartition items in one Activity Diagram at once.
MagicDraw/Cameo: Uses the lowerCase keyword «valueType», the SysML spec has «ValueType» in some sample figures
MagicDraw/Cameo: For the "rake" symbol to show on a CallBehaviorAction typed by a Behavior you must have the Show Rake Icon display option on AND the Behavior must have a Diagram (such as an Activity Diagram)
MagicDraw/Cameo: Supports embedding of one or more Diagrams in another via the Diagram Overview feature. Awesome!
MagicDraw/Cameo 19SP3: enumeration 'FeatureDirection' should be 'FeatureDirectionKind' (reflects known error in older SysML specification versions)
MagicDraw/Cameo: SysMLv1.x: ValueType naming: The ISO-80000 libraries use 'lower case' (sometimes with spaces for compound units and/or with [scaling] indicated in square brackets).
UML4SysML is a specification abstraction (concept) only, it does not find direct expression (such as via a namespace) in tools like MagicDraw/Cameo
MagicDraw/Cameo: Does not seem to support showing a trailing colon ':' in labels of Properties or Connectors that are untyped OR are typed by anonymous Classes, Blocks, or Associations. (The notation is used in some SysML specification diagrams.)
MagicDraw/Cameo: You can edit context-specific values (initial values) directly in an IBD by using the context menu item Tools > Define Context Specific Initial Values on appropriate blocks; once activated you can edit the values directly like Slot values
MagicDraw/Cameo: To show the type of initialValues (context-specific values) use the display option Show Slot Type
MagicDraw/Cameo: 19SP3: Callout of allocatedFrom on Connector vs ObjectFlow shows «decisionInputFlow» not «objectFlow» keyword
MagicDraw/Cameo 19SP3: Can't callout from ItemFlow on Connector, the Note handle pulls from the Connector not the ItemFlow
MagicDraw/Cameo: HOWTO redisplay the name and type of a SysML ItemFlow on a Connector if it vanishes (such as when the Connector is redrawn)
MagicDraw/Cameo 19SP3: If Continuous or Discrete are applied to the underlying Parameter of an InputPin or an OutputPin the keywords «continuous» or «discrete» can't be displayed
MagicDraw/Cameo 19SP3: if Continuous or Discrete are applied to the Parameter of an ActivityParameterNode the keywords «continuous» or «discrete» can be optionally displayed on the ActivityParameterNode symbol
MagicDraw/Cameo: If the underlying Parameter of an InputPin or OutputPin on a CallBehaviorAction or CallOperationAction is set to streaming, the indicator {stream} optionally displays on the Pin
Webel recommends when using MagicDraw/Cameo: AVOID the "elided Pin" abstract ObjectNode notation on Activity Diagrams, use explicit Pins!
[BUG: FIXED]: MagicDraw/Cameo SP193: Offers the display option to show the name and type label inside a Pin symbol, but it does not seem to work. [FIXED since 2022xRefresh2] ARCHIVAL (2022): This content is now considered historical only!
MagicDraw/Cameo: ERROR: Incorrectly uses 2 ObjectFlow edges and a CentralBufferNode in place of "elided Pin notation" instead of an abstract ObjectNode symbol and 2 arrow symbols (that are supposed to represent together 2 Pins and 1 ObjectFlow edge)
MagicDraw/Cameo 19SP3: Does not seem to directly support compartment for decomposition of Views as properties of Views (but one can create properties in an IBD and they will show in the 'attributes compartment')
MagicDraw/Cameo: Offers a customised Views and Viewpoints Diagram type with dedicated menus and some Viewpoint types.
MagicDraw/Cameo: To access the Expose relationship use a View and Viewpoints Diagram (non-normative) or create a Dependency in a Package Diagram then use: Refactor > Convert To > Expose
Showing lots of Expose relationships can be unwieldy! Consider instead just showing them in a compartment once they have been created (then remove the relationships visually from the diagram)
MagicDraw/Cameo: you can make relationships between elements that are not visible in one diagram using the Relations section of the specification dialog for an element
MagicDraw/Cameo: HOWTO Create a nested Property "shortcut" symbol with a dot property path in a Parametric Diagram or Internal Block Diagram
MagicDraw/Cameo 19SP3: Does not yet handle Feature-wise validation of provided/required DirectedFeature contracts (it only handles them at the level of entire Block types). Webel asserts the spec is inconsistent w.r.t. ProxyPort connection compatibility.
MagicDraw/Cameo: the (not so well named) "Enable Parts Compartment" feature on Ports is highly recommended and can make diagrams much easier to read.
In MagicDraw/Cameo an assigned stereotype of a Classifier that types an instance-like element (such as a part Property) "shines through" unless it has an instance-level stereotype assigned. This is sometimes called a "secondary stereotype".
HSUV trail slide: Figure D.4: IBD: Could not show Connector typed by an anonymous Association as 'connectorName:' with trailing colon
MagicDraw/Cameo: the coloured stereotype icons for some kinds of elements can't be removed from all diagrams, tables, or matrix views
Magicdraw/Cameo has powerful relationship Dependency Matrix diagrams, and in many cases one can assign or remove relationships directly in the cells of the matrix just by clicking!
MagicDraw/Cameo query tables use a single row (with a group of elements) to represent multiple targets/hits from a relationship, rather than one row per hit.
SysML: The «system», «subsystem», «external», «domain» and «system context» keywords are for "user defined" block Stereotypes (they are not part of core SysML); they are supported in MagicDraw/Cameo as Non-Normative Extensions.
In MagicDraw/Cameo one can display many element properties (and metamodel properties) directly in compartments on most element symbols
In MagicDraw/Cameo one can "call-out" many element properties (and metamodel properties) into a Note using the Edit Compartments context menu item
Webel: SysMLv1/UML: MagicDraw/Cameo: AVOID the the vendor-specific «useCaseModel» stereotype for Model packages, it leads to confusion with the rectangular 'subject' notation
SysML: MagicDraw/Cameo: DO NOT use the FlowPort or FlowSpecification menu items or smart manipulator items they are completely OBSOLETE (they create fully DEPRECATED SysML model element types)! Use FlowProperty on Block features instead.
There is no ElementValue in UML-2.5.1 (although one has been proposed) it is an extension used by the MagicDraw tool family for handling tagged values
Style: use line width 2 or 3 on the border of the "focus" element in "focus" diagrams (such as the main Block or Class of a dedicated Block Definition Diagram or Class Diagram)
SysML: MagicDraw/Cameo: Diagram Style: Recommend DO NOT use shadows or gradient fill adornments on diagrams! [TIP OFTEN IGNORED]
Webel: SysML symbol colour styles: Recommend use black symbol borders and no symbol fill (or white symbol fill) EXCEPT for special highlighting. Recommend DO NOT use the default VENDOR-SPECIFIC line and fill colours for symbols! [TIP IS MOSTLY IGNORED]