[SysML] #12. SysML Part Properties Explained: From Basics to EA Practice
Hello! Have you ever felt a bit lost when looking at a complex system diagram? Especially with SysML, terms like 'Block Definition Diagram' or 'Part Property' can seem daunting at first. I've certainly had moments where I was scratching my head, trying to make sense of all the interconnected blocks. But don't you worry! Today, we're going to take a closer look at 'Part Properties,' a crucial element that defines the very structure of a system. Let's figure it out together! 😊

What Exactly Are Part Properties? 🤔
[cite_start]Simply put, Part Properties are used to define the characteristics of each component that makes up a system. It's a tool that clearly illustrates how various parts within a system are connected and what role each one plays in the grand scheme of things. [cite: 972]
For instance, when modeling a car, individual components like the engine, transmission, and wheels can all be represented as Part Properties. This helps explain their interactions and functions within the larger system. [cite_start]It really clarifies the structure! [cite: 972]
In SysML, the relationship between a whole system and its components is expressed using Part Properties. [cite_start]This is a critical concept for designing complex systems. [cite: 973]
- Physical Systems: In a physical system like a car, this represents an assembly relationship. The 'whole' block (the car) is formed by combining several 'part' blocks (engine, wheels). This is similar to a Bill of Materials (BOM), making the function of each part clear.
- Software Systems: In software, this concept is also vital. The lifecycle of the 'whole' object directly impacts its sub-objects. For example, if the main object is deleted, all its associated sub-objects are deleted too. This is often managed through composition relationships in programming.
Defining and Expressing Part Properties 📊
If you have experience with object-oriented programming, this might feel familiar. A class acts as a blueprint for objects, and its fields can be instances of other classes. Similarly, in SysML, a Part Property of a block represents an instance of its Type. For example, a 'Car' block would include instances of 'Engine' and 'Wheel' blocks as its Part Properties. When a block is instantiated, its Part Properties must be instantiated as well.
Part Properties are typically displayed in a block's 'Part Compartment' using the following format:
Format | Description | Example |
---|---|---|
<part name> |
The name or role of the part, which helps identify it. | engine |
: <type> |
The block that defines the type of this part. | : Engine |
[<multiplicity>] |
Indicates how many instances of the part can exist. | [4] |
Multiplicity is crucial for defining the exact structure.
- [cite_start]
- Lower Bound: The minimum number of instances. If it's 0, the part is optional. [cite: 973]
- Upper Bound: The maximum number of instances. [cite_start]It can be a specific number (like 1 or 4) or an asterisk (*) for "many" or unlimited. [cite: 973] [cite_start]
- Default: If not specified, the multiplicity is assumed to be
[1..1]
, meaning exactly one instance is required. [cite: 973]
Visualizing with Composite Association 🔗
To visually represent this strong 'whole-part' relationship on a Block Definition Diagram (BDD), we use a Composite Association. It's a solid line with a filled black diamond on the 'whole' side. This diamond signifies that the 'part' is a component of the 'whole'.
📝 Example: Car Model Association
Imagine our 'CAR' block. We can draw Composite Association lines from the 'CAR' block to the 'Wheel' block. We can give a role name to the end of the line connected to the 'Wheel' block, like wheel
, and set its multiplicity to [4]
. This visually states: "A Car has 4 wheels."
An important rule of this association is that a part can only belong to one whole at a time. This means the multiplicity on the 'whole' (the diamond side) is typically 1, ensuring system integrity. [cite: 974]
Practice in Enterprise Architect: Using IBDs 💻
Now, let's see how this works in a real tool like Enterprise Architect. While BDDs define the types and their relationships, an Internal Block Diagram (IBD) shows the internal structure of a single block, detailing how its part properties are used.
Let's create an IBD for our 'CAR' block.
- Create the IBD: Right-click the 'CAR' block in your BDD or Project Browser, and select 'New Child Diagram' → 'Internal Block Diagram'.
- Add Part Properties: You can drag the part properties (like 'Engine' and 'Wheels') from the Project Browser onto the IBD canvas. Alternatively, right-clicking the canvas and selecting 'Synchronize Structural Elements' will add them automatically.
- Connect the Parts: Now, you can show how these parts interact. Use the 'Connector' tool from the Toolbox to draw lines between them. For example, draw a connector from the 'Battery' part to the 'Motor' part, and from the 'Motor' to each 'Wheel' part.
But we can get even more specific!
A simple connector shows that two parts interact, but Item Flow specifies what is exchanged (e.g., energy, data, or material).
To use it, you first need to model the items themselves as blocks in your BDD. For our car, let's create blocks named 'Current' and 'Torque'.
Back in the IBD, you can add an Item Flow from 'Battery' to 'Motor' and select 'Current' as the conveyed item. Then, you can "realize" this flow on the connector (Right-click connector → Advanced → Information Flows Realized), which visually links the abstract flow to the physical path. This makes your model incredibly clear and precise!
Part Properties at a Glance
partName : Type [multiplicity]
defines each part's role, type, and quantity.Frequently Asked Questions ❓
Today we took a deep dive into Part Properties, from the basic concepts to practical application in IBDs. It might seem like a lot, but as you see, breaking it down makes it much easier to understand, doesn't it? By properly modeling these structural elements, you can get a much clearer picture of how a system works. In the next post, we'll explore 'Reference Properties'! If you have any questions, don't hesitate to ask in the comments! 😊
This article is a re-reation of the core content of the article I wrote last year using AI. If you are interested in the original article, please refer to the HTML below!