Skip to main content

A Common Misunderstanding in Using Connectors

I have been asked many times by customers, that why they cannot use a connector to connect between ports on the boundaries of blocks in SysML Block Definition Diagram (BDD). Is that a tool's problem?

After I have answered this question many times, I think it would be helpful for SysML users if there is an article to answer such question.

For easy to explain, please see Figure 1. My customers try to use a connector to connect port p1 of SubSystem1 to the port p2 of SubSystem2 but they cannot. So, they have asked me with above question.

Figure 1 -- SysML Block Definition Diagram

To answer it, we should start by asking ourselves that does it make sense if a connector can connect both ports together? What should be the meaning of that connection? especially when we have multiple instances of SubSystem1 and SubSystem2. Should the ports p1 of all SubSystem1 instances be connected to the ports p2 of all SubSystem2 instances?  I don't think so.

BDD is used to define blocks in term of their features and structural relationships with other blocks [1]. Someone may think that the relationships are allowed, so connectors should be allowed too. In fact, the connector is not a relationship. According to UML v2.4.1 Superstructure [2], the Connector meta-class does not inherit Relationship meta-class or any sub-types of it.

So, how the connector should be used?

If you have read the UML 2.4.1 superstructure [2], you will see the third constraint of Connector meta-class (from InternalStructures) which say that a connector can only be used to connect between roles which are owned by the classifier that own the connector or the ports of such roles. Even though the SysML specification allow to use connectors across the boundaries of nested properties to connect to properties within them, but connectors still be used within a boundary of a context block.

Thus, connectors should be used within a context classifier, such as SysML Internal Block Diagram (IBD), SysML Parametric Diagram (PAR) and Composite Structure Diagram.

Figure 2 represent an IBD whose context is MainSystem defined in BDD (Figure 1). You can see that the connector can be used to connect between the port p1 of part s1:SubSystem1 and the port p2 of part s2:SubSystem2. In some books, they have explained that the connector should be used in the "usage" concept.

Figure 2 -- SysML Internal Block Diagram of MainSystem block

At this point, someone may argue that they have seen connectors in BDD.  Why?

My explanation is, SysML v1.2 Specification [3] have defined a structure compartment on a block symbol. This compartment can contain any of the graphical elements of an internal block diagram. You may consider that the border of this compartment is equivalent to the frame of IBD whose context is the owner block of the compartment. Thus, connectors can be used in this compartment, even they are in the BDD (Figure 3). However, these connectors still be used to connect roles within the same context block.

Figure 3 -- Structure compartment of MainSystem block

I hopefully expect that this article could help you to get a better understanding in using connectors in you model.

[1] Friedenthal S., Moore A., and Steiner R. "A Practical Guide to SysML: The Systems Modeling Language", 2nd ed. The MK/OMG Press.
[2] "OMG Unified Modeling Language™  (OMG UML), Superstructure version 2.4.1" [Electronic]
[3] "OMG Systems Modeling Language (OMG SysML™) version 1.2" [Electronic]

Kritsana Uttamang, PhD.

Analyst Manager / SysML Domain Expert
No Magic Inc.


  1. This comment has been removed by the author.

  2. What kind of information a connector is actually representing; a possible flow of information, an abstract connection between properties, etc?

    1. A connector represents a communication or a connection between roles which are connected by a connector. If a connector does not have type specified, it could be considered as an abstract connection between roles at both ends. If it has a type, then it could represent a concrete connection between roles at both ends, e.g. physical connection between mechanical parts.

      For an information that flows over a connector, it should be presented by the item flow.

      Moreover, a connector can also represent a communication between the parts/ports which are send and receive signals invoked by invocation actions in activities.

    2. Hi, I am Yi Zhou, product owner of Astah SysML.
      I think Connect whose type is an association is based on instance concept.
      Because BDD shows class level concept, connect shouldn't be on a BDD.
      However, Port is confusing.I think port should also be an instance concept.
      Why can a port be on a BDD?
      Port is explained a Property of a block at that time?

    3. Regards to the Table 9.1 - Extensions to Block Definition Diagram in SysML v1.3 Specification, you could see that the port symbol can be shown in on the boundary of the block symbol. Evermore, the notation of the port described in the section 9.3.12 Port (from Ports) of UML v2.4.1 Superstructure also says that:

      "A port of a classifier is shown as a small square symbol. The name of the port is placed near the square symbol. The port symbol may be placed either overlapping the boundary of the rectangle symbol denoting that classifier or it may be shown inside the rectangle symbol."

      So, it is clearly that port can be shown in the BDD and elsewhere that classifier symbols can be shown.

      If you see the description of the port the the UML Superstructure, I believe that the specification allow to shown the port on the classifier symbol, to annotate the point of interaction of the classifier.

      Best regards,

      Kritsana U.

  3. This comment has been removed by the author.

  4. Its like you read my mind! You seem to know a lot about this, like you wrote the book in it or something. I think that you can do with a few pics to drive the message home a little bit, but other than that, this is fantastic blog. A great read. I will certainly be back.
    Cardone 66-4207 New CV Axle

    1. I'm glad to hear that you are interested my article and thank you very much for your suggestion. I will improve my writing accordingly.

      BTW, I have never written a book before, but.. may be in someday. :)

  5. Hello, is it possible not to connect every port? I dont want a diagram with to many connections. And connections like power supply might not be that im portant in that view.


Post a Comment

Popular posts from this blog

Simple Clock Modeling with SysML

It has been a while since I posted my previous article on this blog, because I was busy in making MagicDraw SysML supports for the new OMG SysML v1.3 Specification [1]. Couple weeks ago, I was asked by a customer about how to model a clock which counts every second with SysML. I created the simple clock model for answering. I also posted it to the SysMLForum and found that some people are interested in my clock model. So, I wrote this article to explain about the clock model and show how to model the system operating by a time trigger. Start from defining the clock with a SysML block. The clock block contains only a value property t . This value property represents time in second. Thus, a value type Second must be defined for typing the value property as in Figure 1. Figure 1 - SysML Block Definition Diagram of Clock Model Next, SysML State Machine will be created to describe the behavior of the clock block. Here, the clock state-machine was designed to have only one state

Decomposing Ports and Connectors with Association Blocks

This article was written when SysML v1.3 specification is in releasing process. If you are a big fan of SysML and keep in touch with SysML RTF, you may have seen some documents or books about SysML v1.3 such as [1] and [2]. One of many things that I am impressed in those books and documents, is the way they use SysML to describe nested ports and specify compatibility between connected ports using association blocks.  When two ports connected by a connector, they may have nested ports which themselves can be connected. An association block has been suggested for defining the internal structure of the connector. It could contain a set of connectors that define the connectors between nested ports of association ends. When a connector is typed by an association block, the interaction between roles at both ends of connector will be handled by the internal structure of the association block [1].  This approach give us not only the ability to decompose ports and connectors but also the a