Generador PHP UML [cerrado]

110

¿Cómo genero un diagrama UML basado en clases existentes en PHP?

Jeffrey04
fuente
2
Ya no trabajo con PHP, así que no tengo código para probar. Cuando publiqué esto, ninguna de las respuestas iniciales estaba haciendo lo suficiente, pero muchas cosas han cambiado desde entonces. Estaba trabajando con PHP 5.2 y ahora es PHP7 en estos días.
Jeffrey04

Respuestas:

42

También existe la herramienta PHP UML disponible en pear .

PHP_UML:

  • Puede generar archivos UML / XMI en la versión 1.4 o en la versión 2.1 (vistas lógicas, de componentes y de implementación)
  • Puede generar una documentación de API en formato HTML
  • Puede generar código PHP (esqueleto de código) a partir de un archivo XMI determinado
  • Puede convertir contenido UML / XMI de la versión 1.4 a la versión 2.1

Instálelo en la línea de comando a través de:

$ pear install pear/php_uml

(Esto solía ser, $ pear install pear/php_uml-alphapero el paquete se ha estabilizado desde entonces).

Genera tu xmi:

$ phpuml -o project.xmi

kguest
fuente
2
por alguna razón, a pear.com no le gusta ese enlace sin una barra al final: pear.php.net/package/PHP_UML
Stephen Fuhry
1
@ Stephen, sí, ¡yo también me di cuenta de eso! Si hace clic en el enlace, le da un 404, pero si selecciona la barra de direcciones y presiona enter, funciona.
nickf
1
Unos años después, el comando ahora es pear install PHP_UML-1.6.1(ver pear.php.net/package/PHP_UML/download/All o pear.php.net/package/PHP_UML )
Ben
1
Esta debería ser la respuesta aceptada. La herramienta es espectacular.
Xofo
3
no funciona con php 7
DevWL
41

Recomiendo encarecidamente BOUML que:

  • es extremadamente rápido (la herramienta UML más rápida jamás creada, consulte los puntos de referencia ),
  • tiene soporte de importación y exportación de PHP sólido (también es compatible con C ++, Java, Python)
  • es multiplataforma (Linux, Windows, otros sistemas operativos),
  • tiene todas las funciones, impresionantemente intensamente desarrollado (mire el historial de desarrollo , es difícil creer que un progreso tan rápido sea posible).
  • admite complementos, tiene arquitectura modular (esto permite contribuciones de los usuarios , parece que la comunidad BOUML se está formando)
Daniel Gelling
fuente
Los puntos de referencia se ven realmente impresionantes. Me encanta el arquitecto empresarial, pero no tiene soporte para PHP. Pasaré esta herramienta, gracias.
Paul Dragoonis
1
@ Pablo Dragoonis Sparx Systems Enterprise Architect hace tener soporte para PHP - y no el peor .
hacha.
5
La página web de BOUML ahora dice: "PRECAUCIÓN: Debido a las continuas violaciones de licencia, ataques e insultos de la gente de wikipedia [...], he decidido dejar de trabajar en Bouml excepto para corregir errores".
MPV
1
"[18 de diciembre de 2011] Las descargas están suspendidas hasta nuevo aviso" desde su sitio web oficial. http://bouml.free.fr/download.html : esto se debe a que necesitaba una versión para Win7. Me imagino que todavía puede estar disponible en los repositorios de Ubuntu; es necesario verificarlo
Val Redchenko
4
Versión 6.1 publicada el 23 de septiembre de 2012 . Parece que el desarrollo se ha recuperado nuevamente. Sin aviso sobre desaceleración, parada, etc. bouml.fr/historic.html
Andrew Ensley
24

phUML

phUML es un generador de diagramas de clases UML totalmente automático escrito en PHP, con licencia BSD. Es capaz de analizar cualquier código fuente orientado a objetos PHP5 y crear una representación de imagen apropiada de la estructura oo basada en la especificación UML.

Ejemplo de UML

./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png

Guía paso por paso

Anthony Hatzopoulos
fuente
requiere SVN / subversion para descargar y realmente no dice cuál es la licencia del código fuente, ¡pero se ve bien! yah, tendría cuidado al mirar el código fuente, no hay absolutamente ninguna licencia y el único archivo Léame está en el sitio, creo
La licencia está vinculada allí mismo en la barra lateral del sitio web del proyecto, bajo el autor, Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0
Anthony Hatzopoulos
esa es la licencia para el contenido del sitio, la LICENCIA para el proyecto debe incluirse con el proyecto en sí.
3
Envié un correo electrónico al autor, Jakob, y él respondió con una actualización del repositorio con una licencia bsd
Anthony Hatzopoulos
Descargué esto y lo hice funcionar después de algunos retoques. Fue muy agradable, excepto que no puedo hacer que las asociaciones funcionen, pero estoy seguro de que lo resolveré. Agradable, sencillo. Sin embargo, no tiene GUI, pero no es un gran problema.
Impulso
19

