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 Components classes can depend on (served via injection). This is shown using
C arrows. Arrow
A shows the realization where a class in
Loaded Component can implement an interface from
- How can I show the loading aspect?
- Should I show
Cwith 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.