Mathematica: GOTCHA: If a function is used to generate a control specification (or a grouping of control specifications in a layout) under some circumstances an 'Evaluate@' must be applied to the function for the control specification to be accepted.
Webel: Mathematica: Packages that import the Webel HelpF` package (but not MTools and the Webel HelpM` package) should use the 'usageF' function for ::usage String generation (rather than the 'docF' and 'docV' functions) and an AOR Map.
Cameo Simulation Toolkit: HOWTO test an EnumerationLiteral value in a (Groovy) script in an OpaqueAction/Behavior. Use kind.name == "value"
Webel: SysML/MBSE: Suggest don't fuss about ownership (containment) too much early on. Focus on "logical" modelling, values, flows, relationships between elements. Suggest perform regular separate modelling "housekeeping" sweeps to deal with ownership.
Webel: SysML: If you are working within a self-contained model you may freely include diagrams icons for navigation and model elements from other Packages in a Package Diagram or "focus" BDD but beware of breaking Shared Package and library dependencies!
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.
SysMLv1/UML2: Whilst fUML does not support InterruptibleActivityRegion, there are still ways to interrupt a StructuredActivityNode in Cameo Simulation Toolkit
SysMLv1: Cameo Simulation Toolkit: 2024x: GOTCHA: SendSignalAction: Nested Ports won't appear in the selection dialog for 'onPort' (or work for Drag n' Drop) unless «InvocationOnNestedPortAction» has been applied (they are filtered out).
Cameo Simulation Toolkit includes a (basic) TimeEvent, but fUML-1.3/1.4 does not. There are many different supported time units for duration constraints, and you can also use property values in durations.
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
SysML: HOWTO Represent a person as an external block-based SysML «actor» in one lower context and as an internal participating «person» in another higher context, with traceability. For modelling systems of systems in a team with many modellers.
Dr Darren's strategies for effectively introducing SysML for MBSE on your projects and the importance of extracting incremental benefit from the powerful SysML language and MBSE tools
SysMLv1: TIP: You can strengthen the ill-defined semantics of Property 'aggregation' (an AggregationKind) by applying custom Stereotypes to a Property, documented with its intended use. Not perfect, but better than not. EXAMPLE: «assembled»
Webel: SysML: SE: A functional analysis «whitebox» Activity may have swimlanes that Allocate to logical subsystems (logical handlers) within the 'problem' zone or to design/implementation level blocks.
Webel: SysML: SE: The custom Stereotype keyword «whitebox» applied to an Activity indicates that it is part of the functional analysis breakdown serving a «whitebox» «scenario» Activity (directly or indirectly) for a UseCase.
Webel: SysML: SE: «blackbox»: The custom Stereotype keyword «scenario» indicates a Behavior (Interaction as Sequence Diagram or Activity) that Refines a top-level UseCase within the 'problem' zone.
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).
The Webel recipe for pragramatic SE with SysML omits many of the concerns addressed by fully-fledged systems engineering frameworks. Many of these can be partially addressed by using custom Stereotypes for extraction using query view tables.
Webel: SysML: SE: The custom stereotype keyword «design» covers elements involved with BOTH design and/or implementation aspects in the 'solution' zone. (In more comprehensive SE methodologies design and implementation are often treated separately.)
Webel: SysML: SE: Stereotype keyword convention: BY DEFINITION HERE «blackbox» and «whitebox» refer specifically to the 'problem' zone and NEVER the 'solution' zone (as opposed to more general uses of the terms 'black-box' and 'white-box').
Webel: SysML: SE: Naming convention: «whitebox»: A '$' prefix indicates a «logical» system, «logical» subsystem (aka conceptual subsystem) or «logical» handler Block (which is a more specific form of «logical» subsystems Block).
Webel: SysML: SE: Naming convention: '0' used for a Package/Model name indicates a zone dedicated to a formal systems engineering breakdown (functional analysis, blackbox, whitebox, logical vs design or implementation etc.)
Webel: SysML: Use concise Package and Model naming to provide "context aware" owner paths that reflect a systems engineering strategy. Extremely so-called "human friendly" verbose Package/Model names with spaces DO NOT make the model easier to understand!
Webel: SysML: "Really long human friendly element names with spaces make my diagrams easier to read". Dr Darren says "No they don't! Prefer code-like naming (or anonymous for typed elements) wherever possible. Use custom tagged values for other names!"
Webel: SysMLv1: Recommend using Block Definition Diagrams as associative, graphical engineering "scratchpads" FOR YOU; Use Internal Block Diagrams as the main presentation diagrams for your engineering colleagues and other stakeholders!
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)!
Webel: SysMLv1: TIP: Use semantically meaningful Association names and/or custom Stereotypes where applicable. They can also often be used as pseudo OWL/RDF semantic triples. But don't use Association names where an ItemFlow can capture an exchange item!
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: SysMLv1: Functional analysis (isolation of white-box Activities identified via «blackbox» scenario Activities of UseCases). Recommend custom stereotype them. Candidate: «whitebox» (or a recommended SE methodology stereotype).
SysMLv1: MagicDraw/Cameo: Oh no, I lost my part or reference property? Where did it go? The Symbol Properties option for 'Show Association ends as Attributes' may help you find it!
SysMLv1: A part Property or reference Property is not necessarily a 'memberEnd' or 'ownedEnd' of an Association ('association' or 'owningAssociation'). But an Association always as at least 2 'memberEnd' Properties. (With some MagicDraw/Cameo tool tips.)
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.
Webel: SysML1.7: Port contract matching is Feature-based, not Type-based. There's nothing particularly magical or special about use of an ~InterfaceBlock on a "conjugating" SysML Port, it's just a convenient way of managing one-to-one Feature matching!
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!
Webel: SysMLv1: TIP: Consider using high level "communication" Associations between Blocks in BDDs and corresponding object diagram BDDs WITHOUT any Ports, with Links typed by the Associations. Object diagrams are great for exploring Slot values, too.
Webel: SysMLv1: TIP: Consider using high level "communication" Associations between Blocks in BDDs with ItemFlows and corresponding context IBDs WITHOUT any Ports, with Connectors typed by the Associations (as well, in parallel with your port-based IBDs).
SysMLv1: An ItemFlow without an assigned 'itemProperty' is sometimes informally/casually referred to as an "information flow", especially when applied to an Association (because it is much like a UML InformationFlow), but formally it is a SysML ItemFlow.
SysMLv1: MagicDraw/Cameo: INTRINSIC GOTCHA: Care must be taken with ownership of Activities used as UseCase scenarios vs the ‘subject’ of the UseCase. Make sure you don’t get an Activity ‘context’ mismatch! It's up to you to manage it as intended.
SysMLv1: MagicDraw/Cameo: Automated creation of usage-level allocation swimlanes in SysML Activity Diagrams for part properties of a Block. EXAMPLE: A UseCase scenario within a SystemContext as UseCase ‘subject’.
SysML/MBSE: Many videos, tutorial slides, and guides to MBSE with SysML present particular modelling recipes as though they are THE way to do something in SysML, not just ONE way of doing it in SysML. They are not necessarily enforced by the SysML spec.
SysMLv1: UseCase scenario representations: On use of Activity Diagrams with swimlanes and/or Sequence Diagrams (Interactions): Actor or block-based custom «actor» on 1st (typically left) Lifeline/Swimlane, System/Subsystem on 2nd Lifeline/Swimlane
Webel: MBSE: SysMLv1: Prefer a custom «actor» extension of a Block (such as the non-normative External) over UML-style Actor for use as parts in IBDs and on allocation swimlanes. You can also have a Trace from a block-based «actor» to a UML-style Actor.
Webel: SysML for MBSE: The frequent recommendation that each UseCase have at least one "primary" scenario is a very useful and highly recommended CONVENTION (only). But it is not actually enforced by the SysML1.7 or UML2.5.1 metamodels or specifications.
Webel: SysML/UML: Dr Darren explains HOWTO use concise 'i'/'o' (input/output) Pin and Parameter naming conventions to promote a signal processing mindset in Activity Diagrams. And HOWTO get them compact.
Webel: SysML: TIP: Try "reverse" time ordered effect-from-cause Dependencies. Because it's harder to depend on something that does not already exist!
Webel: SysMLv1: Dr Darren for LinkedIn: On "Trusting The Type" and avoiding unnecessary verbose repetitive Property names ... unless you really, really need them and really do have reasons to use them, and then only use concise role indicators anyway!
Mathematica: SUPER TIP: Use CreateUUID[] to trigger recalculation against Once[] to create a flexible optionally caching function! (May incur a memory penalty, consider also using a 'loc' persistence location.)
Mathematica: TIP/GOTCHA: When using a Table loop variable within a Module always declare a module variable for it or you can get very hard to track side-effects elsewhere in your project due to exposed scope. Yes, it's obvious (yet easy to miss).
Mathematica: Webel: A concise i:/o: notation is often used for indicating input/output cells in Mathematica notebooks in Webel's online help pages and tutorials, instead of 'In[n]:=' and 'Out[n]='. (Also learn how to hide them completely in notebooks.)
Mathematica: Webel ADT pseudo classes: TIP: Prefer the Decorator Pattern over multiple inheritance of ADT-Method UpValues! (But not because "inheritance is evil" per se, it isn't.) The base ADT libraries make heavy (and very useful) use in inheritance.
Mathematica: Webel ADT pseudo classes: A tricky POLICY & CONVENTION: Client packages MUST access the special "wrapped" primary '$$' via $ContextAliases! The recommended alias is "A`" (which stands of course for ADT).
Mathematica: Webel: You get compelling incremental value out of Mathematica even if you don't yet command all of the syntax and massive powers of the Wolfram Language!
Mathematica: GOTCHA: The Module/With system (especially under rewriting when nested) can leave variables with a trailing '$' suffix, which may cause name clashes because the variables (expressions) are available later outside the scope of the Module/With!
TIP: Mathematica: Webel's ultimate guide to using Abstract Data Types to create "pseudo classes" (strong types) with inheritance for the Wolfram Language, all modelled in SysML!
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: 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: SysML4Mathematica: Does every bit of the Mathematica code need to be modelled in SysML? No. Typically just the main function parameters and their interdependencies, data structures, and main code logic. Except for special or educational purposes.
Psychrometrics: Calculations of the mass flow rate of the dry air component (assumed constant under steady state) from the ENTRY volumetric flow rate of the humid air mixture MUST use the INITIAL state variables!
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: SysML Activities and SysML Activity Diagrams CAN represent some functional programming paradigms (sort of). You can type Parameters by encapsulations of functions and pass them to/from InputPins/OutputPins of Actions.
Webel: SysML4Mathematica: TIP: Representing Mathematica Paclets and their inter-dependencies as SysML Packages modelled in SysML Package Diagrams can really help you organise your Wolfram Language code on complex projects!
Webel: SysML4Mathematica: TIP: Representing Mathematica functions as SysML ConstraintBlocks modelled in Block Definition Diagram (BDD) overviews can really help you organise and document your Wolfram Language code on complex projects!
Webel: SysML4Mathematica: TIP: Representing Mathematica functions as SysML ConstraintBlocks modelled in SysML Parametric Diagrams and as Activities in SysML Activity Diagrams is super for analysing the dependencies between functions and their arguments!
SysML: Cameo Systems Modeler: A ValueType that does not extend Real might not always simulate correctly when used to type a constraint parameter of a ConstraintBlock (in a SysML Parametric Diagram) or to type a parameter (in a SysML Activity Diagram)!
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]
Psychrometrics: The volumetric flow rate of a humid air mixture MAY change between a State1 and State2 (but the mass flow rate of dry air does not under steady state)! This is sometimes "glossed over" in some online calculators and less formal guides.
CoolProp: Mathematica wrapper: Psychrometrics (humid air): When obtaining the dew point temperature 'Tdp' at the pressure 'P', humidity ratio 'W', and dry bulb temperature 'Tdb', the 'Tdb' value will be "ignored" but MUST be within a sensible range!
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.
TIP: Webel: SysML/UML: On the boundary of symbols for ConstraintParameters on a ConstraintProperty (ConstraintBlock usage) symbol in Parametric Diagrams use any placement or "ordering" of ConstraintParameter symbols that works for the diagram!
TIP: Webel: SysML/UML: On the boundary of Action symbols in Activity Diagrams use any placement or "ordering" of Parameter symbols that works for the diagram. Ignore the Parameter ordering of Operation and Behavior signatures completely!
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
SysML Parametrics: You can use custom stereotypes keywords «i» and «o» on constraint parameters to indicate their intended use (causality) as (i)nputs and (o)utputs on ConstraintBlocks
GOTCHA: Mathematica v13.2+: Operations on "DegreesFahrenheit" °F and "DegreesCelsius" °C are now performed using Kelvins (K). CASE: Naive percentage operation gives answer relative to Kelvins. Use "DegreesCelsiusDifference"/"DegreesFahrenheitDifference"!
TIP: If your browser can't zoom in on large tutorial trail slide images in the tutorial trail image viewer, open the slide image in a separate tab then zoom in there
Mathematica: Notebooks: Automatic Cell Grouping mode can be a "royal pain", turn it off by setting Cell > Grouping > Manual Grouping
GOTCHA: Mathematica: Specific enthalpy conversion J/kg to Btu/lb: Does not consider a possible "total" enthalpy reference offset vs 0 °C or 0 °F respectively
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
On the Webel Best Practice modelling tips for SysML (and UML). If you want to model the Webel way, use them, if you don't, ignore them. They are ONLY offered as options and graphical modelling paradigms and idioms for you to consider.
Webel: On going beyond SysML (and UML) with additional modelling practices, policies, and additional semantics
Webel: SysML: TIP: CONVENTION (default policy suggestion): Use reverse time ordering for Dependency, reserve Usage, PackageImport, ElementImport for software dependencies
MagicDraw/Cameo: UML/SysML: TIP: Activity Diagrams: Learn how to use the Refactor > Extract feature to divide-and-conquer and identify cleaner flow and logic. Get control of those crossed wires!
Webel: MagicDraw/Cameo: UML/SysML: TIP: Activity Diagrams, StateMachine Diagrams, and port-based IBDs: Keep it loose initially with oblique (no break) paths, then square it up with rectangular paths at the very end
UML/SysML: TIP: Using Cameo Simulation Toolkit will strengthen your use of Activity Diagrams even when they are "just" analysis diagrams
TIP: Mathematica: Use of For is often a hint that Map, Table, Scan, or something else more functional could be used. But don't stress over it!
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
Webel: SysMLv1.x: TIP: The name and documentation of a ValueType can indicate and specify more than just the unit and quantity kind. Example: A ClockFrequency may document how the frequency is measured. Example: WeightOnEarth.
Mathematica: TIP: Protecting against computations breaking verbosely because of Null, None, Undefined. And about using Undefined as a return policy.
Mathematica: The Webel Units` package has Quantity variables for frequently used units using a naming convention 'unit$[Symbol]' or 'unit[DescriptiveName]' or unit[Acronym], each with a corresponding '$unit...' for the units identifier String(s).
Fun fact: The normal boiling point of water isn't exactly 100 °C (at least not since 2019 when the definition of the Kelvin scale was changed to use the Boltzmann constant and decoupled from the triple point of water)
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.
Mathematica: How mimic pattern matching of arguments for pseudo "Boolean" (including providing a default)?
Mathematica: The awesome Quantity system for values with units is everything the SysMLv1.x Quantity/Unit system should have been (and hopefully SysMLv2 will be). But it comes at a high performance cost!
Mathematica: TIPS for living with the user-contributed MTools for Object-Orientation (until a vendor-supported OO solution is eventually provided)
Mathematica: TIP: How to change a value within an Association inline within a Module (like pass by reference)
MagicDraw/Cameo/CATIA Magic: Getting your software tools ready for the Webel IT training courses in SysML/MBSE
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
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: Domain Modelling in graphical SysML (and the best SysML tools) is massively, hugely, compellingly, better than in any other language (or tool). [OWL does something very useful but different.]
Webel: Mathematica is functional programming on steroids (and has nearly everything else, except for decent in-built OO support, although you can make some progress with Abstract Data Types and even some inheritance).
Mathematica: Webel: You CAN/MAY use $ in variable names and function names - just not as the first character before a Capital - and it's extremely useful. You won't get sent to Azkaban prison if do you use a $ character!
Mathematica: HOWTO Manage test data for functions using rules across multiple functions (and about the Webel '$0' variable suffix convention for substitution targets).
Mathematica: HOWTO: Strip an option from an OptionsPattern[] sequence before passing down (propagating) to a function with fewer options
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')
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: It is not intended that you "parse and analyse" every sentence from every domain source document and map every word to your SysML model. The process adds incremental benefit; the more you use the WPA recipe, the better!
UML2/SysML1.x: If AggregationKind 'shared' has meaning to you (and if you use it consistently without contradicting the use of 'composite' aggregation elsewhere in your model) by all means use it. Damn the purists! But it's going to die in SysMLv2 anyway.
The SysML Trace relationship can be used as a quick way to traceably elicit model elements from an identified diagram or table from a domain source document. You may visually remove the Trace symbols as each element is elicited to reduce clutter.
How to prounce Guillemet, those French-looking sideways double chevron quote thingies UML and SysML use to indicate a stereotype «keyword» (amongst other things).
Webel Parsing Analysis: Pseudo Semantic Triple: When «pa:triple» is applied to a named uni-directional Association the name and a consistent direction arrow should be displayed on the Association symbol in diagrams.
Webel Parsing Analysis: Pseudo Semantic Triple: For «pa:triple» applied to a named one-to-one Dependency, the source is the subject, the name of the Dependency is the predicate, the target is the object.
Webel Parsing Analysis: Pseudo Semantic Triple: For «pa:triple» applied to a named one-to-one or one-to-many uni-directional Association, the non-navigable end Property is the subject, the name is the predicate, the navigable end Property is the object.
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: It does not matter whether you use a Package or a Model package. (The informal Webel convention is that Models are used for systems engineering analysis with SysML and Packages are reserved for code-related software engineering.)
MagicDraw/Cameo v19SP3: UML/SysML: HOWTO Set an OpaqueExpression on a Slot that seems to be stuck on a numerical value.
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.
SysML+SysPhS: Flows: If you intend to use a Classifier to type the itemProperty of an ItemFlow on a Connector for a physical interaction you MUST use a Block (not a ValueType or Signal) so your can extend ConservedQuantityKind.
SysML: Flows: If you use a Signal to type the itemProperty of an ItemFlow on a Connector, care must be take in how you create the Property or you might get an unwanted signal Reception on the owning context Block.
SysML: Whether you use a Block, ValueType, or Signal to represent something that flows (and can be applied to an ItemFlow) depends on what you want to achieve. If you want to indicate something structured with value properties with Units use a Block.
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.
Progressively "exporting" internal Ports of usages of Blocks to the boundary of their using Block may seem like a bit of extra work, but it means you can progressively develop with clean black box views without the Connectors crossing Block boundaries.
In the Webel terminology for a basic control loop there is an 'aim' value (controlled via an actuator) and a 'got' value (a value read from a sensor). The 'got' value is NOT necessarily exactly the same as the actual physical value.
SysML-1.6/1.7: You can introduce a custom (user-defined) stereotype keyword «item» to indicate Properties that are to be used as "packets" for ItemFlows on Connectors. (SysMLv2 will have a formal way of treating such items/packets.)
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.
SysPhS-1.1 vs Modelica: On export the SysPhS signal flow Port types are flattened to remove the FlowProperty (rSig, iSig, or bSig). In the exported Modelica code you'll only ever see the Port names.
GOTCHA: MagicDraw SysML/Cameo 19SP3: Export to Modelica: The name of a redefining Property must be exactly the same as the Property it redefines or it will not export properly!
Wolfram SystemModeler: On Mac the Unit Conversions dialog is under SystemModeler -> Preferences -> Global -> Unit Conversion (rather than under Tools -> Options)
Wolfram SystemModeler: GOTCHA: The conversion dialog will not offer the Add Unit Conversion button unless there is not already an existing conversion in BOTH directions.
Webel: SysML: DO NOT sacrifice modelling naming conventions for the mere sake of carrying organisation-specific names! Instead use tagged values of custom stereotypes as metadata to carry alternative names in parallel with systematic model element names.
MagicDraw/Cameo: If you drag a Behavior from the model browser onto the SYMBOL of a State (that does not already own the Behavior) and set it as an 'entry', 'doActivity', or 'exit' Behavior a "wrapper" Behavior owned by the State will be created.
MagicDraw SysML/Cameo 19SP3: GOTCHA: If you drag a Behavior from the model browser onto the 'entry', 'doActivity', or 'exit' field in a specification dialog of a State it WILL BECOME OWNED by the State (which "steals ownership")!
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.
Sample problems and example diagrams in graphical language specifications are NOT necessarily indications of how one should model on a real-world project! They often just serve to demonstrate a particular aspect of the specified language.
SysML: When using Property::defaultValue and Property::redefinedValue to carry a "shadow hierarchy" of redefinitions across an entire system hierarchy, considering using a user-defined keyword such as «configuration» or «scenario» on each redefining Block
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]
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: 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
SysML/SysPhS + Modelica: The variable 'time' is known to Modelica and need not be explicitly declared as a constraint parameter for a Constraint on a SysML ConstraintBlock
Modelica: GOTCHA: Sometimes the name 'p' is used for any Pin (such as on Ground) and sometimes 'p' is used for a specifically PositivePin (as opposed to 'n' for NegativePin).
MDSysML/Cameo: SysPhSLibrary: GOTCHA: You must set the additional 'k2' parameter for Modelica to be minus to achieve subtraction
SysPhS-1.1: p.57: GOTCHA: Table 11.3.2.5 Mathematical components: Mathematical.Subtraction maps to Math.Add (in Modelica) and Sum (in Simulink)
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
SysPhS-1.1: When RealSignalInElement or RealSignalOutElement are used to type a SysML Port, assignments to the FlowProperty 'rSig' map to the Port name (only) when mapped to Modelica.
GOTCHA: MD SysML/Cameo 19SP3 vs SysPhS-1.1: Export to Modelica does not see a 'doActivity' on a State (does not write it to a Modelica algorithm), you MUST use an 'entry'!
GOTCHA: MagicDraw SysML/Cameo 19SP3: Export to Modelica: 'entry', 'doActivity', or 'exit' Behaviors of a State must be directly owned (not just "wrapped") or they won't be seen on export!
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: Export to Modelica only includes owned Constraints (not just applied Constraints) under the 'equation' export
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: For export of more complex physical interaction and flow cases to Modelica or Simulink/Simscape/Stateflow load the SysPhS ModelLibrary using SysPhSLibrary.mdzip as a shared project.
MagicDraw SysML/Cameo: You do not always need to load the entire SysPhS ModelLibrary for simpler black box exports to Modelica or Simulink/Simscape/Stateflow (sometimes the sysphs_profile within the MD Customization for SysML is enough)
UML/SysML: A Boolean "state flag" attribute corresponding to a State can be useful for indicating states in some diagram types (but must be synchronised with Transitions to States carefully).
UML/SysML: During modelling it can really help to create little instance (object) diagrams as you go! This can also help communicate with non-SysML stakeholders.
UML/SysML: When you use an AddStructuralFeatureValueAction to set one end of a bi-directional Association it also sets the other end.
Not every task in Activity Diagrams is well-suited to graphical modelling; consider using Action Language Helper (ALH) or Action Language for Foundational UML (Alf)
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)
[HISTORICAL] SysML: Some users employed the ~ tilde prefix for a conjugated Port type long before it was introduced for ~InterfaceBlock and you MAY use it to name a regular Block that is not an ~InterfaceBlock ARCHIVAL (2022): This content is now considered historical only!
SysML: Electronics: When modelling electronics systems you should to decide and make clear (with ItemFlow and/or Stereotypes) whether you are modelling signals (information, does not care about GND) or a physical design with voltage (needs GND)
Webel: SysML: Electronics: DO NOT represent a jack/socket as a dumb proxy. Imagine it can introduce some signal noise or other effect (such as buzz) to test it is a physical model.
One of the most important reasons to use a Port to send a Signal is that only the connection context, not the sender, knows the ultimate recipient (at the end of a specific Connector).
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).
SysML Parametrics: You can use custom stereotypes keywords «i» and «o» to indicate value properties that are intended to be used as (i)nputs and (o)utputs when bound to constraint parameters for SysML Parametrics
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 Webel Parsing Analysis tutorials, Wikipedia pages are often used as a placeholder sources to represent authoritative domain source documents from which text extract "snippets" are sourced, and from which SysML model elements are traceably elicited.
In professional applications of the Webel Parsing Analysis recipe for SysML, a robust reusable profile for «part»/«assembly»/«leaf» components is used, along with stereotypes keywords like «assembles» for indicating physical composition hierarchies.
Do export your UML/SysML presentation diagrams (only, not every diagram) regularly as static images; it will help you develop diagrams that are better balanced and communicate well with stakeholders.
Webel Parsing Analysis: Relationships between «snippet» items can be tracked using additional tagged values such as 'contradictedBy' and 'contradicts'. This is robust, but it can be verbose when Snippets have long names if the tagged values are displayed.
Webel Parsing Analysis: MagicDraw/Cameo: In parsing diagrams use the element compartment properties to only display the features relevant to the context of a particular snippet's text extract.
Webel Parsing Analysis: You do not need to map every word of every snippet to the UML/SysML model! Extract only the information required for your domain modelling task to add incremental benefit.
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.
Webel Parsing Analysis: You may create custom stereotypes applicable to a Dependency or a uni-directional Association to represent a «predicate» much like a semantic triple (subject-predicate-object) in OWL/RDF.
Webel Parsing Analysis: If the dashed-line "anchors" from your «snippet» ElementGroup symbols to elicited elements make a «pa» Parsing Analysis Diagram (PAD) too hard to read, try making them light grey using symbol properties.
Optionally suffix the "focus" BDD for a Block with '.bdd' so that it won't clash with a corresponding IBD on diagram export. This is not a SysMLv1 concern, it is purely a workflow concern. It has the slight disadvantage that BDD may "indicated" twice.
In Webel Parsing Analysis every Package, Model, or Diagram used to perform Parsing Analysis MUST have the stereotype keyword «pa» applied, and MUST live under a top-level Model or Package 'source' separate from the rest of the project model.
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]
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.
Not every task in Activity Diagrams is well-suited to graphical modelling and LoopNode and ConditionalNode are notoriously fiddly to setup; consider using Action Language Helper (ALH) or Action Language for Foundational UML (Alf)
In a SysML Activity Diagram a control flow may be notated with a dashed line and stick arrowhead; this helps distinguish a ControlFlow from an ObjectFlow symbol.
The ActivityEdge, Transition, and Connector metaclasses do not extend (directly or indirectly) the Relationship metaclass (although the notations for them do indicate a kind of "relationship").
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.
You can use a ValueType to document how a value of a certain quantity kind should be measured (in a particular system, in a particular organisation, or according to an industry standard).
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: 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).
QUDV in SysML refers to: Quantity, Unit, Dimension, Value. It is strongly influenced by the International Vocabulary of Metrology (VIM).
When dealing with required Interfaces you must use Usage (not Dependency) and it has dedicated "socket" notation.
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'
Webel: SysML: Always consider including an abstract (sometimes intermediate) base Block in your domain modelling Generalization hierarchy.
If an abstract Block or Class in a domain model has Associations to Blocks or Classes that are not also abstract, it's often a hint that you have not identified a correct abstraction layer.
SysML Blocks have lots of possible features and compartments, lots of capabilities, and are very powerful! But you don't have to use every aspect of a Block (or show every aspect in every diagram) at once on every project.
MagicDraw/Cameo: If you make a copy of the SYMBOL of an Element in a Diagram you have only copied the SYMBOL, it represents the same Element! If you make a copy of an Element in the model browser you have indeed made a unique new (distinct) Element!
MagicDraw/Cameo support for the SysML Parametric Diagram and ConstraintBlocks for equations and mathematics is excellent, and it integrates with powerful maths engines such as Mathematica. It CAN be used on industrial strength real-world projects.
The SysML Parametric Diagram and the ContraintBlock technology for equations and mathematics is clever, powerful, useful, and integrates well with the other model-based engineering aspects of SysML.
In SysML, unless you MUST use a DataType or PrimitiveType from an existing ModelLibrary or Profile, you SHOULD probably be using a ValueType, Enumeration ValueType, or SysML PrimitiveValueType instead so that it integrates with the value system of SysML.
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.
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: typically the quoted extract text (body) of a «snippet» is a short phrase, a sentence, or a couple of short sentences (but not dozens of sentences).
An ElementGroup comment symbol may appear on more than one diagram type and may collect different kinds of anchored annotatedElement members from more than diagram.
The grouping of member elements by an ElementGroup is denoted here "logical" in the sense that it does not "steal ownership" of member elements (as opposed to "physical" ownership of elements in the model)
The Webel Parsing Analysis recipe for SysML1.x does not use the ElementGroup directly, it extends it as a user-defined Snippet stereotype with keyword «snippet» and with MagicDraw Customization.
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.
By all means use ActivityAllocatePartition swimlanes for CallBehaviorAction allocation in usage allocation mode, but use BDDs for your definition-level allocations with directly drawn «allocate» relationships between Activity and Block symbols.
MagicDraw/Cameo: If you remove a CallBehaviorAction from an ActivityAllocatePartition swimlane any previously created allocations won't be removed, but you can delete them using the Allocations section of the Specification dialog of any relevant element.
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.
Webel use editorial Sterotypes prefixed with ! and ? in and in CAPS in keywords such as: «!». «?», «!ERROR», «!ISSUE», «!CAUTION», «!WARNING», «!CAVEAT», etc.
SysMLv1: Associative BDDs are best used as staging diagrams for you the modeller (and SysML-fluent readers). IBDs usually make better presentations diagrams for a wider audience of general engineers and other stakeholders.
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
The «Subsystem» stereotype for UML Components has nothing to do with the non-normative SysML «subsystem» stereotype for Blocks
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: 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: In a Dependency Matrix the mode 'Show Element = All' can lead to very large matrices (but it enables you to interactively create relationships for elements that don't yet have any).
MagicDraw/Cameo does not explictly support tracking of satisfaction and verification of composite/compound requirements, but the "implied relations" facility can help.
MagicDraw/Cameo: A Requirement may appear on many kinds of such as a Block Definition Diagram or Package Diagram, not just a Requirement Diagram
The OMG SysML language deliberately does not aim to restrict users and tools to one strict systems engineering methodology; it provides flexible capabilities and options for use by many model-based systems engineering methodologies and tools.
When satisfying a Requirement with a Block, you need to ask whether the Block (all instances) satisfies the Requirement or whether only a particular usage of the Block (such as a part property) Satisfies the Requirement!
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
In UML and SysML a '/' forward slash prefix before a Property name indicates that it is derived from other elements in the model.
Webel: If you must name your Ports or Pins, name them simply 'i', 'o', or 'io' (or 'oi') to indicate direction UNLESS you have to indicate a special role like 'iRole', 'oAuxiliary'. DO NOT use Port or Pin names like 'input', 'output', etc.
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!
A SysML 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)
If you are using Blocks (not InterfaceBlocks) to Type your Ports just use "manual" feature-by feature direction inversion to achieve type conjugation (and you can even use a ~ tilde prefix)
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: 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
In general, the SysML DirectedFeature approach is more powerful and the notation is cleaner than UML provided/required Interfaces. Prefer SysML DirectedFeatures unless you have a really good reason to use Interfaces!
You can't make connections in BDDs, only in IBDs. A BDD shows where connections may be made, an IBD shows where specific connections have been made in a specific context!
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!
The SysML Copy relationship can be used to "import" Requirements from an existing read-only library into a new project context.
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)
Webel recommends (usually) display the header of a Package, Model, ModelLibrary, or Profile in the 'tab' (rather than 'top')
Place your SysML-1.6 ~InterfaceBlock conjugation under the 'original' InterfaceBlock (i.e. make the original the containment owner).
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: The display option Apply SysML Callout Style shows elements with their Metaclass or Stereotype keywords and no vendor-specific icons
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 Parameter of an ActivityParameterNode the keywords «continuous» or «discrete» can be optionally displayed on the ActivityParameterNode symbol
Webel: SysMLv1/UML: Prefer the Name Display Mode 'both' on CallBehaviorAction symbols (rather than 'Show Action Name', 'Show Behavior Name', or 'Show Both or Behavior Name')
TIP: UML/SysML: MagicDraw/Cameo: Consider showing the constraint parameter name and type label inside the small rectangular parameter symbol on SysML Parametric Diagrams. Dr Darren swears by it!
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: 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
TIP: MagicDraw/Cameo: Consider showing the Port name and type label inside the Port symbol! CAVEAT: This loses the direction indicators on Ports typed by Blocks with flow properties (but is fine if ItemFlows show the direction, or for "contract ports").
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".
In MagicDraw/Cameo if the Type of a Property has a Composite Structure Diagram or Internal Block Diagram defined it will act as the default hyperlink target for the Property
In MagicDraw/Cameo one can just drag the IBD or BDD of a Block from the model browser onto parts that are typed by that Block to make them the default hyperlink target for that part (so one can just "open the parts up" recursively to navigate the system).
As an alternative to composition Association "trees" consider instead using symbol resize to visually "bracket" composed items (can however be a bit fiddly).
Nobody (informed) said that SysML (or even UML) modelling and MBSE is only about graphical modelling, notations, and diagrams! Information can be extracted in many different ways and presented in many different formats from the underlying model!
SysML: Webel recommends use of an additional custom «requirementGroup» stereotype for compound Requirements that serve as owning Namespaces and are subject to the satisfaction policy that all child requirements must be satisfied.
In the Webel recipe for SysML, DO use a "standard" Port until you have a truly compelling reason to commit to a FullPort or ProxyPort
HOWTO get at and display "standard" Ports that have been unnecessarily hidden and suppressed in MD SysML 19SP3 and Cameo 19SP3
[HISTORICAL] HOWTO easily "hack" the SysML-1.6 ~InterfaceBlock conjugation and «~interfaceBlock» keywords in MagicDraw/Cameo. [NOW SUPPORTED 2024x Golden] ARCHIVAL (2022): This content is now considered historical only!
Webel: SysMLv1: Highly recommend creating a "focus" Block Definition Diagram (BDD) for each main Block with expanded feature details and relationships to at least nearest neighbours
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)
MagicDraw, Cameo Systems Modeler, and Cameo Simulation Toolkit use the name 'English' for a "default" vendor-specific action scripting language
The vendor-specific Action Language Helper (ALH) API can be accessed from all of the various action scripting languages available in MagicDraw, Cameo Systems Modeler, and Cameo Simulation Toolkit
HOWTO set a ValueSpecificationAction to use the * LiteralUnlimitedNatural to drive an 'insertAt' InputPin on an AddStructuralFeatureValueAction in Cameo Simulation Toolkit and Cameo Systems Modeler