TIP, TOOL |
SysMLv1: TIP: SysMLv1: Cameo: JoinNode and MergeNode distinguishing notations option |
SysML-1.7, UML-2.5.1 |
MergeNode, ForkNode, JoinNode, DecisionNode |
|
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic |
ISSUE, TOOL, WARNING |
UML/SysMLv1: ISSUE: Cameo Simulation Toolkit (v2024x): Simulation does not test even the simplest broken OCL2.0 Constraint. The unsatisfactory "WORKAROUND" is to use another language for the Constraint (they nearly all work). |
SysML-1.7, UML-2.5.1 |
Constraint |
|
Unified Modeling Language, UML, SysML, SysMLv1, CATIA Magic, Object Constraint Language, OCL |
MODELLING, TIP |
SysMLv1: Webel strongly recommends a looser, more "logical" modelling strategy over modelling practices with strong coupling to "physical" ownership. Many of the Webel Best Practices support this approach. |
SysML-1.2, SysML-1.3, SysML-1.4, SysML-1.5, SysML-1.6, SysML-1.7, UML-2.5.1 |
Element::owner, containment, containment operator |
|
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic, Webel Best Practice |
TIP |
SysMLv1: TIP: If a symbol for an element that appears on a Block Definition Diagram or a Package Diagram is not directly within the namespace of the context of that Diagram indicate the ownership using display options or one of the containment devices |
SysML-1.2, SysML-1.3, SysML-1.4, SysML-1.5, SysML-1.6, SysML-1.7 |
Namespace, diagram frame, frame, containment, containment operator, Package, Model |
SysML Package Diagram, SysML Block Definition Diagram, Block |
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Webel Best Practice |
ASSERTION, WARNING |
SysMLv1.7: A port MAY be typed by a ValueType (and validates in Cameo Systems Modeler) but this is NOT recommended best practice. Prefer a Block or InterfaceBlock with a directed FlowProperty typed by a ValueType. |
SysML-1.7 |
Port |
flow port, FlowProperty, FlowProperty::direction, ValueType, Block, InterfaceBlock |
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic |
GOTCHA, TIP |
SysMLv1: A 'part property' in SysMLv1 does not formally include 'port' (which is considered a special kind of property), even though the Port metaclass in UML2 extends Property and a 'port' may have 'composite' aggregation and be typed by a Block. |
SysML-1.2, SysML-1.3, SysML-1.4, SysML-1.5, SysML-1.6, SysML-1.7, UML-2.5.1 |
Property, Port, part object, AggregationKind::composite |
part property, MD:PartProperty |
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering |
GOTCHA, TIP, WARNING |
SysMLv1: GOTCHA: The term "structure" is massively overloaded and can be used for many different things in different contexts by different people (including amongst SysMLv1 experts) |
|
|
|
|
TIP |
SysMLv1: Only the 'text' of the client Requirement of a Copy relationship need be the same as the 'text' of the supplier Requirement. The 'id' of the client Requirement SHOULD be different (unique). |
SysML-1.7 |
|
AbstractRequirement::id, Requirement, Copy |
|
ISSUE |
SysML1.7: ISSUE: Claim that 'Datastore already has an overwrite semantics' is inconsistent w.r.t. UML2.5.1 |
SysML-1.7 |
DataStoreNode |
|
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering |
MODELLING, TIP, TOOL, WARNING |
SysMLv1.7 vs Cameo Systems Modeler (CATIA Magic) implementation: PARTIAL list of differences. |
SysML-1.7 |
|
|
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic |
GOTCHA, TOOL, WARNING |
SysMLv1: Rate in Cameo Systems Modeler (CATIA Magic) additionally extends ObjectNode (not just ActivityEdge and ParameterSet) |
SysML-1.7 |
ActivityEdge, ParameterSet, ObjectNode |
Rate, Continuous, «rate», «continuous», Discrete, «discrete» |
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic |
EXPLANATION |
UML2/SysMLv1: A control Pin (a Pin with isControl = True) for a CallBehaviorAction does not have a corresponding Parameter |
SysML-1.7, UML-2.5.1 |
Parameter, Pin, Pin::isControl, ObjectNode::isControlType |
ControlOperator, ControlValueKind |
|
WARNING |
SysMLv1: The SysMLv1.6 ConnectorProperty was DEPRECATED in SysMLv1.7. see SysMLv1.7 formal/24-01-07: Annex C: Deprecated Elements and Migration: C.1.3 ConnectorProperty. Use AdjunctProperty with a connector as principal instead. |
SysML-1.6, SysML-1.7 |
|
|
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic |
GOTCHA, ISSUE, MODELLING, NAMING, WARNING |
SysMLv1: CAUTION: The notation and recommended use for PropertySpecificType changed significantly between SysMLv1.2 and SysMLv1.7. And the spec itself does not seem to use the new notation (which is also not supported by Cameo Systems Modeler v2024x) |
SysML-1.2, SysML-1.3, SysML-1.4, SysML-1.5, SysML-1.6, SysML-1.7 |
|
PropertySpecificType |
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic |
TIP, WARNING |
SysMLv1: Some invalid multiplicity examples with navigable and non-navigable Association ends. In Cameo Systems Modeler with validation. |
SysML-1.6, SysML-1.7 |
Association, Association::memberEnd, Association::ownedEnd, Property, Element::owner |
|
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic |
MODELLING, TIP, TOOL |
TIP: SysMLv1: Cameo Systems Modeler: HOWTO show Probability on ActivityEdges. (And a String, not a ValueSpecification, is used for the 'probability' of Probability). |
SysML-1.6, SysML-1.7 |
ActivityEdge, tagged value, Stereotype, ValueSpecification |
Probability, Probability::probability |
SysML, SysMLv1, Systems Modeling Language, Model-Based Systems Engineering, Cameo Systems Modeler, CATIA Magic |
MODELLING, TIP, TOOL |
SysMLv1: Cameo Systems Modeler: HOWTO Create a PrivatePackageImport with keyword «access». Use an «import» with visibility kind set to 'private' (the displayed keyword with change to «access») |
SysML-1.6, SysML-1.7 |
PackageImport, PackageImport::visibility |
PrivatePackageImport |
SysML, SysMLv1, Cameo Systems Modeler, CATIA Magic, Systems Modeling Language |
TIP, TOOL |
TIP: SysMLv1: Cameo Systems Model permits use and mixing of many more kinds of model elements than are "officially" indicated in the SysMLv1 specification(s) and supports some symbols and notations beyond the specification. |
fUML-1.4, SysML-1.6, SysML-1.7 |
|
|
|
GOTCHA, TIP, TOOL |
SysMLv1: Cameo Simulation Toolkit: GOTCHA: In SysMLv1 it is "officially" recommended that an analysis context Block has a reference (only) to the subject of the analysis (but then you need to assign an instance as default value to make it run IN THE TOOL) |
fUML-1.4, SysML-1.6, SysML-1.7 |
Property::defaultValue, InstanceSpecification |
constraint property, constraint parameter, Block, SysML Parametric Diagram |
SysML, SysMLv1, Magic Model Analyst [Cameo Simulation Toolkit], CATIA Magic, simulation |
ISSUE, LIMITATION |
ISSUE: Mathematica (v14.1): Known Apple BUG: macOS Ventura: M1 Max/Silicon: Export to ProRes is buggy! WORKAROUND: To use transparency, export to PNG then use Mac Compressor or Handbrake to convert to ProRes4444 |
|
|
|
Wolfram, Mathematica, 3D, 3D modelling, PNG, QuickTime, ProRes4444, ProRes, macOS, M1 Max, M1 Silicon |
TIP |
TIP: Mathematica: To Export a ListAnimation without the controls (and without possible frame drops) Export the List of frames directly (not the output of ListAnimation) |
|
|
|
Wolfram, Mathematica, 3D, 3D modelling |
TIP |
TIP: Mathematica: HOWTO Get the (approximate) bounding box of any Graphics3D object for use in PlotRange. Use Charting`get3DPlotRange |
|
|
|
Wolfram, Mathematica, 3D, 3D modelling |
GOTCHA, TIP, TOOL |
TIP: SysMLv1: Cameo: Can't see the Item Flow Manager icons in the smart manipulators for an ObjectFlow in an Activity Diagram with swimlanes? Try setting Item Flow Creation Mode to 'Between Part Types' instead of 'Direct' under your Project settings! |
SysML-1.6, SysML-1.7 |
InformationFlow::conveyed, InformationFlow, Association, Connector, InformationFlow::realizingConnector, InformationFlow::realization, ObjectFlow |
ItemFlow, Cameo::ItemFlowManager, Cameo::SmartManipulator |
SysML, Systems Modeling Language, SysMLv1, MBSE, Model-Based Systems Engineering, Cameo Systems Modeler, MagicDraw SysML, CATIA Magic |
|
FastAPI RESTful web services for Python. Good! |
|
|
|
FastAPI, python, REST, RESTful, web service |
TIP |
JetBrains, IntelliJ IDEA (or the dedicated PyCharm version for just Python), and PHP Storm. I love you. |
|
|
|
|
ASSERTION |
Dr Darren's thoughts on some problems with "Python culture" (and it isn't the fault of the language, per se, nor of the best Python language developers or commercial Python library developers) |
|
|
|
python, Mathematica, Wolfram, Wolfram Language |
TIP |
TIP: Postman: The term 'variable' is used for at least three different things in Postman; (1) query or body parameters exposed as {{var}} driveable variables; (2) Environment variables assigned to such a parameter; (3) Flow specific variables. |
|
|
|
Postman, REST, RESTful, end point |
GOTCHA, TIP |
WISHLIST: Postman: Ability to hide specific variable rows on a Request block. CASE: Exposed variables driven by Environment variables (which VISUALLY appear empty and take the assigned Environment value unless explicitly connected and overridden) |
|
|
|
Postman, REST, RESTful, end point |
GOTCHA, TIP |
TIP (GOTCHA): Postman (v11.27.4): The value of a {{var}} set to an Environment variable (specifically) under Request settings is exposed as a Port on a Flow Request but does not VISUALLY APPEAR to take the Environment variable value (but in fact does) |
|
|
|
Postman, REST, RESTful, end point |
ISSUE, WORKAROUND |
ISSUE: Postman (v11.27.4): The (Mac) Desktop version does not always offer the Output block in a Flow patch |
|
|
|
Postman, REST, RESTful, end point |
TIP |
TIP: Postman: Loading a new Open API JSON file as Definition will not override most customised query or body parameter settings on an API Request |
|
|
|
Postman, REST, RESTful, end point |
TIP |
TIP: Postman: HOWTO Copy an API Request to a decoupled Collection Request and customise its parameters (or expose specific parameters to drive as Ports on Flows) |
|
|
|
Postman, REST, RESTful, end point |
ISSUE |
ISSUE: Postman (v11.27.4): You can access the underlying Request settings of a Request block in a Flow easily using the little angled arrow at the top of the Request block title, but getting back to the client Flow is cumbersome. |
|
|
|
Postman, REST, RESTful, end point |
ISSUE, WORKAROUND |
ISSUE: Postman (v11.27.4): Sometimes "stalls" with an incomplete flashing view of the loaded API after uploading a new OpenAPI v3.1 JSON definition file. WORKAROUND: Restart Postman |
|
|
|
Postman, REST, RESTful, end point |
ISSUE, WORKAROUND |
ISSUE: Postman (v11.27.4): An OpenAPI v3.1 JSON definition file upload does not always "catch". WORKAROUND: Toggle to OpenAPI v3.0 mode then back to OpenAPI v3.1 |
|
|
|
Postman, REST, RESTful, end point |
TIP |
TIP: Postman: To make a query or body parameter appear as a driveable Port on a Flow Request block you have to expose it as a {{var}} variable under the underlying Request settings |
|
|
|
Postman, REST, RESTful, end point |
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 |