I’m a bit confused about this type of UML diagram which I’ve seen used in non-consistent ways.
Component diagrams often represent some sort of architecture level snapshot of the application in development, they are very close to deployment diagrams, just a bit more abstract (i.e. without the node details). Some people even put annotations on them with indication of specific files or dlls. So basically they consider components as instances.
But if I’m not wrong these are classifiers, so they shouldn’t exist run-time. So is it correct to view these diagram as composed by concrete instances?
For example, let’s say that I have some sort of distributed database accessed by a middleware layer. In the class/package diagram I have one datasource class/package and one middleware class/package. In the deployment diagram I have one middleware artifact/node and more than one datasource artifacts/nodes. In the component diagram do I have to put one or more datasource components?