¿Cómo generar diagramas UML (especialmente diagramas de secuencia) a partir de código Java?

434

¿Cómo puedo generar diagramas UML (especialmente diagramas de secuencia) a partir de código Java existente?

Jonathan
fuente
3
Es poco probable que eso suceda. El código Java real no está estructurado para verse bonito como los diagramas UML.
Stephan Eggermont
1
Tantas respuestas que no abordan diagramas de secuencia. Hmph
Bill K
@BillK mi respuesta aborda diagramas de secuencia. Es un complemento de Intellij Idea - stackoverflow.com/a/45239269/529187 .
Xiao Peng - ZenUML.com
1
Esta pregunta es más apropiada para el intercambio de pila de recomendaciones de software del sitio hermano .
Basil Bourque

Respuestas:

257

ObjectAid UML Explorer

Es lo que usé. Se instala fácilmente desde el repositorio:

Name:     ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current

Y produce diagramas UML bastante bonitos:

Captura de pantalla

Descripción del sitio web:

El ObjectAid UML Explorer es diferente de otras herramientas UML. Utiliza la notación UML para mostrar una representación gráfica del código existente que es tan precisa y actualizada como su editor de texto, a la vez que es muy fácil de usar. Varias características únicas lo hacen posible:

  • Su código fuente y sus bibliotecas son el modelo que se muestra, no están diseñados en un formato diferente.
  • Si actualiza su código en Eclipse, su diagrama también se actualiza; no es necesario realizar ingeniería inversa del código fuente.
  • La refactorización actualiza su diagrama y su código fuente. Cuando cambia el nombre de un campo o mueve una clase, su diagrama simplemente refleja los cambios sin perder la sincronización.
  • Todos los diagramas en su espacio de trabajo de Eclipse se actualizan con cambios de refactorización según corresponda. Si es necesario, se sacan de su sistema de control de versiones.
  • Los diagramas están completamente integrados en el IDE de Eclipse. Puede arrastrar las clases de Java desde cualquier otra vista al diagrama, y ​​la información relacionada con el diagrama se muestra en otras vistas cuando corresponda.
Thomas Ahle
fuente
Más fácil que Papyrus, pero con menos opciones para crear diagramas.
lcardosobr
En ObjectAid, ¿hay alguna forma de organizar automáticamente el diagrama de clase?
Reutilizable el
44
Cómo >>> Cree una cuenta aquí: objectaid.com/login (el correo electrónico de activación se envió en 10 minutos), haga clic en Complemento del diagrama, la licencia se enviará a su correo electrónico. Siga este objectaid.com/installation para instalar ObjectAid, luego instale GEF desde download.eclipse.org/tools/gef/updates/releases Ahora copie y pegue la licencia del correo electrónico a Window-> Preferences-> ObjectAid ¿Cómo crear un diagrama? objectaid.com/class-diagram
rluks
No se puede instalar en eclipse juno. An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
Gunaseelan
1
¡La versión comercial de ObjectAid puede funcionar mejor cuando se trata de la generación de diagramas de secuencia frente a la versión gratuita, solo se puede usar para generar diagramas de clase!
whoami
63

EDITAR: si eres diseñador, entonces Papyrus es tu mejor opción, es muy avanzado y está lleno de características, pero si solo quieres esbozar algunos diagramas UML y una instalación fácil, ObjectAid es bastante bueno y no requiere ningún complemento I ¡acaba de instalarlo sobre Eclipse-Java EE y funciona muy bien!


ACTUALIZACIÓN 11 de octubre de 2013

Mi publicación original fue en junio de 2012, muchas cosas han cambiado, muchas herramientas han crecido y otras no. Como voy a volver a modelar y a obtener algunas respuestas a la publicación, decidí instalar papyrus nuevamente e investigaré otras posibles soluciones de modelado UML nuevamente. La generación UML (con función de sincronización) es realmente importante no para el diseñador de software sino para el desarrollador promedio.

Desearía que papyrus tuviera una forma sencilla de revertir las clases de ingeniero en el diagrama de clases UML y sería genial si esa ingeniería inversa tuviera una función de sincronización, pero desafortunadamente el proyecto papyrus está lleno de características y creo que los desarrolladores ya tienen mucho a mano ya que también Es posible que las acciones que realice sobre papiro no le den ninguna respuesta y simplemente no suceda nada, pero eso está fuera del alcance de esta pregunta de todos modos.

