pyreverse python uml diagram

pyreverse - ¿Cuál es la mejor manera de generar un diagrama UML a partir del código fuente de Python?



pycharm (10)

Un colega está buscando generar diagramas de clase UML a partir de montones de código fuente de Python. Se interesa principalmente en las relaciones de herencia, y un poco interesado en las relaciones de composición, y no se preocupa mucho por los atributos de clase que son solo primitivos de Python.

El código fuente es bastante sencillo y no tremendamente malo, por ejemplo, no hace ninguna magia de metaclase sofisticada. (En su mayoría es de los días de Python 1.5.2, con algunas salpicaduras de cosas "modernas" 2.3ish.)

¿Cuál es la mejor solución existente para recomendar?


Ciertas clases de programas de buen comportamiento pueden ser diagramables, pero en el caso general, no se puede hacer. Los objetos de Python se pueden extender en tiempo de ejecución, y los objetos de cualquier tipo se pueden asignar a cualquier variable de instancia. Averiguar qué clases puede contener un objeto para apuntar a (composición) requeriría una comprensión completa del comportamiento en tiempo de ejecución del programa.

Las capacidades de metaclase de Python significan que el razonamiento sobre la estructura de herencia también requeriría una comprensión completa del comportamiento en tiempo de ejecución del programa.

Para probar que estos son imposibles, argumenta que si existiera tal diagramador UML, entonces podría tomar un programa arbitrario, convertir las declaraciones de "detención" en declaraciones que podrían afectar el diagrama UML, y utilizar el diagrama UML para resolver el problema de detención. que como sabemos es imposible.



El Arquitecto Empresarial de Sparx realiza un disparo redondo de la fuente de Python. Tienen una edición de prueba gratuita por tiempo limitado.


El IDE de SPE tiene un creador de UML incorporado. Simplemente abra los archivos en SPE y haga clic en la pestaña UML.

No sé qué tan amplio es para sus necesidades, pero no requiere descargas o configuraciones adicionales para usar.


Es posible que hayas oído hablar de Pylint que ayuda a verificar estáticamente el código de Python. Pocas personas saben que viene con una herramienta llamada Pyreverse que dibuja diagramas UML del código python que lee. Pyreverse utiliza graphviz como backend.


Si usas eclipse, tal vez PyUML . Aunque no lo he usado.


Umbrello hace eso también. en el menú, vaya a Código -> importar proyecto y luego apunte al directorio raíz de su proyecto. entonces invierte el código para ti ...


Vale la pena mencionar a Gaphor . Una herramienta de modelado Python / UML.


vipera es un pequeño diseñador de aplicaciones, y uml está incluido. Puedes verlo en:

vipera

Atentamente.


Epydoc es una herramienta para generar documentación de API a partir del código fuente de Python. También genera diagramas de clase UML, utilizando Graphviz de forma elegante. Aquí hay un ejemplo de diagrama generado a partir del código fuente de Epydoc.

Debido a que Epydoc realiza tanto la introspección de objetos como el análisis de fuentes, puede recopilar más información con respecto a los analizadores de código estático como Doxygen: puede inspeccionar una gran cantidad de clases y funciones generadas dinámicamente, pero también puede usar comentarios o cadenas no asignadas como fuente de documentación, por ejemplo Para variables y atributos públicos de clase.