0

I am trying to understand how a deployment diagram works by making one and reading up on it. I have come across multiple different (contradicting) statements or I am flat out misunderstanding them. According to Lucidcharts an artifact would be "A product developed by the software, symbolized by a rectangle with the name and the word “artifact” enclosed by double arrows." and a component would be "A rectangle with two tabs that indicates a software element."

My first question would be: What's the difference between the 2? Both are software, unless a physical component developed by the written software could also be classified as an artifact.

Now on to the contradiction(?): According to sparxsystems an artifact is: "An Artifact is any physical piece of information used or produced by a system". So according to the second quote, an artifact cannot be a software, since it's "any physical piece of information used or produced by a system". So for example: A database server should be classified as an artifact, even though other sources state that a database server should be a node.

According to lucidcharts (at the bottom of the page this example is mentioned) a browser is considered as a device (node), whereas I would consider it a component. Afterall, it's a software element. It's a piece of software which isn't a physical or software product created by one of my softwares and therefore shouldn't be an artifact either. According to sparxsystems a node is: "A Node is a physical piece of equipment on which the system is deployed, such as a workgroup server or workstation". How is a browser a physical piece of equipment?

Sources: https://sparxsystems.com.au/enterprise_architect_user_guide/14.0/model_domains/deploymentdiagram.html#:~:text=A%20Component%20is%20a%20modular,its%20provided%20and%20required%20interfaces.&text=An%20Interface%20is%20a%20specification,that%20implementers%20agree%20to%20meet.&text=An%20Artifact%20is%20any%20physical,or%20produced%20by%20a%20system.

https://www.lucidchart.com/pages/uml-deployment-diagram

So my question is:

Can someone explain what a node is, what an artifact is and what a component is and what the differences would be between these? I have a difficult time grasping the concept.

1 Answer 1

3

Rather than reading tool vendor descriptions, it would be beneficial to go to the UML specification for these definitions.

An Artifact is "some (usually reifiable) item of information that is used or produced by a software development process or by operation of a system". Source code, configuration files, design documents and models, binaries, and test reports are all examples of artifacts. However, not all artifacts of all types are things that may show up on your deployment diagram.

A Component could be a type of Artifact. Components are, specifically, "a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment". Depending on the system under design, components will be different. Even at different levels of abstraction, components could be different. For example, in a service-based architecture, each service could be a Component. However, at a lower level of abstraction, a service could be composed of various components.

Nodes represent "hardware devices or software execution environments". Nodes can also be nested. An example of nested nodes could be a web browser (a software execution environment for JavaScript) within a virtual machine on a physical server.

Depending on your perspective, a Node could be an Artifact or Component. To a web application developer, a web browser is a Node. However, to a web browser developer, the web browser is an Artifact that could be made up of many Components, where some are local and some are elsewhere.

3
  • So depending on context, the very same element could be labeled differently? And if so, who determines or decides in what context which one is correct? For example: You sometimes see a browser (as a node) be refered to as a device. whereas I would think this is a software execution environment. When would you for example label it as a device then? Commented Nov 8, 2022 at 15:54
  • @ItrysohardbutIcryharder The creator of the system. Someone designing and building a web browser is fundamentally different than someone building a web application. For one, the browser is the product. For the other, the browser is a tool used to view (and, for client-side code, execute) the product. But I don't understand the rest of your question since a "device" and "software execution environment" aren't different - they are both nodes. A device could be a server but a VM (think the JVM) is a softwareexecution environment.
    – Thomas Owens
    Commented Nov 8, 2022 at 17:00
  • thank you very much for your explaination. It has cleared up a lot of details. Commented Nov 8, 2022 at 20:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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