PlantUML – Dibuja diagramas UML de forma sencilla

1
10796

En este tutorial aprenderemos qué es PlantUML y cómo se puede utilizar. Detallaremos mediante ejemplos los tipos de diagramas que se pueden hacer con esta herramienta.

Índice de contenidos

1. Introducción

PlantUML es una herramienta de dibujo de diagramas. Soporta varios de los diagramas más usados. Entre ellos destacan:

  • Diagramas de Secuencia
  • Diagramas de Clases
  • Diagramas de Estados
  • Diagramas de Actividad

Una de sus ventajas es que se puede integrar con una gran cantidad de aplicaciones. Nosotros lo hemos probado con Atom, en el que dispone de un paquete que traduce al vuelo el código que se va escribiendo (https://atom.io/packages/plantuml-viewer), de forma que dibuja en el momento en el que escribes. También se puede integrar en IDEs, como eclipse, en los que por medio de anotaciones se pueden acompañar diagramas dentro de una clase java.

Otra de sus ventajas es la simplicidad e intuitividad de su sintaxis, por ejemplo, para hacer una flecha en un diagrama de secuencia se usa “->”; si se necesita una flecha discontinua se usaría “–>»; una relación de herencia en un diagrama de clases “<|--”.

Es importante recordar que es una herramienta de dibujo. Esto quiere decir que es posible dibujar diagramas inconsistentes si no se tiene algo de cuidado.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: 2 Ghz Intel Core I7, 8GB DDR3
  • Sistema Operativo: OS X El Capitan
  • Entorno de desarrollo: Atom
  • Entorno de desarrollo: Eclipse Mars

3. Instalación

Para el correcto funcionamiento de PlantUML deberemos tener instalado software adicional: Graphviz. Es necesario para poder generar la mayoría de los diagramas.

Finalmente, descargamos el jar correspondiente a PlantUML para ponernos manos a la obra.

4. Diagramas de secuencia

Comencemos, pues, a dibujar. Lo principal es empezar cada uno de nuestros diagramas con @startuml y terminarlos con @enduml. Veremos mediante ejemplos qué cosas se pueden hacer con esta herramienta, desde algo sencillo a algo más complejo. La complejidad y el tamaño de los diagramas puede ser atroz. Por si os queréis hacer una idea, en la documentación se habla de un problema de memoria para diagramas de mas de 20000 x 10000px, pudiéndose arreglar aumentando la memoria que usa la JVM. Nosotros no vamos a llegar a tanto, empezamos con un diagrama sencillo tal que así:

Que genera el siguiente diagrama:

Diagrama1

También podemos declarar distintos participantes en el diagrama, como un actor (el monigote de los diagramas) o una base de datos, entre otros. Incluso añadir notas, o cambiar la apariencia de todo. Completando el ejemplo anterior… (lo siento Jesús, te he convertido en baseDeDatos)

Diagrama2

Como podemos ver, las posibilidades se hacen enormes según descubrimos nuevos elementos que añadir en nuestros diagramas, así como formas de combinarlos. En el siguiente código podemos ver una muestra de las posibilidades:

Diagrama3

Con esto terminamos con los diagramas de secuencia, podemos hacernos una idea de las posibilidades.

5. Diagramas de clases

Lo siguientes diagramas que tenemos en la lista son los diagramas de clases, vamos a analizarlos. A continuación exponemos las principales operaciones entre clases: Herencia, composición y agregación.

Diagrama4

Como hemos hecho antes, ahora completamos el diagrama con más elementos para demostrar la potencia: nombres a las relaciones, métodos, etc.

Diagrama5

Tenemos muchas más opciones para relacionar clases entre sí, más ejemplos:

Diagrama6

Para acabar con este tipo de diagramas, vamos a hablar de la visibilidad de métodos y atributos, así como la posibilidad de trabajar con interfaces o clases abstractas, dejando muchas cosas en el tintero para que podáis investigar (y no os de tanta pereza leer un artículo tan largo).

Diagrama7

6. Diagramas de estados

Seguimos con los diagramas de estados de toda la vida, que simbolizan un esquema de transiciones entre diversos estados.

Diagrama8

Se pueden tener además estados compuestos. Completando el ejemplo anterior con un estado compuesto nos quedaría algo como lo siguiente:

Diagrama9

A grandes rasgos es todo para este tipo de diagramas. Señalar que las flechas de transiciones entre estados se adaptan bastante bien a los elementos con los que puedan colisionar.

7. Diagramas de actividad

Para ilustrar este tipo de diagramas os mostraré un ejemplo de la documentación de PlantUML que muestra la actividad de un servlet container haciendo uso de la mayoría de opciones que podemos usar en este tipo de diagramas. Se puede observar que el código es bastante legible, en consonancia con lo visto en apartados anteriores. Además, se puede comprobar que aunque los diagramas crezcan en tamaño, siguen dibujandose de forma que nada se «pisa».

Diagrama10

8. Otros diagramas

Finalizaremos aquí el repaso más detallado a los distintos diagramas que se pueden crear, puesto que ya os podéis hacer una idea de la potencia de esta herramienta. Sin embargo, vale la pena mencionar algunos de los diagramas que nos dejamos por el camino, junto con una imagen creada con PlantUML:

  • Diagrama de casos de uso
  • Diagrama11

  • Diagrama de componentes
  • Diagrama12

  • Diagrama de despliegue
  • Diagrama13

9. Otros diagramas

Como hemos introducido al principio, PlantUML se puede integrar con multitud de IDEs y editores de texto: Eclipse, Netbeans, Intellij, Atom, Sublime, Emacs, etc.

Nosotros lo hemos probado con Atom, en el que dispone de un paquete que traduce al vuelo el código que se va escribiendo (plantuml-viewer), de forma que dibuja en el momento en el que escribes. Se instala desde el gestor de paquetes de Atom (la pestaña de Install en las opciones).

Captura de pantalla atom

Como vemos arriba, buscamos plantuml e instalamos 2 paquetes. Primero plantuml-viewer para la traducción al vuelo de nuestro código así como la posibilidad de guardar el diagrama generado. Por último language-plantuml para que Atom reconozca la sintaxis de PlantUML.

Una vez hecho todo esto, ya se puede trabajar con él:

Captura de pantalla atom paquetes

También se puede integrar en IDEs, como eclipse. Para instalarlo en eclipse se necesita instalar mediante la opción Install New Software, según se indica en la web de PlantUML.

Por medio de anotaciones se pueden crear diagramas dentro de una clase java de la misma forma que hemos creado con anterioridad.

Captura de pantalla eclipse anotaciones

Sin embargo, lo más interesante de este plugin es que también crea de forma automática diagramas del contexto en el que te encuentres, por ejemplo, creando una clase que hereda de otra con sus métodos y sus atributos:

Captura de pantalla eclipse automático

10. Conclusiones

Como hemos podido comprobar, nos encontramos ante una forma muy potente de dibujar diagramas, que se puede integrar con muchas de las herramientas de edición más utlizadas. Además, la traducción al vuelo es una feature muy interesante, el permitir ver instantáneamente reflejados los cambios en el código se agradece enormemente. Os animo a probarlo y comentar la entrada con vuestras conclusiones.

11. Referencias

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here