The MagicDraw SysML Plugin Tutorial Overview

Welcome to the MagicDraw SysML Plugin (MD SysML) tutorial trails.


Please also visit the detailed Hybrid Sports Utility Vehicle sample trail.


 

Activity Decomposition in MD SysML

Select an Activity and then use:

The result will differ depending on whether you use:

  1. explicit Pins (recommended for MD SysML)
  2. OR the "elided Pin" ObjectNode notation (discouraged)



Visit also:

Decomposition in MD SysML: Activity and Actions with Pins

Note use of Pin pairs of matching type. See next image for decomposition.

Decomposition of Activity HigherActivity (Pins owned as objects)

Note correspondence to in/out Pin pair, two properties are NOT owned by HigherActivity as an "ObjectNode".

MD SysML: decomposition of Activity with “ObjectNode”

Although the direct use of “ObjectNode” is discouraged in MD SysML, activity decomposition works in accordance with the SysML1.0 examples. See next image.

Decomposition of Activity HasObjectNode_AVOID_THIS

Corresponds with SysML1.0 examples, a single object appears to be owned by the usage context.

In fact a UML2 ObjectNode is abstract. Although the apparent ownership of an object by the higher activity context is consistent, it can't be represented using "elided Pin notation" in the activity diagram by MagicDraw UML.

Tuning ownership of properties in decomposed activities

By default the part properties generated by the The Activity Decomposition Wizard (for the object flows and actions owned by the decomposed Acfivity) are owned by the generated Associations, which Associations are owned by the same Namespace which owns the generated decomposition diagram.

The following diagrams show the default result and how to fine tune it. The first diagram shows the simple Activity to be decomposed. It includes two CallBehaviorActions and an (knowingly incorrect) "elided Pin" ObjectFlow, which is incorrectly represented by MagicDraw UML (and many other tools).


Make sure the general project option Enable dot notation for associations is on (true)
so you can see ownership of a Property on Association end by a Classifier.

Decomposition of Activity DecomposeMe (default result from Activity Decomposition Wizard)

Project settings (please note carefully):

  • The option show navigabilityis false for every Association end (all 6 of them)
    (inspection shows all 6 generated properties are non-navigable).
  • Global project option enable dot notation for Associations is true.


Only some Comments have been added to this diagram as generated by the wizard. Because project option enable dot notation for Associations is on we can tell that the generated part properties are NOT owned by the Classifier DecomposeMe (because there are no dots showing at the association ends).

Decomposition of Activity DecomposeMe: TUNED: ownership of the generated properties altered using navigability

Project settings (please note carefully): 

  • The global project option Change ownership of non-navigable association ends when changing navigability is set true.
  • The global project option Enable dot notations for associations is set true.
  • The option show navigability is set true for every Association end (all 6 of them).



On changing the navigability of the Association ends for Property o and b1 the ownership changes, they become owned by the activity DecomposeMe.

By contrast, the navigability of the Association end for Property b2 was left unchanged, it is still owned by the generated Association.

HOWTO create an ItemFlow on a Connector easily in MD SysML using Drag n' Drop

To create an ItemFlow on a Connector simply drag a Block (for an ItemFlow without 'itemProperty') or a Property of a Block (for an ItemFlow with that Property as 'itemProperty') from the model browser onto the Connector in an IBD.

HOWTO create an ItemFlow on a Connector in an IBD

In MD SysML you can create an ItemFlow by:

An ItemFlow with that Property as the 'itemProperty' of the ItemFlow will be created. A dialog will popup with sensible faults and you can choose the flow direction.

You can also drag a Block from the Browser onto a Connector to create and ItemFlow without an 'itemProperty'.



TIP: It is much easier to use Drag n' drop than the
InformationFlow menu buttons
in the diagram menubar.

See also:

HOWTO create an ItemFlow on a Connector in an IBD: complementary Block Definition Diagram

Shows the Block Definition Diagram that corresponds to the specific ItemFlow created on a Connector owned by the context of a source and target.

HOWTO easily assign multiple diagram hyperlinks to a symbol and GoTo to a chosen one in MD SysML

The technique is the same as for UML2 and MagicDraw UML. Please visit:

 

HOWTO inherit structure

This tutorial trail shows how to inherit structure between abstract systems and concrete systems. The example is based on an email from Alex Khazanov, Lead Systems Engineer,
Harris Corporation (thanks Alex for your query):

I created a generic radio system block (abstract) containing a receiver / transmitter block and a power amplifier block. Each sub-block has a couple of flow ports In addition, I created VHF and HF systems that are connected to the generic (parent) radio system with generalization / specialization relationship. My expectation was to see / be able to populate some of the attributes / operations / ports / parts in the child blocks automatically… Can it be done?

The short answer is "yes". In an IBD of the inheriting block (like the VHF System) you can use:

Related Elements - > Display Parts (then select your inherited parts)

(Note, this only works with frames on !) Then, select each part and use:

Related Elements -> Display Ports (then select your inherited ports)

At some stage you will need to make assembly connections between your parts and/or ports of parts, and you also have to export your flows to the boundary of the system using delegation connections to external flowports. These can also be shown with:

Related Elements -> Display Paths

from the connected elements.

Now please follow the trail images to see this in action.

BDD of radio systems including inheritance

First I show the entire system (including inheritance) in a BDD.

IBD of the abstract RadioSystem

This shows the parts that will be inherited. The ports will also be inherited (as will any connections that may have been made).

TIP: I used the new StructuredBlock facility to create a RadioSystem synchronised with its IBD.

IBD of VHF concrete radio system inheriting parts and ports from abstract RadioSystem

The inherited parts were shown by using the right context menu on the empty IBD diagram (only works with frames on):

    Related Elements -> Display Parts (then select all parts)

The ports were shown by using the right context menu on the inherited parts:

    Related Elements -> Display Ports (then select all ports)

To show any inherited connections use the right context menu on one of the connected elements :

     Related Elements -> Display Paths

HOWTO use MD SysML power features for properties in IBDs

You can drag a Property from within a Block in the model browser onto the diagram area of a framed IBD to create the symbol for that Property in the IBD:

You can thus create any number of IBDs (for various views of a system) reusing existing Property definitions with complete validation.



 You can re-create all existing part property symbols (and Connector symbols) for an entire Block:



Visit also:

HOWTO use nested flowports within standard ports to model logical channels


MD SysML
supports nested ports. One can sensibly combine nested SysML flowports and standard ports (UML Ports) to represent logical channels and information flow within a higher-order connection between standard ports and/or parts that is subject to a contract/protocol represented by an Interface.

This has no effect on the underlying metamodel or your project files, it is merely notational. Since a Port is a Property and a Property is a TypedElement, if the Type of Port also has Ports then they can be shown to nest. Although there are no notational examples of this in the UML2 or SysML specs (yet), it is completely consistent with the metamodels. So please DO feel free to use them whenever you like in MagicDraw UML and MD SysML !

The example here shows a simple system for monitoring the position and angle of a physical object with analog sensors, the output voltages of which are converted to a digital encoding that is acquired by a monitoring software application via a software API for polling an A/D card in a personal computer.

Please note that:

To see the defined Acquire and Poll interfaces of the standard ports please visit the associated BDD.


Visit also:

 

On combining standard ports and flow port_ building blocks and ports for Object Monitor example


HOWTO use the active validation engine to apply fixes in the MD SysML Plugin

See also this tutorial movie of the active validation system in action


 MD UML and MD SysML now (since 15.5) have improved "active" and "passive" validation engines. The "active" validation engine observes a model as it is created, and identifies broken constraints, highlights them (with a yellow warning box), and offers possible solutions to problems.

The active validation Engine does NOT prevent (intercept) the creation of incorrect models, it only flags problems, and offers fixes.

As an example we examine here a model of a stereo audio system with a non-atomic FlowPort that is typed by a FlowSpecification Stereo with a 'l:~' (left) and 'r:~' (right) FlowProperty, both with direction 'out', where ~ is a DataType that indicates an audio flow. The 'direction' of a FlowPort typed by Stereo should therefore also be out:

From SysML1.0: 9.3.2.3 FlowPort:

.. A nonatomic flow port relays items of several types as specified by a FlowSpecification... If a flow port is typed by a flow specification, then it is nonatomic ..

[3]If the FlowPort is nonatomic, and the FlowSpecification typing the port has flow properties with direction "in," the FlowPort direction is "in" (or "out" if isConjugated=true). If the flow properties are all out, the FlowPort direction is out (or in if isConjugated=true). If flow properties are both in and out, the direction is inout.

The FlowPort o:Stereo does not have any direction set at all yet, so the passive validation engine alerts the user with a yellow box around the port symbol:

If the user then clicks on that port symbol once a small warning sign appears at the top of  the smart manipulators:

If you hold the mouse pointer over the warning sign a text box "tool tip" will briefly appear with the related constraints text.

