343

同僚が、大量の Python ソース コードから UML クラス図を生成しようとしています。彼は主に継承関係に関心があり、合成関係にはやや関心があり、単なる Python プリミティブであるクラス属性にはあまり関心がありません。

ソース コードは非常に単純であり、極端に悪いものではありません。たとえば、高度なメタクラス マジックは実行されません。(これは主に Python 1.5.2 の時代のもので、「最新の」2.3 っぽいものが散りばめられています。)

推奨する最善の既存のソリューションは何ですか?

4

10 に答える 10

188

Python コードの静的チェックに役立つPylintについて聞いたことがあるかもしれません。読み取った Python コードから UML ダイアグラムを描画するPyreverseというツールが付属していることを知っている人はほとんどいません。Pyreverse は Graphviz をバックエンドとして使用します。

次のように使用されます。

pyreverse -o png -p yourpackage .

は単一のファイルにする.こともできます。

于 2011-09-26T11:36:35.200 に答える
100

Epydocは、Python ソース コードから API ドキュメントを生成するツールです。また、Graphvizを凝った方法で使用して、UML クラス図を生成します。Epydoc自体のソース コードから生成された図の例を次に示します。

Epydoc はオブジェクトのイントロスペクションとソース解析の両方を実行するため、Doxygen などの静的コード アナライザーに関してより多くの情報を収集できます。動的に生成されたかなりの量のクラスと関数を検査できますが、コメントや割り当てられていない文字列をドキュメント ソースとして使用することもできます。変数およびクラスのパブリック属性用。

于 2008-11-03T23:26:37.467 に答える
26

Python用の7つのUMLツールのこのリストを確認してください

于 2011-07-07T19:51:00.583 に答える
15

正常に動作するプログラムの特定のクラスは図で表せる場合がありますが、一般的な場合、それはできません。Python オブジェクトは実行時に拡張でき、任意のタイプのオブジェクトを任意のインスタンス変数に割り当てることができます。オブジェクトがどのクラスへのポインターを含むことができるか (構成) を理解するには、プログラムの実行時の動作を完全に理解する必要があります。

Python のメタクラス機能は、継承構造について推論するには、プログラムの実行時の動作を完全に理解する必要があることを意味します。

これらが不可能であることを証明するために、そのようなUMLダイアグラマーが存在する場合、任意のプログラムを使用して、「停止」ステートメントをUMLダイアグラムに影響を与えるステートメントに変換し、UMLダイアグラマーを使用して停止問題を解決できると主張します。私たちが知っているように、これは不可能です。

于 2008-11-03T22:19:02.690 に答える
7

Gaphorに言及する価値があります。Python モデリング/UML ツール。

于 2008-11-04T13:12:13.853 に答える
6

Eclipse を使用している場合は、おそらくPyUMLです。ただし、使用していません。

于 2008-11-03T22:15:10.823 に答える
5

SPE IDE には UML 作成機能が組み込まれています。SPE でファイルを開き、UML タブをクリックするだけです。

あなたのニーズにどれだけ包括的かはわかりませんが、使用するために追加のダウンロードや構成は必要ありません.

于 2008-11-04T02:37:07.130 に答える
5

アンブレロもそうです。メニューで [コード] -> [プロジェクトのインポート] に移動し、プロジェクトのルート ディレクトリをポイントします。次に、コードを逆にします...

于 2011-07-07T06:43:18.260 に答える
5

vipera は小さなアプリケーション デザイナーであり、uml が含まれています。あなたはそれを見ることができます:

ヴィペラ

よろしくお願いします。

于 2011-12-09T12:21:10.140 に答える
4

Sparx のEnterprise Architectは、Python ソースのラウンドトリップを実行します。期間限定の無料試用版があります。

于 2008-11-04T21:53:54.017 に答える