La respuesta (11 de octubre de 2013)

Herramientas

  1. Descargar Papyrus
  2. Vaya a Ayuda -> Instalar nuevo software ...
  3. En el menú desplegable Trabajar con: seleccione --Todos los sitios disponibles--
  4. En el filtro, escribe Papiro
  5. Una vez finalizada la instalación, reinicie Eclipse
  6. Repita los pasos 1-3 y esta vez, instale Modisco

Pasos

  1. En su proyecto Java (suponga que se llama MyProject) cree una carpeta, por ejemplo, UML
  2. Haga clic derecho sobre el nombre del proyecto -> Discovery -> Discoverer -> Discover Java y el modelo de inventario del proyecto java, se generará un archivo llamado MyProject_kdm.xmi. ingrese la descripción de la imagen aquí
  3. Haga clic derecho en el archivo de nombre del proyecto -> nuevo -> modelo de papiro -> y llámelo MyProject.
  4. Mueva los tres archivos generados MyProject.di, MyProject.notation, MyProject.uml a la carpeta UML
  5. Haga clic derecho en MyProject_kdm.xmi -> Discovery -> Discoverer -> Descubrir el modelo UML desde el código KDM nuevamente, obtendrá un cuadro de diálogo de propiedad, establezca el accesorio de serialización en TRUE para generar un archivo llamado MyProject.uml ingrese la descripción de la imagen aquí

  6. Mueva MyProject.uml generado que se generó en la raíz, a la carpeta UML, Eclipse le preguntará si desea reemplazarlo, haga clic en sí. Lo que hicimos aquí fue que reemplazamos un modelo vacío por uno generado.

  7. ALT + W -> mostrar vista -> papiro -> explorador de modelos

  8. En esa vista, encontrarás tus clases como en la imagen ingrese la descripción de la imagen aquí

  9. En la vista Haga clic derecho en el modelo raíz -> Nuevo diagrama ingrese la descripción de la imagen aquí

  10. Luego comienza a tomar clases del diagrama desde la vista

Algunas caracteristicas

  • Para mostrar los elementos de la clase (variables, funciones, etc.) Haga clic derecho en cualquier clase -> Filtros -> mostrar / ocultar contenido ¡¡Voila !!

  • Puede tener configuraciones de color amigables predeterminadas desde Ventana -> pereferences -> papyrus -> class diagram

  • una configuración muy importante es Organizar cuando suelta las clases, obtienen un clic derecho apretado en cualquier espacio vacío en un diagrama de clase y hacen clic en Organizar todo

  • Las flechas en la vista del explorador de modelos se pueden agarrar al diagrama para mostrar generalización, realización, etc.

  • Después de todo eso, su configuración mostrará diagramas como ingrese la descripción de la imagen aquí

  • La sincronización no está disponible hasta donde sé que necesitará importar manualmente cualquier clase nueva.

Eso es todo, y no compre productos comerciales a menos que realmente lo necesite, el papiro es realmente genial y sofisticado, en lugar de donar o algo así.

Descargo de responsabilidad: no tengo ninguna relación con la gente de papiro, de hecho, no me gustó el papiro al principio hasta que investigué mucho y lo experimenté con un poco de paciencia. Y volveré a esta publicación nuevamente cuando pruebe otras herramientas gratuitas.

Ismail Marmoush
fuente
Busqué Modisco en eclipse. apareció con 0 intallable. ¿Este proyecto está vivo o quitado? ¿Se convirtió en herramienta de pago? ¿Papyrus no correrá sin esto?
R-JANA
STS usado y sin éxito.
R-JANA
@ R-JANA No sé cuál es el estado actual de Modisco, pero volveré a esta publicación lo antes posible porque estoy a punto de instalar papiro pronto y tendré que actualizarlo. Te aconsejo que pruebes tú mismo instalando papiro, teniendo en cuenta mi publicación actual; Creo que sucedieron muchos cambios desde que publiqué esta respuesta.
Ismail Marmoush
Hay un complemento opcional para Papyrus, que agrega la funcionalidad de ingeniería inversa de Java: wiki.eclipse.org/Java_reverse_engineering . Con esto, es mucho más fácil agregar elementos de diagrama desde la fuente, incluso puede arrastrar clases a un diagrama.
Markus Ende
42

