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.

PlantUML - textual UML tool

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.

nomnoml live editor

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.

UmpleOnline model editor

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:

(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.

Textual notation for ER

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.

Create database models with code

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.

BPMN rendering from textual descriptions of business processes

 

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.

Simple Structurizr example

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: AWSAzureGCPKubernetesAlibaba CloudOracle 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.

Rendering an architecture diagram from a Python description

Simple Diagrams example

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.

Textual modeling API

Choose the textual notation you prefer

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.

 

asciidoctor modeling example

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