Click on the warning sign and a small dialog with possible fixes is offered. We will select:"Set direction of flowport to:out"

The fix is applied. the 'direction' of the nonAtomic FlowPort is now correctly set to out, and the yellow box warning is gone:

HOWTO use the active validation engine to apply fixes in the MD SysML Plugin (screencast movie tutorial)


HOWTO use the SysML Property creation menus in MD SysML

MD SysML has extra SysML Property creation menus. SysML properties are created via the menus with the correct AggregationKind and only a suitable Type may be chosen.

These context menus are offered only when using Systems Engineering perspective. They are offered for (at least):



MD SysML introduces an additional UML Properties compartment to support hybrid software + systems engineering.
UML Properties are not typed by a either: SysML Block, SysML ValueType, UML DataType, or SysML ConstraintBlock

HOWTO «allocate» in MD SysML

In most cases - when the source element and the target element both have visible symbols in one diagram - all you have to do is draw an «allocate» from the source element's symbol to the target.element's symbol.

In order to see the /allocatedFrom and /allocatedTo values you can either:

There are special cases, such as when both source and target elements are not on the same diagram, when you may need to use the Relations dialog in the spec . box of the source element to create an outgoing «allocate» Dependency from the source and then select the"invisible" target element in the element selection browser. (An example is given in the image below, a Block in one diagram is allocated to a Connector that is in another diagram.)


WARNING: do not attempt to use the /allocatedTo or /allocatedFrom fields in the spec. box of a block, these values are derived from existing «allocate» Dependencies, you can't change them.


Thanks to customer Robert Karban of ESO for questions and feedback concerning allocations !

HOWTO: manage block structure and assign values with MD SysML

In this tutorial you will learn how to:

Use MagicDraw's diagram hyperlinking facility to navigate systems engineering models

Before we begin, you need to know the one thing that might save you the most time when modelling with MagicDraw UML and MD SysML.


You can drag n' drop any diagram icon from the browser onto any element's symbol
in an active diagram to hyperlink
that element to the "dragged" diagram ! Simply super !


For practical systems engineering this means you can link elements to "focus diagrams" and "open up" elements at will. I recommend that you:

  • As soon as you create a new element's symbol, ,ask yourself: "What can I hyperlink it to ?", and drag a diagram icon onto it.
  • Hyperlink every single model or package to a SysML Package Diagram (or SysML Block Definition Diagram).
  • Hyperlink every assembly Block to its Internal Block Diagram (IBD):
    • if you use MD SysML's StructuredBlock menu that is done automatically for you.
  • Place at least one Block Definition Diagram (BDD) diagram icon on every Internal Block Diagram (IBD).
  • BIG TIP: drag the Internal Block Diagram (IBD) icon of the Type of a Property onto that Property's symbol in an IBD so that you can open up a part into its matching IBD. Wonderful !
  • Use a top-level SysML Package Diagram or (custom MagicDraw Content Diagram) as a «sitemap» and place its icon on every single diagram in your project::
    • however, be aware that this can prevent modularisation.
  • Hyperlink your top-level SysML «system» and/or «system context» to their IBD or BDD and place them on every diagram possible throughout your project:
    • however, be aware that this can prevent modularisation.

It takes seconds. And it may save you days or weeks or months !

A SysML Internal Block Diagram (IBD) with frame: AssemblyBlock.ibd

<<terminology>>A SysML Internal Block Diagram (IBD) shows the part Properties (and shared and direct reference Properties) of a structured Block, and Connections between them and/or their Ports. It can also show Ports of the structured Block on the boundary frame (Ports are not handled in this trail). An IBD for Blocks in SysML is like a UML2 Composite Structure Diagram for Classes.  A SysML <<Block>> is a stereotyped UML2 Class, which is a StructuredClassifier.

In MD SysML an assembly is known as a structured Block, and it has a special creation menu, which automatically assigns an IBD as the default hyperlink target for the block's symbol, so that whenever the block's symbol appears in a diagram you can "open it up" into its IBD. Very useful ! 

HOWTO use the SysML ValueType, Unit, Dimension system to model real-world quantities


Physical quantities
of real-world systems are described using scientific systems of units and dimensions. SysML1.0 extends the UML Property system to include physical values of quantities measured or stated relative to a chosen Unit, as well as industrial quantities. You can define custom ValueTypes (which may be used to type value properties in SysML).

There are two main uses of ValueTypes (which are illustrated in the following pages of this trail):

  1. To indicate and assign a specific Unit (with a Dimension) to a value property that represents a named quantity. The value of the quantity is then stated (or measured) relative to that Unit (see the example default value statements). The ValueType is usually named after the symbol of it's fixed Unit. The examples following have been denoted «unit-like» for illustration only.
  2. To define a "kind of quantity" that is not bound to a specific block. The ValueType is named to indicate the kind of quantity (not the Unit chosen). Changes to the chosen Unit will propagate throughout the system, so special care must be taken with statement of values and defaults ! The examples following have been denoted «quantity kind» for illustration only.

You may also define custom "industrial" Units and Dimensions for use by a custom ValueType.

HOWTO define a custom ValueType to indicate a chosen Unit

You may use a ValueType to indicate and assign a specific Unit (with a Dimension) to a ValueProperty, which represents a named quantity. The value of the quantity is then stated (or measured) relative to that Unit (see the example default value statements). The ValueType is usually named after the symbol of it's fixed Unit.


  • The Dependencies in this diagram are for illustration only; they are not needed to define the Unit and Dimension of a ValueType. Just use the specification dialog.
  • The examples here have been denoted «unit-like» for illustration only.


HOWTO define a custom ValueType as a system-wide "kind of quantity" (or after its Dimension)

You may use a ValueType to define a "kind of quantity" that is not bound to a specific block. In the example below, the ClockFrequency ValueType is defined for an entire system. It may then be used to type a specific ValueProperty representing a specific quantity in a block, such as the frequency of a Processor. In this case, the ValueType is named to indicate the kind of quantity (rather than the symbol of the chosen Unit ). The same principle can be used to name a ValueType after its Dimension.

WARNING: Changes to the chosen Unit will propagate throughout the system,
so special care must be taken with statement of values and defaults
!


  • The Dependencies in this diagram are for illustration only; they are not needed
    to define the Unit and Dimension of a ValueType. Just use the specification dialog.
  • The examples here have been denoted «quantity kind» for illustration only.



Visit also:

Wider reading: detailed proposal for a major revision of the SysML Quantity metamodel

After completing this trail you may also like to examine:

 

TIP: use a <<BlockPackage>> or <<BlockModel>> for each Block and its associated engineering data

I have found the following strategy extremely useful for managing models of real systems. Use a dedicated <<BlockPackage>> (or similarly one can use a <<BlockModel>>) to contain:

  • 1 <<Block>> (only), referenced by the BlockPackage by tagged value
  • 1 Icon (MagicDraw UML enables the insertion of images into diagrams)
  • references to engineering artifacts (such as design manuals, spec sheets)
  • real-world test data (or artifacts linked to external test data)
  • physics models etc.

A systems engineering block may correspond to a very heavy, expensive, and very real thing. So it often deserves a dedicated <<BlockPackage>>.

Also - since a <<Block>> Class can't own an InstanceSpecification - a <<BlockPackage>> or <<BlockModel>> can be used to group the InstanceSpecifications used in MD SysML to initialise the part Properties managed by a structured <<Block>> Class. (Alternatively, the InstanceSpecifications can be contained in a custom stereotyped sub-package.)

Combining the <<BlockModel>> and <<BlockPackage>>

When developing software simulations of MD SysML systems it makes good sense to perform systems engineering with SysML Blocks in dedicated <<BlockModel>>s and software engineering with Classes and Interfaces in matching <<BlockPackage>>s, as illustrated below. This works well under both forward- and reverse-engineering.



NB: SysML1.0 admits both the UML4SysML::Package and the UML4SysML::Model


Visit also:

Organise systems engineering <<BlockModel>>s to support forward-engineering to software simulation <<BlockPackage>>s

The <<BlockModel>> and <<BlockPackage>> strategies can be combined to support software simulation of syseng blocks.

HOWTO progressively configure the initial values of Blocks reused as part Properties


Motto: a system with no values has no value !


We will consider the progressive re-use and re-configuration (or initialisation) of values of blocks used as part properties in various types of vehicles, including inherited configurations. By progressive I mean "one context at a time", as opposed to deep re-configuration of all values of an entire system (which is the subject of another advanced trail).