¿Cuál es tu código base? Java o C ++?

texto alternativo

eUML2 para Java es un poderoso modelador UML diseñado para desarrolladores Java en Eclipse. La edición gratuita se puede utilizar para uso comercial. Es compatible con las siguientes características:

  • CVS y soporte de equipo
  • Diseñado para proyectos grandes con vistas de modelos múltiples y personalizables
  • Helios obediente
  • Código en tiempo real / sincronización de modelo
  • Compatible con UML2.1 y compatible con OMG XMI
  • Soporte JDK 1.4 y 1.5
  • La edición comercial proporciona:

  • Ingeniería inversa avanzada

  • Potentes herramientas de análisis de dependencia real
  • Perfil UML y MDD
  • Herramientas de base de datos
  • Soporte de plantillas personalizables
prakash
fuente
20
Esta es una herramienta muy difícil de instalar. Lo intenté durante media hora sin éxito. ¿Cualquier otra sugerencia?
Jonathan
2
No puedo encontrar eUML2 es mi actualización Managaer y no quiero empacar una nueva configuración de Eclipse solo por esta característica. Estoy usando Eclipse "Helios" y voy de esta manera: Ayuda - Instalar nuevo software - Helios download.eclipse.org/releases/helios - Modelado
OneWorld
3
Sé que esta es una publicación antigua, pero la mayoría de los problemas con la instalación de eUML2 parecen haberse resuelto.
Andy
77
eUML es una verdadera basura. Ha cambiado el formato de mi código y ha agregado etiquetas en todas partes. Mi código ahora está tan sucio que prefiero deshacer el cambio. El problema es que no hay deshacer y su código se cambia para siempre. Recomendaría hacer una copia de seguridad de su proyecto antes de usar eUML crapper :-)
UML GURU
31
¿Alguna vez escuchaste sobre el control de versiones?
devorado elysium
9

Soy uno de los autores, por lo que la respuesta puede ser parcial. Es de código abierto (Apache 2.0), pero el complemento no es gratuito. No tiene que pagar (obviamente) si clona y construye localmente.

En Intellij IDEA, ZenUML puede generar diagramas de secuencia a partir de código Java. ingrese la descripción de la imagen aquí

Compruébelo en https://plugins.jetbrains.com/plugin/12437-zenuml-support

Código fuente: https://github.com/ZenUml/jetbrains-zenuml

Xiao Peng - ZenUML.com
fuente
1
@hc_dev, gracias por tu recordatorio. Agregó esa nota.
Xiao Peng - ZenUML.com
7

¿Qué tal PlantUML ? ¡No es para ingeniería inversa! Es para la ingeniería antes de codificar.

Zamel
fuente
44
No responde la pregunta, que claramente pide una herramienta de ingeniería inversa.
jmite
1
No estoy seguro de que sea completamente correcto. PlantUML también puede describir código con diagramas. Intente abrir la vista relevante en un archivo de clase
Erez A. Korn
1
Sí, puedo verificar que los diagramas de clases se creen automáticamente a partir de archivos Java en el complemento Eclipse.
HRJ
1
Intenté esto, pero si tu código PlantUML se vuelve demasiado complejo, pasas todo tu tiempo tratando de descubrir por qué el dibujo no se representa correctamente y tiene fallas técnicas. Es bueno solo para diagramas pequeños.
trusktr
En Intellij, combinamos PlantUML con Sketch It! y graphviz puede generar diagramas de clases a partir del código. Funciona mejor para paquetes pequeños, los png no parecen estar completamente creados cuando los diagramas se vuelven demasiado grandes.
Melissa Loos
6

Desarrollé un complemento de Maven que puede ejecutarse desde la CLI como un objetivo del complemento o importar como dependencia y usar mediante programación el analizador @see Main#main()para tener una idea de cómo.

