SysMLv1: A 'part property' in SysMLv1 does not formally include 'port' (which is considered a special kind of property), even though the Port metaclass in UML2 extends Property and a 'port' may have 'composite' aggregation and be typed by a Block.

Icon class
icon_class
far fa-sticky-note
icon_class_computed
far fa-sticky-note
Note kind
Policy level
Specification keywords
UML keywords
SysMLv1.x keywords
Keywords
Click on the image to view it full size

In SysMLv1, a part property (a type of block property) is a specific concept, refined from the UML2.5.1 concept of a 'part object', and distinct from 'port'. Formally, a 'port' in SysML is not a 'part property', even when typed by a Block and with AggregationKind 'composite'.

However, the SysMLv1.7 spec is in some spots contradictory if taken literally:

The following would seem to imply that a 'port' is not "general" in the sense used above:

The above is slightly misleading, since the notations for a 'port' in an IBD are different from those for a 'part property', as shown in the IBD diagram above.

Additionally, one may show a Port on the boundary of a Block symbol in a BDD, although this is not recommended Webel Best Practice:

Also, the following, if taken literally, could pedantically be interpreted as including a 'port' typed by a Block as a 'part property'!

Consider a port, with AggregationKind 'composite', and typed by a Block. Is it a 'property'? Well, Port extends Property. And SysMLv1.7 says "Ports are specialized kinds of properties". So, perhaps yes, and if so, then that 'port' typed by a Block by the definition above is also a 'part property'!

Confusion can arise where the term 'property' is used. In some cases in the SysMLv1 specification it means strictly a Property (a specific metaclass), and excludes extending metaclasses such as Port; in some other cases the 'term' property is used to mean a Property OR any extending metaclass (so includes Port).

Note, however, that a 'port' MAY be typed by a ValueType, even if it is not recommended for SysMLv1.7:

Use of a ValueType as the type of a 'port' is a legacy approach associated with the DEPRECATED FlowPort and the DEPRECATED concept of atomic flow port (as opposed to a nonatomic flow port typed by the DEPRECATED FlowSpecification.

A direct Property (not a Port) typed by a ValueType is a value property, not a part property.

In UML, a 'port' is also described separately from the concept of 'part object':

It's quite clear on the the notations being different, too:

The option above for the port to 'be shown inside the rectangle symbol' is supported in Magic Cyber-Systems Engineer® (Cameo Systems Modeler®) for SysMLv1 ports; try setting the visibility to 'private'.

If you are inside an IBD in Cameo and you use the Refactor > Convert To to switch between a Port and a Part Property you'll see that it correctly jumps from other being displayed as a Port symbol on the boundary or as a Part symbol completely inside its owning Block.

This aggregation rule applies to both 'port' and 'part':

Even though the UML Port metaclass extends the UML Property metaclass, it is not considered a part in the sense described above.

One thing that can be a bit confusing is that in SysMLv1 there is no actual stereotype PartProperty in SysMLv1. The Magic Cyber-Systems Engineer® (Cameo Systems Modeler®) tool has a dedicated extension PartProperty, which it uses as part of enforcing the rules described for the SysMLv1 'part property', but that's a tool implementation concern (and not inconsistent with the SysMLv1 spec).

Relates to
Related notes
Related notes (backlinks)
Related snippets (extracts)
Visit also
Visit also (backlinks)