Combining Component and Deployment Diagrams

Combining Component and Deployment Diagrams

Although you can draw separate component and deployment diagrams, you can also place the component diagram on the deployment diagram, as I have done with Figure 10-1. You can do this to show which components run on which nodes.

So in the diagram, the Liver Unit UI and the Liver Unit Client Facade both run on a Windows PC. The Liver Unit UI is dependent on the Liver Unit Client Facade, since it calls specific methods on the facade. Although the communication is two-way, in the sense that the Facade returns data, the Facade is not aware of who is calling it and is thus not dependent on the UI. In contrast, in the communication between the two Health Care Domain components, both are aware that they are talking to another Health Care Domain component, so the communication dependency is two-way. The two domain components run on separate nodes.

A component may have more than one interface, in which case you can see which components communicate with each interface. On Figure 10-1, the server application has two interfaces. One interface is used by the application facade running on a PC; the other interface is used by a configuration component running on the server.

The use of multiple Health Care Domain components is hidden from its clients. Each Health Care Domain component has a local database.

People often draw these kinds of diagrams with symbols that look like the various elements. For instance, they use special icons for servers, PCs, and databases. This is legal in the UML: You can treat each icon as a stereotype of the appropriate diagram element. Usually, such icons make the diagram easier to understand, although they get messy if you show nodes and components together, as I do on Figure 10-1.