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. |
|
|
|
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 |
DISPLAY, MODELLING, NAMING, NAVIGATION, POLICY, SETTINGS, STYLE, TIP, TOOL |
Webel: SysMLv1: Overview of annotated Diagram Slides and Note pages related to general high level SysML modelling principles (some specific to MagicDraw/Cameo). Recommended reading for all Webel SysML/MBSE course attendees. |
SysML-1.6, SysML-1.7 |
|
|
Model-Based Systems Engineering, SysML, Systems Modeling Language, SysMLv1, Webel Best Practice |
MODELLING |
Webel: SysMLv1: Overview of annotated Diagram Slides and Note pages related to UseCases and their combination with a System (of interest), SystemContext, and drill-down to scenario Sequence Diagrams (Interactions) and Activity Diagrams. |
SysML-1.6, SysML-1.7 |
UseCase, UseCase::subject |
SysML Use Case Diagram, System, SystemContext |
Model-Based Systems Engineering, SysML, Systems Modeling Language, SysMLv1 |
MODELLING |
SysMLv1: A common misunderstanding: Just because a UseCase symbol appears inside the rectangle of a subject Classifier does NOT mean that it is owned by that Classifier and can only have that one Classifier as 'subject', and it does not imply ownership! |
SysML-1.6, SysML-1.7 |
UseCase, UseCase::subject |
SysML Use Case Diagram, System, SystemContext |
Model-Based Systems Engineering, SysML, Systems Modeling Language, SysMLv1 |
ASSERTION, MODELLING, PATTERN, TIP |
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! |
SysML-1.6, SysML-1.7 |
Port, Connector |
FullPort, ProxyPort, "standard" Port, InterfaceBlock, ~InterfaceBlock, DirectedFeature, DirectedFeature::featureDirection, FeatureDirectionKind, FeatureDirectionKind::provided, FeatureDirectionKind::required, FeatureDirectionKind::providedrequired, conjugation |
SysML, Systems Modeling Language, SysMLv1, MBSE |
MODELLING |
SysMLv1: "Should" the 'subject' of a top-level UseCase be a System or (a particular) SystemContext? Answer: Which one would you like to be correct!? [WITH EXTERNAL LINKS] |
SysML-1.6, SysML-1.7 |
UseCase, UseCase::subject |
SysML Use Case Diagram, System, SystemContext |
Model-Based Systems Engineering, SysML, Systems Modeling Language, SysMLv1 |
CAVEAT, MODELLING, TOOL |
SysML: Cameo/MagicDraw: ItemFlow notation/indication on ObjectFlow edges in SysML Activity Diagrams is a tool-specific feature, although it was proposed and discussed (but DEFERRED) as part of the OMG SysMLv1 Revision Task Force (RTF). |
|
|
SysML Activity Diagram, ItemFlow |
SysML, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic |
CONVENTION, FEATURE, MODELLING, OPTION, TIP, TOOL |
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. |
SysML-1.6, SysML-1.7 |
UseCase, Use Case scenario, Actor, UseCase::subject |
SysML Activity Diagram, swimlane, custom block-based «actor», part property, SystemContext |
Systems Modeling Language, SysML, MD SysML, Model-Based Systems Engineering, scenario, MagicGrid, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic, primary scenario |
MODELLING, TIP, TOOL |
SysMLv1: MagicDraw/Cameo: Synchronising ItemFlows on Connectors with ObjectFlows in Activities using the Item Flow Manager. Nice! |
SysML-1.6, SysML-1.7 |
InformationFlow::conveyed, UseCase::subject, Use Case scenario, Activity, Connector, InformationFlow::realizingConnector, InformationFlow::realizingMessage, InformationFlow::realizingActivityEdge |
ItemFlow, SysML Block Definition Diagram, SystemContext |
SysML, MD SysML, Systems Modeling Language, SysMLv1, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic |
MODELLING, TIP |
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. |
SysML-1.6, SysML-1.7 |
Association, link, "link" InstanceSpecification, InstanceSpecification, Slot, InstanceSpecification::slot |
SysML Block Definition Diagram, object diagram |
SysML, SysMLv1, Systems Modeling Language, Webel::"communication" Association (informal) |
MODELLING, TIP |
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). |
SysML-1.6, SysML-1.7 |
Association, InformationFlow::conveyed, Connector |
ItemFlow, ItemFlow::itemProperty, SysML Block Definition Diagram, SysML Internal Block Diagram |
SysML, SysMLv1, Systems Modeling Language, Webel::"communication" Association (informal) |
MODELLING, NAMING, TIP |
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. |
|
InformationFlow, InformationFlow::conveyed, InformationItem |
ItemFlow, ItemFlow::itemProperty |
|
GOTCHA, MODELLING, OPTION, TIP, WARNING |
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. |
SysML-1.6, SysML-1.7 |
UseCase, Use Case scenario, UseCase::subject |
SysML Use Case Diagram, Block |
Systems Modeling Language, SysML, MD SysML, Model-Based Systems Engineering, scenario |
MODELLING, OPTION, TIP |
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-1.6, SysML-1.7 |
UseCase, Use Case scenario, Actor, UseCase::subject |
SysML Activity Diagram, swimlane, custom block-based «actor», part property |
Systems Modeling Language, SysML, MD SysML, Model-Based Systems Engineering, scenario |
MODELLING, TIP |
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. |
SysML-1.6, SysML-1.7 |
|
|
Systems Modeling Language, SysML, MD SysML, Model-Based Systems Engineering, scenario |
CONVENTION, MODELLING, OPTION, TIP |
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 |
SysML-1.6, SysML-1.7 |
UseCase, Use Case scenario, Actor |
SysML Activity Diagram, Refine, Trace, SysML Use Case Diagram, SysML Sequence Diagram, custom block-based «actor», Allocate, ActivityAllocatePartition, swimlane |
Systems Modeling Language, SysML, MD SysML, Model-Based Systems Engineering, scenario |
CONVENTION, MODELLING, TIP |
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. |
|
UseCase, Actor, Trace, «trace» |
SysML Use Case Diagram, Trace, «external», SysML Internal Block Diagram, custom block-based «actor», swimlane, AllocateActivityPartition, Allocate, SysML Activity Diagram, part property, ActorPart, MD:Customiz |
Systems Modeling Language, SysMLv1, SysML, MagicDraw SysML, Cameo Systems Modeler, Webel:«actor:internal» |
CONVENTION, MODELLING, TIP |
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. |
|
UseCase, Use Case scenario, Trace, «trace» |
SysML Use Case Diagram, Refine, Trace |
Systems Modeling Language, SysMLv1, SysML, scenario, primary scenario |
TIP |
Mathematica: TIP: Start with With, update to Module as needed. |
|
|
|
Mathematica, Mathematica::With, Mathematica::Module, Wolfram, Wolfram Language |
MODELLING |
SysMLv1 (or v2): CHALLENGE EXERCISE: Simplified Parsing Analysis breakdown of 'Build an Airport' with variations |
|
|
ElementGroup, ElementGroup::/member, AbstractRequirement, Satisfy, Refine, DeriveReqt |
Webel Parsing Analysis, Systems Modeling Language, requirements engineering, WPA:«snippet», WPA:Snippet::source, Model-Based Systems Engineering, MBSE, SysML |
CONVENTION, MODELLING, NAMING, TIP |
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. |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, Parameter, NamedElement::name, Pin, InputPin, OutputPin, ActivityEdge, CallAction, ActivityParameterNode, CallOperationAction, CallBehaviorAction |
SysML Activity Diagram |
systems engineering, Model-Based Systems Engineering, MBSE, SysML, Systems Modeling Language, SysMLv1, SysMLv1.x, SysMLv2, signal processing, Webel Best Practice |
MODELLING, TIP |
Webel: SysML: TIP: Try "reverse" time ordered effect-from-cause Dependencies. Because it's harder to depend on something that does not already exist! |
|
Dependency, Dependency::client, Dependency::supplier, custom Stereotype |
|
Systems Modeling Language, SysML, time, time-ordering, Webel Best Practice |
ASSERTION |
Webel: SysML/MBSE: Dr Darren's Open Letter on why you may initially need the Model-Based (MB) and Single Source Of Truth aspects of MBSE more than the formal Systems Engineering (SE) aspect (or even initially no formal SE process at all) to benefit most! |
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 |
MODELLING, NAMING, TIP |
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! |
SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 |
Type, Property, NamedElement::name |
ValueType, Block, value property, block property |
Systems Modeling Language, SysML, Webel Best Practice, MagicDraw, CATIA Magic, SysMLv1.x, SysMLv2, Cameo Systems Modeler |
EXPLANATION, TIP |
Mathematica: SUPER TIP: Use CreateUUID[] to trigger recalculation against Once[] to create a flexible optionally caching function! |
|
|
|
Mathematica, Wolfram, Wolfram Language, Mathematica::CreateUUID, Mathematica::Once |
EXPLANATION, GOTCHA, ISSUE |
Mathematica: GOTCHA: The Problems Analysis review system of Mathematica Plugin for IntelliJ IDEA reports a declared Module variable used as a Table loop variable as an "Used local variable". DO NOT SIMPLY DELETE IT! |
|
|
|
Mathematica, Wolfram, Mathematica::Module, Mathematica::Table, Wolfram Language, Mathematica:IntelliJ-IDEA-Plugin |
EXPLANATION, GOTCHA, TIP |
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, Wolfram, Mathematica::Module, Mathematica::Table, Wolfram Language |
CONVENTION, TIP |
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.) |
|
|
|
Wolfram, Mathematica, Wolfram Language, Mathematica:notebook |
CONVENTION, NAMING, POLICY |
Mathematica: Webel: ADT pseudo classes: POLICY: The ADT-Methods of an ADT-Class are created as TagSetDelayed UpValues using the 'signature' of the ADT-Class and its defining 'pattern' as 1st argument |
|
|
|
Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT, Webel:ADT:Definer |
CONVENTION, NAMING, POLICY |
Mathematica: Webel: ADT pseudo classes: CONVENTION: PROVISIONAL: The infix operator for calling ADT-Methods on ADT "objects" is the CircleDot (⊙ in Notebooks). ISSUE: \[CircleDot] is NOT GOOD FOR USE IN IDEs! |
|
|
|
Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Class, Webel:ADT:Definer, singleton, Webel:ADT:infix, Webel:ADT:Object |
CONVENTION, NAMING, POLICY |
Mathematica: Webel: ADT pseudo classes: POLICY/DEFINITION: Every "hard coded" definer or defining client of a definer has a corresponding ADT ArchetypeClass. Example ("hard coded"): The definer 'my$def$MY$SmartList' has ArchetypeClass 'MY$SmartList'. |
|
|
|
Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Class, Webel:ADT:Definer, singleton, Webel:ADT:ArchetypeClass |
TIP |
Mathematica: Webel: ADT pseudo classes: TIP: Prefer the Decorator Pattern over multiple inheritance of ADT-Method UpValues! (But not because "inheritance is evil", it isn't.) |
|
|
|
Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:MemberInterface, Decorator Pattern, multiple inheritance, inheritance |
CONVENTION, POLICY, TIP |
Mathematica: Webel ADT pseudo classes: A tricky POLICY & CONVENTION: Client packages MUST access the special "wrapped" primary named ADT-parameter '$$' via $ContextAliases! The recommended alias is "A`" (which stands of course for ADT). |
|
|
|
Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Class, Webel:ADT, Webel:ADT:A`, Mathematica:$ContextAliases |
POLICY |
Mathematica: POLICY: Webel: ADT pseudo classes: Multiple inheritance is supported via ONE (only) ADT-Class and one or more ADT-MemberInterfaces (which have no ADT-Method UpValues) |
|
|
|
Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:MemberInterface, Webel:ADT:Class, inheritance, multiple inheritance |