Un collègue cherche à générer des diagrammes de classes UML à partir de tas de code source Python. Il s'intéresse principalement aux relations d'héritage, et modérément aux relations de composition, et se moque bien des attributs de classe qui ne sont que des primitives Python.
Le code source est assez simple et n'est pas terriblement mauvais - il ne fait pas de magie de métaclasse sophistiquée, par exemple. (C'est principalement du temps de Python 1.5.2, avec quelques éclaboussures de trucs "modernes" 2.3ish.)
Quelle est la meilleure solution existante à recommander?
Epydoc est un outil permettant de générer une documentation API à partir du code source Python. Il génère également des diagrammes de classes UML, en utilisant Graphviz de manière très élégante. Voici n exemple de diagramme généré à partir du code source d’Epydoc lui-même.
Etant donné que Epydoc effectue à la fois l’introspection des objets et l’analyse de source, il peut collecter davantage d’informations sur les analyseurs de code statiques tels que Doxygen: il peut inspecter une bonne quantité de classes et de fonctions générées dynamiquement, mais peut également utiliser des commentaires ou des chaînes non attribuées comme source de documentation, par exemple. pour les variables et les attributs publics de classe.
Vérifiez cette liste de sept outils uml pour python
Certaines classes de programmes bien conçus peuvent être schématisées, mais dans le cas général, cela ne peut pas être fait. Les objets Python peuvent être étendus au moment de l'exécution et les objets de tout type peuvent être affectés à toute variable d'instance. Déterminer à quelles classes un objet peut contenir des pointeurs (composition) nécessiterait une compréhension complète du comportement du programme à l'exécution.
Les capacités de métaclasse de Python signifient que le raisonnement sur la structure d'héritage nécessite également une compréhension complète du comportement du programme à l'exécution.
Pour prouver que cela est impossible, vous soutenez que si un tel diagrammeur UML existait, vous pourriez alors prendre un programme arbitraire, convertir les instructions "halt" en instructions qui auraient une incidence sur le diagramme UML et utiliser le diagrammeur UML pour résoudre le problème d'arrêt, ce qui, comme nous le savons, est impossible.
Il convient de mentionner Gaphor . Un outil de modélisation/UML Python.
Si vous utilisez Eclipse, peut-être PyUML . Je ne l'ai pas utilisé, cependant.
vipera est un petit concepteur d’applications, et l’umml est inclus. Vous pouvez le voir dans:
Meilleures salutations.
Umbrello le fait aussi. Dans le menu, sélectionnez Code -> Importer un projet, puis pointez sur le répertoire racine de votre projet. alors il inverse le code pour toi ...
Le SPE IDE a un créateur UML intégré. Ouvrez simplement les fichiers dans SPE et cliquez sur l'onglet UML.
Je ne sais pas à quel point c'est compréhensif pour vos besoins, mais cela ne nécessite aucun téléchargement ni configuration supplémentaire à utiliser.
Sparx Enterprise Architect effectue un aller-retour de la source Python. Ils ont une édition d'essai gratuite limitée dans le temps.