UML Diagrams – Should External Services Be Included in a Deployment Diagram?

designdiagramsdocumentationuml

I am designing a Deployment diagram and a Component diagram for an existing Java EE application.

The app has integration with 3 external systems through soap web services and ftp.

I am including these systems in the Component diagram but I'm not sure if I should include them in the deployment diagram. Should I? I could not find if the standard for UML says anything about this.

If I have to include them, what would the stereotype be for those nodes?

Thanks!

Best Answer

In the UML specification, Section 11 describes component diagrams and Section 19 describes deployment diagrams. There's nothing that says that you can or can't include external systems, services, or components on either diagram type.

Personally, I would probably do the opposite of what you are doing. I would include external services on the deployment diagram and not on the component diagram.

The intention of the deployment diagram is to "capture relationships between logical and/or physical elements of systems and information technology assets assigned to them". The users of a deployment diagram include the people responsible for the physical infrastructure of the system. For these people, knowing that the system interacts with external services can be useful, especially if there are specific network ports that need to remain open in firewalls or ensure that physical resources that contain specific artifacts remain accessible to the outside world.

On the other hand, a component is a "modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment". The information here is more important to mapping requirements to pieces of the software system, planning for reuse, the specific interfaces between pieces of the system, providing a graphical overview of elements that may be decomposed in more detail in other views of the system. These are of more interest to software developers and architects who may not care as much about the specific nature of the services and where they live, but rather what is part of the system under development and how these pieces interact.

However, you should make the diagrams make sense to you. Maybe, for your audience, showing the external systems on deployment and component diagrams makes communication easier. UML is a communication tool - it provides a common language to communicate the design of a software system. My preference is to embrace many of the agile modeling techniques and stick to the standard notations and spirit of the language, but think about who am I making the diagram for and what will help them do their job.

Related Topic