el mejor software (Windows) que he encontrado para hacer PHP y UML es Sparx Systems Enterprise Architect . además de una gran variedad de características , admite las siguientes para PHP:

  • PHP orientado a objetos de ingeniería inversa en diagramas de clases UML
  • Genere definiciones de clases PHP a partir de diagramas de clases UML
  • Sincronice los cambios realizados en una clase UML en la definición de clase PHP correspondiente
  • Sincronice los cambios realizados en una definición de clase PHP en la clase UML correspondiente
  • Cree diagramas de secuencia UML para mostrar qué usan las clases de PHP y cómo se usan
  • Produzca documentación detallada de su código PHP en formato RTF y HTML estándar
  • Realice ingeniería de código en modelos para generar páginas PHP base.

no es gratis ($ 199), pero definitivamente vale la pena el dinero.

hacha.
fuente
1
Vaya, es un programa realmente útil y profesional, ¡gracias por el consejo! Acabo de probar la generación de diagrama de clases UML con el método de ingeniería inversa de Sparx EA a partir del código fuente PHP, y funcionó como un encanto, me sorprendió lo bien que funcionaba. : D A medida que nuestros proyectos crecen cada vez más y creamos más y más objetos, es cada vez más difícil vigilar nuestro propio código, pero es de gran ayuda, ya que genera los diagramas UML de la manera correcta (de Por supuesto, pueden ocurrir excepciones) DESPUÉS de que hayamos terminado el código. Esto incluso ayuda a simplificar las relaciones entre objetos.
Sk8erPeter
@ax: soy un novato y me pierdo un poco en su lista de funciones (en "comparar ediciones"). ¿Cuál sería el nombre de la función que me permite ingresar código PHP (o vincular a archivos PHP) y obtener un diagrama a cambio? Tratando de averiguar qué versión podría necesitar.
JDelage
7

¿Has probado Autodia todavía? La última vez que lo probé no fue perfecto, pero fue lo suficientemente bueno.

Vinko Vrsalovic
fuente
Intenté autodia pero de alguna manera no puedo generar un diagrama de clases preciso (php5)
Jeffrey04
7

También hay php2xmi . Tienes que hacer un poco de trabajo manual, pero genera todas las clases, así que todo lo que tienes que hacer es arrastrarlas a un diagrama de clases en Umbrello .

De lo contrario, generar un diagrama con el uso de reflexión y graphviz es bastante simple. Aquí tengo un fragmento que puede usar como punto de partida.

troelskn
fuente
7

Así es como lo hice (directamente del código al dibujo en PDF sin dibujo manual de nada):

  1. Utilice BOUML para "código PHP de ingeniería inversa" [sic] para extraer el modelo de clase (BOUML está disponible en el repositorio "universo" de Ubuntu). Recomiendo seriamente BOUML para este paso porque es realmente rápido en comparación con muchos otros programas que he probado. Además, parece que BOUML parece extraer el modelo correctamente (para las partes que BOUML incluso intenta extraer).
  2. Utilice BOUML para exportar el modelo como archivo XMI 1.4
  3. Use ArgoUML para importar dicho archivo XMI (puede usar la versión webstart para este paso)
  4. Exportar XMI desde ArgoUML (no sé qué versión / variante de XMI es la salida, pero no es el mismo resultado que la salida de BOUML. El argouml-graphviz no puede manejar el archivo XMI directamente desde BOUML).
  5. Use argouml-graphviz para convertir el archivo XMI exportado de ArgoUML a formato de puntos (es posible que deba usar saxon en lugar de xsltproc para que funcione debido al uso de XSLT2)
  6. Utilice dot o fdp o sfdp para representar el diagrama de clases.

Aquí hay un ejemplo de línea de comando adecuada para usar fdp para generar un diagrama PDF (asumiendo que el archivo de puntos generado por el procesamiento de argouml-graphviz XLST se guarda como xmi-model.dot):

fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \
  -Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \
  -Goverlap=false xmi-model.dot -oxmi-model.pdf

Como alternativa, puede probar PHP_UML o php2xmi en lugar de BOUML para hacer la parte de "ingeniería inversa". Aún no lo he probado.

(Estoy usando la frase "ingeniería inversa" porque parece que la gente de UML está usando esas palabras cuando se refieren a extraer información de clase y método del código fuente . Yo personalmente interpretaría esas palabras como extraer información de un archivo binario ejecutable o capturado sin procesar cable de datos.)

