2010-06-04 9 views

Répondre

2

Juste mes 2 cents.

Case tools comme Enterprise Architect comme Enterprise Architect peut générer des diagrammes de classes à partir du code python, mais dans le but de comprendre, je préfère modéliser grossièrement les classes et les relations à la main. J'utilise aussi UML quand je veux comprendre le nouveau code, obtenir un aperçu grossier des collaborations entre les classes, et obtenir une vue des héritages d'héritage.

La plupart des EDI ont les moyens d'explorer le code, mais je trouve que les petits diagrammes UML cohésifs sont plus faciles à digérer et à mémoriser.

Je trouve également des modèles de domaine plus faciles à comprendre lorsque sur un diagramme de classes.

1

Si vous cherchez IDEs qui ont cette fonction, puis:

  1. Komodo
  2. Pydev for eclipse
+1

Faites-vous référence à l'analyse de code Pydev? Cela ne me semble pas graphique –

1

gaphor a une fonctionnalité pour importer le module python et générer des diagrammes de classe uml, de toute façon ce n'est pas si bon. Quoi qu'il en soit, les outils d'analyse de code sur python ne fonctionnent pas très bien puisque personne ne peut "prédire" quels arguments seront passés (ou renvoyés) par des fonctions et ainsi de suite. La plupart d'entre eux "devinent" le type passé.

Espérant que python 3 avec la "annotation de fonction" peut résoudre ce genre de "problème"

1

Grande question! En fonction de la façon dont vous êtes sur le terrain, vous pouvez envisager d'utiliser le module de trace lors d'une exécution de votre code.

python -m trace -T yourprogram.py 

Vous donnera des informations sur qui-appelé-qui. Vous pouvez soit analyser cela, ou écrire du code qui utilise la trace par programmation pour extraire votre graphique d'appel.

Une fois cela fait, un peu de dot piratage, et vous avez un diagramme. Une fois que vous avez fait cela, cela ferait un blog cool sur ce que vous avez fait et comment cela a fonctionné.

0

Si c'est Django, vous pouvez également faire

./manage.py graph_models 

si vous utilisez Django Extensions de commandes