In a UML component diagram I want to show two components (among others). One is the core component that loads contents (classes) from the other. It's much like a testframework loading unit tests/test discovery. For this I currently have a simple association relationship (which I guess is wrong). Also the loaded component can implement interfaces contained in the core component. For this I currently have a realization relationship between the two.
For plugin architectures I have seen assembly relationships where the core uses functionality provided by the plugins. This seems wrong too, since the core does not necessarily call methods of an interface implementation (at least on this level, I think its a technical detail how the core performs the actual call).
- How do I show this kind of relationship?
- Is it good to show two relationships, one for the loading and one for the interface realization?
Edit: adding diagram and more explanation
Core
defines two interfaces, that Loaded Component
s classes can depend on (served via injection). This is shown using B
and C
arrows. Arrow A
shows the realization where a class in Loaded Component
can implement an interface from Core
.
- How can I show the loading aspect?
- Should I show
B
andC
with only one arrow since on this component level this detail is not yet relevant or should I avoid leaving out information here?
Alternatively I could show something like this:
Core
just uses the loaded component to do stuff, Loaded Component
depends on interfaces from Core
. I can show how it's optional using the suggestions from @qwerty_so 's answer.