[SysML] #14. Understanding Value Type

In this blog post, we will take a closer look at Value Type and Value Properties of Block, one of the important elements of SysML (Block Definition Diagram). This component plays a key role in understanding the structural modeling of complex systems in systems engineering.

Definition and importance of Value Properties

In a Block Definition Diagram (BDD) (SysML), Value Properties are essential for representing the quantities of a system. For example, to express the ‘total length’ of a structure, use the Value Property in real number expressed in units such as ‘meter’. This is a key element that constitutes the mathematical model of the system, enabling accurate numerical expression and playing a major role in clearly communicating the characteristics and requirements of the system.

Format and usage examples

Value Properties follow a specific format : <value name> : <type>[<multiplicity>] = <default>

  • Value Name : Defines what a particular value means within the system model. This is set by the modeler, for example it might be called ‘EnginePower’.
  • Type : Specifies the data type of the value. This type is predefined and used within SysML models.
  • Multiplicity : Specifies the number of values a property can have. For example, engine power may vary, so multiplicity is useful in representing these ranges.
  • Default value : This refers to the initial value of the property. This value describes the initial state of the model, or sets the value to be applied by default in certain situations.

Use in actual work

Value Properties are most effective when used with constraints. For example, you can set a constraint of ‘150 km/h’ for a value attribute called ‘maximum speed’, which can help clarify safety criteria or performance requirements when designing a system. These interactions effectively model the characteristics of complex systems and serve as an important criterion in the design and verification process of the system.

Value Properties used in SysML can be classified in various ways depending on their usage and structure, and are important components in system design and documentation. Here we will take a closer look at the three main types.

1. Basic Value Types

  • They form the basis of SysML modeling and represent a single data type without complex internal structure.
  • Representative examples include String, Boolean, Integer, and Real.
  • This type is widely used in routine calculations and data representation, and can be specialized for, for example, temperature (°C) or voltage (V).

2. Structured Value Types

  • A type used to model elements of a complex system that internally contains two or more different value types.
  • For example, a ‘complex’ number consists of a RealPart and an ImaginaryPart, which can be used as part of a larger computational model.
  • This type is very useful for expressing complex relationships or structures within a system.

3. Enumerations

  • An enumeration is a value type that allows you to select one of a limited number of choices, and is defined as a set of literals.
  • This is used when a parameter must have one of a specific set of values.
  • A good example is the ‘Day of the Week’ enumeration, which defines the days of the week, including ‘Monday’, ‘Tuesday’, ‘Wednesday’, etc.

In SysML’s Block Definition Diagram (BDD), Value Properties are expressed in a variety of ways to clearly and effectively convey the characteristics of the system. Below is a detailed explanation of how it is expressed.

1. Generalization of Value Types

From the basic value types, you can define various Value Types as needed. This generalization improves the flexibility of the model.
For example, VDC and VAC, which represent voltages, can be classified as subtypes of the Real value type.

2. Read Only properties

Some properties are set to read-only when they should not be changed during the operation of the system. This is specified within curly brackets using the ‘readOnly’ keyword.

3. Static properties

When a certain property must have the same value in all instances, you designate it as a static property. For example, a triangle always has three angles.

4. Assigned value vs. Derived value

An assigned value is a value that is explicitly set, while a derived value is calculated or derived based on other value properties. Derived values are indicated by a forward slash (/) before the name.

5. Representation of value types

Unlike regular entities, value types do not have identities. Therefore, instances of the same value type are considered to have the same value.
In BDD, value types are represented as boxes with hard borders, whose names are prefixed with the keyword «valueType».

6. Enumerations and structured types

An enumeration lists all possible literals and is distinguished by prefixing the keyword ‘enumeration’.
Structured types represent complex value types and model the complex nature of a system by clearly listing its internal elements.

The following image shows the basic Value Type, structured Value Type and Enumeration drawn with EA.

This image shows a Block Diagram in order to Understanding Value Types
This is a Block Definition Diagram drawn with Enterprise Architect. If you want to get more information about value types, this article may be helpful.

Accurately modeling physical quantities using value types in SysML is important to ensure accuracy and consistency in system design. This approach allows for consistent use across the model, and the use of Quantity Kind and Unit can improve the understanding and accuracy of the model.

1. Quantity Kind’s role

Quantity Kind is used to identify specific physical properties. For example, ‘length’ is a physical quantity measured in units such as meters or feet.
This contributes to clearly defining the essential properties of the physical quantities in question in system modeling. By using Quantity Kind, you can clarify what the various numbers in your model mean.

2. Relationship to Unit

Unit is used in direct association with a specific Quantity Kind. This defines how that quantity is measured.
Not all Quantity Kinds require units, but units make it easy to calculate and convert that quantity to its actual value. These characteristics provide flexibility, especially in modeling tasks that require complex calculations or analysis.