We will distinguish between the following types of configuration values:

  • Static (or class-level) default values: These correspond to the values one would get using a noargs constructor (see the capacity value of the FuelTank block below). If not overridden on instantiation of the block these become the initial values. They are managed by the Block that owns the ValueProperty.
  • Property-specific initial values (a.k.a. property-specific default values): these are specific to the usage of a Block in a higher context (by a structured block or "assembly"), and if there are many part properties of the same type, they may have different property specific initial values. They are managed by the higher context structured block that owns the part properties, which initialises or configures their (possibly different) values on instantiation. In our example an abstract Vehicle block will configure/initialise a tank:FuelTank part property with a new capacity value.
  • Inherited property-specific initial values: a concrete Car (with 4 wheels) that simply extends Vehicle will inherit the property-specific initial values of the any Vehicle, i.e. when a :Car is instantiated it will initialise its tank:FuelTank to the same new capacity value (overriding the static default value from FuelTank)
  • Redefined property-specific initial values: a TouringCar extends Car to add a RoofRack and to specify a larger tank:FuelTank (presumably for long trips). When a :TouringCar is instantiated it will re-initialise its inherited tank:FuelTank with a larger capacity value (overriding the property-specific initial value of tank:FuelTank within Vehicle).

Let us now work through these cases to see how they are assigned and managed in MD SysML

FuelTank BDD: static (Class-level) default values of a ValueProperty

The static (or "Class-level") default values correspond to the values one would get using a noargs constructor. They are managed by the Block that owns the ValueProperty. If not overridden on instantiation of the Block as a part Property when used in a higher context these become the initial
values
for the part.

Consider the capacity value in the BDD for the FuelTank block below. The designer of the FuelTank does not know what kind of vehicle (or even another type of Fueled Machine) it might be used in, and assigns a rather generic default value to the capacity of 40.0 L. This may or may not suit designers of specific vehicles.

Vehicle BDD: Property-specific initial values of a part Property

Property-specific initial values (a.k.a. Property-specific default values(*)) are specific to the usage of a Block as a part Property in a higher context (by a structured block or "assembly"), and if there are many part Properties of the same type, they may have different property-specific default values (i.e. they will be initialised differently). They are managed by the higher context structured block that owns the part Properties, which initialises or configures their (possibly different) values on instantiation. In our example an abstract Vehicle block will configure its tank:FuelTank part Property by initialising it with a new capacity value.

The property-specific initial values of a part Property are carried by the Slots of an InstanceSpecification of the same type. In the example below have stereotyped the InstanceSpecification tank:FuelTank with «initial values», however this is only for illustration. If you have many parts to configure you may also like to group them in a dedicated Model (I have used a Model named parts below, with a custom stereotype «initialisation»).

Next we will see how to assign these property-specific initial values carries by the Slots of the tank:FuelTank InstanceSpecification to override the static (class-level) default for the capacity ValueProperty in the part tank:FuelTank in the Internal Block Diagram (IBD) for Vehicle.



(*) It has been suggested that the SysML1.0 defaultValue compartment on a part in an IBD should be renamed initial values

Vehicle IBD: using Drag n' Drop to assign Property-specific initial values (to configure values of a part Property)

The Property-specific initial values (a.k.a. the Property-specific defaultValue vector) of a part Property can be assigned in MD SysML using Drag n' Drop of an InstanceSpecification (of the same type as the part Property) from the browser onto the part Property in an Internal Block Diagram (IBD), as illustrated below. (You don't have to have the InstanceSpecification on the IBD, nor
show the illustrative <<initialises>> Dependency.)

On instantiation a (concrete subclass of a) Vehicle will (by default) now initialise the capacity value of the tank:FuelTank to 46.0 L, overriding the static ("class-level") primitive default value of 40.0L that was defined in FuelTank. Note that it is the context block Vehicle - the owner of the part Property tank:FuelTank - which "manages" all of the property-specific initial values and the initialisation of each part Property.

The designer of the abstract Vehicle block, has assumed that this property-specific initial value of the capacity value will suit a wide range of vehicles, so we will next see how this value is inherited in a generic Car.

Car BDD: Inheriting property-specific initial values of a part Property

A concrete Car (with 4 wheels) that simply extends the abstract Vehicle will inherit the property-specific initial values of a Vehicle, i.e. when a :Car is instantiated it will initialise its tank:FuelTank Property to the same new capacity value (again overriding the static default value from FuelTank).

Car IBD: shows inherited property-specific initial values

The capacity of the inherited property tank:FuelTank will be initialised to the same property-specific initial value 46.0L managed by Vehicle.

Next we'll see how to re-configure the capacity value of the tank:FuelTank Property in a new special context, a TouringCar.

TouringCar BDD: Redefining property-specific initial values

Consider now a TouringCar that extends Car to add a RoofRack and to specify a larger tank:FuelTank (presumably for long trips). When a :TouringCar is instantiated it must now re-initialise its inherited tank:FuelTank with a larger capacity value (overriding the property-specific initial value of tank:FuelTank within Vehicle, which is inherited via Car). In order to this it must redefine the inherited tank:FuelTank Property of Vehicle.

The TouringCar will also override the static (class-level) default values for the length and width values of the RoofRack, by initialising its rack:RoofRack part with property-specific initial values.

TouringCar IBD: redefined property-specific initial values

Here we see the Internal Block Diagram (IBD) for the special TouringCar. The part Property tank:FuelTank has be re-initialised to configure it with a tank of larger capacity.

On using an «InitialValues» [InstanceSpecification] stereotype to indicate instances to be assigned to a Property.defaultValue

The use of an «InitialValues» stereotype as illustrated in this trail is completely optional. It is there to support education and illustration, and to indicate that a given InstanceSpecification is "reserved" for use as a Property.defaultValue of a Property of the same or compatible Type.

Users can choose to assign an «InitialValues» stereotype to an InstanceSpecification using the standard stereotype assignment mechanisms.

The Block of a Property that the «InitialValues» InstanceSpecification initialises will know the «InitialValues» InstanceSpecification simply as the Property.defaultValue of the owned Property (which can be achieved in MD SysML by dragging the InstanceSpecification onto the Property in an IBD, or via the Property specification box default value field).

It does not matter at all:

  • which element owns the «InitialValues» instance
  • OR how many properties the «InitialValues» instance is assigned to
  • OR which blocks own the targeted properties.


(*) It has been suggested that the SysML1.0 defaultValue compartment on a part in an IBD should be renamed initial values

Shared initial values

This IBD shows how the same InstanceSpecification (optionally stereotyped as <<InitialValues>>) can be assigned to the Property.defaultValue of more than one Property, and to properties from different blocks.

HOWTO deeply configure the initial values of entire complex assemblies of blocks (ADVANCED TOPIC)

We can handle a wide range of systems engineerings configuration tasks by progressively applying the following:

However, none of these approaches can handle deep re-configuration of complex assemblies, an advanced topic which is the subject of this mini-trail.

Consider the case of a Truck reusing a complex (yet naive) WheelHubAssembly for 3 pairs of Wheels, each with different characteristics. Although the basic WheelHubAssembly might have been suitable for a range of Vehicles (like a Car, a TouringCar, and a MiniVan), it is not nearly suitable for a large Truck.

Many parts and subparts of the WheelHubAssembly required for a Truck will be larger and will need to be stronger to handle heavy loads:

  • the diameter of the Tire, TireBead, and Rim etc. will all need to be larger.
  • the inflationPressure value of the WheelAssembly will be higher
  • the LugBoltJoint will be subjected to greater torque and boltTension, and the LugBoltThreadedHole will have larger lugBoltSize and threadSize

The progressive configuration strategies fail here because the new configuration requirements "cascade" throughout the entire complex WheelHubAssembly, from the outermost context to the deepest part. We could just start with a completely new TruckWheelHubAssembly that configures a completely new TruckWheelAssembly, etc. right down to a TruckLugBoltJoint, however that gives us no reuse at all, not even of the existing block structures.

Instead we could use the SysML PropertySpecificType strategy, a set of "on-the-fly" extensions (subtypes) of each Block used in a complex assembly hierarchy, to afford a point of redefinition of the part Properties and their value Properties as required. It will be demonstrated that this strategy, while offering the widest range of deep redefinition possibilities - including redefinition of operations and constraints - is mostly inefficient and cumbersome for the purposes of merely assigning values deeply to a system used in a given context. In this trail we will learn what a PropertySpecificType is and investigate some of its pros and cons.

WheelHubAssembly BDD: a pre-configured complex assembly

Let us consider first the Block Definition Diagram (BDD) of an entire WheelHubAssembly to be re-used with deep reconfiguration in a Truck (overriding many of the static (class-level) default values). We also want to be able to simply display the "value state" of all elements of a used :WheelHubAssembly as the system that uses it evolves.


As always, I recommend (in MagicDraw UML) the use of «composition» wrapper Components to logically and graphically organise the elements.


 

[LugBoltThreadedHole] example of a lowest-level PropertySpecificType

