Skip to content

Commit

Permalink
Merge pull request #65 from ucudal/fmachadopiriz/issue27
Browse files Browse the repository at this point in the history
Added deployment diagrams
  • Loading branch information
fmachadopiriz committed Jun 21, 2024
2 parents 814c23b + 9643c2b commit b9dbd7f
Show file tree
Hide file tree
Showing 3 changed files with 203 additions and 2 deletions.
107 changes: 105 additions & 2 deletions 2_Tecnicas_y_herramientas/2_2_1_Diagramas_de_despliegue_UML.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,108 @@

### 2.2.1 Diagramas de despliegue UML

TODO: Completa esta página de diagramas de despliegue en forma análoga a los
demás diagramas
Los diagramas de despliegue UML modelan la arquitectura física de un sistema.
Estos diagramas muestran las relaciones entre los componentes de software y
hardware del sistema, es decir, la disposición física de los nodos en un sistema
distribuido, los artefactos que se almacenan en cada nodo y los componentes y
otros elementos que implementan los artefactos, así como las rutas de
comunicación y las relaciones de implementación entre esos elementos.

Este documento está basado en UML 2.5.1[^1].

Los diagramas de despliegue tienen estos elementos:

* Nodos, que se representan con un rectángulo tridimensional con el estereotipo
`≪node≫`; ese rectángulo contiene el nombre del nodo, que describe la pieza de
hardware que representa. En lugar de estereotipo `≪node≫` es posible usar
estereotipos más específicos como `≪mainframe≫`, `≪pc≫`, `≪database server≫`,
etc.; además se puede usar un ícono para representar visualmente estos
estereotipos.

Los nodos son elementos del modelo que representan los recursos
computacionales en los que se puede desplegar artefactos —la definición de
artefacto está más abajo—. Los nodos pueden contener otros nodos. Hay dos
tipos más específicos de nodo, los ambientes de ejecución y los dispositivos
—que están definidos también más abajo—.

* Instancias de nodos, que representan una ocurrencia real de un nodo. Las
instancias de nodo se basan en nodos existentes. El nombre de la instancia va
delante del nombre del nodo separado por `:` y subrayado.

* Ambientes de ejecución —*execution environment*—, que son un tipo más
específico de nodo, y que se representan como un nodo pero con el estereotipo
`≪executionEnvironment≫`; el nombre del nodo, que describe el ambiente de
ejecución que representa.

Estos ambientes de ejecución modelan un ambiente de ejecución particular, como
un sistema operativo o un sistema de gestión de bases de datos. Los entornos
de ejecución se usan para describir el contexto en el que tiene lugar la
ejecución de un modelo.

Los entornos de ejecución generalmente forman parte de otro nodo que modela el
hardware en el que se ejecuta ese entorno de ejecución. Por ejemplo, un
entorno de ejecución dentro de un servidor puede proporcionar los servicios a
nivel de sistema operativo necesarios para soportar una aplicación de base de
datos instalada en ese entorno.

* Artefactos, que se representan con un rectángulo —no tridimensional— que tiene
el estereotipo `«artefacto»`, el icono del artefacto y el nombre del
artefacto.

Un artefacto representa algún elemento de información que se utiliza o produce
mediante un proceso de desarrollo de software o mediante la operación de un
sistema. Ejemplos de artefactos incluyen archivos de modelos, archivos fuente,
scripts, archivos ejecutables, tablas de bases de datos, entregables de
desarrollo, documentos de procesamiento de textos y mensajes de correo. Los
artefactos se implementan en nodos y se admite la implementación de artefactos
en varios tipos de nodos.

* Instancias de artefactos, que representan una ocurrencia real de un artefacto.
Las instancias de artefactos se basan en artefactos existentes. El nombre de
la instancia va delante del nombre del artefacto separado por `:` y subrayado.

* Dispositivos, que son un tipo más específico de nodo, y que se representan
también como un nodo pero con el estereotipo `≪device≫`; el nombre del nodo
describe el dispositivo que representa.

* Especificaciones de despliegue, que se representan con un rectángulo —no
tridimensional— con el estereotipo `≪deploymentSpec≫`. Modelan archivos de
configuración y sus atributos modelan los parámetros de configuración de los
componentes o artefactos desplegados en un nodo.

