FeaturesPluginsDocs & SupportCommunityPartners

UML: Java アプリケーションのリバースエンジニアリング

このチュートリアルでは、既存の Java アプリケーションのソースコードを UML プロジェクトにリバースエンジニアリングする方法を学びます。UML プロジェクトでは、すべてのクラスおよびその他のアプリケーション要素は「プロジェクト」ウィンドウで UML プロジェクトノードの下に表示され、元の Java コードは元の状態で残ります。このチュートリアルでは、「目次」に示した項目の順に、基本的な作業を行います。

予想される所要時間: 25

目次

このページの内容は NetBeans IDE 6.0 が対象です

前提条件

このチュートリアルを使用するには、IDE がシステムにインストールされている必要があります。また、IDE の基本要素に関する知識が必要です。Java プログラミング言語および UML の基本的なところも知っていた方がいいでしょう。IDE の基礎については、オンラインヘルプで IDE の基礎に関する項目を参照してください。公式の UML リソースページ (http://www.uml.org/) で、UML 手法と理論に関する優れたリソースを得ることができます。

システム要件

このチュートリアルでは、ユーザーのシステムが、『NetBeans 6.0 リリースノート』の「システム要件」の節で指定された要件を満たしていることを想定しています。

このチュートリアルに必要なソフトウェア

開始する前に、次のソフトウェアをダウンロードしてインストールします。

  • NetBeans 6.0

    ダウンロードオプション「すべて」を選択します。

サンプルの Java プロジェクトおよび UML プロジェクトの作成

この節では、「新規プロジェクト」ウィザードを使用して、IDE が提供するサンプルの Java プロジェクトおよび UML プロジェクトを作成します。

  1. IDE のメインメニューから「ファイル」>「新規プロジェクト」を選択します。
    「新規プロジェクト」ウィザードが表示さます。
  2. 「プロジェクトを選択」ページの「カテゴリ」区画で、「サンプル」ノードを展開し、「UML」ノードを選択します。
    利用可能な UML サンプルプロジェクトが「プロジェクト」区画に反映されます。
  3. 「プロジェクト」区画で「UML Bank App Sample」を選択し、「次へ」をクリックします。
  4. 「名前と場所」ページで、Java プロジェクト名のデフォルト値「UMLBankAppSample」はそのままにします。
  5. 「プロジェクトの場所」フィールドで「参照」をクリックし、サンプルプロジェクトのファイルを保存するフォルダへ移動します。
    「プロジェクトの場所」フィールドで値を変更すると、IDE は自動的に「Java プロジェクトフォルダ」フィールドおよび「UML プロジェクトフォルダ」フィールドの値を更新します。
  6. UML プロジェクト名のデフォルト値「UMLBankAppSample-Model」はそのままにします。
  7. 「完了」をクリックします。
    「プロジェクトを開きます」ダイアログに進行状況が表示されます。
    「プロジェクト」ウィンドウに、UMLBankAppSample プロジェクトおよび UMLBankAppSample-Model プロジェクトが表示されます。

デモを表示

ページの先頭へ

「プロジェクト」ウィンドウでの UML プロジェクトの操作

この節では、アプリケーションの要素を示す「プロジェクト」ウィンドウのさまざまな機能を使用して、UMLBankAppSample アプリケーションのさまざまな部分を操作する方法を示します。

  1. メインメニューから「ウィンドウ」>「プロパティー」を選択し、「プロパティー」ウィンドウを表示します。
  2. 「プロジェクト」ウィンドウで、「UMLBankAppSample-Model」>「モデル」>「bankpack」ノードを展開します。
  3. BankAccount 」ノードと、その「属性」ノードを展開します。
    このノードには、 BankAccount クラスのすべての属性が含まれています。属性の数が 3 つ未満の場合は、「属性」ノードは作成されず、クラスノードの下に属性が表示されます。
  4. private double balance」というラベルの付いた属性ノード 属性ノードのアイコンのイメージ を選択します。
    「プロパティ」ウィンドウに属性の名前とそのプロパティが表示されます。
  5. 「プロジェクト」ウィンドウで、BankAccount クラスのノードの下の「操作」ノード 「操作」ノードのアイコン を展開します。
    このノードの下に、 BankAccount クラスのすべての操作が表示されます。
  6. BankAccount クラスの下にある「関係」ノード 「関係」ノードのアイコン を展開します。
    「特化」、「集約」、および「実装」の 3 種類の関係のノードが表示されます。
  7. 特化」ノード 「汎化」ノードのアイコン を展開し、3 つの汎化ノードを展開します。
    汎化のリンクは、BankAccount クラスとほかの要素 (CheckingPlatinum、および Saving の各クラス) の関係を示しています。
  8. (任意) 次の節に進む前に、BankAccount クラスの下で展開されているノードをすべて閉じてください。

    デモを表示

    ページの先頭へ

リバースエンジニアリングによる別の UML プロジェクトの作成

このチュートリアルの最初の節で、UMLBankAppSample Java プロジェクトと、リバースエンジニアリング機能を使用して生成した UML プロジェクト UMLBankAppSample-Model を読み込みました。この節では、前の節で使用したものと同じ Java プロジェクト UMLBankAppSample をリバースエンジニアリングして、別の UML プロジェクトを作成する手順を実行します。

  1. 「プロジェクト」ウィンドウで「UMLBankAppSample」ノードを右クリックし、「リバースエンジニアリング」を選択します。
    「リバースエンジニアリング」ダイアログが表示されます。
    「選択されたノード」フィールドに編集できない値「UMLBankAppSample」が入っていることを確認します。
  2. 「リバースエンジニアリング」列のチェックボックスは選択したままにします。
  3. 「新規 UML プロジェクトを作成」ボタンを選択します。
  4. 「プロジェクト名」フィールドについては、デフォルトの UMLBankAppSample-Model1 を使用します。
  5. 「プロジェクトの場所」フィールドについては、UML サンプルプロジェクトが保存されているディレクトリのデフォルト値のままにします。
    別のフォルダを使用する場合は、「参照」をクリックしてそのフォルダに移動し、「開く」をクリックします。
  6. 「閉じる」をクリックします。
    「プロジェクトを開きます」ダイアログに進行状況が表示されます。
    「プロジェクト」ウィンドウに UMLBankAppSample-Model1 プロジェクトが表示されます。

デモを表示

ページの先頭へ

クラス図の生成

この節では、前の節でインポートした UMLBankAppSample アプリケーションのクラス図を生成します。

  1. 「プロジェクト」ウィンドウで、「UMLBankAppSample-Model」ノードの下の「モデル」ノードと、その下の「bankpack」ノードを展開します。
  2. bankpack」フォルダを選択し、Shift キーまたは Ctrl キーを押しながら「bankpack」フォルダ内の要素をすべて選択します。
  3. 選択した要素を右クリックし、ポップアップメニューから「選択した要素から図を作成」を選択します。
    「図を新規作成」ウィザードが表示されます。
  4. 「図の種類」リストから「クラス図」を選択します。
  5. 「図名」フィールドに「BankClassDiagram」と入力し、「名前空間」フィールドは「UMLBankAppSample-Model」のままにして、「完了」をクリックします。
    IDE が次の処理を行います。
    • モデル」ノードの下に「BankClassDiagram」ノードが作成されます。
    • 図エディタに新しい図が表示されます。
    • モデリングパレットが開きます。
    注: 新しい BankClassDiagram 図には、手順 2 で選択したすべての要素が含まれています。

デモを表示

ページの先頭へ

図エディタの操作

この節では、図ツールバーのボタンを使用して、アプリケーションを図エディタでさまざまな UML レイアウトで表示します。

  1. 図エディタの上部にある「 BankClassDiagram 」タブをダブルクリックします。
    この操作によってクラスの図エディタが拡大され、IDE ウィンドウの領域全体に表示されます。

    注: この操作は相互切り替えで、逆の操作を行う場合はもう一度「BankClassDiagram」タブをダブルクリックします。
  2. 図エディタを拡大したままの状態で、図ツールバーの「ウィンドウに合わせる」ボタン 「ウィンドウに合わせる」アイコン をクリックして、図エディタ全体に図を表示します。

    注: 図ツールバーには、ズームレベルのパーセント値を示すフィールドがあります。このフィールドに別の数値を入力すると、サイズを変更できます。
  3. 図ツールバーの「対称型レイアウト」ボタン 「対称型レイアウト」アイコン を選択し、レイアウトの警告ダイアログで「はい」をクリックします。
    BankClassDiagram 図のレイアウトが対称型レイアウトに変更されます。
  4. 図ツールバーの「階層型レイアウト」ボタン 「階層型レイアウト」アイコン を選択し、レイアウトの警告ダイアログで「はい」をクリックします。
    BankClassDiagram 図のレイアウトが階層型レイアウトに変更され、すべての要素が bankpack パッケージの下に表示されます。
  5. 図ツールバーの「直交型レイアウト」ボタン 「直交型レイアウト」アイコン を選択し、レイアウトの警告ダイアログで「はい」をクリックします。
    BankClassDiagram 図のレイアウトが直交型レイアウトに変更されます。

デモを表示

ページの先頭へ


「概要」ウィンドウの使用

ここでは、「概要」ウィンドウの機能を使用して、図エディタ内での図の表示を拡大縮小します。

  1. 拡大した図エディタの上部にある「BankClassDiagram」タブをダブルクリックします。
    IDE が複数ウィンドウ表示に戻ります。
  2. 図ツールバーの「ズーム」ドロップダウンリストから「50%」を選択し、「ウィンドウに合わせる」ボタン 「ウィンドウに合わせる」ボタン をクリックします。
    「ウィンドウに合わせる」ボタンを使用すると、ラベルを読み取れるように、図のサイズが 75% から調整されます。
  3. 図ツールバーの「概要ウィンドウ」ボタン 「概要ウィンドウ」アイコン をクリックして、「概要」ウィンドウを開きます。
    図全体を表す拡大縮小可能な小さなウィンドウが表示されます。このウィンドウ内の青いボックスは、図エディタの表示内容を示しています。
    注: 青いボックスを表示するには、「概要」ウィンドウを拡大するか、「ズーム」ドロップダウンリストでズーム率を上げる必要がある場合があります。
  4. BankAccount 要素の上に青いボックスをドラッグします。
    この操作によって、BankAccount 要素が図エディタの中心に表示されます。
  5. 要素にズームインするには、青いボックスの角のハンドルのいずれかをクリックし、ボックスのサイズを小さくします。ボックスの位置を調整し、図の特定の部分にズームインします。
  6. ズームアウトするには、青いボックスのハンドルのいずれかをクリックし、ボックスのサイズを大きくします。
    図がズームアウトされます。
  7. 「概要」ウィンドウを閉じるには、ウィンドウの右上隅にある「X」をクリックするか、「概要ウィンドウ」ボタンをクリックします。
  8. 図ツールバーの「ウィンドウに合わせる」ボタン 「ウィンドウに合わせる」アイコン をもう一度クリックします。

デモを表示

ページの先頭へ

クラス依存図の生成

ここでは、BankApp アプリケーションの 1 つのクラスの依存図を生成します。

  1. 「BankClassDiagram」タブをダブルクリックして、図を全面表示に切り替えます。
  2. 図エディタで BankAccount クラスを右クリックし、ポップアップメニューから「依存図を生成」を選択します。
    依存図が作成され、図エディタの「BankAccount依存図」タブに新しい図が表示されます。現在は、BankAccount依存図が表示されている図エディタのタブにフォーカスがあります。BankAccount依存図は、次の依存関係のリンクを示します。
    • Account インタフェースとの実装関係
    • History クラスへのナビゲート可能な集約のリンク
    注: このオプションを使用すると、任意の特定オブジェクトのすべての依存関係を示す図を作成できます。
  3. 「BankClassDiagram」タブをもう一度ダブルクリックして、IDE を複数ウィンドウ表示に切り替えます。
  4. 「プロジェクト」ウィンドウで、「UMLProject」>「モデル」>「bankpack」フォルダの下の BankAccount クラスノードを展開します。
    作成した依存図を表す「 BankAccount 依存」ノード 「BankAccount依存」ノードのアイコン が追加されています。

 

デモを表示

ページの先頭へ

操作のシーケンス図の生成

ここでは、アプリケーションの withdraw 操作のシーケンス図を生成します。操作がどのように図で表されるのか、また UML プロジェクトの要素として「プロジェクト」ウィンドウにどのように表示されるのかを確認します。

  1. 図エディタで「 BankAccountDependencies 」タブをクリックします。
  2. BankAccount 要素を選択し、操作のラベルを読み取れるようにズーム率を調整します。
  3. 図エディタで withdraw 操作を右クリックし、ポップアップメニューから「操作をリバースエンジニアリング」を選択します。
    「図を新規作成」ダイアログが表示されます。
  4. 「図の種類」リストから「シーケンス図」を選択します。
  5. 「図名」フィールドに「 withdrawSD 」と入力します。
  6. 「名前空間」フィールドのデフォルト値は変更しないで、「完了」をクリックします。
    図エディタにシーケンス図が表示されます。
  7. 図エディタを拡大し、新しいシーケンス図が見やすいようにズームレベルを操作します。
    シーケンス図は、制御フロー、動作のシーケンス、および並行プロセスと活性化を示します。
  8. 「プロジェクト」ウィンドウで、「BankAccount」クラスノードの下の「操作」ノードを展開し、「public void withdraw」操作ノードを展開します。
    新しいシーケンス図の「 withdraw 」ノード シーケンス図ノード が表示されます。
  9. withdraw 」ノードを展開して、シーケンス図の要素が「プロジェクト」ウィンドウに表示されることを確認します。

デモを表示

ページの先頭へ

マージマーカーについて

UML では、ソースとモデルの同期を維持するのに役立つマージマーカーが使用されます。 UML プロジェクトからコード生成アクションを呼び出すと、デフォルトでマージマーカーが追加されます。 UML プロジェクトが既存の Java プロジェクトをリバースエンジニアリングすることによって作成された場合、既存のソース要素にはマージマーカーはありません。

マージマーカーを追加する

  1. Java プロジェクトを作成するか、または開きます。
  2. Java プロジェクトのノードを右クリックし、「リバースエンジニアリング」を選択します。「新規 UML プロジェクトを作成」が選択されていることを確認します。 「了解」をクリックします。
  3. リバースエンジニアリングが完了したことを確認します。 「出力」ウィンドウに、タスクが成功したことが表示されます。
  4. 新しく作成された UML プロジェクトのノードを右クリックし、「コードを生成」を選択します。
  5. 「ターゲットプロジェクト」プルダウンリストから Java プロジェクトを選択します。「既存のソース要素にマージマーカーを追加」を選択します。「閉じる」をクリックします。

ソースとモデルの同期が実行され、すべてのソース要素にマージマーカーが追加されます。 これで、ソースとモデルを安全に切り替えることができます。 ただし、各切り替えの前に、適宜「リバースエンジニアリング」または「コード生成」を呼び出すようにします。

ページの先頭へ

まとめ

  • このチュートリアルでは、UML モデルにデータをインポートすることによって Java アプリケーションをリバースエンジニアリングする方法を学びました。具体的には、次の作業を実行する方法を学びました。

    • インポートした Java アプリケーションからクラス図を生成する
    • アプリケーションの要素を表示する「プロジェクト」ウィンドウの機能を操作する.
    • 図ツールバーのボタンを使用して、さまざまな UML レイアウトでアプリケーションを表示する.
    • 「概要」ウィンドウを表示ツールとして使用する
    • アプリケーションのクラスの依存図を生成する.
    • 操作のシーケンス図を生成し、操作がどのように図で表されるのか、また UML プロジェクトの要素として、「プロジェクト」ウィンドウにどのように表示されるのかを確認する.

ページの先頭へ

次の手順

  • UML 機能をさらに学ぶには、アプリケーションの開発のチュートリアルを実行します。

  • メーリングリストに登録することによって、NetBeans IDE J2EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。



ページの先頭へ

>> その他の UML モデリングドキュメント

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Open ESB - The Open Enterprise Service Bus Powered by