Welcome to the MagicDraw SysML Plugin (MD SysML) tutorial trails.
Please also visit the detailed Hybrid Sports Utility Vehicle sample trail.
Select an Activity and then use:
The result will differ depending on whether you use:
Note use of Pin pairs of matching type. See next image for decomposition.
Note correspondence to in/out Pin pair, two properties are NOT owned by HigherActivity as an "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.
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.
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).
Project settings (please note carefully):
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).
Project settings (please note carefully):
By contrast, the navigability of the Association end for Property b2 was left unchanged, it is still owned by the generated Association.
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.
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'.
See also:
Shows the Block Definition Diagram that corresponds to the specific ItemFlow created on a Connector owned by the context of a source and target.
The technique is the same as for UML2 and MagicDraw UML. Please visit:
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.
First I show the entire system (including inheritance) in a BDD.
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.
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
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.
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:
SysML issue (10059) 'Interfaces on Flow Ports': Recommend use nested ports
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:
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):
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 !
In this tutorial you will learn how to:
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:
It takes seconds. And it may save you days or weeks or months !
<<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 !
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):
You may also define custom "industrial" Units and Dimensions for use by a custom ValueType.
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.
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, |
After completing this trail you may also like to examine:
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:
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.)
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.
The <<BlockModel>> and <<BlockPackage>> strategies can be combined to support software simulation of syseng blocks.
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:
Let us now work through these cases to see how they are assigned and managed in MD SysML
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.
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.
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.
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).
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.
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.
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.
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:
(*) It has been suggested that the SysML1.0 defaultValue compartment on a part in an IBD should be renamed 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.
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 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.
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.
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).
The part of a PropertySpecificType is redefined to use a PropertySpecificType specialisation of the composed part of its own Generalization parent, the "cascading" effect.
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.
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.
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).
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.
See this related MagicDraw UML tutorial guide (the same principles apply for UML2 classes and SysML blocks):
Note that MD SysML supports a "hybrid" display of the internal structure of a Block and associative composition in one diagram.
Visit also:
By default the name of a “structured block” is bound to its linked IBD !
Symbol-based hyperlink navigation for practical systems engineering:
Simply Super !
pro: provide associated navigation points, esp. “up”
con: including associated elements can block modularisation !
A system needs a context in which to interact with entities external to the system boundary:
Also illustrates some typical SysML model elements.
In MD SysMLuse diagram hyperlinks on symbols and diagram icons freely !
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:
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.
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.
There is already a detailed analysis of allocate here.
Visit also:
There is already a detailed analysis of allocated here.
Visit also:
SysML1.0:
A Binding Connector is a connector which specifies that the properties at both ends of the connector have equal values.
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:
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..
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.
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.'
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.
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.
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).
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:
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.'
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.'
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.'
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.'
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.
As recommended through SysML1.0 examples:
Visit also:
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:
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.
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).
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:
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.
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).
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:
Visit also:
http://www.omg.org/techprocess/meetings/schedule/SysML_RTF.html
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:
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:
Blocks are never "owned by composition", they are only used as properties by composition:
I therefore recommend against the suggestion of a BDD-like compartment in a Block.
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
'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.
There is a fundamental flaw with the practice of using the ValueType to indicate a Unit's symbol:
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.
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:
Explicit [PropertySpecificType] classifiers are used for illustration in MD SysML, in place of implied property-specific types.
For completeness: the system examined without an additional redefinition context.
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.
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.)
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.
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).
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.
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.
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.
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).
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
-------------------------------------------------------------
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:
Block extensions (non-normative)
As recommended through SysML1.0 examples:
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>>.
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.
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-01http://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.
In the diagram below the relationship between "kinds" of quantities as discussed in VIM3 has been represented in three ways:
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".
From IVoC:
quantity dimension
dimension of a quantitydimension
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 factorEXAMPLES
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:
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:
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.
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 numberNOTES
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:
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 othersNOTES
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.
From IVoM:
derived quantity
quantity, in a system of quantities, defined in terms of its base quantitiesEXAMPLE
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.
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 zeroNOTES
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 number4 — 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
From IVoM:
kind of quantity
kind
aspect common to mutually comparable quantitiesNOTES
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.
EXAMPLESa) 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:
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