I recently found out that I have probably been using ball/socket notation in a wrong way all the time. Now I am confused by the different ways of drawing interface relationships in two regards (I think the answers to these are closely related):
Given this small diagram:
I can create three components in a higher abstraction diagram each containing one of the pieces (and others) from the above diagram and the same relationship connectors.
However if I use the ball/socket notation, the Foo interface is the ball/socket or in other words it's no longer shown where this interface is defined:
How can I show the relationship of
iDefineFoo component which contains the
Foo interface definition? Should it always be hidden
Up unitl now I misused the ball notation (provided interface) to show that a component provides the interface definition itself instead of the realization of it. So for a component
A containing the public interfaces for an API I want to show that another component
B depends on this component
A. Is the only feasable way to use a simple
dependency connector? Or how would I show that the dependency is bound to an interface which is inside the component
I know it's no longer a single question but am I completely wrong and should anyway always model the public API and the implementation in the same component?