SysML Full Ports versus Proxy Ports
How to use full ports and proxy ports and what’s the difference? SysML changed the way how to model ports with version 1.3 in 2012. (see also What’s new in SysML). Besides others the new version 1.3 introduced the concept of full and proxy ports.
A full port is an element of the system. It is part of the bill of material (BOM) and could – as any other part – specify behavior and an internal structure. The type of a full port is typically a standard block. The following figure shows an extract of a forest fire detection system. The Smoke sensor has a full port that specifies the attachment of the sensor to the environment. The attachment is a part of the Smoke sensor with it’s own structure specified by the block Attachment.
You can model the same semantics with a proxy port. The attachment is a internal part of the Smoke sensor. The proxy port provides the relevant features of the attachment to the outside. The features are specified with the interface block SIF_Attachment (SIF = System Interface).
The proxy port and the internal part are connected with a binding connector that assures that the instances of the proxy port and the part have the same value. For that reason the types of the port and the part must be compatible. Therefore the block Attachment is a specialization of the interface block SIF_Attachment.
I recommend to use only proxy ports and to ignore full ports.
- All parts of the system are modeled the same. There is no special case that full ports are also parts.
- The separation of parts and their relevant features for the context puts an important focus on interfaces. Full ports provide the complete set of features of the element to the outside.
- If every port in the model is a proxy port, you can discard the stereotype notation proxy. That makes the diagrams less cluttered.