# Diagrama de desplegament

Un diagrama de desplegament (de l'anglès deployment diagram) en el Llenguatge unificat de modelat és un diagrama estructurat que modela l'arquitectura en temps d'execució d'un sistema. Mostra la configuració dels elements hardware (nodes) i com es tracen els elements i artefactes del software en aquests nodes.
Poden descriure l'arquitectura a nivell d'especificació (també anomentat nivell de tipus) o a nivell d'instància (de manera semblant als diagrames de classe i diagrames d'objectes).
Els diagrames de desplegament de nivell d'especificació mostren una visió general del desplegament dels artefactes cap als destins de desplegament, sense fer referència a casos concrets d'artefactes o nodes.
Els diagrames de nivell d'instància mostren el desplegament d'instàncies d'artefactes en instàncies específiques dels destins de desplegament. Es poden utilitzar, per exemple, per mostrar les diferències existents en noms/identificadors en ambients de desplegament de desenvolupament, de "staging" o de producció, entre construccions específiques o servidors de desplegament o dispositius.

## Components
### Node

Un node és un objecte físic en temps d'execució que representa un recurs computacional, generalment amb memòria i capacitat de processament. És un element de hardware o software. Un node pot contenir altres elements, com components o artefactes.

### Instància de node

Una instància es pot distingir d'un node pel fet que el seu nom està subratllat i té dos punts abans del tipus de node base. Pot tenir un nom abans dels dos punts o no.

### Estereotips de node

Són coses o objectes que es repeteixen sense variació que permeten verificar quin tipus de node és el que s'està observant.

### Destí de desplegament

Un destí de desplegament és o bé un dels dispositius de hardware o bé algun entorn d'execució de software i està generalment representat per un node. Per exemple, un servidor que guardi una base de dades.

### Artefactes

És un conjunt de components en el procés de desenvolupament del software, que pot incloure els models de procés (models de cas d'ús, models de disseny, etc.), arxius font, executables, documents de disseny, prototips, manuals d'usuari, etc. Són necessaris per al correcte funcionament de cada destí de desplegament.

### Associació

Una associació representa una ruta de comunicació entre els nodes.

## Informació general
### Representació

La representació dels destins de desplegament es fa mitjançant caixes i els artefactes pertanyents a cada node es representen amb forma de rectangle a dins de les caixes. Els nodes poden tenir subnodes que es posaran dins els seus nodes pare en forma de nidificació. Un sol node pot representar el que en la realitat podrien ser múltiples nodes físics, com podria ser un grup de servidors de bases de dades.
Hi ha dos tipus de nodes:
* Node dispositiu
* Node d'entorn d'execució
Un node dispositiu representa un recurs físic amb capacitat de processar, és a dir amb memòria, processador i altres serveis diversos per tal d'executar algun software. Aquest es dibuixa com un cub en tres dimensions i a dins una etiqueta <<device>> i el nom del dispositiu. Exemples d'un node de dispositiu podrien ser un telèfon intel·ligent o ordinadors. Per altra banda, un node d'entorn d'execució és un node de software que ofereix un entorn d'execució per tipus de components específics i que són desenvolupats en forma d'artefactes executables i que es dedica a gestionar i executar altres elements de software.
Els entorns d'execució implementen un conjunt estàndard de serveis que els components necessiten en temps d'execució. Aquests tipus de nodes es representen com un cub en tres dimensions amb l'etiqueta <<executionEnvironment>>. Tot i això, sovint també es fan servir les etiquetes <<SO>>, <<base de dades>>, <<servidor>>, etc.
En els diagrames de desplegament també tenim canals de comunicació que són associacions entre dos nodes que representen una connexió física entre ells com ara una aplicació i un servidor. Aquests canals de comunicació es representen com a associacions.
Sovint els canals de comunicació representen algun protocol com podria ser TCP/IP o FTP.
Per representar un artefacte que desenvolupa un node en un diagrama de desplegament, es fa servir un recurs anomenat Deployment, que consisteix a unir l'artefacte amb el cub del node mitjançant una fletxa amb ratlles discontínues.

### Usos

Alguns dels usos que se'ls dona als diagrames de desplegament són per modelar:
* Sistemes encastats: un sistema incrustat és una col·lecció de hardware amb una gran quantitat de software que interactua amb el món físic.
* Sistemes client-servidor: els sistemes client-servidor són un extrem de l'espectre dels sistemes distribuïts i requereixen prendre decisions sobre la connectivitat de xarxa dels clients als servidors i sobre la distribució física dels components software del sistema a través de nodes.
* Sistemes completament distribuïts: a l'altre extrem trobem aquells sistemes que són àmpliament o totalment distribuïts i que normalment inclouen diversos nivells de servidors.

### Avantatges

* Mostren un conjunt de nodes i les seves relacions.
* S'utilitzen per descriure la vista de desplegament estàtica d'un sistema.
* Es relacionen amb els diagrames de components, ja que un node normalment inclou un o més components.

### Inconvenients

* La possible falla en la modelització d'un hardware.
* Contenen diverses versions de components software, algun dels quals pot migrar d'un node a un altre. El disseny d'aquests sistemes requereix prendre decisions que permetin un canvi continu de la tecnologia del sistema.

### Antecedents

Els diagrames de desplegament es poden generar a partir dels següents diagrames:
* Diagrama de components: permeten modelar sistemes de software de qualsevol mida i complexitat. Permeten especificar un component com a unitat modular amb interfícies ben definides.
* Diagrama de paquets: constitueixen una eina per mostrar els elements que s'integren en un sistema, aplicació o mòdul. Mostra com el sistema està dividit en agrupacions lògiques i les dependències entre elles.

## Referències

* ↑ «UML: Diagrama de Despliegue» (en castellà).
* ↑ «Diagramas de despliegue UML» (en castellà).
* ↑ «Diagrama de despliegue» (en castellà).