0

Using the SysML 1.6 specification, it is possible to link nested part properties via a connector and a proxy port within an Internal Block Diagram (IBD). The connector can be implemented in two ways: the connector can be drawn across the boundary that encapsulates the nested part property (Figure 1) or the connector can stop at a port on the boundary and a second connector can then drawn from that port to the nested part property (Figure 2).

Figure 1

Figure 2

When is it acceptable to directly connect nested part properties? Why is it preferred to create multiple ports on the boundary?

According to Delligatti in his SysML Distilled book, "the decision to draw connectors across boundaries or stop at ports on the boundaries is a matter of judgement and should be based on knowledge of design principles". He goes on the write "...this is the object-oriented principle of encapsulation". However, it isn't really expanded upon further.

Using Magic Cyber Systems Engineer (formerly Cameo), it is possible to create both types of connections without any errors.

The SysML 1.6 specification discusses the "NestedConnectorEnd" stereotype (sec. 8.3.1.2.6) and provides an example (Figure 3). However, the example shows connectors between nested properties but without the use of ports.

Figure 3

Without a clear error or additional guidance, I'm not sure if and when it is appropriate to directly connect nested parts using ports in SysML.

1 Answers1

0

There is no semantic difference between connecting nested parts directly or via in-between ports. These are two ways to express the same. Cameo has even the option to create the in-between ports automatically.

There are some cosmetic differences: The diagram without in-between ports looks less cluttered. The disadvantage is, if you hide one nested part, the connector will disappear.

There are some handling differences: In many tools it is difficult to retrieve the information about the property path. With in-between ports the path is reflected in the model browser. In Cameo however, the path accross the nesting parts is easily accessible, no matter how you model it.

You can force a modeler to use ports by setting the Block property is encapsulated=true. Then it is no longer allowed to directly connect to nested parts. Cameo however will not enforce this rule. You could write a validation that checks it.

So, my guideline would be: In an early phase of modeling I want to quickly sketch out the connections. There might be frequent updates to the connections while we think about the design. Therefore, I would directly connect nested parts. In the final model they should always be replaced with in-between ports, because it allows hiding the internal structure and makes the interfaces between the parts explicit.

Axel Scheithauer
  • 2,758
  • 5
  • 13