Understanding Flow Property
In this blog post, we will take a closer look at flow Properties, 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.
Type of flow
In SysML, “Flow” is an important concept that refers to the movement of data, energy, matter, or information within a system. This Flow is essential for modeling the interactions between the various components of the system.
In particular, “Item” is used to describe the type of entity flowing through the system. In other words, Item can be thought of as an element that flows according to flow characteristics. Item can be Block, Composite Block, Value or Signal.
- Block: Items modeled as blocks represent specific components within a system. For example, a block representing electrical energy might contain quantitative properties such as voltage and current. In this way, blocks specifically model the properties of physical objects.
- Composite Block: Items can have complex internal structures. For example, items such as cars rolling off an assembly line or complex messages being transmitted over a data bus play important roles within the system.
- Value Type: Flow can be simplified to represent quantifiable properties. For example, for a single property like voltage, the item can be represented as a simple ‘value type’ rather than a complex block.
- Signal: Control and information flow can be expressed as ‘signals’, and these signals are used to control the operation of specific parts within the system. Signal flow represents the control mechanism of a system and is essential for efficient system operation.
The definition and use of ‘Item’ in system modeling can vary depending on the level of abstraction of the design. This plays an important role in managing system complexity and making the design process efficient.
- Items at a level of abstraction : Items can be defined at a very abstract level, which helps in conceptual understanding of complex systems. For example, in a security system, a warning delivered to an operator may be expressed as a ‘signal’ at a high level of abstraction. These abstractions help us concisely understand the overall functionality and flow of the system.
- Redefining items during specification : As the design process progresses, items can be redefined to be more specific. For example, consider the case where the warning from the previously mentioned security system is actually delivered as an audio alarm. In this case, the warning can be redefined not as a simple ‘signal’ but as a ‘block’ containing specific properties such as the amplitude and frequency of the sound. This specification clarifies the details of the system and makes the design for practical implementation clearer.
Flow properties
Flow Property is one of the Block specifications and represents properties corresponding to the individual specifications of the block’s input and output flows. Each Flow Property is displayed in a compartment called Block Flow Property and is displayed in the following format:
“direction” “property name”: “item type”[multiplicity]
- Property name : Each flow property has a unique name.
- type (item type) : The type of a flow attribute can vary depending on what it represents, and can be a block, value type, or signal.
- Multiplicity : This refers to the number of values a flow attribute can have.
- direction : The direction of flow can be either ‘in’, ‘out’, or ‘inout’.
Flow modeling
Flow is a key concept that describes how data or information moves within a system. This is essential to effectively model the interactions between the various parts of the system.
In SysML modeling, the ability of items to flow through a connector relies on the ‘Flow Properties’ assigned to the parts at either end of the connector. These flow properties play a key role in understanding and modeling the interactions between system parts.
Flow occurrence conditions
- Type and direction compatibility : For flow to occur from a source part to a destination part, the parts at both ends of the connector must have compatible flow property types and directions. The types are compatible if the target flow property has the same type as the source flow property, or is a generalization of the source flow property. Additionally, they are compatible even if the directions of the two properties are ‘inout’ or opposite to each other.
- Name-based compatibility determination : If there are multiple Flow Properties that are compatible in type and direction, the compatible flow properties are determined based on their names. This provides a clear distinction when flow properties have the same type and direction.
Fan-out and fan-in
- Fan-Out : Occurs when one part is connected to multiple parts with compatible flow properties. This means that the outflow flow properties of the source part are propagated to all connected links.
- Fan-In : Occurs when the outflow properties of multiple parts are compatible with the inflow properties of one part. This means that data coming from various sources is concentrated into one destination.
Item Flow
Using the Item Flow Relationship on ibd, you can specify the items that actually flow through the connector connecting the two elements. This can define the actual flow, including the Type and Direction of the Item Flow. For example, the current flowing between two ICs.
1. Compatibility of Item Flow
- It is compatible if the type of the Item Flow is the same as or more general than the source flow property, and if the type of the target flow property is the same or more general than the type of the item flow.
- In other words, they are compatible if the Item Flow of the Connector is more general or the same as the Flow Property of the block that outputs (sources) the Item.
- Additionally, they are compatible if the Flow Property of the block that receives the Item (target) is more general or the same as the Connector’s Item Flow.
2. Item Flow Indication
- Item flow is represented by a black arrow on the connector, and the direction of this arrow indicates the direction of flow.
- If a connector has multiple item flows, they are displayed as a comma-separated list, with each item flow given its type and name.
3. Item Property
- Item properties are included in blocks connected to the item flow and indicate the specific use of the item. This means that items of the same type may be used differently in different contexts.
- In an entity flow, multiple entity properties can have the same type, but each serves a different purpose. For example, when an item called ‘water’ flows through a pump, the water entering the pump and the water leaving the pump are represented by different item properties. This indicates that water plays different roles within the system.
4. Item Flow and Parametric Equations
- Item flows can also be constrained by parametric equations, which allows for more fine-grained control over specific behavior of the system.
- this is especially important in complex systems, especially automotive electronic systems. Here, precise control and an accurate understanding of data flows contribute to increasing system reliability and efficiency.
EA with Flow Property
Now let’s look at how to model Flow through EA. First of all, as always, modeling begins with defining the block in which modeling will appear. Create a bdd. I created a bdd called ECU.
After creating the ECU Block, we created one SMPS and one MCU block, which are always present in ECUs.
We also created voltage and current blocks, which are flow properties that flow from SMPS to MCU.
Now, SMPS and MCU are connected to ECU and Part Association.
Select Flow Property in the bdd Toolbox and create two properties on the ECU bdd. They are named 5V and 500mA, respectively. Select the 5V Flow Property and select Direction as out in the Element tab of the Properties window. In the Property tab, select Type as Voltage. Similarly, for the 500mA Flow Property, select out as Direction and Current as Type.
Now drag the 5V, 500mA Flow Properties and place them into the SMPS block. If you make the size of the SMPS Block larger and drag the 5V or 500mA Flow Property to the SMPS, a dotted line will appear on the ECU Block. Then, you can see that a section called namespace is created on the SMPS Block and the 5V, 500mA Flow Property is entered.
In this state, click on the 5V, 500mA Flow Property on the namespace and delete it. Then, each Flow Property is inserted into a compartment called flow properties. If doing this is not intuitive, you can create the ECU’s ibd and create the Flow Property directly on the ibd. (However, if you do this, you may need to add ibd unnecessarily.)
As you can see in the ibd below, a Flow Property has been created with [Direction] [Name] : [Type]. If you want to add multiplicity, you can do so in the Property tabMultiplicity of the Properties window.
Likewise, create two Flow Properties, set Direction to In, and insert them into the MCU.
Flow property settings of SMPS and MCU have been completed. Let’s connect the flow through Item Flow Relationship on ECU ibd. Create ibd of ECU. (Right click on ECU → New Child Diagram → Internal Block Diagram)
Right-click on the created ibd and click Synchronize Structural Elements to create SMPS and MCU parts on the ibd.
When connecting Item Flow from SMPS → MCU, click the Add button in the Information Items Conveyed window that appears to add Current and Voltage generated by bdd. This work defines the types that can flow between SMPS and MCU. In other words, adding a block in bdd defines types that can flow between the two parts through item flow, just as we define objects that can appear in the model we are working with. In reality, in a specific ECU instance, both Current and Voltage do not need to be blurred. Only one of the two may flow, or neither may flow.
In a specific instance, items between SMPS and MCU components flow through the Connector. In other words, it is convenient to think of item Flow as defining an item that can flow through a Connector.
Connect SMPS and MCU Part with a connector. The connector may not be visible because it overlaps with the itemFlow, so click on the itemFlow and move it a little to make the Connector visible. Right-click the Connector and select Advanced → Information Flows Realized… Click . Select Current, Voltage Block from Information Item. (Please note that if you want to select only one of the two, you must create an Item Flow for each.)
When Information Flow Realized is performed, the item flow rolls up and merges with the connector, and a triangle mark appears in the center of the connector, indicating what is flowing to that connector. (For reference, when connecting itemFlow, you can create a Connector by selecting Add Realizing Relationship.)
Now, our model shows that Current and Voltage Block flows between SMPS and MCU.
If you want to find and select the itemFlow Relationship in the current situation, click SMPS or MCU and check in the Relationships window. You can see that there are two Relationships, Connector and Information Flow, where Information Flow is ItemFlow. (For reference, Relationships can be activated through Start → All Windows → Properties.)
Additionally, if you look at the SysML book, you will find the concept of item property. In SysML, a property is when a specific type is used in an actual context, such as an instance.
In other words, itemFlow defines items that can flow through Flow, and item Property designs instances that flow in a specific context.
Let’s design an item property in EA. Connect SMPS and MCU again with item flow and click OK without adding information item. Select the created itemFlow and select the ItemProperty item in the Properties window → Connector tab… You can add item property to the item flow by selecting .
However, a block cannot be assigned to the item property and a different property must be assigned. Typically, Part or Reference, which is an instance of Block, is assigned.
Drag the Voltage and Current blocks on the Project Browser, import them into ibd, and make them each a Part property of the ECU block. It was named 5V, 500mA. If it bothers you to see those parts on the ibd, you can click on them and delete them with the del key. Deleting from the diagram does not just mean that it is not displayed on the diagram, but in reality, it remains as a part property of the ECU Block.
Now, connect two ItemFlows between SMPS and MCU again and assign 500mA: Current and 5V: Voltage to itemProperty, respectively. Then, connect the Connector, select Advanced → Information Flow Realized, select each itemProperty (500mA: Current, 5V: Voltage), and click OK. Then, you can model that instances of a specific type flow between SMPS and MCU, as shown below.
And when you select the SMPS (or MCU) Part on ibd and select 5V, 500mA in the Features window → Parts/Properties tab, Flow Property will be created inside each part. If you click on each Flow Property and delete it with the Del key, a :flow properties section is created like bdd. Then, flow properties are created within the part as shown in ibd below, allowing more visible information to be delivered.
This concludes my post about Flow Property. In the next post, we will discuss Port. You can design more clear modeling by assigning Flow Property to Port.
If you are interested in other articles about the basic Knowledge of SysML with EA, please refer to the links below!
[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] #14. Understanding Value Type
[SysML] #15 Understanding Parametric Diagram
[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