Let us start by redefining default values using a PropertySpecificType [LugBoltThreadedHole] for a lowest-level block. A higher level PropertySpecificType will then compose a part apparently "typed" by [LugBoltThreadedHole] instead of the base LugBoltThreadedHole (see next pages). In fact one is not supposed to show a a named PropertySpecificType in a Block Definition Diagram (BDD) in this way:

SysML1.0: 8.3.2.8 PropertySpecificType:

Constraint [2] The name of a classifier to which a PropertySpecificType is applied must be missing. (The “name” attribute of the NamedElement metaclass must be empty.)

SysML1.0: 8.3.1.2 Internal Block Diagram:

Property-specific type

Enclosing the type name of an internal property in square brackets specifies that the type is a local specialization of the referenced type, which may be overridden to specify additional values or other customizations that are unique to the property. Redefined or added features of the newly defined type may be shown in compartments for the property.

However for illustration, and for easy illustration in IBDs, we nevertheless use an explicit subtype [LugBoltThreadedHole].


The values are for illustration only (the author is no automotive engineer nor car freak).


[Hub] BDD: example of cascading use of PropertySpecificTypes

The part of a PropertySpecificType is  redefined to use a PropertySpecificType specialisation of the composed part of its own Generalization parent, the "cascading" effect.

[Hub] IBD

From the perspective of the parent PropertySpecificType it now has a PropertySpecific instance as a part.

It will take the static (class-level) default values for the values of the part, since no property-specific default values were assigned.

 

[WheelHubAssembly] BDD

Here we see one level higher up.

Problem: the "cascading" PropertySpecificTypes quickly become unwieldy to manage both graphically (in diagrams) and in the model ! Clearly a very high degree of automation would be required to make this practical for real-world systems engineering.

[WheelHubAssembly] IBD

PROBLEM: connections must be repeated in a new IBD for the PropertySpecificType, and can't be easily typed with existing Associations between the non-PropertySpecificTypes (the true parent blocks of the system).

Deep configuration trail conclusions

It has been shown that the SysML PropertySpecificType strategy suffers from many disadvantages. While it admittedly does offer the greatest possibility of redefinition of default values, operations, and constraints, it is fundamentally subject to inefficiency both in modelling and diagramming, primarily because of the "cascading" effect of the implied subtypes of an existing complex assembly. It also presents problems for reuse of existing typed connections between parts.

If we are just interested in deep re-configuration of a complex assembly, or in statement of its evolving "value state", an alternative offers itself. We may use a ValueSlice strategy, which manages a list of InstanceSpecifications, the Slots of which can be mapped efficiently to a values compartment of parts in an IBD for a specific "value slice" usage context of a complex system. The MD SysML team is now working towards practical deep value assignment suited to real-world systems engineering leveraging this technique.

HOWTO: provide/require Interfaces via Standard Ports for service orientation of Blocks in MD SysML

See this related MagicDraw UML tutorial guide (the same principles apply for UML2 classes and SysML blocks):

Overview of the SysML diagrams


Block Definition Diagram (BDD) in MD SysML

Note that MD SysML supports a "hybrid" display of the internal structure of a Block and associative composition in one diagram.


Visit also:

Internal Block Diagram (IBD) in MD SysML


Framed IBD in MD SysML with cross-project navigation

By default the name of a “structured block” is bound to its linked IBD !

  • To create a "structured block" (in a BDD) use the "Structured Block" menu item in the BDD diagram bar.
    • You can then simply click on it to "open it up" into its IBD. 

Symbol-based hyperlink navigation for practical systems engineering:

  • Just drag a the diagram icon of the IBD for the block Type of a Property from the browser onto the Property's symbol in an IBD.
    • You can then simply click on it to "open it up" into its IBD.

Simply Super !

Frameless IBD in MD SysML: pros and cons

pro: provide associated navigation points, esp. “up”

con: including associated elements can block modularisation !

IBD as “context diagram” for a system

A system needs a context in which to interact with entities external to the system boundary:

  • This is often called the 0th (or zero-th) level.
  • A system is used as a part property within a system context.

Package Diagram in MD SysML

Also illustrates some typical SysML model elements.

In MD SysMLuse diagram hyperlinks on symbols and diagram icons freely !

Package Diagram for View and ViewPoint


SysML profile/metamodel and additional MagicDraw SysML stereotypes

Overview of the main SysML stereotypes and additional MagicDraw SysML stereotypes. It includes just enough about each stereotype (and how it can be used in MagicDraw SysML) to get users started. Although this tutorial is still under development; it is already quite detailed and very useful.


Snippets of the SysML1.0 spec (subject to OMG copyright) are quoted in tutorial
pages, as indicated by the stereotype «SysML1.0» in diagram Comments.


Visit also:

10.3.2.1 ConstraintBlock

SysML1.0:

A constraint block is a block that packages the statement of a constraint so it may be applied in a reusable way to constrain properties of other blocks. A constraint block typically defines one or more constraint parameters, which are bound to properties of other blocks in a surrounding context where the constraint is used.

10.3.2.2 ConstraintProperty

SysML1.0:

A constraint property is a property of any block that is typed by a constraint block. It holds a localized usage of the constraint block. Binding connectors may be used to bind the parameters of this constraint block to other properties of the block that contains the usage.



Visit also:

8.3.2.1 Binding Connector

SysML1.0:

A Binding Connector is a connector which specifies that the properties at both ends of the connector have equal values.

8.3.2.10 ValueType

SysML1.0:

Value types may be used to type properties, operation parameters, or potentially other elements within SysML.

SysML 1.0:

SysML ValueType adds an ability to carry a unit of measure or dimension associated with the value.

SysML1.0:

SysML defines ValueType as a stereotype of UML DataType to establish a more neutral term for system values that may never be given a concrete data representation. For example, the SysML “Real” ValueType expresses the mathematical concept of a real number, but does not impose any restrictions on the precision or scale of a fixed or floating-point representation that expresses this concept. More specific value types can define the concrete data representations that a digital computer can process, such as conventional Float, Integer, or String types.

Visit also:

8.3.2.2 Block

SysML1.0:

A Block is a modular unit that describes the structure of a system or element. It may include both structural and behavioral features, such as properties and operations, that represent the state of the system and behavior that the system may exhibit. Some of these properties may hold parts of a system, which can also be described by blocks. A block may include a structure of connectors between its properties to indicate how its parts or other properties relate to one another.

SysML blocks provide a general-purpose capability to describe the architecture of a system. They provide the ability to represent a system hierarchy, in which a system at one level is composed of systems at a more basic level. They can describe not only the connectivity relationships between the systems at any level, but also quantitative values or other information about a system.

SysML does not restrict the kind of system or system element that may be described by a block...

Connectors owned by SysML blocks may be used to define relationships between parts or other properties of the same containing block..

8.3.2.3 ConnectorProperty

SysML1.0:

Connectors can be typed by association classes that are stereotyped by Block (association blocks, see Section 8.3.2.7, “ParticipantProperty”). These connectors specify instances (links) of the association block that exist due to instantiation of the block owning or inheriting the connector. The value of a connector property on an instance of a block will be exactly those link objects that are instances of the association block typing the connector referred to by the connector property.

8.3.2.4 DistributedProperty

SysML1.0:

'.. a stereotype of Property used to apply a probability distribution to the values of the property. Specific distributions should be defined as subclasses of the DistributedProperty stereotype with the operands of the distributions represented by properties of those stereotype subclasses.'

8.3.2.6 NestedConnectorEnd

SysML1.0:

.. extends a UML ConnectorEnd so that the connected property may be identified by a multi-level path of accessible properties from the block that owns the connector.

8.3.2.7 ParticipantProperty

SysML1.0:

The Block stereotype extends Class, so it can be applied to any specialization of Class, including Association Classes. These are informally called “association blocks.” An association block can own properties and connectors, like any other block. Each instance of an association block can link together instances of the end classifiers of the association.

To refer to linked objects and values of an instance of an association block, it is necessary for the modeler to specify which (participant) properties of the association block identify the instances being linked at which end of the association The value of a participant property on an instance (link) of the association block is the value or object at the end of the link corresponding to this end of the association.

Participant properties can be the ends of connectors owned by an association block. The association block can be the type of multiple other connectors to reuse the same internal structure for all the connectors. The keyword «participant» before a property name indicates the property is stereotyped by ParticipantProperty. The types of participant properties can be elided if desired. They are always the same as the corresponding association end type.

AssociationBlock: example of decomposed connections between ParticipantProperties

SysML1.0:

Participant properties can be the ends of connectors owned by an association block. 

SysML1.0:

The association block can be the type of multiple other connectors to reuse the same internal structure for all the connectors.

Every usage of AssociationBlock as a Connector typed by it is decomposed into finer connections between participants (and/or nested parts). 

8.3.2.8 PropertySpecificType

SysML1.0:

The PropertySpecificType stereotype is automatically applied to a classifier created by the notation for a property-specific type for a property belonging to a SysML Block or ValueType. It identifies these classifiers so that they may be managed along with the property that they type.

SysML1.0:

Property-specific type
Enclosing the type name of an internal property in square brackets specifies that the type is a local specialization of the referenced type, which may be overridden to specify additional values or other customizations that are unique to the property. Redefined or added features of the newly defined type may be shown in compartments for the property. If the property name appears on its own, with no colon or type name, or if no type name appears between the square brackets, the property-specific type is entirely provided by its own declarations, without specializing any existing type.

The PropertySpecificType was conceived to provide a value-carrier to enable deep assignment of values to an entire system within a given context, such as a configuration context. A PropertySpecificType is indicated by surrounding brackets when displaying a part within an IBD:

    part:[Type] 

It is essentially an "on-the-fly" re-definition ot a type used in a system, and can carry further PropertySpecificType redefinitions for its children, recursively to enable redefinition, and thus value definition, of an entire system (deeply).

This advanced feature is not yet fully supported by MD SysML; instead the MD SysML Plugin team is developing an alternative, more-flexible "value slice" strategy for assigning complete "value states" specific to a usage of an entire system within a given context.


Visit also:

 

9.3.2.3 FlowPort

SysML1.0:

'A FlowPort is an interaction point through which input and/or output of items such as data, material, or energy may flow. This enables the owning block to declare which items it may exchange with its environment and the interaction points through which the exchange is made.'

9.3.2.6 ItemFlow

SysML1.0:

'An ItemFlow describes the flow of items across a connector or an association. It may constrain the item exchange between blocks, block usages, or flow ports as specified by their flow properties. For example, a pump connected to a tank: the pump has an “out” flow property of type Liquid and the tank has an “in” FlowProperty of type Liquid. To signify that only water flows between the pump and the tank, we can specify an ItemFlow of type Water on the connector.'



Visit also: 

Example: ItemFlow without 'itemProperty'

SysML1.0: 9.3.2.6 ItemFlow:

'An ItemFlow .. may constrain the item exchange between blocks, block usages, or flow ports as specified by their flow properties. For example, a pump connected to a tank: the pump has an “out” flow property of type Liquid and the tank has an “in” FlowProperty of type Liquid. To signify that only water flows between the pump and the tank, we can specify an ItemFlow of type Water on the connector.'

Example: ItemFlow with 'itemProperty'

SysML1.0: 9.3.2.6 ItemFlow:

'.. In addition, if there is an item property (corresponds to the conveyed classifier), then one can label the item flow with the item property. For example, a label of “liquid: Water” would imply that the item flow relays Water and this relay is associated with an item property “liquid” of the item flow, i.e., the “liquid” item property is set once Water is relayed.'

AbstractReferenceProperty (MD SysML)

SysML1.0:

A property typed by a Block that does not have composite aggregation is classified as a reference property.

MD SysML distinguishes between a SharedProperty (with AggregationKind 'shared') and a true ReferenceProperty (with AggregationKind 'none'), which both extend AbstractReferenceProperty.

Block extensions (non-normative)

As recommended through SysML1.0 examples:

  • «system» top-level block to be used in a system context
  • «subsystem» grouping (usually physical) within a system
  • «external» outside the top-level system (yet affecting it)
  • «domain» provides a common context for a system and externals
  • «system context» a particular context for a system and externals


Visit also:

BlockProperty (MD SysML)

Abstract base of the three kinds of properties (excluding ConstraintProperty) that can be typed by a Block: PartProperty, SharedProperty, ReferenceProperty

SysML1.0:

A Block that has composite aggregation is classifed as a part property. A property typed by a Block that does not have composite aggregation is classified as a reference property.

MD SysML distinguishes between a SharedProperty and a true ReferenceProperty which both extend AbstractReferenceProperty.


Visit also:

ConstraintParameter (MD SysML)

Encapsulates the constraint parameter concept referred to in the 10.Constraints chapter of SysML1.0.

SysML1.0:

A constraint block typically defines one or more constraint parameters, which are bound to properties of other blocks in a surrounding context where the constraint is used.

SysML 1.0:

A constraint block is defined by a keyword of «constraint» applied to a block definition. The properties of this block define the parameters of the constraint

The MD SysML ConstraintParameter extends Port (which extends Property) to give convenient access to the small-box notation used for parameters in SysML Parametric Diagrams.

PartProperty (MD SysML)

Encapsulates the part property concept introduced in SysML1.0 in 08.Blocks.

SysML1.0:

A property typed by a SysMLBlock that has composite aggregation is classifed as a part property.

Part properties may be shown in a block definition compartment with the label “parts" (in MD SysML use option Sort SysML style).

ReferenceProperty (MD SysML)

SysML1.0:

A property typed by a Block that does not have composite aggregation is classified as a reference property.

MD SysML distinguishes between a SharedProperty and a true ReferenceProperty which both extend AbstractReferenceProperty.

SharedProperty (MD SysML)

SysML1.0:

A property typed by a Block that does not have composite aggregation is classified as a reference property. 

MD SysML distinguishes between a SharedProperty and a true ReferenceProperty which both extend AbstractReferenceProperty.

SysML1.0:

SysML also supports properties with shared aggregation, as shown by a white diamond symbol on an association. Like UML, SysML defines no specific semantics or constraints for properties with shared aggregation, but particular models or tools may interpret them in specific ways.

ValueProperty (MD SysML)

Encapsulates the value property concept, which appears informally throughout the SysML1.0 specification, especially in Chapters 08.Blocks and 10.Constraints.

SysML1.0:

A property typed by a UML DataType or SysML ValueType is classified as a value property.

Value properties may be shown in a block definition compartment with the label “values” (in MD SysML use option Sort SysML style).

SysML1.0 issues

NB: The SysML1.1 Convenience Document is now available, this section will be upgraded to SysML1.1 for the next RTF round.


Selected issues with the SysML1.0 spec are presented and discussed.

They correspond to issues submitted to issues@omg.org via the OMG issues form:

http://www.omg.org/technology/issuesform.htm

Visit also:

http://www.omg.org/issues/sysml-rtf.open.html

http://www.omg.org/techprocess/meetings/schedule/SysML_RTF.html

08 Blocks


(11066) Namespace compartment for blocks

MD SysML example supporting suggested resolution "closed no change".

In most tools users are free to compose systems using the SysML IBD (UML2 composite structure) first or a SysML BDD (UML2 class diagram). In the better tools one can move freely between the two, and the composition aspects are mapped bijectively (except owned Connectors and ItemFlows with itemProperty only appear in an IBD).

It is true that in the sample problem the BDDs seem to come first, however that is not in my experience the best way to handle structural composition !

I recommend:

  • create a "focus" BDD for each and every block in the system, independent of its usage context
    • In MD one can also use the structure compartment for a "hybrid" view of the parts, see below
  • build progressively complex assemblies using IBDs and connections
  • AFTERWARDS generate the corresponding associations in the focus BDDs (if you wish)
  • if you really want to, create a BDD with the "associative composition" structure:
    • that BDD is not used to build the system, it is merely a view of what was already built

In MD SysML you can show the structure compartment to create a "hybrid" diagram, which is very useful, if admittedly not standard SysML (yet). One can't show the connectors in a BDD anyway, so "associative composition" really is a very limited view of the composition anyway. UML2 composite structure was a blessing !

