1

私はC++コードベースを理解しようとしています。コードをスキャンして図を作成する無料のツールをいくつか使用しましたが、それらはそれほど簡単には理解できません。

私が役立つと思うのは、UMLツールを利用して手動で何かを作成することです。

必要なのは、実行時のデータ構造のように見えるものを作成することです。理想的には、UMLからオブジェクトをプルし、それらを配置することによって。また、クラスをサブパッケージに編成したいと思います-DBに近いものや、データ構造のブランチに向けたものなどです。

(現在、Visual Studioソリューションエクスプローラーのフォルダーを使用してこれを部分的に行っています)

これは多くのMakesfileを含むLINUXプロジェクトですが、Visual Studioなどの多くのツールは、作業中のexeのメインディレクトリにあるファイルを使用してプロジェクトを作成するだけで、コードを「理解」します。

4

4 に答える 4

0

正直なところ、コードの逆生成に関して、UMLツールから何か有用なものを引き出すのにかなりの問題があるかもしれません。

コードが非常にクリーンで、適切なオブジェクト指向デザイン、適切な包含、継承、および関連付けがほとんどない場合、問題なく表示される可能性があります...しかし、ほとんどの実際のプロジェクトでは、UMLに逆生成すると、結果の図は次のようになります。スパイダーリーの混乱は、おそらく善よりも害を及ぼすでしょう。

ただし、逆モデルの世代に固執する場合は、UMLユーティリティを構成して、表示する項目を少なくしてください。集約や継承などの主要な関係を維持してください。包含/集約関係ではなく使用関係を表示し始めると、プロジェクトが非常によく書かれていない限り、すべてがすべてに接続する傾向があり、それは混乱と誤解を招くだけです。

私の最善の推奨事項は、ツールによって理解できないように見える場合は、時間を節約して自分で行うことです。

于 2011-08-01T13:47:05.480 に答える
0

UML から生成されていない UML と C++ のコードは、うまく連携できません。特にテンプレートが関係するとすぐに、実際に望んでいるよりも多くの問題が発生する可能性があり、これらのモデルを取得するために費やした時間が、実際には古き良きソースコードの読み取りに投資された方が良いのではないかどうかを自問する必要があります. コードが何をするのかを理解するには、最終的にコードを読む必要があるので、今すぐ始めてください。

于 2011-08-01T13:50:11.773 に答える
0

ほとんどのツールは、構造的なビュー (クラスとパッケージ) しか提供しないため、正直なところ、実行時に何が起こっているかについてはあまりわかりません。

Sparx Systems の Enterprise Architect には、デバッグ セッションからシーケンス図を生成できるVisual Execution Analyzerが組み込まれています。C++ をサポートしていますが、Windows でのみサポートされているため、再構築する必要がありますが、私が正しく理解していれば、コードは Visual Studio で実行されています。

簡単なデモを次に示します (この場合、コードは C# ですが、C++ もサポートすると主張しています)。これは、UML でコードを書くような完全なラウンドトリップではありませんが、個人的にはそれは夢物語だと思います。UML を使用して文書化し、プログラミング言語を使用してコーディングします。

于 2011-08-05T12:21:12.047 に答える
-1

それが Linux なのか Windows なのかわかりませんでした (あなたは Linux だと言いますが、Visual Studio を使っていると言います)。

コードを理解したい場合は、Source Insightが最適なツールです。必ずしも UML ではありませんが、リアルタイムで優れたグラフを生成します。

于 2011-08-01T13:35:51.857 に答える