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

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

ObjectAid UML Explorer

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

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

Y produce bastante buenos diagtwigs UML:

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 las bibliotecas son el modelo que se muestra, no se modifican por ingeniería inversa en un formato diferente.
  • Si actualiza su código en Eclipse, su diagtwig también se actualiza; no hay necesidad de aplicar ingeniería inversa al código fuente.
  • Refactoring actualiza su diagtwig así como su código fuente. Cuando cambia el nombre de un campo o mueve una clase, su diagtwig simplemente refleja los cambios sin perder la sincronización.
  • Todos los diagtwigs en su área de trabajo de Eclipse se actualizan con cambios de refactorización según corresponda. Si es necesario, se eliminan de su sistema de control de versiones.
  • Los diagtwigs están completamente integrados en el Eclipse IDE. Puede arrastrar clases de Java desde cualquier otra vista al diagtwig, y ​​la información relacionada con el diagtwig se muestra en otras vistas donde corresponda.

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 diagtwigs UML y una instalación fácil, ObjectAid es genial y no requiere ningún complemento. ¡Simplemente lo instalé 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 hacer algunos modelos y también a obtener algunas respuestas a la publicación, decidí instalar Papiro nuevamente y volveré a investigar otras posibles soluciones de modelado UML. 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 el papiro tuviera una forma directa de revertir las clases de ingeniero en el diagtwig de clases UML. Sería genial si la ingeniería inversa tuviera una función de sincronización, pero desafortunadamente el proyecto papiro está lleno de características y creo que los desarrolladores ya tienen mucho a mano ya que también muchos las acciones que haces sobre el papiro podrían no darte ninguna respuesta y simplemente no pasa nada, pero eso está fuera del scope 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, escriba Papyrus
  5. Después de la instalación, reinicie Eclipse
  6. Repita los pasos 1-3 y esta vez, instale Modisco

Pasos

  1. En su proyecto de Java (supongamos que se llama MyProject), cree una carpeta, por ejemplo UML
  2. Haga clic con el botón derecho sobre el nombre del proyecto -> Descubrimiento -> Discoverer -> Descubrir Java y el modelo de inventario del proyecto Java, se generará un archivo llamado MyProject_kdm.xmi. enter image description here
  3. Haga clic con el botón 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 con el botón secundario en MyProject_kdm.xmi -> Discovery -> Discoverer -> Descubra el modelo UML desde el código KDM. De nuevo obtendrá un diálogo de propiedades. Establezca el valor de serialización en TRUE para generar un archivo llamado MyProject.uml. enter image description here

  6. Mueva MyProject.uml generado que se generó en la raíz, en 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 enter image description here

  9. En la vista, haga clic con el botón derecho en el modelo raíz -> Nuevo diagtwig enter image description here

  10. Luego comience a tomar clases del diagtwig desde la vista

Algunas caracteristicas

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

  • Puede tener configuraciones de color amigables predeterminadas desde Ventana -> preferencias -> papiro -> diagtwig de clases

  • una configuración muy importante es Organizar cuando sueltas las clases, hacen clic derecho sobre cualquier espacio vacío en un diagtwig de clases y haces clic en Organizar todo

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

  • Después de todo eso, tu configuración mostrará diagtwigs como enter image description here

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

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

Descargo de responsabilidad: No tengo ninguna relación con la gente de papiro, de hecho, al principio no me gustaba el papiro hasta que hice muchas investigaciones y lo experimenté con algo de paciencia. Y volveré a esta publicación cuando pruebe otras herramientas gratuitas.

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

texto alternativo http://www.soyatec.com/euml2/images/product_euml2_110x80.png

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

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

  • Ingeniería invertida avanzada

  • Potente herramienta de análisis de dependencia verdadera
  • Perfil UML y MDD
  • Herramientas de base
  • Soporte de plantilla personalizable

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

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

Si está interesado en diagtwigs de secuencia de ingeniería inversa a partir del código fuente, le recomendaría jTracert .

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

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

Desarrollé un complemento maven que puede ejecutarse desde CLI como un objective de complemento, o importar como dependencia y utilizar programáticamente el analizador, @see Main#main() para obtener una idea de cómo hacerlo.

Muestra el código src de PlantUML de los paquetes deseados de manera recursiva y puede editarlo manualmente si es necesario (con suerte no lo hará). Luego, al pegar el código en la página plantUML, o al descargar el jar de la planta, puede representar el diagtwig UML como una imagen png.

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

Ejemplo de diagtwig de salida: enter image description here

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

Es importante tener en cuenta que no está limitado a tus archivos * .java, sino que también puede renderizar diagtwigs UML src desde tus dependencias maven. Esto es muy útil para entender las bibliotecas de las que usted depende. En realidad, inspecciona las clases comstackdas con reflexión, por lo que no se necesita ninguna fuente

Sé el primero en protagonizarlo en GitHub: P

Encontré el complemento Green muy fácil de usar y para generar un diagtwig de clase a partir del código fuente. Darle una oportunidad :). Simplemente copie el complemento a su directorio de complemento.

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

Probé varios modeladores UML para eclipse y no estaba satisfecho con ellos. Eran inestables, complicados o simplemente feos. 😉

Usando IntelliJ IDEA. Para generar el paquete de selección de diagtwig de clase y presionar Ctrl + Alt + U : enter image description here

De forma predeterminada, muestra solo nombres de clase y no todas las dependencias. Para cambiarlo: haga clic derecho -> Mostrar categorías … y Mostrar dependencias: enter image description here

Para genarar el diagtwig de dependencias (diagtwig de implementación UML) y usar maven, vaya a Ver -> Herramienta Windows -> Proyectos Maven y presione Ctrl + Alt + U : enter image description here

El resultado: enter image description here

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

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 comstackció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

Demostración en vivo en flash: 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 tags de modelo en el código que es realmente muy muy malo y definitivamente no va para mí.

Algo muy similar ha sido preguntado antes .

Con mucho, la mejor herramienta que he utilizado para la ingeniería inversa, y el disparo circular java -> UML es Borland’s Together . Se basa en Eclipse (no solo un plugin) y realmente funciona bien.

http://www.zenuml.com no genera diagtwigs UML directamente desde el código Java, pero su DSL es similar a Java. Por cierto, creé zenuml 🙂 enter image description here

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

Puedes instalar el plugin PlantUML en netbeans por este método:

Menú de Netbeans -> Herramientas -> Complemento

Ahora seleccione Complementos disponibles y luego encuentre PlantUML e instálelo.

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