Si prefiere dibujar el diagrama de clases a mano (en lugar de usar una computadora para hacer todo el dibujo), puede usar BOUML o ArgoUML para el dibujo. El uso de datos de "ingeniería inversa" a través de BOUML ayudará en ese caso.

Mikko Rantalainen
fuente
5

Si está buscando generar UML fácilmente a partir de sus clases PHP existentes, es posible que desee considerar PHPStorm 3.0 IDE. Hace un buen trabajo al replicar código existente en UML.

Eche un vistazo a la lista de funciones de PHP Storm .

David Lundquist
fuente
2
No visualiza dependencias, solo herencia.
Basil Musa
1

Puede utilizar Visual Paradigm para UML. Puede que este no sea el producto mejor pagado (cuesta 699 dólares), solo como una opción si alguien quisiera probar. Puede crear un diagrama de clases desde PHP y viceversa, y no solo PHP, hay un montón de lenguajes que puede elegir, como C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl, etc. También hay un prueba que puede comprobar.

Hendra Uzia
fuente
1

En teoría, puede usar PhpStorm para visualizar sus clases usando UML. La generación no es realmente buena, pero puede refactorizar cosas de manera efectiva y, nuevamente, al menos obtener una vista previa de los padres, implementaciones, constantes, atributos, métodos y su visibilidad de una manera agradable.

Situación

Quiero visualizar una comunicación entre componentes ya existentes a un colega.

Procesar usando PHPStorm

https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/

Ventajas

  • Bonita interfaz de usuario, diagrama final.
  • Capaz de refactorizar el código de un diagrama.
  • Capaz de agregar notas.
  • El diagrama de clases simboliza muy bien propiedades, constructores y métodos privados / públicos.

Desventajas

  • Sin soporte para PHP 7.
  • Dolorosamente de usar. No se pueden cambiar el tamaño de los cuadros generados.
  • Al agregar una nueva relación, las anteriores se pierden aleatoriamente: O wtf?
  • Reiniciar PhpStorm destruye los diagramas
  • Cambié de opinión, relaciones imposibles de usar

Resultado

De todos modos, después de una dolorosa hora de trabajo, solo pude generar cajas no relacionadas y tuve que usar un programa adicional para vincular relaciones. Muy mal. Pero creo que una vez que lo hagan funcionar correctamente, será una gran característica porque a medida que cambie el código, los diagramas se actualizarán automáticamente.

Por ahora, no use PhpStorm para diagramas UML.

Lukas Lukac
fuente
Supongo que esto es nuevo (:
Jeffrey04
Correcto. Actualmente me encuentro en la misma situación. Desarrollé una parte compleja de un sistema y quiero visualizarla para mi colega. Probé varias herramientas, pero son malas y feas :) Lo haré con PHPStorm y actualizaré mi respuesta sobre cómo se ve y cuán realmente poderoso es. Hoy les haré saber el resultado @ Jeffrey04
Lukas Lukac
está bien, en realidad no uso PHP durante bastante tiempo
Jeffrey04
0

Bueno, para ser honesto, en primer lugar, no debería generar el modelo UML a partir del código, sino el código del modelo UML;).

Incluso si se encuentra en una situación poco común, cuando necesite hacer esta ingeniería inversa, generalmente se sugiere que lo haga a mano o al menos arregle los diagramas, ya que el UML generado automáticamente tiene una imagen visual realmente pobre (= información) valor la mayor parte del tiempo.

Si solo necesita generar los diagramas, probablemente sea bueno preguntarse por qué exactamente. ¿Quién es el público objetivo y cuál es el objetivo? ¿Qué ofrece el diagrama autogenerado, qué código no?

Básicamente acepto una sola respuesta a esa pregunta. Simplemente se volvió demasiado grande e incomprensible.

Lo cual nuevamente es una razón para comenzar con UML en primer lugar, en lugar de comenzar a codificar;) Se llama análisis y está en declive, porque cada segundo hombre en los negocios piensa que es demasiado caro y no realmente necesario.

trueanalysis.eu
fuente
7
Es cierto, pero la vida es más complicada que algunos principios, que es prudente usar. Es posible que deba comparar el código real con el diagrama UML original, o analizar el código de alguien o algún código, que se implementó sin diagramas UML.
DAH
3
Discrepar. Gran valor obtenido al visualizar una base de código / módulo con un diagrama. El código es como direcciones de calles, pero con demasiadas direcciones a veces uno puede encontrar útil un mapa.
Basil Musa
1
La mayoría de los programas de dibujo UML tienen una interfaz de usuario tan mala que es más rápido escribir el código y generar el diagrama UML automáticamente, incluso si luego tira el código que usó para generar el diagrama ...
Mikko Rantalainen