Una herramienta de modelado textual permite la definición de modelos UML (o ER o BPMN,…) con texto en lugar de tener que dibujarlos. Cada herramienta utiliza su propia notación textual para “escribir” los modelos (aunque la mayoría utiliza lenguajes simples y que recuerdan a notaciones típicas de programación). A partir de ese texto, la herramienta es capaz de crear automáticamente la representación gráfica “tradicional”. Este tipo de herramientas son cada vez más populares y ahora se están dando a conocer con el nombre de herramientas para dibujar diagrams as code (el resaltar la palabra “código” se debe a las mismas razones por las que está tan de moda halbar de herramientas low-code).
El mercado de las herramientas UML textuales es uno de los que más crece . Conjuntamente con las herramientas de modelado en la web, son la opción perfecta para todos aquellos que buscan una solución “ligera” para dibujar modelos . Como además, las herramientas de modelado textuales tienen un editor online, son la opción perfecta para todo diseñador ocasional.
Además, estas herramientas son muy fáciles de usar y se integran bien con el resto de herramientas de desarrollo (como las de control de versiones) gracias a que el modelo se guarda como texto puro. Y, no nos engañemos, muchos programadores se sienten más cómodos con lenguajes textuales que con gráficos. Eso sí, lo que se puede llegar a modelar con texto es limitado. Es por eso que, como decía, estas herramientas UML son especialmente útiles para hacer bocetos o esquemas rápidos (ejemplo para documentación o discusiones de diseño) más que como parte de una actividad de modelado completa.
¿Interesado? Veamos todas las herramienta de tipo “diagrams as code” que conozco. Sólo menciono aquellas que son directamente utilizables para un usuario final, no incluyo librerías JavaScript que puedan utilizarse para construir tu propio editor, para eso mira esta lista con las mejores librerías JavaScript para el dibujo de modelos.
Modelado textual para UML
Comento a continuación las herramientas que más me gustan (en ningún orden en particular). Fíjate que si estás interesado en diagramas de clase, secuencia o casos de uso, no tendrás problemas en encontrar una herramienta que te guste. Para otros tipos de diagramas UML la oferta es mucho más limitada.
PlantUML
PlantUML es sin duda la herramienta más conocida. Hemos hablado de ella en profundidad anteriormente (no te pierdas esta entrevista con el creador de PlantUML) pero así como resumen rápido, PlantUML soporta todos los diagramas UML imporatntes pero su mayor virtud es el ingente ecosistema de extensiones para PlantUML que permiten utilizar PlantUML en una amplísima variedad de escenarios (Word, Google Docs, WordPress, Jekyll, … )
PlantText UML Editor permite utilizar PlantUML en un editor online.
yUML
yUML es un servicio online para la creación de diagramas de clase y casos de uso (máquinas de estado y diagramas de actividades deberían llegar pronto). Como para el caso de PlantUMLL, el modelo generado se puede incrustar fácilmente en blogs, emails, wikis, Word,… .
El servicio se puede llamar directamente desde tu blog o página web incluyendo en la URL de llamada la descripción textual del modelo como parámetro. Previo pago, se puede usar tu propio dominio o incluso instalar el servicio en tu propio servidor. Viene también con integraciones predefinidas con otras herramientas.
Nomnoml
La aplicación web nomnoml incluye un editor textual a la izquierda y una visualización automática del texto en ese editor a la derecha. Se ejecuta completamente en el cliente con lo que los cambios se guardan en el navegador y deberían estar ahí la próxima vez que visites la web. También puedes usar la versión standalone de nomnoml y importar la librería javascript correspondiente para integrar sus funcionalidades en tu propio proyecto. Código fuente disponible en GitHub.
TextUML
TextUML Toolkit es un IDE para UML cuyo objetivo es crear modelos a la misma velocidad que uno escribe código para así mejorar la productividad del modelador. TextUML es compatible con todas las herramientas compatibles con modelos Eclipse UML2 . Hay que destacar que TextUML ofrece todas las funcionalidades que esperas de cualquier IDE (como syntax highlighting). Cualquier herramienta UML de Eclipse se puede usar para después visualizar estos modelos.
UML Graph
UML Graph dibuja automáticamente tanto diagramas de clase como de secuencia. Para los de clase, utiliza una sintaxis basada en Java y complementada con javadoc tags. Al ejecutar UmlGraph on esa especificación se genera un diagrama Graphviz.
En cambio, para los diagramas de secuencia utiliza un método diferente (justamente el uso de utilizar dos mecanismos diferentes sería en mi opinión un punto negativo para la herramienta). Pic macros se utilizan para definir los objetos y invocaciones de métodos. A continuación un programa pic2plot procesa las macros para generar PNGs y otros formatos gráficos. LightUML integraUMLGraph en Eclipse. UMLGraph en GitHub.
Umple
Umple puede usarse como herramienta UML textual aunque su objetivo real es ligeramente diferente: Umple mezcla los conceptos de programación y diseño añadiendo abstracciones de modelado directamente en lenguajes de programación. De momento, Umple soporta Java, PHP y Ruby. Y les añade primitivas de UML como atributos, asociaciones y máquinas de estados. Este post explica Umple con más detalle.
ZenUML
ZenUML es una de las últimas herramientas a aparecer en el mercado. En esta entrevista, el propio autor explica el porqué pensó que ZenUML era necesaria cuando hay ya tantas herramientas. En resumen, su objetivo era hacer que la creación de diagramas de secuencia complejos fuera muy rápida cosa que, en su opinión, no pasa en las otras herramientas que se dedican a cubrir los casos más fáciles.
Chart Mage
Chart Mage facilita la creación de diagramas de flujo y de secuencia. Aquí tienes más detalles, pero sin duda la principal característica de Chart Mage es su opción de “autocomplete” que intenta adivinar lo que vas a escribir a continuación en función del modelo que has escrito anteriormente y las posibilidades de la sintaxis UML.
DotUML
DotUML cubre diagramas de casos de uso, secuencia, estados, clase y despliegue. Se puede usar de forma independiente vía su aplicación web para crear y exportar diagramas. O cómo plug-in integrado en Office, Google Docs o Confluence. DotUML está implementado como una aplicación javascript que se ejecuta localmente en el navegador. No se usan servicios externos de forma que tus datos nunca salen de tu ordeandor. Ésta es una de sus mayores ventajas respecto a otros competidores como PlantUML.
Otras alternativas (sólo para diagramas de secuencia)
Los diagramas de secuencia están entre los más utilizados. Varias herramientas se especializan en el diseño textual de este tipo de diagramas.
WebSequenceDiagrams es un editor para diagramas de secuencia UML. Puedes guardar y exportar el diagrama y elegir entre una variedad de notaciones alternativas para presentar los diagramas como más te interese. La versión de pago te permite instalar y ejecutar el software en tu propio servidor.
SequenceDiagram.org es bastante similar a la anterior tanto en funcionalidad como en estilo y apariencia.
BlockDiag y su familia de subherramientas genera diagramas a partir de archivos de texto siguiendo una sintaxis similar a la del formato DOT de graphviz. Entre los diagramas que es capaz de generar, encontramos los diagramas UML de actividad y de secuencia.
Swimlanes es una herramienta online específica también para diagramas de secuencia. Los diagramas se pueden exportar como un archivo de imagen o puedes usar la URL permanente generada por la herramienta para añadir directamente el diagrama en tus documentos.
Y si sólo quieres crear rápidamente diagramas de flujo, mírate code2flow.
De LaTeX a UML
Los fans “hardcore” de LaTeX también merecen nuestra atención. Algunas maneras para incrustar fácilmente modelos UML en ficheros TeX:
- Latex macros para dibujar UML Sequence diagrams , el nombre lo dice todo
- MetaUML es una librería para la tipografía de diagramas UML para lo que propone una notación textual “amigable”. Hasta la fecha permite diagramas de clase, secuencia, actividad y casos de uso.
- UML Diagrams with TikZ-UML. TikZ-UML es una extensión TikZ para gestionar los tipos de diagramas UML más comunes: class diagrams, use case diagrams, state-machine diagrams y sequence diagrams y generar su visualización correspondiente.
- Nuestro buen amigo PlantUML tiene también una extensión para LaTeX.
(and part of this “geek” category, we could also include this emacs mode for sequence diagrams).
Diseño textual de bases de datos
Hay vida más allá del UML. Por ejemplo, si te gusta más el lenguaje ER (entity-relationship), QuickDatabaseDiagrams permite lo mismo que todas las herramientas anteriores pero generado diagramas ER de bases de datos en lugar de UML.
ERD es otra opción. Toma la descripción textual de un conjunto de entidades, atributos y relaciones y monta el diagrama entidad-relación correspondiente con la ayuda de Dot y GraphViz. ERD se inspira en ERWiz (ahora abandonado).
DBDiagrams.io es una herramienta gratuita para dibujar diagramas entidad-relación escribiendo “código”. Diseñado tanto para desarrolladores como analistas, más de 250K diagramas se han creado hasta la fecha con esta herramienta. Además ofrece la generación de scripts SQL a partir de los diagramas generados o, viceversa, la creación de los diagramas ER a partir de bases de datos existentes.
Modelado textual de workflows
Si necesitas una herramienta para crear rápidamente un diagrama BPMN , BPMN Sketch Miner es tu mejor opción. Exporta el modelo BPMN generado como una imagen o como un fichero que pueda ser importado luego en otras herramientas de modelado de flujos de trabajo más completas.
Modelado textual de arquitecturas software
Modelar la arquitectura del sistema es otra de las tareas importantes en todo proceso de desarrollo. Tenemos también algunas herramientas que nos permiten especificar programando la arquitectura del sistema y luego mostrar el esquema arquitectónico resultante.
Structurizr
Sin duda la más popular, Structurizr DSL te permite crear modelos arquitectónicos conformes al modelo C4 con el lenguaje textual que definen. Una misma definición textual te permite generar diferentes vistas arquitectónicas del sistema. Puedes ver todos los detalles del lenguaje en esta guía de referencia.
Diagrams
Llamada simplemente Diagrams, esta herramienta te ayuda a describir tu despliegues en la nube en Python. Diagrams soporta hasta la fecha los siguientes proveedores: AWS
, Azure
, GCP
, Kubernetes
, Alibaba Cloud
y Oracle Cloud
. Para cada uno incluye una notación y gráficos específicos. Por ejemplo, esta es la lista de nodos de AWS que puedes utilizar.
Herramientas de modelado textual multi-lenguaje
Algunas herramientas ofrecen soporte para una variedad de notaciones y lenguajes de modelado.
Kroki
Más que una alternativa a las anteriores, Kroki las unifica. Proporciona una API genérica que permite enviar un modelo descrito con varias de las notaciones anteriores y generar el diagrama correspondiente. Lo puedes instalar en tu propio servidor o usar el servicio gratuito que ofrece el propio Kroki.
Asciidoctor Diagram
Asciidoctor Diagram es un conjunto de extensiones para Asciidoctor que te permite añadir diagramas (generados como SVG o PNG) a tus documentos. Los diagramas es pueden definir con una amplia variedad de sintaxis diferentes compatibles con muchas de las herramientas anteriores.
Las que ya no están entre nosotros
Este segmento de herramientas UML evoluciona muy rápidamente. Varias de las herramientas que fueron populares hace algunos (pero no tantos) años ya no están o se han abandonado. Las mencionamos aquí para la posteridad SeedUML, EasyUML Editor : Simple DSL for sequence diagrams , Diagrammr, Quick Sequence Diagrams Editor , modsl y hasta un ejemplo de código para Visual Studio