15

私は UML に堪能ではありませんが、既存の C++ コードに基づいてクラス図を作成したいと考えています。その他の StackOverflow の質問では、Enterprise Architect と Rational Software Architect の 2 つのプログラムが C++ コードの "リバース エンジニアリング" (つまり、既存の C++ コードに基づいて UML クラス図を作成する) にかなり優れていることが示されています。

これらのアプリケーションの両方の試用版をダウンロードしました。ただし、これらのアプリケーションのいずれかでクラス図を作成するために何をすべきかを理解することはできません。

Rational Software Architect で UML プロジェクトを作成しましたが、プログラム内で既存の C++ コードを選択してリバース エンジニアリングする方法が見つかりません。

Enterprise Architect では、C++ コードをインポートできましたが、すべての要素 (クラス) が、ダイアグラム内で重なって役に立たない斜めの線で表示されました。円などの他の設定を試みましたが、図が非常に大きく (属性とメソッドが多くのスペースを占めているため)、パンとズームの量が役に立たなかったため、これらも同様に読むことができませんでした。私が望むのは、クラス名以外のすべてを非表示にする (つまり、メソッドや属性を表示しない) ことで、20 個のクラスすべてが 1 つの画面に便利かつ読みやすく表示されるようにすることです。

ただし、クラス名以外のすべてを非表示にする方法を見つけることができません。むしろ、(Enterprise Architectで)クラス名以外のすべてを非表示にする可能性があると思われるオプションを見つけたとき、何らかの理由で要素がクラス図ですべて消え、手順を繰り返したり、パッケージを削除して再追加したりする量はありませんでしたクラス図を再現しました。

注: 私の C++ コード (少なくとも Enterprise Architect にインポートするために選択したファイル) は、約 20 クラスしかありません。

悲しいことに、これらのプログラムの両方のドキュメントを注意深く検索しても、一般論しか得られません。私が見つけた限りでは、これらのプログラムのリバース エンジニアリングに関する具体的な指示はありません。

読みやすく、ナビゲートしやすい図を作成するための基本的な手順を教えていただければ幸いです。クラス名のみを表示するリバース エンジニアリング (つまり、C++ から UML へ)。エンタープライズ アーキテクトまたはラショナル ソフトウェア アーキテクトのいずれか、または可能なその他のツールを使用して、約 20 個のクラスが 1 つの画面に (読みやすく) 収まるようにします。これを行う(EAとRationalをお勧めするのは、他のStackOverflowの回答で、この目的に利用できる最良のプログラムとして強調されているからです)。

4

1 に答える 1

20

この回答は EA に適用されます。

個々のファイルまたはディレクトリ全体を、再帰的にインポートすることも、インポートしないこともできます。ディレクトリのインポートは、最も一般的なケースです。単一ファイルのインポートでは、ダイアグラムを自動的に作成することはできません。

ソース ディレクトリをインポートするとき、UML パッケージごとに図を作成するか、まったく図を作成しないかを選択できます。また、ソース コード ディレクトリ、名前空間 (既定)、またはファイルごとにパッケージを作成するかどうかも決定します。

コードが 20 個のクラスのみで構成されている場合、それらは単一のディレクトリや名前空間にある可能性が高いため、そのオプション ([ソースのインポート] ダイアログの [パッケージ構造]) をいじって、適切な数の図を取得します。

同じダイアログ内に「New Diagram Options」ボタンがあり、別の構成ダイアログが開き、ダイアグラムにクラスの属性や操作を含めるかどうかを選択できます。公開メンバーのみを表示するなど、可視性に基づいて決定を下すこともできます。

このダイアログは、ダイアグラムの作成時に表示されるものにのみ影響します。メンバーはまだインポートされていますが、表示されていません。これはあなたが求めているもののように聞こえます。

ダイアグラムの空の領域をダブルクリックするか、右クリックして [プロパティ] を選択すると、ダイアグラムの表示オプションを変更できます。このダイアログに入って何かを変更したように聞こえますが、実際には何なのかわかりません。表示を元に戻すことができないというあなたが説明する状況は、EAでこれまでに遭遇したことのないものです。

ダイアグラムで右クリックし、[機能の表示] を選択して、クラスごとに表示オプションを選択することもできます。リバース エンジニアリングされた図でこれを使用することはお勧めしません。完全を期すために言及しているだけです。

あなたが説明するレイアウトは、すべてのクラスが意味のない対角線になっているため、作成後にダイアグラムが適切にレイアウトされていないことがわかります。ダイアグラムの作成は 2 段階のプロセスです。最初にすべてのクラスがドロップされ、次にレイアウトが適用されます。

EA は生成されたダイアグラムを自動的にレイアウトし、この動作の選択を解除できるオプションを見つけることができなかったため、これは奇妙です。これが続く場合は、バグ レポートを Sparx Systems に送信してください。ダイアグラムを開き、最上位の [ダイアグラム] メニューから [レイアウト ダイアグラム] を選択すると、いつでもダイアグラムをレイアウトできます。

最後に、EA が複数の図を生成するようにクラスが異なるパッケージ名前空間に分散している場合は、それらを手動でマージする必要があります。これを行うには、両方のダイアグラムを開き、一方のダイアグラムをすべて選択 (Ctrl-A) し、もう一方のダイアグラムにコピー (Ctrl-C) して貼り付け (Ctrl-V) し、EA にもう一度レイアウト ダイアグラムを要求します。

そう:

  1. プロジェクト ブラウザーで空のパッケージを右クリックし、[コード エンジニアリング] - [ソース ディレクトリのインポート] を選択します。
  2. ダイアログで、ルート ディレクトリとソース タイプを選択します。
  3. 「パッケージごとに論理図を作成する」にチェックマークを付け、ソース構造に最適なパッケージ構造を選択します。
  4. [新しいダイアグラム オプション] をクリックし、新しいダイアログで [属性の表示]、[操作の表示]、[プロパティ メソッドの表示] のチェックを外します (該当する場合)。
  5. 両方のダイアログを OK します。
  6. 複数のダイアグラムが作成されている場合は、すべてのクラスを 1 つのダイアグラムにコピーします。
  7. レイアウトが悪い場合は、[図] - [レイアウト図] を選択します。

お役に立てれば。

于 2012-09-17T08:23:39.750 に答える