What’s new in SysML 1.4 – Units
The fifth part of the blogpost series about the changes in SysML 1.4 presents the updated concept of units.
But first, a big sorry for being quiet for such a long time. But better be quiet than posting spam. I hadn’t enough time to continue my series about the news and updates of SysML 1.4 and other interesting things for the MBSE community.
The reason for my absence was one of those interesting things: I was in the final spurt of my new book. Together with some co-authors, I’ve written a book about model based system architectures. I’ll publish more details about that project as soon as the publisher officially announces the book.
Back to the new things of SysML 1.4. In this blog post, I cover the units of SysML. The modeling of units is part of SysML since the first version 1.0.
In SysML 1.0, a unit was a special value type. A value type could have a reference to a unit and a dimension. The following figure shows the definition and application of some SI units with SysML 1.0. The unit Kilogram is defined with the dimension Mass at the bottom of the diagram. A value type Kg linked with the unit Kilogram is defined at the right side of the diagram. The block My System Component is an example of using the value type for the value weight. It looks a little bit complicated, but all elements except the block My System Component are supposed to be defined only once in a model library.
The relationships between a value type, unit, and dimension in SysML are shown in the next figure that depicts the definition of the appropriate SysML stereotypes. From my perspective, it was a little bit inappropriate that unit and dimension were special value types.
The concept of units was slightly changed in the next version, SysML 1.1. Instead of being special value types, the unit and dimension elements were now special instance specifications. That makes more sense because a unit is not a blueprint for different unit instances but already a specification of a single unit instance. Same for the dimension concept.
The following figure shows the definition of the SysML 1.1 unit concept.
The next version, SysML 1.2, again changed the unit concept. The model element dimension was renamed to quantity kind, and some properties for the unit and quantity kind model elements were added.
There were no relevant changes in SysML 1.3 for the unit model elements.
Now the latest version SysML 1.4, comes with another change. The basic concept is the same, but the model elements’ concrete implementation now fits better into the SysML language architecture. The unit and quantity kind are now no longer stereotypes. They are instance specification properties of the value type as depicted in the next figure.
The properties of the unit and the quantity kind concepts are defined in a model library.
The next figure shows the application of the SysML 1.4 unit concept.
The SysML 1.4 specification provides a model library with the ISO 80000 units in the appendix. That library is, for instance, implemented by the modeling tool Cameo Systems Modeler from NoMagic. With that library, the modeler has access to a huge set of predefined units.
Is there a quantityType stereotype that has a QuantityKind property but no Unit? Can I express f=ma without assigning units to f, m, and a (only quantityKind property)? Or, if I do assign units to the variables, should a model validation tool flag if there are conflicting units. At any point where a quantity must be presented as a “measureType,” the measure must have units and those units must be bindable to the subject quantity. Is my made-up “measureType” equivalent, or at least congruent, to valueType?
Ich entschuldige mich für die englische Kommentar . Ich hoffe, es übersetzt in Deutsch deutlich genug .
From the language perspective there is no constraint that a value type with a quantity kind must have a unit. And yes, you can express f=ma like mentioned in your question.
You must differentiate between the language and a methodology. The language SysML is very general and does not prevent you from modeling nonsense. BTW it is the same for natural languages like English or German 😉
A methodology could specify further constraints and a SysML modeling tool could validate the SysML contraints + the methodology constraints.