* Rutas de comunicación, que son un tipo más específico de asociación entre
nodos en un diagrama de despliegue, que muestra cómo los nodos intercambian
mensajes y señales. Al igual que con las asociaciones, es posible definir la
cantidad de nodos que se pueden conectar en cada extremo. También es posible
utilizar etiquetas para identificar el tipo de protocolo o red que se utiliza
en la comunicación.

* Relaciones de despliegue, que son un tipo más específico de dependencia con el
estereotipo `≪deploy≫`, y no suelen llevar un nombre. Modelan que un nodo
soporta el despliegue de un artefacto.

* Asociaciones y generalizaciones, con la semántica habitual que tienen en los
[diagramas de clases](./2_3_1_Diagramas_de_clases_UML.md).

La figura 1, a continuación, muestra un ejemplo de diagrama de despliegue. El
nodo `Servidor de aplicación` alberga una instancia de `WebSphere` en la que se
ejecuta la `Aplicación web` y la `API conexión DB`. El `Navegador web` en el
dispositivo `Computadora del usuario` se conecta a la `Aplicación web` mediante
una conexión HTTP sobre Internet. La `API conexión DB` se conecta mediante una
conexión nativa con el `Reporte de datos` en el `Servidor de base de datos`. La
`Aplicación web` se conecta con la `lógica de negocios` en `Servidor web`
mediante una conexión SOAP sobre HTTP.

![Ejemplo de diagrama de despliegue](/diagrams/Deployment_Diagram_Example.svg)

*Figura 1: ejemplo de diagrama de despliegue.*