Se hace que PlantUML código de paquetes deseados src recursiva que se puede editar manualmente si es necesario (esperemos que no). Luego, al pegar el código en la página plantUML, o al descargar el tarro de la planta, puede representar el diagrama UML como una imagen png.

Compruébalo aquí https://github.com/juanmf/Java2PlantUML

Ejemplo de diagrama de salida: ingrese la descripción de la imagen aquí

Cualquier contribución es más que bienvenida. Tiene un conjunto de filtros que personalizan la salida, pero aún no los expuse en los parámetros de la CLI del complemento.

Es importante tener en cuenta que no se limita a sus archivos * .java, también puede representar diagramas UML src de sus dependencias de Maven. Esto es muy útil para comprender las bibliotecas de las que depende. Realmente inspecciona las clases compiladas con reflexión, por lo que no se necesita fuente

Sé el primero en protagonizarlo en GitHub: P

juanmf
fuente
4

Recomendaría EclipseUML de Omondo para uso general, aunque tuve algunos problemas hace unos meses con mis proyectos web. Tenían una edición gratuita en un momento dado, pero supuestamente ya no se promociona.

Si realmente le gustan los diagramas de secuencia de ingeniería inversa del código fuente, recomendaría jTracert .

En lo que respecta a los proyectos de Eclipse, el proyecto Eclipse UML2 Tools podría admitir ingeniería inversa, aunque nunca he visto su uso en la práctica.

El proyecto MoDisco (Model Discovery) Eclipse GMT parece ser más claro para lograr su objetivo. La lista de herramientas específicas de tecnología sería un buen lugar para comenzar.

Vineet Reynolds
fuente
No he encontrado esa característica de ingeniería inversa en UML2 Tools; (
OneWorld
2
jTracert ahora está descontinuado. Como sucesor de jTracert, una nueva herramienta llamada jSonde ahora tiene licencia GPL v3. jsonde.com
Alpine
Omondo es el mejor para Java. Integración realmente limpia, sin mezcla entre modelo y código. Excelente pero demasiado caro. Se nos ha permitido comprar solo una licencia, pero somos más de 20 modeladores que la usan porque la seguridad se basa en el inicio de sesión del nombre de usuario. Significa que si 10 usuarios tienen el mismo inicio de sesión, todos pueden usarlo. Tenemos una licencia con nombre de usuario administrador :-)
UML GURU
El jSondeno está disponible en la URL que se muestra arriba. Puede encontrar un sitio web y el código fuente en Github: github.com/bedrin/jsonde .
Jaime
3

Encontré el complemento verde muy simple de usar y generar un diagrama de clase a partir del código fuente. Darle una oportunidad :). Simplemente copie el complemento a su directorio de complementos.

pcmind
fuente
2
Parece que el verde tiene potencial. Sin embargo, en mi trabajo tenemos un proyecto que tiene ~ 700 clases y falla un poco y luego muere.
Aparece
3

También puedes probar el modelizador UML de netbeans. Lo he usado para generar javacode que usé en mis proyectos de eclipse. Incluso puede importar proyectos de eclipse en netbeans y mantener la configuración del eclipse sincronizada con la configuración del proyecto netbeans.

Probé varios modeladores UML para eclipse y no estuve satisfecho con ellos. Eran inestables, complicados o simplemente feos. ;-)

Patrick Cornelissen
fuente
Solo quería mencionar que también utilicé Netbeans UML modeller y no tropecé con problemas en mis casos relativamente simples. La interfaz de usuario no es demasiado intuitiva, pero está totalmente bien. El modelador también tiene algunas características avanzadas, como la creación de código de entidad JPA fuera del modelo, si no recuerdo mal.
Tuukka Mustonen
1
Lamentablemente, parece que el complemento UML ya no es compatible. Aparentemente, está en curso una reescritura del complemento, pero eso no ayuda a nadie, ya que dejaron el antiguo complemento antes de que se completara la reescritura.
Aparece
Eso es un fastidio :-( Esperemos que la reescritura no tarde demasiado :-)
Patrick Cornelissen
1
El UML para NetBeans estaba siendo realizado por VP. Ya no lo harán, solo su VP UML está disponible ahora, con una versión gratuita débil.
Gangnus
2