3. Expression of Quantity and Unit

SysML uses explicit notation with specific symbols to express Quantity Kind and Unit. These symbols are also widely used in modeling tools, making it easy to determine what quantity and unit each part of the model refers to.
This standardized representation improves the readability of the model and helps model users more easily understand the meaning of each value.

In system modeling using SysML, the default and initial value settings of each attribute play an important role in predicting the system’s behavior and performance. These values are used to specify that the system assumes a certain state by default or starts under certain conditions. To help you understand, let’s look at each concept in detail.

1. Assigning default values for properties

  • In SysML’s Block Definition Diagram (BDD), you can assign default values for properties to each block. This value is used when the property is not explicitly initialized to a different value.
  • For example, you can specify a default value for a property, such as Speed: real = 0. Here the ‘Speed’ property is assigned the type ‘real’ and is set to 0 by default.

2. Initial value of the part

  • Parts can be assigned separate initial values, which are the values the part has at the initial stage of design.
  • If an initial value is specified, for example, Engine: RPM = 1000rpm (initial value), then this value is a value set specifically for the ‘RPM’ property of the engine part. This initial value is the value that is applied when the engine starts actual operation and takes precedence over the default value.

3. Value range for value properties

  • In SysML, value properties can also be described by probability distributions rather than single values. This helps model the behavior of the system more realistically.
  • For example, you can set «NormalDistribution» {mean=5 years, stddev=1 year} Battery Life: Time to follow a normal distribution with a mean of 5 years and a standard deviation of 1 year. These settings indicate that the battery life is not fixed at ‘5 years’, and that the mean and standard deviation can predict different lifespan outcomes.

Setting these defaults and initial values is essential for simulating and predicting different scenarios in your model. If novice systems engineers understand and apply these concepts well, they will be able to better predict and design the behavior of complex systems. This can greatly contribute to improving model accuracy and making efficient design decisions.

Learning how to leverage the Value Properties of SysML using Enterprise Architect (EA) is an important step in system modeling. The process of adding value attributes related to car fuel efficiency to the block called CAR proceeds as follows.

1. Create Value Type BDD

  • As a first step, we create a Block Definition Diagram (BDD) that will contain the specific Value Types. This forms the structural basis for the entire modeling effort.

2. Value Type drag and drop

  • Select three Value Types from the BDD toolbox: Distance, Fuel amount, and Fuel Efficiency, and drag and drop them onto the BDD canvas. By doing this, we can start to get a visual representation of each ValueType.
image 99

3. Real ValueType Inheritance

  • Since each ValueType (Distance, Fuel amount, Fuel Efficiency) will handle values of type Real, it inherits Real ValueType.
  • Inheritance is implemented through Generalization Relationship. To set this up, EA uses the Model Wizard to add a Real ValueType from the SysML 1.5 Libraries’ Primitive Value Types Library to the project and associate it with each ValueType.
  • Generalization is connected by drawing an arrow from the child (Value Type) to the parent (Real ValueType). This ensures that each ValueType automatically inherits the properties of Real ValueType.
image 100

In SysML modeling, it is important to assign a Quantity Kind and Unit to each ValueType to clarify the physical measurement that each attribute represents. This step increases the accuracy and understanding of your model.

1. Quantity Kind Assignment

  • Quantity Kind of Length and Volume were assigned to Distance and Fuel amount, respectively. This makes it clear what physical measurements these ValueTypes represent.
  • For each Quantity Kind, a symbol representing the unit of measurement (km, l) has been added to help model users easily understand what each number means.
image 103
image 101

2. Unit allocation and model application

  • Each ValueType is assigned an appropriate unit (km, Liter). These units are linked to the intended use of the corresponding ValueType to ensure modeling accuracy.
  • Since Fuel Efficiency is a calculated value, a separate Quantity Kind has not been added, but the ValueType is displayed in Km/Liter units to clarify its role as a fuel efficiency measure.
image 105

3. Integrate ValueType as an attribute in the CAR block

  • To associate each ValueType with a CAR block, we utilize EA’s tools to add these ValueTypes as attributes of the CAR block. In this process, ValueType can be connected to the CAR block through Part Association or Property addition.

4. Synchronization and verification of models

  • In the subsequently created Internal Block Diagram (ibd), we use the Synchronize Structural Elements function to synchronize all structural elements, thereby reviewing the application status of each ValueType within the CAR block.

Add unit and set CAR block properties

Now, let’s complete the model by adding appropriate Units to each Value Type.

1. Add Unit

  • Add Unit to the canvas in bdd toolbox. Name each one km, Liter, and Km/Liter, adding the appropriate symbols for those units.
  • Allocate the corresponding Unit in the Properties of each Value Type. This indicates that the properties of each Value Type are clearly unitized.

