同僚は、PythonソースコードのヒープからUMLクラス図を生成しようとしています。彼は主に継承関係に関心があり、構成関係に少し関心があります。また、Pythonプリミティブであるクラス属性にはあまり関心がありません。
ソースコードは非常に単純で、それほど悪ではありません。たとえば、派手なメタクラスのマジックは実行されません。(これは主にPython 1.5.2の時代のもので、「モダン」な2.3ishのものがいくつか散りばめられています。)
推奨する既存の最良のソリューションは何ですか?
同僚は、PythonソースコードのヒープからUMLクラス図を生成しようとしています。彼は主に継承関係に関心があり、構成関係に少し関心があります。また、Pythonプリミティブであるクラス属性にはあまり関心がありません。
ソースコードは非常に単純で、それほど悪ではありません。たとえば、派手なメタクラスのマジックは実行されません。(これは主にPython 1.5.2の時代のもので、「モダン」な2.3ishのものがいくつか散りばめられています。)
推奨する既存の最良のソリューションは何ですか?
回答:
Pythonコードを静的にチェックするのに役立つPylintを聞いたことがあるかもしれません。読み込んだpythonコードからUML図を描画するPyreverseというツールが付属していることを知っている人はほとんどいません。Pyreverseはgraphvizをバックエンドとして使用します。
Epydocは、PythonソースコードからAPIドキュメントを生成するツールです。また、Graphvizを派手に使用してUMLクラス図を生成します。ここで図の例 Epydoc自体のソースコードから生成されました。
Epydocはオブジェクトイントロスペクションとソース解析の両方を実行するため、Doxygenなどの静的コードアナライザーに関するより多くの情報を収集できます。動的に生成された大量のクラスと関数を検査できますが、コメントや割り当てられていない文字列をドキュメントソースとして使用することもできます。変数およびクラスのパブリック属性用。
Python用の7つのUMLツールのこのリストを確認してください
正常に動作するプログラムの特定のクラスは図式化できる場合がありますが、一般的なケースでは実行できません。Pythonオブジェクトは実行時に拡張でき、任意のタイプのオブジェクトを任意のインスタンス変数に割り当てることができます。オブジェクトが(構成)へのポインターを含むことができるクラスを把握するには、プログラムの実行時の動作を完全に理解する必要があります。
Pythonのメタクラス機能により、継承構造についての推論には、プログラムの実行時の動作を完全に理解する必要があります。
これらが不可能であることを証明するには、そのようなUMLダイヤグラマが存在する場合、任意のプログラムを取り、「停止」ステートメントをUMLダイヤグラムに影響を与えるステートメントに変換し、UMLダイヤグラマを使用して停止問題を解決できると主張します。私たちが知っているようにそれは不可能です。
Eclipseを使用している場合は、おそらくPyUMLです。ただし、使用していません。
.zip
アーカイブからインストールできません。
アンブレロもそうします。メニューで、コード->プロジェクトのインポートに移動し、プロジェクトのルートディレクトリをポイントします。次に、yaのコードを逆にします...
SPE IDE内蔵しているUMLの作成者。SPEでファイルを開き、UMLタブをクリックするだけです。
あなたのニーズにどの程度包括的であるかはわかりませんが、追加のダウンロードや設定を使用する必要はありません。
SparxのEnterprise Architectは、Pythonソースのラウンドトリップを実行します。彼らは無料の期間限定のトライアル版を持っています。