Usando IntelliJ IDEA. Para generar el diagrama de clase, seleccione el paquete y presione Ctrl+ Alt+ U:ingrese la descripción de la imagen aquí

Por defecto, muestra solo nombres de clase y no todas las dependencias. Para cambiarlo: haga clic derecho -> Mostrar categorías ... y Mostrar dependencias: ingrese la descripción de la imagen aquí

Para generar el diagrama de dependencias (diagrama de implementación UML) y usar maven, vaya a Ver -> Herramienta Windows -> Proyectos Maven y presione Ctrl+ Alt+ U: ingrese la descripción de la imagen aquí

El resultado: ingrese la descripción de la imagen aquí

También es posible generar más diagramas de otros. Ver documentación .

Igor Rybak
fuente
2

Puede usar la versión de evaluación de 30 días de EclipseUML para Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Esta no es la última versión 3.6, pero es bastante buena y no requiere que lo compre para pruebas e ingeniería inversa.

Ingeniería inversa: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

Demo flash en vivo: http://www.ejb3.org/reverse.swf

EclipseUML Omondo es la mejor herramienta del mundo para Java. Solo eUML parece competir con él en este mercado de sincronización de Java en vivo, pero eUML agrega etiquetas de modelo en el código, lo cual es realmente muy malo y definitivamente no es para mí.

UML GURU
fuente
1

Con mucho, la mejor herramienta que he utilizado para la ingeniería inversa, y el viaje redondo de Java -> UML es Borland's Together . Se basa en Eclipse (no solo un complemento) y realmente funciona bien.

serg10
fuente
Together es ahora Micro Focus Together
Jaime
0

Sugiero PlantUML. Esta herramienta es muy útil y fácil de usar. PlantUML tiene un complemento para Netbeans que puede crear diagramas UML a partir de su código java.

Puede instalar el complemento PlantUML en los netbeans mediante este método:

Menú Netbeans -> Herramientas -> Complemento

Ahora seleccione Plugins disponibles y luego busque PlantUML e instálelo.

Para obtener más información, visite el sitio web: www.plantuml.com

Masood
fuente
0

Me di cuenta de que el complemento SequenceDiagram para Intellij también es una buena opción.

quién soy
fuente
1
Verifique esto para la generación: - quora.com/What-is-the-best-tool-to-generate-UML-diagrams , stackoverflow.com/questions/4449291/… (ingeniería inversa) && para Sketching : - guru99.com/ best-uml-tools.html (Recuerde que no todas las herramientas gratuitas generan diagramas de secuencia, solo pueden admitir diagramas de clase, he usado SequenceDiagram para la generación y draw.io para la creación manual de diagramas UML)
whoami
0

Otra herramienta de modelado para Java es (mi) sitio web GitUML . Genere diagramas UML a partir de código Java o Python almacenado en repositorios GitHub.

Una idea clave con GitUML es abordar uno de los problemas con la "documentación": que los diagramas están siempre desactualizados. Con GitUML, los diagramas se actualizan automáticamente cuando inserta código usando git.

Explore los diagramas UML de la comunidad, hay algunos patrones de diseño de Java allí. Navegue por los repositorios populares de GitHub y visualice las arquitecturas y patrones en ellos.

navegador de diagramas

Cree diagramas usando apuntar y hacer clic. No hay un editor de arrastrar y soltar, solo haga clic en las clases en el árbol de repositorio que desea visualizar:

seleccione las clases de Java que desea visualizar

La tecnología subyacente está basada en PlantUML, lo que significa que puede refinar sus diagramas con un marcado adicional de PlantUML.

abulka
fuente
0

Hay una herramienta gratuita llamada binarydoc que puede generar UML Sequence Diagram, o Control Flow Graph( CFG) a partir del bytecode(en lugar del código fuente) de un método Java.

Aquí hay un diagrama de ejemplo binarydoc generado para el método java java.net.AbstractPlainSocketImpl.getInputStream :

  • Gráfico de flujo de control del método java.net.AbstractPlainSocketImpl.getInputStream:

Gráfico de flujo de control

  • Diagrama de secuencia UML del método java.net.AbstractPlainSocketImpl.getInputStream:

Diagrama de secuencia UML

Contento
fuente