2. Add Value Type to CAR block

  • Create a CAR block and connect each Value Type to CAR through Part Association.
  • Right-click the CAR block and select “New Child Diagram → Internal Block Diagram (ibd)” to create a new internal block diagram.
  • Right-click on the created diagram and select “Synchronize Structural Elements” to import the Value Types connected to the CAR block in the diagram.
  • After saving the diagram with assigned values, go back to Value Type bdd and check whether values are assigned to the Values Compartment in the CAR block.
image 108

3. Additional methods

  • You can also add a Property block and place it within the CAR block. In this case, select Property and assign the Value Type corresponding to the Type in the Properties window. Then, delete the Property from the Namespace Compartment and add the value to the Values Compartment where it is assigned a value.

4. Assign default values

  • Click each Value in the Values Compartment of the CAR block to open the properties window. For example, click Distance.
  • Assign a default value by setting the initial value in the properties window.
image 109

5. Set Derived value

  • In the case of Fuel Efficiency, it is a derived value because it is a calculated value of fuel amount and distance. To express this, add a slash (/) in front of the name.
  • In Properties → Property, select the Derived checkbox to automatically add a slash.
image 110

Now you can complete the model by assigning a default value to each Value and, in the case of Fuel Efficiency, setting it to a Derived value.

1. Creating a structured Value Type : Right-click the Value Type → Features → Attributes to add Attributes in the Features window. Just add the necessary values to Attributes.

image 111
image 126

2. Enumeration Value Type : In the bdd toolbox, add an Enumeration block to the canvas and add Attributes in the same way as the structured Value Type. In this case, the Stereotype of each value is added as an enum.

image 115
image 116

3. Distribution Value Type : Distribution Value Type is expressed as follows.

«distributionName» {p1 = value, p2 = value } property name:type name. You can refer to the example in the following picture.

image 117

I tried to model it with EA while keeping this format, but I couldn’t find an accurate method. However, as an alternative method, I tried to express the Distributed Value Type as much as possible by using Distributed Property, Stereotype, and Tag.

First, open CAR’s ibd. Add Distributed Property to the idb canvas in Toolbox. Click Distributed Property and rename it Fuel Efficiency in the Properties window. And Stereotype… Click and create a new Stereotype called normal. Uncheck distributedProperty in the SysML1.5 profile and check the newly created normal in the profile. Then, select Type in the Property tab, select Select Type, and select Fuel Efficiency Value Type. Then, you can make something similar to Gi, but the distribution value is not displayed. Distribution values use Tags.

image 124

In the Properties tab, select Tags, select New Tagged Value, and enter mean = 1.5, stddev = 1.

image 119

However, I don’t like the fact that you have to activate the Properties tab to check it. One of the keys to modeling is to make sure to highlight the parts you want to emphasize in the diagram. Right-click the Distributed Properties in ibd and select Tags from Compartment Visibility → show Element Compartments. Then, tags will be displayed as shown in ibd below, allowing you to emphasize the distribution value a little more.

image 120

The final bdd is: For reference, in this post, for convenience, block, value type, unit, etc. are all drawn together in one bdd, but in an actual project, it would be more effective to create separate packages and draw them separately by purpose.

image 121

[SysML] #1. Understanding SysML Diagrams

[SysML] #2. Understanding SysML Package Diagram

[SysML] #3. Understanding Dependencies of Pkg Diagram

[SysML] #5. Understanding SysML Requirement Diagram

[SysML] #6. Understanding Relations In Req Diagram

[SysML] #7. How to draw a Req Diagram with EA

[SysML] #8. Understanding SysML UseCase Diagram

[SysML] #9. How to draw a UseCase Diagram with EA

[SysML] #10. Understanding SysML bdd Diagram

[SysML] #11. Understanding SysML ibd Diagram

[SysML] #12. Understanding Part Property of Block

[SysML] #13. Understanding Reference Property of Block

[SysML] #15 Understanding Parametric Diagram

[SysML] #16. Understanding Flow Property

[SysML] #17. Understanding Port and Association Block

[SysML] #18. Understanding Behavior of Block

[SysML] #19. Understanding Generalizations

[SysML] #20. Understanding Dependencies, Allocate, Comment

[SysML] #21. Understanding Activity Diagram

[SysML] #22. How to draw a Activity Diagram with EA

[SysML] #23. Seq Diagram LifeLine and Message

[SysML] #24. Seq Diag Constraints Fragment Decompose

[SysML] #25. How to draw a Sequence Diagram with EA

[SysML] #26. Understanding Stm Diagram State and Transition

[SysML] #27. Understanding Stm Diagram Event Pseudostate Region

[SysML] #28. How to draw a State Machine Diagram with EA

Leave a Comment