A colleague of mine did this UML component diagram to represent both the required/provided interfaces and the internal structure of the subsystems that compose the system we're working on:
(The subsystems are called "User Management", "Votes Management", "Post Management", etc...)
This diagram is for a System Design Document. This is therefore not an exact representation of the code objects.
The system follows a 3 layer approach:
- GUI represents the User Interface
- Control represents the application logic
- Repository and media access are required interface given by some other components that represent the Data Access.
Each component in the figure above has their own GUI and Control subcomponent. The repository is a monolithic component outside of this diagram so we're just ignoring it.
The question is: does it make sense that "GUI" and "Control" are instances, while "Gestione Utenti", "Gestione Voti", ecc... are not? My colleague states that this is useful to intend that "each GUI subcomponent is different from the GUI subcomponent elsewhere in the diagram". So there is another question: does it make sense that there are multiple "GUI" and "Control" subcomponents with the same name?