Deployment diagram
View on Wikipedia| UML diagram types |
|---|
| Structural UML diagrams |
| Behavioral UML diagrams |
A deployment diagram[1] "specifies constructs that can be used to define the execution architecture of systems and the assignment of software artifacts to system elements."[1] To describe a web site, for example, a deployment diagram would show what hardware components ("nodes") exist (e.g., a web server, an application server, and a database server), what software components ("artifacts") run on each node (e.g., web application, database), and how the different pieces are connected (e.g. JDBC, REST, RMI).
The nodes appear as boxes, and the artifacts allocated to each node appear as rectangles within the boxes. Nodes may have subnodes, which appear as nested boxes. A single node in a deployment diagram may conceptually represent multiple physical nodes, such as a cluster of database servers.
There are two types of Nodes:
- Device Node
- Execution Environment Node
Device nodes are physical computing resources with processing memory and services to execute software, such as typical computers or mobile phones. An execution environment node (EEN) is a software computing resource that runs within an outer node and which itself provides a service to host and execute other executable software elements.
References
[edit]- ^ a b "Deployments". Unified Modeling Language 2.5.2. OMG Document Number formal/2017-12-05. Object Management Group Standards Development Organization (OMG SDO). December 2017. p. 653.
External links
[edit]- Introduction to UML 2 Deployment Diagrams by Scott W. Ambler
- UML 2 Deployment Diagram
- UML Deployment Diagrams
Deployment diagram
View on GrokipediaOverview
Definition
A deployment diagram is a type of structure diagram in the Unified Modeling Language (UML) that visualizes the physical deployment of software artifacts onto hardware nodes, illustrating how artifacts are allocated to execution environments for runtime operation.[4] It models the assignment of deployable elements, such as executable files or libraries, to nodes representing physical or virtual hardware like servers, devices, or processing units.[4] This diagram provides a static representation of the system's runtime architecture, emphasizing the configuration of processing resources and the distribution of software across deployment targets without depicting dynamic behaviors or interactions.[4] By focusing on the tangible aspects of deployment, it captures relationships between system elements and infrastructure assets, such as how artifacts are hosted within nodes to form the operational environment.[4] Unlike logical models such as class or component diagrams, which abstract software structure and dependencies, a deployment diagram prioritizes concrete deployment targets like servers or embedded devices, highlighting the physical mapping essential for system implementation and maintenance.[4]Purpose and Benefits
Deployment diagrams primarily serve to illustrate the hardware-software mapping within a system, depicting how software artifacts are allocated to physical or virtual nodes to form the runtime execution architecture.[4] By specifying these allocations, they identify deployment dependencies, such as communication paths and relationships between nodes, which are essential for understanding system topology and interactions.[4] A significant benefit of deployment diagrams is their role in risk assessment for deployment failures, as they enable the identification of potential performance bottlenecks or single points of failure through visualization of node interactions and artifact placements.[5] This capability, grounded in the core elements of nodes and artifacts, underscores their value in supporting maintainable and scalable software-intensive systems.[4]History and Standards
Origins in UML
Deployment diagrams were introduced in the initial version of the Unified Modeling Language (UML) 1.0, released in 1997 by the Object Management Group (OMG), as one of the structural diagrams designed to model the physical deployment of software artifacts on hardware nodes in object-oriented systems. This addition addressed the need for explicit representation of runtime environments and hardware-software interactions, which were essential for transitioning from logical designs to deployable architectures in object-oriented design practices.[6] The development of deployment diagrams was spearheaded by the OMG through the unification efforts of leading object-oriented methodologies, primarily to complement the component diagram by incorporating a dedicated perspective on physical system topology and distribution.[7] Unlike earlier notations, which focused predominantly on logical structures, deployment diagrams provided a means to visualize nodes as computational resources and the allocation of components to them, enabling better planning for system scalability and performance in distributed environments.[6] These diagrams evolved from precursors in established methods, notably the module and process diagrams in Grady Booch's method, which offered initial concepts for implementation views but were adapted in UML to be more component-centric and hardware-aware.[6] Similarly, James Rumbaugh's Object Modeling Technique (OMT) and Ivar Jacobson's Object-Oriented Software Engineering (OOSE) contributed foundational elements to UML's structural modeling, yet lacked dedicated notations for explicit hardware representation, a gap that deployment diagrams filled to support comprehensive physical modeling.[8] This integration by the OMG ensured UML served as a standardized language capable of bridging design abstraction with real-world deployment concerns.[9]Evolution Across UML Versions
The deployment diagram, as part of the Unified Modeling Language (UML), underwent incremental refinements in its early versions from UML 1.1 to 1.5, primarily focusing on minor notation adjustments to enhance clarity in representing nodes and their connections. These tweaks included subtle improvements in the graphical depiction of processors and devices to better distinguish hardware elements from software components, without introducing new structural elements or semantics.[10][11] A significant overhaul occurred with UML 2.0 in 2005, which introduced execution environments as a subtype of nodes to model runtime processing resources more explicitly, alongside device nodes for physical hardware. This version expanded support for distributed systems by allowing artifacts to manifest any packageable element—not limited to components—via a «manifest» dependency, and incorporated deployment specifications to detail configuration aspects. Stereotypes were also emphasized for customizing nodes, with non-normative examples like «cloud» enabling representation of modern infrastructures such as cloud-based deployments. These changes addressed limitations in earlier versions for modeling complex, distributed architectures.[12][13][14] Subsequent iterations, including UML 2.5 released in 2015, further standardized artifact deployment by removing direct references to components in deployment diagrams, shifting focus exclusively to artifacts and nodes for a cleaner separation between logical and physical modeling. This refinement improved precision in depicting software distribution across targets, particularly beneficial for containerized and virtualized environments, which could be modeled using artifact extensions or custom stereotypes like «container». The Object Management Group (OMG) continued maintenance with UML 2.5.1 in 2017, which reinforced compatibility with profiles such as SysML for systems engineering, enabling seamless integration of deployment views in broader modeling efforts for hardware-software co-design.[15][16]Key Elements
Nodes
In UML deployment diagrams, a node represents a physical or virtual computational resource that hosts the execution of artifacts during system runtime.[14] This element models the hardware or software environments where software components operate, enabling visualization of the system's distributed architecture.[17] Nodes are instances of the Node metaclass in the UML specification, which is a subclass of Class, allowing them to encapsulate both structural and behavioral properties relevant to deployment.[14] Nodes are categorized into two primary types to distinguish between hardware and software aspects of the execution environment. Device nodes, stereotyped as <Artifacts
In UML deployment diagrams, artifacts represent the physical pieces of information used or produced by a system, including files, documents, executables, libraries, scripts, or other deployable units that embody software components in a tangible form.[4] These elements bridge the gap between abstract model constructs, such as classes or components, and their concrete realizations, allowing modelers to specify how software is packaged and distributed.[4] For instance, an artifact might correspond to a compiled binary file or a configuration script that implements the functionality of a modeled component.[4] Key properties of artifacts include their ability to manifest one or more model elements through a manifestation relationship, which indicates that the artifact physically realizes the specified element, such as a component or class.[4] Artifacts also feature descriptors that provide deployment instructions, such as names, optional file names, paths, identifiers, or version information, often represented as attributes like fileName (a String with multiplicity [0..1]).[4] Additionally, artifacts maintain associations with components, enabling traceability from logical designs to physical deployments; these associations support the specification of how components are realized in executable forms.[4] As classifiers, artifacts can include slots for attribute values and may be extended via stereotypes, such as «source» for source code files or «executable» for binaries.[4] Artifacts are visually denoted in diagrams using a rectangle with the stereotype keyword «artifact» placed above, before, or in the top right corner, followed by the artifact's name (e.g., «artifact» MyExecutable.exe), and optionally accompanied by a document icon for clarity.[4] For complex deployments involving hierarchies, such as directories containing multiple files, artifacts can nest other artifacts within their rectangle boundaries, illustrating containment relationships and supporting multiply-instantiated structures.[4] This notation facilitates the modeling of artifact deployment onto nodes, where the physical elements are assigned to runtime environments.[4]Deployment
In UML deployment diagrams, a deployment represents the allocation of artifacts to nodes or other deployment targets, specifying how software is physically distributed across the system's runtime environment.[4] It is an instance of the Deployment metaclass, which is a subclass of Dependency, and establishes a relationship between a DeploymentTarget (such as a Node) as the supplier and a DeployedArtifact as the client.[4] This element is essential for modeling the execution architecture, indicating where and how artifacts are hosted during system operation. Key properties of deployments include references to the deployedArtifact (with multiplicity [0..]) and configuration elements (such as DeploymentSpecifications, [0..]), which provide parameters for customizing the deployment, like execution locations or environmental settings.[4] Deployments support both type-level and instance-level specifications, allowing for general topologies or specific runtime configurations. They enable the visualization of dependencies and interactions in distributed systems. Deployments are denoted using a dependency arrow (dashed line with open arrowhead) stereotyped with «deploy», pointing from the node to the artifact, or by nesting the artifact symbol inside the node rectangle.[4] This notation, as defined in UML 2.5.1, ensures clear representation of allocation without implying dynamic behavior.Notation and Symbols
Basic Symbols
Deployment diagrams in UML utilize a set of fundamental graphical symbols to represent the physical deployment of software artifacts on hardware nodes. The primary symbols include nodes and artifacts, each with distinct notational conventions that adhere to the UML 2.5 specification.[19] The node symbol depicts a computational resource, such as a hardware device or execution environment, and is graphically represented as a three-dimensional rectangular box or cube in perspective view. This symbol features a name compartment at the top, often prefixed with the keyword<<node>> or a subtype stereotype like <<device>> for physical hardware or <<executionEnvironment>> for software runtime contexts. Optionally, the node may include additional compartments below the name to display properties, attributes, operations, or even nested nodes and deployed artifacts, providing a hierarchical view of the deployment structure.[19][14]
The artifact symbol represents a concrete, physical piece of information or software entity, such as a file, executable, or document, that is produced during development and deployed onto nodes. It is notated as a rectangle with the keyword <<artifact>> placed in the top-right corner, frequently accompanied by a visual icon like a document or file symbol, or a folded top-right corner to evoke a physical page. The artifact's name appears in the main body compartment, with optional lower compartments for properties, manifest associations, or detailed body content, emphasizing its deployable nature.[19][20]
In UML 2.x, node and artifact boundaries are delineated using solid lines to clearly define their enclosures, while dashed lines may represent optional extensions or manifestation relationships between artifacts and nodes, such as indicating how an artifact is deployed without fully enclosing it. These symbols form the static foundation of deployment diagrams, with relationships briefly connecting them to illustrate deployment flows.[19]