2

in UML deployment diagrams, the node element is used to represent a "computational resource" (in other words, something that can run software).

I know that nodes may have other nodes placed inside them (to imply nesting), and that they may have artifacts placed inside them (to imply the deployment relationship, i. e. the artifact being deployed to the node).

However, I've also found a couple of illustrations that had component elements placed inside a node, which I'm not sure how to interpret.

Here's what I'd like to know:

  • Is it legal to place a component inside a node?
  • If so, what exactly does it imply - the component being deployed to the node (which I'm not sure is allowed), or the node consisting of the component?
  • If not, does the specification explicitly say so at any point?
3

Strictly speaking, no, it is not legal to place a component inside a node. The specification does not explicitly say so, but it would not be feasible for the spec to explicitly forbid every mistake one could possibly make.

Personally, I think it is acceptable to draw a component inside a node. I would interpret it as a deployed artifact implementing that component.

Some relevant quotes from the UML 2.5 specification:

11.6.3.1: A Component may be manifested by one or more Artifacts, and in turn, that Artifact may be deployed to its execution environment.

19.4.3: A Node is computational resource upon which Artifacts may be deployed. Nodes may be further sub-typed as Devices and ExecutionEnvironments.

19.2.4: System elements deployed on a DeployedTarget, and Deployments that connect them, may be drawn inside the perspective cube.

I think DeployedTarget is a typo or a synonym for DeploymentTarget, which is a superclass of Node. "System elements" is not well defined in the spec. I found this sentence:

19.2.3: System elements are represented as DeployedTargets

But I think this should not be treated as a formal definition of the word 'system element' as used in 19.2.4. I think it is clear that anything drawn inside a node should be something deployed on that node and the only deployments mentioned are the deployments of artifacts.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.