Note in the example below:

  • each property has been shown 3 different ways: as an attribute, as the end of an Association, and as a symbol in the structure compartment.
  • the composed structure has been shown in the "hybrid diagram" structure compartment (non-standard)
  • you can't show the Connector between property s:Source and t:Target, and you also can't show the ItemFlow v:Stuff
  • in the structure compartment you can show the "initial values" vectors (a.k.a defaultValue compartment, hopefully to be renamed 'initial values')
    • in the BDD one would have to show the initSource: Source and initTarget:Target instance "vectors" that initialise the corresponding parts as instance to see the values, the values of the Slots can't be seen in Property.defaultValue area of the Property in the attributes box alone
  • The Source block is - just for discussion here - an /ownedElement of (and an /ownedMember) of the Namespace StructuredBlock
    • it is also used as a part of StructuredBlock, however - since public - it could just as well be reused as a part elsewhere
      • the ownership of Source within the Namespace has nothing per se to do with its usage as part Property
    • if Source were not publically owned within the Namespace it would be be used to define a local class referenced only in a local context.
  • The Target block - by contrast - is not an /ownedElement of StructuredBlock, although it is used as a part
    • Target could just as well come from a read-only library of reusable blocks.

  • Blocks are never "owned by composition", they are only used as properties by composition:

    • StructuredBlock above "owns" Source just because I organised the model that way; it then participates In a local usage s:Source
    • Target above is not owned by StructuredBlock, however the usage as Property t:Target is.



    I really do advise against using composition associations extensively:

    • they can't show all the information anyway
    • they are graphically very fragile compared with composite structure using connected property symbols.
    • you can't show the 'initial values' "vectors" for the property-specific initial values (only the name of an assigned InstanceValue)

    I therefore recommend against the suggestion of a BDD-like compartment in a Block.

    (11275): 8.3.2: Unit/Dimension Notation "to underline or not to underline"

    Relates to:

    Issue 12128: Suggest Unit and ValueType both extend abstract DimensionedType, and inherit a 'dimension' attribute
    Issue 12219: Section: 08 Blocks: suggest need Quantity stereotype and definition



    Proposed resolution:

    'Unit and Dimension elements are defined using a rectangular box notation similar to a class, in which only the «unit» or «dimension» stereotype keyword, the name of the Unit or
    Dimension, and optionally the “dimension” property value of a Unit may appear.'

    MD SysML achieves this by NOT extending InstanceSpecification (see image below) !

    The MD SysML <<Unit>> and <<Dimension>> both extend DataType

    The resolution states:

    the notation that SysML defines for Dimension and Unit differs the standard UML notation for InstanceSpecification


    Which is just one reason not to choose Unit [InstanceSpecification] and Dimension [InstanceSpecification]..


    OMG Issue Resolution




    Unit and Dimension elements are defined using a rectangular box notation similar to a class

    Which is one reason for indeed choosing the "Class-like" DataType as base for Unit and Dimension
    (even though one then has to restrict Dimension to not be used as a type).

    I would already reject the proposal resolution on the basis of this text:


    OMG Issue Resolution




    Even though the base metaclass of Unit and Dimension is InstanceSpecification

    because I reject that metamodel.

    In fact a Unit can only be sensibly modelled as "a special kind of Quantity", on in which values of quantities with a chosen unit may be stated. Unit must extend Quantity ! Please visit (and please view the metamodel images carefully):

    Unit is (like ValueType) well modelled as a DimensionedType [DataType] (and can be used to type directly for the unitary case):

    This leaves however Dimension open to have a different base metaclass from Unit, however then (given that the notation is supposed to be the same) this is hard for UML-based tool vendors.

    The observation that the notation needs to be clarified is correct, however binding it to the specific metamodel is not necessary.

    (11493) Lack of notation for units and dimensions on values

    There is a fundamental flaw with the practice of using the ValueType to indicate a Unit's symbol:

    UseValued IBD

    If the (UML2-compliant) option to also show the ValueType of a value property in Slots (and IBDs)is excluded by SysML, and if "secondary stereotypes" (11496) are not supposed to be displayed in IBDs, it in fact leaves no consistent way at all to indicate the Unit of a value shown in an IBD initial values compartment
    because the Unit "metadata" belongs to the ValueType that types the defining feature (property) of a Slot !

    In MD15.5 we have introduced the ability to show the Type on values in Slots and IBDs so we can now in fact communicate a Unit symbol well enough to engineers using the tool.

    (11622) Mapping of PropertySpecificType to the UML metamodel

    The following trail analyses a proposed resolution snippet (supported by snippets from SysML1.0):

    'The PropertySpecificType stereotype is automatically applied to the classifier which types a property with a property-specific type. This classifier can contain definitions of new or redefined features which extend the original classifier referenced by the property-specific type.

    Classifiers with the PropertySpecificType stereotype are owned by the block which owns the property which has the property-specific type. A classifier with this stereotype must specialize at most a single classifier which was referenced as the starting classifier of the property-specific type. If there is no starting classifier (which occurs if no existing name is specified as the starting type of a property-specific type), then a classifier with the stereotype applied has no specialization relationship from any other classifier.'

    Firstly, the system for which an additional "redefinition context" is to be provided is given as a simple IBD, with regular types and properties:

    To evoke the impression of property-specific types in MD SysML15.1 (in place of implied property-specific types) we introduce explicit [PropertySpecificType] classifiers for illustration:

    Then (see below) an IBD with redefinition of types and their properties (all in a given redefinition context for the system) can be shown:

    BDD analysis of: 11622 Mapping of PropertySpecificType to the UML metamodel

    Explicit [PropertySpecificType] classifiers are used for illustration in MD SysML, in place of implied property-specific types.

    The first-level usage, no redefinition of properties, no property-specific types

    For completeness: the system examined without an additional redefinition context. 

    (12126) 8 Blocks, There are at least 4 kinds of properties of blocks: parts, references, values, constraints

    Constraint properties do not take part in the assembly hierarchy of blocks. Although they are of type <<Block>> via <<ConstraintBlock>> and have AggregationKind 'composite' they should not be considered "parts".

    SysML1.0, 8 Blocks:

    A block can include properties to specify its values, parts, and references to other blocks.

    Rewrite to include constraint properties:

    A block can include properties to specify its values, parts, references to other blocks, and constraint properties.

    SysML1.0, 8.3.1.2 Internal Block Diagram, Property types:

    Three general categories of properties are recognized in SysML: parts, references, and value properties

    Rewrite to include constraint properties:

    Four general categories of properties are recognized in SysML: parts, references, value properties, and constraint properties.

    SysML1.0, 8.3.2.2 Block, Description:

    SysML establishes three standard classifications of properties belonging to a SysML Block. A property typed by a SysML Block that has composite aggregation is classifed as a part property. A property typed by a Block that does not have composite aggregation is classified as a reference property. A property typed by a UML DataType or SysML ValueTyp is classified as a value property. Part, reference, and value properties may be shown in block definition compartments with the labels “parts,” “references,” and “values” respectively. Properties of any type may be shown in a “properties” compartment.

    Rewrite to include constraint properties:

    SysML establishes four standard classifications of properties belonging to a SysML Block. A property typed by a SysML Block that has composite aggregation is classified as a part property (excluding constraint properties, which are typed by a Constraint Block). A property typed by a Block that does not
    have composite aggregation is classified as a reference property. A property typed by a UML DataType or SysML ValueType is classified as a value property. Part, reference, value properties, and constraint properties, may be shown in block definition compartments with the labels “parts,” “references,” “values”, and "constraints" respectively. Properties of any type may be shown in a “properties” compartment.

    Note also minor spelling correction: classifed -> classified.

    (12127) 8.3.1.2 Internal Block Diagram: p.40: assert that value properties must be owned with AggregationKind 'composite'

    This would be consistent with the following from 8.3.1.2 Internal Block Diagram, Property types:

    ".. A part or value property is always shown on an internal block diagram with a solid-outline box. A reference property is shown by a dashed-outline box, consistent with UML .."

    Rewrite to include assertion that value properties must always be owned with AggregationKind 'composite':

    ".. A part or value property has AggregationKind 'composite' and is always shown on an internal block diagram with a solid-outline box. A reference property has AggregationKind 'none' or 'shared' and is shown by a dashed-outline box, consistent with UML .."

    (Please note also that this case also illustrates why it would be useful to have a clear stereotypes like ValueProperty throughout the SysML specification, as it affords a canonical point of documentation for such assertions and constraints.)

    (12128) Suggest Unit and ValueType both extend abstract DimensionedType, and inherit a 'dimension' attribute

    This strategy provides a compact and elegant metamodel for the units and values, and expresses well the underlying physical and mathematical principles of a dimensioned quantity represented by a value subject to chosen units.

    Value properties can then be sensibly typed by either a Unit or a ValueType.

    In the case where a ValueType has a Unit, the constraint still applies that the dimension of the ValueType must be the same as the dimension of the Unit.

    (12219) A stereotype for a Quantity is required.

    The current Unit, Value, Dimension system in SysML is incomplete without the crucial concept of quantity. A physical or industrial Quantity is independent of a choice of unit and value as measured or stated. A Quantity has a Dimension, which can be fundamental (as in the SI system), or derived (according to industrial needs).

    A Quantity DOES NOT have a Unit, and it DOES NOT have a relationship to a given unit systems, although it may be allocated a default unit within a given system.

    The statement/measurement of a Quantity is given as a value relative to a chosen Unit.

    A Quantity is represented in SysML by a value property (typed currently by a ValueType, although a strong case can be made for typing a value property directly by a Unit).

    (12353) 8.2.2 Internal Block Diagram: "initialValues" compartment should be complemented by "values" compartment in same IBD

    As discussed at the OMG TM SysML RTF on Th 13Mar2008.

    Assumes the property-specific 'defaultValue' compartment has been renamed to 'initialValue' (or perhaps 'initialValues'), as suggested in a previous issue submission.

    The case of a property-specific 'initialValues" compartment (as in Table 8.3 - Graphical nodes defined in Internal Block diagram) and also deeply nested "initial values" is well complemented by a "values" or "currentValues" compartment, as illustrated for the test results in Figure 8.11 - SUV EPA Fuel Economy Test.

    Together, the "initialValues" and "values" compartments illustrate usefully the evolution of the value state of a system used within an additional top-level "value slice" context. Tool vendors would be free to show one, both, or none of these two complementary compartment in part Properties of an IBD.

    This strategy promotes progress towards animation of systems, and also enables comparison of special configurations with an "intial" configuration.

    This suggestion represents a useful unification of concepts already present in the SysML specification.

     

    (12361) 08 Blocks, 8.2.2 Internal Block Diagram, the 'defaultValue' compartment should be renamed 'initial values',

    As discussed at the OMG TM SysML RTF on Th 13Mar2008.

    The 'defaultValue' compartment should be renamed 'initial values' (two words, with plural for values).

    The static (class level) default values of a given Block's Properties may be overridden on instantiation and initialization of a part Property usage of that Block by the using context.

    The concept of "initial values" is more consistent with the programmatic practice, and it serves to highlight the difference between the UML2 defaultValue (of a Property within a class) and the (re)initialisation of a SysML value Property on usage of that value's Block as a part Property within a higher context, by assignment of a property-specific initial value.

    The label 'initial values' is also consistent with the UML2.1.1 specification description of the role of the defaultValue attribute of 7.2.44 Property:

    "If there is a default specified for a property, this default is evaluated when an instance of the property is created in the absence of a specific setting for the property or a constraint in the model that requires the property to have a specific value. The evaluated default then becomes the initial value (or values) of the property."

    Further, the concept of "initial values" emphasises the evolving value state of a system. The "initial value" is then merely a single value slice within a series of values states.

    Configuration is a special case of "initial value". Example: when a Car leaves a factory it is "initialised" to a luxury, sports, or family configuration.

    The concept of "initial value" compartment is complemented by the suggestion of a "current values" or simply "values" compartment for recording the value state of an evolving system. 

    This suggestion promotes support of animation of SysML systems, and also encompasses aspects of static configuration consistently.

    (12363) The 'values' compartment for a part Property in an IBD should be decoupled from PropertySpecificValue

    There should be a definition of the role of the 'values' compartment for display of "current values" (for representing the entire value state of a system within a unique value context) and/or "deep configuration" values indepedendent of the PropertySpecificType concept, which may be seen as only one possible way of carrying values for assignment to the 'values' compartment in and IBD.

    Another strategy employing values in Slots of InstanceSpecifications that are related to targeted part Properties by a Property[*] path and then mapped to the targeted part Properties would achieve the same 'values' idiom in and IBD without indication of the implied subtype using [brackets].

    When the 'values' are carried by redefined defaultValue : ValueSpecification[0.1] of redefined properties of an implied [PropertySpecificType] the bracket notation should still be used (inviting also indication of other redefinitions that can't be achieved using mapping of InstanceSpecifications, such as operation and constraint redefinitions).

    In particular, the following paragraph from p.53 (illustrated in Figure 8.11 - SUV EPA Fuel Economy Test) should be rewritten to admit other solutions:

    "In SysML, one approach is to capture system configurations by creating a context for a configuration in the form of a context block. The context block may capture a unique identity for the configuration, and utilizes parts and part-specific types to express property design values within the specification of a particular system configuration. Such a context block may contain a set of parts that represent the block instances in this system configuration, each containing specific values for each property. This technique also provides for configurations that reflect hierarchical system structures, where nested parts or other properties are assigned design values using property-specific types. The following example illustrates the approach.":

    While Figure 8.11 - SUV EPA Fuel Economy Test could remain with [PropertySpecificType] notation as an indication of that strategy, there should be an equivalent figure showing the same 'values' compartment and a similar top-level value context block, however without the [brackets] notation on part types, and without any reference to the PropertySpecificType solution. The title of Figure 8.11 should be clearly marked to indicated use of the PropertySpecificType solution and notation.

    (12364) It should be clearly stated whether DistributedProperty may only be applied to a value property

    On p.46 under 8.3.2.4 DistributedProperty it is stated that:

    '[1] The DistributedProperty stereotype may be applied only to properties of classifiers stereotyped by Block or ValueType.'

    It does not however state whether a DistributedProperty [Property] within a Block may only be applied to a value property (a "block property" typed by a ValueType or DataType) or other Property variations. All examples of the application of DistributedProperty show it applied to a value property.

    This has implications for sorting into block compartments in BDDs; if a DistributedProperty [Property] may only be applied to a value property then it will always be sorted into the 'values' compartment.

    It also has implications for aggregation; since a value property (within a block) must have AggregationKind 'composite', a DistributedProperty will also have AggregationKind 'composite' (within a block).

    (12365) If a DistributedProperty may be applied to a property within a structured ValueType, then an example should be provided

    On p.46, under 8.3.2.4 DistributedProperty it is stated that:

    '[1] The DistributedProperty stereotype may be applied only to properties of classifiers stereotyped by Block or ValueType.'

    There are however, as far as I can tell, no examples of a DistributedProperty or specialisation thereof applied to a property that is not within a block.

    A candidate example might include a variation on a Complex <<ValueType>> (cf. Figure 8.7 - Model Library for Blocks) with distributions applied to the real and imaginary parts (being represented by properties, and thus admitting application of the DistributedProperty stereotype, or substereotype).

    -------------------------------------------------------------
    <<ValueType>>
    StrangeDistributedComplex 
    -------------------------------------------------------------
    <<Uniform>> {min=-10, max=10} realPart : Real
    <<Uniform>> {min=-12, max=12} imagPart : Imag 
    -------------------------------------------------------------
    

    Collate <<system>>, <<system context>>, <<external>>, <<domain>>, <<subsystem>> as non-normative ex

    It is not enough to refer simply to (p.180):

    'The «system» and «external» stereotypes are user defined, not specified in SysML,'

    Although already raised as Issue 12257, this new Issue submission (by a different submitter) makes the constructive suggestion that the 'user defined' stereotypes by defined in non-normative extension Section in the Annex C.

    It is not acceptable that a specification dedicated to systems engineering does not even have at least a well-defined non-normative definition of a <<system>> and <<system context>> ! These need to be upgraded to a non-normative Annex, and then introduced properly through the example.

    I see no reason why the figures should not use non-normative stereotypes as long as they are defined in an Annex and clearly. This is not the case for:

    <<system context>>, <<system>>, <<external>>, <<domain>>, <<subsystem>>,

    yet these are truly crucial for even basic systems engineering, and the examples (which use them well) make little sense without them.

    There is a very nice summary of C.2 Requirements Diagram Extensions. and those requirement categories have proved very useful already.

    I have made a small summary and guide here:

    http://school.nomagic.com/node/396

    Block extensions (non-normative)

    As recommended through SysML1.0 examples:

    • «system» top-level block to be used in a system context
    • «subsystem» grouping (usually physical) within a system
    • «external» outside the top-level system (yet affecting it)
    • «domain» provides a common context for a system and externals
    • «system context» a particular context for a system and externals

    Note my definitions for <<domain>> vs. <<system context>>.

    I suggest that at least «system context» should have an attribute:

    system:<<system>>[1]

    <<domain>> could then extend <<system context>>.

    OMG SysML RTF: proposal by No Magic for Quantity profile/metamodel [WORK IN PROGRESS]

    This trail represents a significant proposed revision and enhancement of the SysML metamodel/profile for representation of physical and industrial quantities with a stated/measured value relative to a unit, within a given quantity and dimension system.

    The proposal combines:

    • experience modelling real-world systems - such as scientific instruments with known physical parameters and enginering data. - with SysML1.0
    • experience with the MD SysML Plugin tool, including conformance analysis and collaboration with the MD SysML Plugin team
    • customer feedback on difficulties employing the Unit, Dimension, ValueType approach of SysML1.0
    • formal issues submitted to the OMG SysML1.0 RTF, especially prior to the OMG Technical Meeting, 10-14 Mar 2008, Washington DC
    • discussions from the SysMLRTF sessions of the OMG Technical Meeting, 10-14 Mar 2008, Washington DC
    • detailed analysis of the sample problems and diagrams of the SysML1.0 specification
    • consideration of the need to support efficient assignment of value states for complex assemblies
    • a detailed parsing and analysis of the following authoritative metrology reference into an illustrative UML profile:
      International Vocabulary of Metrology – Basic and General Concepts and Associated Terms (VIM) 3rd edition

    Visitors please note well:

    • Pages marked with [brackets] represent either incubating pages, or concepts that have not yet been mapped to this SysML Quantity metamodel proposal.


    UML Parsing Analysis of: International Vocabulary of Metrology (VIM)

    To help improve the SysML Quantity (Unit, Dimension, ValueType) metamodel a UML Parsing Analysis of the text of this authoritative metrology document was performed by No Magic:

    International Vocabulary of Metrology – Basic and General Concepts and Associated Terms (VIM)
    3rd edition
    Final draft 2006-08-01

    http://nistboulder.net/Presentations/wg2docN318VIM3ed2006.pdf

    JCGM/WG 2 Document N318

    Text from the document parsed into UML Comments and UML Components used as wrappers is stereotyped as «VIM3», «VIM3:NOTE», «VIM3:EXAMPLE».

    Text is copied from the document into these eSchool pages and into UML Comments and UML Components for the sole purpose of preparing a metamodel revision for the then OMG SysML specification. Please always refer to the original document for the authoratative content and typesetting.

    Pages marked with [brackets] represent either incubating pages, or aspects that have not been mapped to this SysML Quantity metamodel proposal.


    Thanks are extended to Sebastien Demathieu for referral to this useful technical document.

    "quantity kind" as a generalization/specialization hierarchy

    In the diagram below the relationship between "kinds" of quantities as discussed in VIM3 has been represented in three ways:

    1. as a tagged value 'kind : Quantity'
    2. as an illustrative <<kind>> Dependency
    3. as a generalization hierarchy with the "kind" quantity at the relative root of the hierarchy

    See in particular the energy quantity, with a physical law that applies to all kinds of energy, and increasingly specific energy forms (kinetic, potential, and heat) with increasingly specific equations.

    This demonstrates at least one reason why Dimension alone (shared by all the kinds of energy) can't serve as a Quantity or "quantity kind".

    *Dimension (quantity dimension, dimension of a quantity)

    From IVoC:

    quantity dimension
    dimension of a quantity

    dimension
    expression of the dependence of a quantity on the base quantities of a system of quantities as a product of powers of factors corresponding to the base quantities, omitting any numerical factor

    EXAMPLES
    a) In the ISQ, the quantity dimension of force is dim F = LMT–2.
    b) In the same system of quantities ML–3 is the quantity dimension of mass concentration and also of mass density (volumic mass).

    NOTES
    1 — A power of a factor is the factor raised to an exponent. Each factor is the dimension of a base quantity.

    2 — The conventional symbolic representation of the dimension of a base quantity is a single upper case letter in roman (upright) sans-serif type. The conventional symbolic representation of the dimension of a derived quantity is the product of powers of the dimensions of the base quantities according to the definition of the derived quantity. The dimension of a quantity Q is dim Q

    3 — In deriving the dimension of a quantity, no account is taken of its scalar, vector or tensor character.

    4 — In a given system of quantities,
    – quantities of the same kind have the same dimension,
    – quantities of different dimensions are always of different kinds, and
    – quantities having the same dimension are not necessarily of the same kind.

    5 — In the International System of Quantities (ISQ), the dimensions of the base quantities are:

    Base quantity Dimension
    length L
    mass M
    time T
    electric current I
    thermodynamic temperature Θ
    amount of substance N
    luminous intensity

    J

     

    Thus, the dimension of a quantity Q is dim Q = LαMβTγ IδΘεNζJη where the exponents, named dimensional exponents, are positive, negative, or zero.

     

    Visit also:

    *Quantity (quantity) [INCUBATING]

    From VIM:

    1.1 (1.1)
    quantity

    property of a phenomenon, body, or substance, to which a number can be assigned with
    respect to a reference

    Work in progress, especially w.r.t. specification of values (many options with many pros and cons for tool vendors).

    Visit also:

    *QuantitySystem (system of quantities)

    From IVoM:

    system of quantities

    set of quantities together with a set of non-contradictory equations relating those quantities
    NOTE — Ordinal quantities, such as Rockwell C hardness, are usually not considered to be part of a
    system of quantities because they are related to other quantities through empirical relations only.

    *Unit (measurement unit, unit of measurement, unit)

    From IVoM:

    measurement unit
    unit of measurement
    unit
    scalar quantity, defined and adopted by convention, with which any other quantity of the
    same kind can be compared to express the ratio of the two quantities as a number

    NOTES

    1 — Measurement units are designated by conventionally assigned names and symbols.

    2 — Measurement units of quantities of the same dimension may be designated by the same name and symbol even when the quantities are not of the same kind. For example joule per kelvin and J/K are respectively the name and symbol of both a measurement unit of heat capacity and a unit of entropy, which are generally not considered to be quantities of the same kind. However, in some cases special measurement unit names are restricted to be used with quantities of specific
    kind only. For example, the unit 1/s is called hertz when used for frequencies and becquerel when used for activities of radionuclides.

    3 — Measurement units of quantities of dimension one are numbers. In some cases these units are given special names, e.g. radian, steradian, and decibel, or are expressed by quotients such as millimole per mole equal to 10-3 and microgram per kilogram equal to 10-9.

    4 — For a given quantity, the short term “unit” is often combined with the quantity name, such as “mass
    unit” or “unit of mass”.

    Note that a Unit is is a (scalar) Quantity, so it extends Quantity (assumed in this metamodel to be scalar).

     Visit also:

    base Quantity

    From IVoM:

    base quantity
    quantity in a conventionally chosen subset of a given system of quantities, where no
    subset quantity can be expressed in terms of the others

    NOTES
    1 — The subset mentioned in the definition is termed the set of base quantities.
    EXAMPLE
    The set of base quantities in the International System of Quantities (ISQ) is given in 1.6.
    2 — Base quantities are referred to as being mutually independent since a base quantity cannot be
    expressed as a product of powers of the other base quantities.
    3 — “Number of entities” can be regarded as a base quantity in any system of quantities.

    Indicate here with 'base' attribute of Quantity.

    derived Quantity

    From IVoM:

    derived quantity
    quantity, in a system of quantities, defined in terms of its base quantities

    EXAMPLE
    In a system of quantities having the base quantities length and mass, mass density is a derived
    quantity defined as the quotient of mass and volume (length to the third power)

    If the attribute 'isBase' of a Quantity is false then the derived attribute '/isDerived' is true. 

    Dimensionless

    From IVoM:

    quantity of dimension one
    dimensionless quantity
    quantity for which all the exponents of the factors corresponding to the base quantities in its quantity dimension are zero

    NOTES

    1 — The term “dimensionless quantity” is commonly used for historical reasons. It stems from the fact that all exponents are zero in the symbolic representation of the dimension for such quantities. The term “quantity of dimension one” reflects the convention in which the symbolic representation
    of the dimension for such quantities is the symbol 1 (see ISO 31-0:1992, subclause 2.2.6).

    2 — The measurement units and values of quantities of dimension one are numbers, but such
    quantities convey more information than a number.

    3 — Some quantities of dimension one are defined as the ratios of two quantities of the same kind.
    EXAMPLES
    plane angle, solid angle, refractive index, relative permeability, mass fraction, friction factor, Mach number

    4 — Quantities of dimension one can also be numbers of entities.
    EXAMPLES
    number of turns in a coil, number of molecules in a given sample, degeneracy (number of energy levels) in quantum mechanics

    kind of quantity

    From IVoM: 

    kind of quantity
    kind
    aspect common to mutually comparable quantities

    NOTES

    1 — In English, the term “quantity” is often used for kind of quantity. In French, the term “nature” is
    only used in expressions such as “grandeurs de même nature” (in English, “quantities of the same
    kind”).

    2 — The division of the concept of ‘quantity’ according to ‘kind of quantity’ is to some extent arbitrary.
    EXAMPLES

    a) The quantities diameter, circumference, and wavelength, are generally considered to be quantities of the same kind, namely, of the kind of quantity called length.

    b) The quantities heat, kinetic energy, and potential energy, are generally considered to be quantities of the same kind, namely, of the kind of quantity called energy.
    3 — Quantities of the same kind within a given system of quantities have the same quantity dimension. However, quantities of the same dimension are not necessarily of the same kind.

    EXAMPLE
    The quantities moment of force and energy are, by convention, not regarded as being of the same
    kind, although they have the same dimension. Similarly for heat capacity and entropy, as well as
    for relative permeability and mass fraction.

    Note that there is no need for an additional QuantityKind stereotype:

    • Quantities that share the same 'kind' form a set of Quantities (of the same kind).
    • Certain quantities can be their own 'kind', such as: energy, length, mass
    • A base Quantity (in a particular system) always has itself as its own 'kind'
    • A quantity that is its own kind (like energy) is not necessarily its own 'kind'.

    numerical quantity value

    From IVoC: 

    numerical quantity value
    numerical value of a quantity
    numerical value
    number in the expression of a quantity value, other than any number serving as the
    reference

    NOTES


    1 — For quantities of dimension one, the reference is a measurement unit which is a number and this is not considered as a part of the numerical quantity value.   

    EXAMPLE In an amount-of-substance fraction equal to 3 mmol/mol, the numerical value is 3 and the unit is mmol/mol. The unit mmol/mol is numerically equal to 0.001, but this number 0.001 is not part of the numerical quantity value that remains 3.


    2 — For quantities that have a measurement unit (i.e. those other than ordinal qu