20 años después de su creación, UML sigue siendo el lenguaje de modelado por excelencia. Hoy en día existen ya cientos de herramientas UML, es decir entornos de modelado que permitan dibujar diagramas siguiendo la notación UML (si aún no sabes UML empieza por estas guías rápidas o estos libros introductorios). Es, por lo tanto, imposible compararlas todas. En lugar de eso, os haré una selección de las mejores herramientas UML (siempre según mi humilde opinión) en varias categorías.

Antes de empezar, un consejo para seleccionar tu futura herramienta de modelado UML: piensa muy bien cómo vas a usar UML en tu proceso de desarrollo. No hay ninguna herramienta que sirva para todo. La qué sea buena en generación de código a lo mejor no permite el modelado colaborativo o es demasiado estricta para dibujar modelos informales en etapas iniciales del desarrollo. Define primero lo que es importante para ti en una herramienta y sólo después fíjate en las otras cualidades.

No hay una herramienta UML que sirva para todo. Piensa bien para que la quieres (¿documentación?, ¿generación de código?, ¿diseño inicial?...) y luego busca una herramienta que sea buena en eso Click To Tweet

Una vez dado este aviso, pasemos pues a repasar algunas de las mejores herramientas UML que conozco.

El top 5 de herramientas UML

Estas son las cinco herramientas UML que probaría en primer lugar (sin ningún orden in particular).

  • MagicDraw: Me encanta su usabilidad. Pero aún me gusta más su motor de ejecución de modelos UML. NoMagic (la empresa detrás MagicDraw) ha sido comprada por Dassault Systems. Es de prever que, como consecuencia, MagicDraw siga mejorando en todo lo que se refiere a la ingeniería de sistemas donde este tipo de simulaciones a partir de modelos es clave.
  • Papyrus UML. El entorno de modelado estándar “de facto” en Eclipse. Gratuito y open source, Papyrus es sin duda la mejor opción si trabajas con Eclipse o necesitas integrar tus modelos con otros plug-ins de Eclipse como parte de tu proceso de desarrollo. Te acepto que Papyrus no es la herramienta más intuitiva ni fácil de usar pero se está esforzando para revertir la situación. Por ejemplo, recientemente ha sacado versiones especializadas para escenarios de uso concretos (e.g. Papyrus for Information Modeling o Papyrus for real-time).
  • Modelio. Herramienta muy potente, organizada en un núcleo open source al que se le pueden añadir funcionalidades mediante un sistema de extensión modular. Algunos de los modelos son también gratuitos pero muchos son ya extensiones comerciales, disponibles en la modelio store. Esta estructuración te permite adaptar la herramienta a tus necesidades de modelado UML. Por ejemplo, puedes empezar modelando gratis tu sistema y si luego decides utilizar esos modelos para generar código para la plataforma que sea, comprar la extensión correspondiente.
  • ArgoUML. Ok, ahora pensaréis que me he vuelto loco. ¿Qué hace ArgoUML aquí si es una m… de herramienta?  Cierto, hoy en día, hay pocas herramientas más feas que ArgoUML y hace muchos años que no se actualiza. Pero ArgoUML gana en la categoría “mejor herramienta por razones sentimentales”.  Fue la primera herramienta que usé y era de lo mejorcito (y además en software libre) de lo que había en esos momentos. Creo que se merece que la recordemos aunque sólo sea por eso.
  • StarUML: Si Grady Booch mismo habla bien de ella, tenía que poner StarUML en la lista. StarUML es la mejor opción si buscas una herramienta rápida, fácil de usar y razonablemente barata en comparación a otras herramientas UML.

Ah, y si no fuera tan sentimental (como decía antes, la única razón para meter ArgoUML en la lista), Enterprise Architect estaría en el top 5. Una gran herramienta centrada sobre todo en el modelado de aspectos de negocio / estratégicos.

Textual UML tools

Siempre hablamos de “dibujar” modelos UML. Pero los modelos UML también se pueden describir con palabras. Sí, ya sé que “una imagen vale más que mil palabras” pero hay ocasiones en que escribir un modelo es mucho más rápido que dibujarlo (pienso mayormente en modelos de comportamiento detallados) y /o queremos usar herramientas que sólo entienden texto (ej. más fácil versionar un modelo UML como texto que como imagen, si no tenemos a mano una herramienta de control de versiones par modelos).

