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):
1)
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
2)
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 A
?
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?