Webel's "super-relational" Note pages!

A Note is a short categorised statement, claim, policy, tip, or issue tracker Throughout this site, content is often related to supporting Notes, and each Note page links back to the content pages that reference it! The Note and Snippet concepts are very closely related and they support each other.
Look for "super-relational" Note page links at the bottom of most content pages!
Note kind Note Spec tag UML keywords SysML keywords Keywords
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: A 'type$' indicator for an '$opt$' or '$arg$' is for documentation only. It may use a "pattern helper", a human-friendly String, or a SysML-similar short-hand type representation. It need not correspond to a valid Pattern. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option
Dr Darren says: "If you don't know something just admit it and ask for help. That's what the best of intelligent people do (and how they get smarter). They don't try to fake it for fear of asking. To grow, you have to admit what you don't know."
GOTCHA, TIP, WARNING 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. Wolfram, Mathematica, Wolfram Language
CONVENTION, MODELLING, NAMING, POLICY Webel: SysML4Mathematica: A custom stereotype «M:Paclet» applied to a SysML Package denotes a Wolfram Package Paclet. An «M:Package» is a specialisation of SysMLv1 Block and denotes a Wolfram Language Package. SysML-1.6, SysML-1.7, UML-2.5.1 Package Block Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica::Association, Mathematica::List
CONVENTION, MODELLING, NAMING, POLICY Webel: SysML4Mathematica: A SysML/UML Usage (keyword «uses») is used to indicate a Wolfram Package Needs import, where an «M:Package» is a specialisation of Block (not a SysML/UML Package) and denotes a Wolfram Language Package. SysML-1.6, SysML-1.7, UML-2.5.1 Stereotype, custom Stereotype, «keyword», Usage Block Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language
CONVENTION, MODELLING, NAMING Webel: SysML4Mathematica: Activity Diagrams used purely for analysis and as development aids are not required to show every ControlFlow, may omit InitialNode and ActivityFinalNode, and are not required to fully validate in SysML tools or execute. SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 Activity, InitialNode, ActivityFinalNode SysML Activity Diagram Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: A '$Q$' in a function variant name indicates that it is a variant where every argument is strictly either a Quantity or dimensionless Real. Compare with '$SI$' functions. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1, SI units, International Systems of Units
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: An '$E$' or '$EQ$' in a function name indicates that it is symbolic (takes Blank expression arguments), but the absence of '$E$' or '$EQ$' does not necessarily imply that it does not take Blank arguments. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding
CAPABILITY Mathematica: Webel ADT pseudo classes: 'Q: Do I have to use these EX$Val scalar "atom" thingies and the EX$Row, EX$RowList, and EX$RowMap? Can't I just use Wolfram Language Lists and Associations?' A: Of course you can also use the basic Wolfram Language! Real, Integer, String, Boolean, QuantityKind, adt$isContract Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional
CAPABILITY Mathematica: Webel ADT pseudo classes: An EX$Val has concise methods for testing the type of its wrapped '$$' value: isR, isI, isB, isQ, isS. These may be used in ADT "constructor" type tests. Real, Integer, String, Boolean, QuantityKind, adt$isContract Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional
CAPABILITY Mathematica: Webel ADT pseudo classes: The validity of the type of a wrapped '$$' value of an EX$Val may be checked in ADT "constructors" which have type checking utility support. This strategy has been chosen over sub-types of EX$Val. Real, Integer, String, Boolean, QuantityKind, adt$isContract Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional
CAPABILITY Mathematica: Webel ADT pseudo classes: There does not seem to be a way to register ::usage specific to a Webel ADT-Method (TagSetDelayed UpValue). The Webel libraries offer method documentation support via the HelpO` class/method registry. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional
POLICY Webel: Mathematica: The Method syntax for the user contributed MTools does not seem to support Method-specific ::usage. The Webel libraries offer method documentation support (including arguments and options) via the HelpO` class/method registry. Mathematica, Wolfram Language, coding
POLICY Webel: Mathematica: The Method syntax for the user contributed MTools does not seem to support Wolfram Language Options[]. The Webel MTools extensions offer options support via a Webel Options Association in combination with the HelpO` method registry. Mathematica, Wolfram Language, coding
CAPABILITY Mathematica: Webel ADT pseudo classes: Webel ADT-Methods support Wolfram Language Options[] as TagSetDelayed UpValues (but there are some pros and cons). Webel ADT-Methods work with the Webel HelpO` class/method registry, including rich help on options. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional
CONVENTION, POLICY Mathematica: Webel ADT pseudo classes: «adt:ref» applied to a property indicates that it is resolved by ID through the ADT store using adt$fetch[id]. Use adt$store[adt] for very large ADTs and for cleaner ADT views and easier Notebook development. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional
CONVENTION, MODELLING, NAMING Webel: SysML4Mathematica: An OptionsPattern[] may be represented by an «M:OptionsPattern» SysMLv1 Block with «M:Opt» properties. An «M:Opt» property represents an Options[] Rule IMPLICITLY (an «M:Opt» does not use the Rule block modelling recipe). SysML-1.6, SysML-1.7, UML-2.5.1 Property Block, block property, value property Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica::Association, Mathematica::List
POLICY Mathematica: Webel OpenXML: The XL$Cell value accessor XL$Cell⊙valReal has no units-awareness; prefer the US$Cell value accessor US$Cell⊙val, which can return a Quantity. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, OpenXML
CONVENTION, POLICY Mathematica: Webel ADT pseudo classes: POLICY: Where an ADT-Method uses UUID-driven Once[] caching the trigger argument is a String '$uuid' which MUST have a default None and MUST be the first argument that has a default. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional
POLICY Webel IT Australia prefers to use examples from real client projects but usually heavily obfuscates, masks, or randomises client-specific data. Educational examples do not expose client data without permission. Webel IT Australia, confidentiality
Webel: SysML4Mathematica (v2): The long term goal is generation of SysMLv2 models using the SysMLv2 modelling code (textual representation) and generation of SysMLv2 Diagrams directly in Mathematica, corresponding with the trend to generative diagramming. SysMLv2 Webel IT Australia, Webel::SysML4Mathematica, Webel::SysML4Mathematica [v2], Systems Modeling Language, SysMLv2, Model-Based Systems Engineering, Wolfram Language, Mathematica
CONVENTION, NAMING Mathematica: Webel ADT pseudo classes: The SysMLv1 models are supported by custom stereotypes with icons. Some of these indicate OO-similar use of ADT-Methods and departures from formal Abstract Data Type (ADT) definitions. custom Stereotype, Stereotype, Stereotype:icon Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Method, Webel:ADT
POLICY Mathematica: Webel ADT pseudo classes: The ADT⊙get method may be used to access the '$$' wrapped primary. This is intended for development and testing purposes only (not for regular use by clients) since it BREAKS ENCAPSULATION! Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT
CONVENTION, NAMING Webel: Mathematica: CONVENTION: MTools classes: A 'z' prefix indicates a "private" method; A 'my' prefix indicates a "protected" method (typically a protected hook). There is no actual visibility enforcement other than by name convention. Webel::SysML4Mathematica, Mathematica, Wolfram Language, Webel IT Australia
CONVENTION, NAMING, PATTERN, POLICY Webel: SysML4Mathematica: An '@*~' prefix in a @pseudo function (OpaqueBehavior or Activity) represents a cast from any expression to a Type. Example: '@*~OpenerView' casts from any expression to an OpenerView. '@Type~' casts from a specific Type. OpaqueBehavior, Activity Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
POLICY Webel: Mathematica: The Webel MAll universal base class does not itself use Webel method options (but does offer some support for method options for extending classes) Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: An '$SI$' in a function variant name indicates that all arguments are SI Real convention (no Quantity arguments with units). An '$SI$' function can also be used to generate '$C$' compiled function variants. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1, SI units, International Systems of Units
CONVENTION, NAMING Mathematica: CONVENTION: A prefix 'eq$' indicates a symbolic equation (typically using 'sym$' human-friendly markup "symbols") SysML-1.6, SysML-1.7, UML-2.5.1 Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Webel::Psy
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: A '$C$' in a function name indicates that it is a compiled variant. Typically it is compiled from an '$E$' symbolic function or an '$SI$' Real convention function. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: An '$E$' in a function name indicates that it is symbolic (takes Blank expression arguments). An '$E$' function can also be used with Quantity inputs and can be used to generate '$C$' compiled function variants. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: A '$EQ$' in a function name indicates that it is a symbolic equation (with LHS == RHS). An '$EQ$ function can be used in combination with 'sym$' markup to create human-friendly formatted equations. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: Entity "field definers" are prefixed with '$e$[pac]' (where '[pac]' is a nickname for a package or logical grouping) and carry String field names. EntityStore functions are prefixed with 'e$[pac]'. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, POLICY, TIP 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. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, NAMING, POLICY Webel: Mathematica: CONVENTION: A '$sig$f$' prefix indicates a String signature helper for a function (or for a "method" of an MTools class or a Webel Abstract Data Type (ADT) pseudo class). Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding
CONVENTION, NAMING, POLICY Webel: Mathematica: CONVENTION: A '$doc$' prefix indicates a formatted documentation String helper. A '$doc$arg$' is for an argument, a '$doc$opt$' is for an option. A '$doc$ String may be used to create ::usage documentation via docF. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding
CONVENTION, NAMING, POLICY Webel: Mathematica: CONVENTION: A ‘$pac$’ String helper variable is used to capture the fully qualified String name of every package. Useful for quick '$pac' argument provision for search functions and for DEVEL package load echoes. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, NAMING, POLICY Webel: Mathematica: CONVENTION: A 'z$' prefix may be used to indicate a Private` function or expression within a package or a "private" method of an MTools class or Webel Abstract Data Type (ADT) stateless pseudo class. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: The Stereotype keyword «functional» indicates a "pseudo functional" representation of functional in SysML. There are limits to representation of functional programming in SysML, but it can be informative and is worth doing. custom Stereotype, «keyword», Activity, ValueSpecificationAction, Pin, InputPin SysML Activity Diagram Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, SysML, Systems Modeling Language, SysMLv1
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: A '$t$' prefix indicates a String help holder with a "pseudo type" indicator (for human friendly documentation only). Used by the Doc`, HelpF`, and HelpO` packages. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: A function's description (but not its signature, arguments, or options) may be captured as an '$info$f$' Stringhelp holder for use by the Doc` package for ::usage generation and the HelpF`& HelpO` help registry packages. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding
NAMING, PATTERN, POLICY Webel: Mathematica: A help Rule 'rule$opt$' for an '$opt$' (option) accepts keys: '$k$help' (required), '$k$def' (required), and optional '$k$warn', '$k$tip', '$k$lab' (a label), '$k$type' (indicator only), '$k$mult' (SysML multiplicity), and '$k$pat'. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option
NAMING, PATTERN, POLICY Webel: Mathematica: A help Rule 'rule$arg' for an '$arg$' (argument) accepts keys: '$k$help' (required), '$k$def' (required if $k$req = True not given), '$k$req' (True if $k$def not given), '$k$warn', '$k$tip', '$k$lab', '$k$type', '$k$mult' and '$k$pat' Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option
NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: An '$opt$' (option) or '$arg$ (argument) help holder may be have an associated (typically short) '$lab$opt$' or '$lab$arg$' label help holder for use in GUIs and views. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: Where keys of Associations are Strings they are encapsulated as variables prefixed with '$k$' (promotes DRY and has many advantages, such as IDE prompting). Direct use of "Strings" as keys is WET and strongly discouraged! Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option, DRY, WET
CONVENTION, NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: "pattern helpers" (which are not themselves Patterns) use the prefix '$pat$. Encapsulated Patterns use a 'pat$' prefix, and may use a '$pat$' pattern helper (such as an Alternatives). Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option
NAMING, PATTERN, POLICY Webel: Mathematica: CONVENTION: Argument help holders use a String variable with the prefix '$arg$', a related '$info$arg$' String, a 'def$arg$' default value expression and/or 'req$arg$', and optional '$warn$arg$', '$tip$arg$, '$lab$arg$', 'type$arg$'.. Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option
TIP, TOOL Cameo Simulation Toolkit: HOWTO test an EnumerationLiteral value in a (Groovy) script in an OpaqueAction/Behavior. Use kind.name == "value" fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7 Enumeration, EnumerationLiteral, OpaqueExpression, OpaqueAction, OpaqueBehavior SysML Enumeration SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML, Groovy
MODELLING, TIP 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. SysML-1.6, SysML-1.7, UML-2.5.1 Model, Package, Element::owner SysML Package Diagram SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, Webel Best Practice
MODELLING, OPTION SysMLv1: Webel often uses Model packages for most modelling and reserves Package for code-like elements, OpaqueBehavior sub-libraries, instances, and elements reverse-engineered from code. But there are no hard and fast rules about Package vs Model. SysML-1.6, SysML-1.7, UML-2.5.1 Model, Package SysML Package Diagram SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, Webel Best Practice
OPTION, TIP 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! SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 Package, ModelLibrary, Profile, shared package SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML
GOTCHA, TIP, TOOL 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. SysML-1.7, SysMLv2 Signal, Reception, receptions compartment, attributes compartment, attribute ValueType, Block SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML
COMPLICATION, GOTCHA, LIMITATION, MODELLING SysMLv1: CAUTION: Only a Signal can be used for a SendSignalAction or MessageEvent trigger of an AcceptEventAction, not a Block or ValueType, even if they are valid types for a SysML FlowProperty! But you can "wrap" a Block or ValueType in a Signal. SysML-1.6, SysML-1.7 SendSignalAction, AcceptEventAction, SignalEvent::signal, SendSignalAction::signal, Trigger::event, Trigger, MessageEvent FlowProperty, Block, ValueType SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML
GOTCHA, ISSUE, MODELLING, TOOL 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. fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7, UML-2.5.1 Signal, SendSignalAction, AcceptEventAction, AcceptEventAction::isUnmarshall, Transition, Transition::effect SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML
GOTCHA, ISSUE, LIMITATION, TOOL, WARNING 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 fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7, UML-2.5.1 Association, Signal, attribute, Classifier::attribute, Transition, Transition::effect, Behavior, Parameter SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML
TIP, TOOL, WORKAROUND SysMLv1/UML2: Whilst fUML does not support InterruptibleActivityRegion, there are still ways to interrupt a StructuredActivityNode in Cameo Simulation Toolkit fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7, UML-2.5.1 "InterruptibleRegion", InterruptibleActivityRegion, StructuredActivityNode, AcceptEventAction, TimeEvent SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML
COMPLICATION, GOTCHA, ISSUE, TOOL, WARNING SysMLv1.7/fUMLv1.4: Cameo Simulation Toolkit v2024x: Using an extending Enumeration literal as a parameter argument value runs but a WARN is issued. fUML-1.4, SysML-1.7, UML-2.5.1 Enumeration, EnumerationLiteral, Generalization, CallBehaviorAction, CallOperationAction, Parameter, OpaqueBehavior, Activity, CallBehaviorAction::behavior ValueType, SysML Enumeration SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML
GOTCHA, TIP 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). SysML-1.6, SysML-1.7 InvocationAction::onPort, SendSignalAction InvocationOnNestedPortAction, InvocationOnNestedPortAction::onNestedPort SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit]
ISSUE, MODELLING, TOOL 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. fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7, UML-2.5.1 InputPin, Signal, SendSignalAction, AcceptEventAction, AcceptEventAction::isUnmarshall SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], UML, fUML
MODELLING, TIP 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. fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7, UML-2.5.1 TimeEvent, TimeExpression, ValueSpecification, TimeEvent::isRelative Magic Model Analyst [Cameo Simulation Toolkit], fUML
GOTCHA, LIMITATION, WARNING fUML1.4: Cameo Simulation Toolkit: LIMITATION: CreateObjectAction is not allowed to instantiate a UML DataType or a SysMLValueType, only a Class as the CreateObjectAction::classifier! WORKAROUND: Use a ValueSpecificationAction instead with an instance. fUML-1.3, fUML-1.4 Class, CreateObjectAction, CreateObjectAction::classifier, DataType, AddStructuralFeatureValueAction, ValueSpecificationAction ValueType fUML, Foundational UML, execution, Magic Model Analyst [Cameo Simulation Toolkit]
MODELLING, TIP, TOOL 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. fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7, UML-2.5.1 Activity, ObjectFlow, ControlFlow, DecisionNode, ActivityEdge::guard, LiteralBoolean, LiteralBoolean::false, LiteralBoolean::true SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], fUML
GOTCHA, MODELLING, POLICY, TIP, TOOL 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). fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7, UML-2.5.1 Activity, ObjectFlow, ControlFlow, DecisionNode SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], fUML
GOTCHA, MODELLING, POLICY, TIP, TOOL 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 fUML-1.3, fUML-1.4, SysML-1.6, SysML-1.7, UML-2.5.1 Activity, DecisionNode::decisionInputFlow, ObjectFlow, ControlFlow, DecisionNode SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], fUML
MODELLING, TIP 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. SysML-1.6, SysML-1.7 «keyword», custom Stereotype, Stereotype SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Webel Best Practice
ASSERTION Dr Darren says: 'You can't obtain the optimum benefit of graphical engineering with SysML without becoming mindful of the cognitive and artistic aspects of graphical modelling. The "Zen of SysML" matters!' Just like an elegant electronics device design. SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 Systems Modeling Language, SysML, Model-Based Systems Engineering, MBSE, Webel Best Practice
MODELLING, TIP 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 Model-Based Systems Engineering, Systems Modeling Language, SysML, Webel Best Practice
GOTCHA, TOOL, WARNING 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 SysML-1.6, SysML-1.7 OpaqueBehavior MagicDraw UML, MagicDraw SysML, Cameo Systems Modeler, CATIA, MagicDraw derived property
GOTCHA, TOOL, WARNING 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 SysML-1.6, SysML-1.7 OpaqueBehavior MagicDraw UML, MagicDraw SysML, Cameo Systems Modeler, CATIA, MagicDraw derived property
GOTCHA, TOOL, WARNING 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. SysML-1.6, SysML-1.7 MagicDraw UML, MagicDraw SysML, Cameo Systems Modeler, CATIA, MagicDraw derived property
ANNOUNCEMENT: Webel IT Australia is developing an Online Subscription Video Tutorial Series version of our hands-on course for MBSE with SysML(v1) with Cameo Systems Modeler tool videos and OMG SysML-language only videos. Register your interest now! SysML-1.6, SysML-1.7 SysML, Systems Modeling Language, MBSE, SysMLv1, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Model-Based Systems Engineering, training, seminar, web seminar
GOTCHA, ISSUE, TOOL 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. SysML-1.6, SysML-1.7 NamedElement::name, Action, CallBehaviorAction, Property, element property, Note Allocate, ActivityAllocatePartition, allocation, SysML callout style SysML, Systems Modeling Language, MBSE, SysMLv1, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic
ASSERTION An Open Letter to LinkedIn SysML/MBSE groups from Dr Darren: "But, but, but, that SysML Diagrams doesn't show [insert pet systems engineering principle here]". It doesn't have to! It just has to show (or teach) something useful with SysML in a SysML tool! SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice
MODELLING, PROPOSAL, TIP 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» AggregationKind, AggregationKind::composite, AggregationKind::shared, AggregationKind::none, Property::aggregation, Stereotype, custom Stereotype, «keyword» SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice
ANTI-PATTERN, MODELLING SysML: Syntax ain't Semantics: FUN CHALLENGE: SysMLv1 block property aggregation: 'The tornado chaser plane "has" a chaser car "with" a chaser team.' AggregationKind, AggregationKind::composite, AggregationKind::shared, Property, Property::aggregation Block, SysML Block Definition Diagram, part property, reference property, shared property, MD:SharedProperty SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice, syntax, semantics
EXPLANATION, MODELLING Webel Parsing Analysis for SysML: "Snippet trumps Requirement": A SysML Requirement element is just another model element that is elicited IN PARALLEL WITH other elements that a text description mentions in any way as being involved with or related to it. AbstractRequirement, SysML Requirements Diagram SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice, Webel Parsing Analysis, WPA:«snippet», WPA:Snippet::source, WPA:PAD
CONVENTION, MODELLING, NAMING, TIP 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. Activity, CallBehaviorAction, CallBehaviorAction::behavior SysML Activity Diagram, swimlane, Allocate, «allocate», ActivityAllocatePartition SysML, Systems Modeling Language, MBSE, SysMLv1, functional analysis, white-box, black-box, Webel::SE:«blackbox», Webel::SE:pragmatic, Webel::SE:«whitebox», Webel::SE:«design», Webel::SE:«logical», Webel::logical handler
CONVENTION, MODELLING, NAMING, TIP 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. Activity, CallBehaviorAction, CallBehaviorAction::behavior SysML Activity Diagram SysML, Systems Modeling Language, MBSE, SysMLv1, functional analysis, white-box, black-box, Webel::SE:«blackbox», Webel::SE:pragmatic, Webel::SE:«scenario», Webel::SE:«whitebox»
CONVENTION, MODELLING, NAMING, TIP 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. Activity, Use Case scenario, UseCase::subject SysML Activity Diagram, Refine SysML, Systems Modeling Language, MBSE, SysMLv1, functional analysis, white-box, black-box, Webel::SE:«blackbox», Webel::SE:pragmatic, Webel::SE:«scenario»
MODELLING, TIP, TOOL 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). UseCase, UseCase::subject SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice, Webel::SE:pragmatic, MagicGrid, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic
TIP List of some formal systems engineering methodologies, standards, and guides [EXTERNAL LINKS] Model-Based Systems Engineering, systems engineering, Unified Architecture Framework, UAF, DoDAF, MODAF, NATO Architecture Framework, NAF, The Open Group Architecture Framework, TOGAF, INCOSE, INCOSE Systems Engineering Handbook, SeBOK, NASA
CONVENTION, MODELLING, NAMING, TIP 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. SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 Package, Model, NamedElement::name SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice, Webel::SE:«whitebox», Webel::SE:«blackbox», Webel::SE:«design», Webel::SE:pragmatic
CONVENTION, MODELLING, NAMING, TIP 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.) SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 Package, Model, NamedElement::name SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice, Webel::SE:«whitebox», Webel::SE:«blackbox», Webel::SE:«design», Webel::SE:pragmatic
CONVENTION, MODELLING, NAMING, TIP 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'). Stereotype, «keyword», custom Stereotype SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice, Webel::SE:«whitebox», Webel::«whitebox:logical», Webel::SE:«blackbox»
CONVENTION, MODELLING, NAMING, TIP 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). Package, Model SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice
CONVENTION, MODELLING, NAMING, TIP 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.) SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 Package, Model, NamedElement::name SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice
CONVENTION, MODELLING, NAMING, TIP 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! Package, Model SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice
ASSERTION SysML tools can ALSO be used for many graphical Model-Based Engineering tasks that benefit from Single Source Of Truth - and even without any formal System Engineering methodology (which is NOT to say that formal System Engineering is not also useful). SysML-1.6, SysML-1.7, SysMLv2 systems engineering, Model-Based Systems Engineering, SysML, Systems Modeling Language, SysMLv1.x, SysMLv1.7, SysMLv2, Single Source of Truth, model-based engineering
ASSERTION Webel: Dr Darren says: "Many aspects of older Document-Intensive Systems Engineering methodologies and the reporting obligations they impose on their users were intended to address problems that simply DO NOT EXIST ANYMORE with modern MBSE with SysML!" SysML-1.6, SysML-1.7, SysMLv2 SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice
MODELLING, NAMING, TIP 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!" SysML-1.6, SysML-1.7, SysMLv2 NamedElement::name, Type, custom Stereotype, tagged value SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice, systems engineering, Document Intensive Systems Engineering, SysMLv2
CONVENTION, MODELLING, POLICY, TIP 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 Block Definition Diagram, SysML Internal Block Diagram SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice
MODELLING, TIP, TOOL 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)! SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Webel Best Practice, table, query, model query, table query, query matrix, dependency matrix, matrix, relationship map, relationship matrix, derived relationships, MagicDraw implied relationships
MODELLING, TIP 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! SysML-1.6, SysML-1.7, UML-2.5.1 Association, NamedElement::name, Stereotype, «keyword», custom Stereotype ItemFlow SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Webel Best Practice, semantic triple, ontology, Web Ontology Language, pseudo semantic triple
MODELLING, TIP, TOOL 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. InformationFlow::conveyed, InformationFlow, Association, Connector, InformationFlow::realizingConnector, InformationFlow::realization ItemFlow SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic
EXPLANATION, GOTCHA, MODELLING Webel: SysML: SE: Terminology: '«logical» handler' is used for a specific kind of «logical» subsystem (aka 'conceptual subsystem') that is a SPECIFIC collaboration of parts that handle one Activity usage in a higher level «whitebox» Activity. SysML-1.6, SysML-1.7 Activity SysML Activity Diagram SysML, Systems Modeling Language, MBSE, SysMLv1, Webel::SE:«blackbox», Webel::SE:«whitebox», Webel::«whitebox:logical», functional analysis, Webel::logical handler, logical subsystem
EXPLANATION, GOTCHA, MODELLING HOWTO "cheat" with two-level white-boxing and tracking stereotypes because you just don't want that darn "extra" logical subsystem (conceptual subsystem) Block the systems engineers reckon you are supposed to use (and why it's easier to actually use one) SysML-1.6, SysML-1.7 Activity SysML Activity Diagram SysML, Systems Modeling Language, MBSE, SysMLv1, Webel::SE:«blackbox», Webel::SE:«whitebox», Webel::«whitebox:logical», functional analysis, Webel::logical handler, logical subsystem
ASSERTION, MODELLING, PATTERN Webel: SysML: Heard of "follow the money"? In MBSE we "follow the flows"! Identify requests, data packets, messages, signals early on and use ItemFlow as often as you can wherever you can! Adopt a signal processing mindset throughout (systems thinking). SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 InformationFlow, Signal ItemFlow, ItemFlow::itemProperty SysML, Systems Modeling Language, MBSE, SysMLv1, Webel Best Practice, signal processing, systems thinking
CONVENTION, MODELLING, NAMING, TIP 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). Activity, Use Case scenario, CallBehaviorAction, CallBehaviorAction::behavior SysML Activity Diagram SysML, Systems Modeling Language, MBSE, SysMLv1, functional analysis, white-box, black-box, Webel::SE:«blackbox», Webel::SE:«whitebox»
CAVEAT, EXPLANATION, MODELLING, TOOL 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. SysML, Systems Modeling Language, MBSE, SysMLv1, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic, Model-Based Systems Engineering, MagicGrid
MODELLING, TIP 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! SysML-1.6, SysML-1.7 Association, Association::memberEnd, Property::owningAssociation, Association::ownedEnd part property, MD:PartProperty, reference property, MD:ReferenceProperty Model-Based Systems Engineering, SysML, Systems Modeling Language, SysMLv1, MBSE, MagicDraw SysML, MD SysML, Cameo Systems Modeler, CATIA Magic
MODELLING, TIP 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.) SysML-1.6, SysML-1.7 Association, Association::memberEnd, Property::owningAssociation, Association::ownedEnd, Property::association part property, MD:PartProperty, reference property, MD:ReferenceProperty Model-Based Systems Engineering, SysML, Systems Modeling Language, SysMLv1, MBSE