Puedes ver más información sobre diagramas de despliegue en las herramientas de
modelado [IBM Software
Architect](https://www.ibm.com/docs/en/rational-soft-arch/9.7.0?topic=diagrams-creating-deployment),
[Visual
Paradigm](https://www.visual-paradigm.com/learning/handbooks/software-design-handbook/deployment-diagram.jsp)
y [Lucidchart](https://www.lucidchart.com/pages/uml-deployment-diagram).

[^1]: OMG. (2017). OMG® Unified Modeling Language®. Disponible
[aquí](https://www.omg.org/spec/UML/2.5.1/PDF).
97 changes: 97 additions & 0 deletions diagrams/Deployment_Diagram_Example.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<mxfile host="65bd71144e">
<diagram id="u79CN8P1TTN_0yYjMMCz" name="Page-1">
<mxGraphModel dx="640" dy="540" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="6" value="≪device≫&lt;br&gt;Computadora del usuario" style="verticalAlign=top;align=center;shape=cube;size=10;direction=south;fontStyle=0;html=1;boundedLbl=1;spacingLeft=5;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="190" height="140" as="geometry"/>
</mxCell>
<mxCell id="8" value="Navegador web" style="html=1;dropTarget=0;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="1">
<mxGeometry x="60" y="100" width="140" height="60" as="geometry"/>
</mxCell>
<mxCell id="9" value="" style="shape=module;jettyWidth=8;jettyHeight=4;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="8">
<mxGeometry x="1" width="20" height="20" relative="1" as="geometry">
<mxPoint x="-27" y="7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="11" value="≪node≫&lt;br&gt;Servidor web" style="verticalAlign=top;align=center;shape=cube;size=10;direction=south;fontStyle=0;html=1;boundedLbl=1;spacingLeft=5;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="1">
<mxGeometry x="40" y="280" width="190" height="140" as="geometry"/>
</mxCell>
<mxCell id="12" value="Lógica de negocios" style="html=1;dropTarget=0;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="60" y="340" width="140" height="60" as="geometry"/>
</mxCell>
<mxCell id="13" value="" style="shape=module;jettyWidth=8;jettyHeight=4;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="12">
<mxGeometry x="1" width="20" height="20" relative="1" as="geometry">
<mxPoint x="-27" y="7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="14" value="≪node≫&lt;br&gt;Servidor de aplicación" style="verticalAlign=top;align=center;shape=cube;size=10;direction=south;fontStyle=0;html=1;boundedLbl=1;spacingLeft=5;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="1">
<mxGeometry x="350" y="40" width="230" height="280" as="geometry"/>
</mxCell>
<mxCell id="15" value="WebSphere" style="html=1;dropTarget=0;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="370" y="100" width="180" height="200" as="geometry"/>
</mxCell>
<mxCell id="16" value="" style="shape=module;jettyWidth=8;jettyHeight=4;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="15">
<mxGeometry x="1" width="20" height="20" relative="1" as="geometry">
<mxPoint x="-27" y="7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="17" value="&lt;span&gt;Aplicación web&lt;/span&gt;" style="html=1;dropTarget=0;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;fontStyle=0" vertex="1" parent="1">
<mxGeometry x="390" y="140" width="140" height="60" as="geometry"/>
</mxCell>
<mxCell id="18" value="" style="shape=module;jettyWidth=8;jettyHeight=4;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="17">
<mxGeometry x="1" width="20" height="20" relative="1" as="geometry">
<mxPoint x="-27" y="7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="19" value="API conexión DB" style="html=1;dropTarget=0;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;fontStyle=0;align=center;" vertex="1" parent="1">
<mxGeometry x="390" y="215" width="140" height="60" as="geometry"/>
</mxCell>
<mxCell id="20" value="" style="shape=module;jettyWidth=8;jettyHeight=4;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="19">
<mxGeometry x="1" width="20" height="20" relative="1" as="geometry">
<mxPoint x="-27" y="7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="21" value="≪node≫&lt;br&gt;Servidor de base de datos" style="verticalAlign=top;align=center;shape=cube;size=10;direction=south;fontStyle=0;html=1;boundedLbl=1;spacingLeft=5;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="1">
<mxGeometry x="370" y="360" width="190" height="140" as="geometry"/>
</mxCell>
<mxCell id="22" value="Reporte de datos" style="html=1;dropTarget=0;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="1">
<mxGeometry x="390" y="420" width="140" height="60" as="geometry"/>
</mxCell>
<mxCell id="23" value="" style="shape=module;jettyWidth=8;jettyHeight=4;fillColor=none;fontColor=#006EAF;strokeColor=#006EAF;" vertex="1" parent="22">
<mxGeometry x="1" width="20" height="20" relative="1" as="geometry">
<mxPoint x="-27" y="7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="24" value="≪http over internet≫" style="endArrow=open;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;fontColor=#006EAF;fillColor=#1ba1e2;strokeColor=#006EAF;" edge="1" parent="1" source="8" target="17">
<mxGeometry x="-0.0644" y="9" width="160" relative="1" as="geometry">
<mxPoint x="150" y="230" as="sourcePoint"/>
<mxPoint x="310" y="230" as="targetPoint"/>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="25" value="≪soap over http≫" style="endArrow=open;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;fontColor=#006EAF;fillColor=#1ba1e2;strokeColor=#006EAF;" edge="1" parent="1" source="12" target="17">
<mxGeometry x="-0.0644" y="9" width="160" relative="1" as="geometry">
<mxPoint x="210" y="148.4848484848485" as="sourcePoint"/>
<mxPoint x="400" y="171.5151515151515" as="targetPoint"/>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="26" value="≪native connection≫" style="endArrow=open;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;fontColor=#006EAF;fillColor=#1ba1e2;strokeColor=#006EAF;" edge="1" parent="1" source="22" target="19">
<mxGeometry x="-0.0644" y="9" width="160" relative="1" as="geometry">
<mxPoint x="189.5" y="350" as="sourcePoint"/>
<mxPoint x="420.5" y="210" as="targetPoint"/>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="28" value="" style="endArrow=none;startArrow=none;endFill=0;startFill=0;endSize=8;html=1;verticalAlign=bottom;labelBackgroundColor=none;strokeWidth=1;fontColor=#006EAF;fillColor=#1ba1e2;strokeColor=#006EAF;" edge="1" parent="1" source="17" target="19">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="140" y="490" as="sourcePoint"/>
<mxPoint x="300" y="490" as="targetPoint"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Loading

0 comments on commit b9dbd7f

Please sign in to comment.