IMO Fowler has the best take on these beasts.
Assembly links are just shorthand. Use them at high level modelling to show you know there is a "wiring" bewteen component A and component B necessary to get the system to work. We do not care what the physical provided/exposed/required interfaces are called at this level, just that they are needed.
e.g. "MyEAAddin" needs to interact with the "Enterprise Architect Object Model 2.0" COM component in order to work. I am not interested in the internals of the tlb at this point, I'm more interested in what "MyEAAddin" does and how it works.
Later when we get down to the "code" design we will be looking at the exact ports and interfaces provided by the automation library, but not at the
component design level which should be about "what new and existing stuff am I going to use to build this system.
e.g. I could (if I were dumb enough) write my own version of the EA library using raw access to the repository and circumvent using COM altogether. There may be crazy enough reasons for doing this. I may want to, heaven forbid, get at something the EA component doesn't provide. This might be a "partial" set, it might itself use the COM library to get at the "normal" stuff. etc etc
...
OTOH if there are well-known exposed/provided/required interfaces at this level of design then there is no L.A.W. that says you can't use 'em.
This is just my alternative take on
FWIW, as I understand UML 2, when the names of the interfaces at both ends are the same, you can use the ball-and-socket form (because they are (both sides of) the same interface).
- I dont care about the
name as much as the existence of the "wire" in my system and when the coders build it they better damnwell use that component's services rather than waste time building their own.
JM20CW
bruce