While having a look at Tony Evan's problem with Interfaces and Components
Component/ports/interface + Comp. internals Model, I was playing with EA's implementation of the the
[size=13]UML 2.0 Superstructure (formal)[/size] Specification (and, as far as I can see, the
[size=13]UML 2.1 Superstructure (interim)[/size] Specification) in this area.
First some assertions (which may or may not be correct - I'd appreciate some guidance):
With respect to Components, a Part is an instance of a base Classifier in a certain role. A required or provided Interface is an instance of an base Interface in a one of two roles (provided or required). A Port is an instance of a base Classifier, again in a certain role.
From EA's behaviour, it would appear that a Part MUST always be an instance of a base Classifier, while a Required/Provided Interface or Port are, by default, not attached to a base Classifier. Once attached to a base Classifier however, they must REMAIN attached to an Classifier. That is, the type of the Property cannot be reset to <none>.
From the Superstructure document it can be seen that a Component may expose an Interface directly or via a Port.
EA's rendering of the Assembly connector seems a little amiss. The UML specifications show the ball and socket icon only for Assemblies that connect Components or Ports directly. Where an Required Interface is connected to a Provided Interface, the UML specification seems to require a simple dependency to link the Required Interface to the Provided Interface. NOTE: I'm talking only about rendering here. It would seem appropriate that the Assembly dependency have a rendering toggle to render the Required Interface, Assembly Dependency, Provided Interface combination as an Integrated Assembly rendering or as the individual items.
It would appear that Ports are optional. Since you can run a Delegate directly from an Interface to a Part or another Interface. (Although I think I found a few bugs in the linkages here)
There doesn't seem to be any way to connect/disconnect an existing Required/Provided Interface to/from and existing Port. Is that correct?
TIA,
Paolo
[Note: Edit to replace Class and Element with Classifier - to comply with UML specification]