Las herramientas para el modelado UML textual soportan los diagramas UML típicos. Y lo mejor es que son capaces de generar automáticamente la representación gráfica del modelo UML correspondiente. Esta representación gráfica no editable (para eso ya tienes la descripción textual) pero es un buen compromiso entre la flexibilidad del texto y la comprensión global de la representación gráfica.

¿Te animas a probar alguna herramienta UML textual? Aquí las tenemos todas.

Herramientas para Executable UML

Executable UML (leed acerca de los nuevos estándares de UML ejecutable fuml and Alf) busca especificar los modelos UML con un nivel de detalle (sobre todo a nivel de comportamiento) que sea suficientemente preciso como para permitir su ejecución automática. En su forma más pura, Executable UML elimina la necesidad de programar.

Aunque siguen siendo minoría, empieza a haber algunas herramientas que siguen los principios del UML ejecutable. Éstas son todas las herramientas para ejecutar modelos UML de las que tenemos constancia.

Herramientas web para UML

El modelado online de UML es sin duda el sector de herramientas que más crece. Tampoco debería sorprendernos, estamos viendo la misma tendencia en todas partes (ej. entornos de programación en la nube).

Para manteneros al día de las mejores herramientas UML en la nube, tenemos una página dedicada a las top herramientas online para UML (que repasa también herramientas para el modelado de diagramas ER y BPMN)

UML en Eclipse

Los fans de Eclipse tenéis Papyrus (ya mencionada anteriormente) para definir modelos UML, SysML,… . Pero no es la única. Mención especial a UML designer , hecha con Sirius (un entorno para crear tus propias herramientas de modelado) .

Puedes encontrar otras  herramientas UML2 compatibles con Eclipse (ten en cuenta que lista está desactualizada).

Herramientas UML gratuitas y/o de software libre

Si éste es tu criterio de búsqueda más importante, estás de suerte, muchas de las herramientas comentadas hasta ahora son gratuitas o tienen como mínimo un plan UML gratuito.

Y si aún quieres alguna sugerencia adicional, aquí tienes una más: prueba UMLet.

De UML a Python ( y de Python a UML)

¿Hay herramientas UML especialmente útiles si programas con Python? Pues sí y no. Digamos que había muchas pero que la mayoría hoy ya han quedado huérfanas. Algunas por suerte siguen siendo “usables”

  • PyUML es un plugin de Eclipse que da soporte a transformaciones UMLaPython y PythonaUML. Eso sí, solo para la parte estructural (diagramas de clases). Última release en 2009
  • Epydoc : Generación de documentación via modelos UML a partir de código python (última release en 2008)
  • PyNSource : Ingeniería inversa de código python a UML. Los diagarmas de clase UML generados pueden también mostrarse como ASCII Art. La última versión fue el 2012.
  • Lumpy . Módulo Python para generar diagramas de objeto y clases UML a partir de un programa Python en ejecución. Funciona como si fuera un debugger gráfico ya que visualiza el estado del programa en ejecución pero lo hace a un nivel de abstracción más alto que los debuggers normales.
  • GraphModels (django-command-extensions) crea una visualizacion “estilo UML” con GraphViz para la aplicación django. últma versión de 2009. Pywebuml también utiliza graphviz para crear diagramas de clases UML a partir de código python. Última release en 2012.
  • Pyreverse es parte de Pylint  (un analizador de código estático para Python). Analiza el código Python y extrae diagramas de clases UML y dependencias entre paquetes
  • uml-to-django genera el modelo de datos Django y interfaz de administrador a partir del diagrama de clases UML. Parecido a UMLtoDjango (los dos desactualizados pero este último un poco más “joven”).

Tampoco hay que perder la esperanza. Aparte de estas herramientas específicas, hay otros entornos UML más completos que ofrecen también algún tipo de soporte a Python como parte de su amplio rango de funcionalidades. A destacar, Enterprise Architect (importación y exportación a partir de Python), Visual Paradigm (generación de código python ) o GenMyModel (viene con una plantilla para ejecutar transformaciones modelo-a-texto para Python).