FeaturesPluginsDocs & SupportCommunityPartners

UML: シーケンス図の作成

このチュートリアルでは、IDE の UML 機能を使用して、UML シーケンス図を作成する方法を学びます。シーケンス図とは、システム内でコラボレーションを行うオブジェクトグループ間の相互作用を視覚的に表現したものです。シーケンス図は生存線という縦線で構成されます。各生存線要素は、特定のオブジェクトの存在期間を表します。生存線は、シナリオ内の 1 つのオブジェクトから、シナリオ内の次のオブジェクトに渡されるメッセージを表す横線で接続されます。

予想される所要時間: 30

チュートリアルの要件

次に進む前に、この節の要件を確認してください。

前提条件

このチュートリアルの手順を実行するには、 UMLTutorialProject を使用してクラス図とコラボレーション図を作成するチュートリアルを終了している必要があります。「UML: クラス図の作成」および「UML: コラボレーション図の作成」を終了してから、このシーケンス図のチュートリアルを開始してください。

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

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

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

  • NetBeans 6.0

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

ページの先頭へ

シーケンス図の使用

シーケンス図とは、オブジェクトグループが一定の期間中に何らかの動作でコラボレーションを行う様子を示したモデルです。シーケンス図は、1 つのユースケースの動作に注目し、そのユースケースに含まれるオブジェクトと、ユースケースの時間枠においてオブジェクト間で渡されるメッセージを示します。シーケンス図はオブジェクト間の関係は示しません。

シーケンス図は次の目的で使用できます。

  • さまざまなクラスに数多くの短いメソッドが含まれる場合に、制御フローの全体的なシーケンスを記述する
  • 並行プロセスと活性化を示す
  • コラボレーション図では表現することが難しい時間の流れを示す
  • オブジェクトではなく、クラスの相互作用を表現する一般的なフォームを示す

ページの先頭へ


シーケンス図の作成

このチュートリアルでは、チュートリアル「UML: クラス図の作成」で作成したクラス図と、「ML モデリング: コラボレーション図の作成」で作成したコラボレーション図を使用します。この節の手順を実行する前に、これらのチュートリアルを終了する必要があります。

この節では、次の手順を実行します。

ページの先頭へ


シーケンス図を生成する

  1. IDE を起動します。
  2. 「プロジェクト」ウィンドウで、「UMLTutorialProject」>「モデル」>「CollaborationDiagram」ノードを右クリックし、ポップアップメニューから「選択した要素から図を作成」を選択します。
    「新規」ウィザードの「図を新規作成」ページが表示されます。

    注: ここでは、ポップアップメニューから選択できる 2 種類の相互作用図 (コラボレーション図とシーケンス図) のうちの 1 つを使用します。これらの図は、オブジェクトの相互作用に注目した図です。
  3. 「図の種類」リストから「シーケンス図」を選択します。
  4. 「図名」フィールドに「 SequenceDiagram 」と入力します。
  5. 「名前空間」フィールドのデフォルト設定は変更しないで、「完了」をクリックします。
    IDE が次の処理を行います。
    • 「プロジェクト」ウィンドウで「CollaborationDiagram」ノードの下に「SequenceDiagram」ノードが作成されます。
    • 図エディタに新しい図が表示されます (コラボレーション図の生存線要素とメッセージが含まれます)。
    • モデリングパレットに、シーケンス図の作成で使用するアイコンが表示されます。
    図は次のようになります。

    生成されたシーケンス図

ページの先頭へ


生成した図を再構成する

トランザクションに含まれるオブジェクトは縦破線として描画され、名前が最上部に表示されます。生存線要素の順序はシーケンス図の作成時に事前定義できないため、この時点で入れ替える必要があります。

  1. 「User」という生存線を選択し、図の左側に移動します。
  2. 残りの生存線要素の順序を入れ替え、図エディタ内で均等に配置します。生存線は次の順序で左から右に配置します。
    • User
    • ATM
    • Consortium
    • Branch

    図は次のようになります。

    生存線要素の順序を入れ替えたシーケンス図

ページの先頭へ


再帰メッセージ要素の追加

再帰メッセージ要素は、呼び出し元オブジェクトに送信されるメッセージを表します。この図で表される内部操作は、ATM オブジェクトの現金の検査です。

  1. メッセージ要素を配置しやすくするために、生存線要素の延長が必要な場合があります。
    生存線を延長するには、次の手順に従います。
    1. User 生存線要素を選択します。
    2. 下部中央にある青いボックスをクリックし、下方向にドラッグして、生存線を延長します。
    3. 図が次のようになるまで、手順 a と b を繰り返して残りの生存線を延長します。

      生存線を延長したシーケンス図

  2. モデリングパレットの基本区画、「再帰メッセージ (Message to Self)」アイコン 「再帰メッセージ (Message to Self)」アイコン を選択します。
  3. 延長した ATM 生存線要素の下部分をクリックします。
    生存線に再帰メッセージ要素が配置されます。
  4. 図エディタ内の任意の場所を右クリックして「再帰メッセージ (Message to Self)」アイコンを選択解除します。
  5. 再帰メッセージ要素の下のメッセージ矢印をクリックします。
    メッセージのプロパティが「プロパティ」ウィンドウに表示されます。
  6. 「プロパティ」ウィンドウの「名前」フィールドに「 validateCashOnHandOperation 」と入力し、Enter キーを押します。
  7. 再帰メッセージ要素の上のメッセージ矢印を右クリックし、ポップアップメニューから「操作」を選択します。カーソルの配置場所を次の図に示します。上の矢印のすぐ上に二重線が表示されます。

    再帰メッセージのカーソルの位置

  8. ポップアップメニューから「操作」>「操作を追加」を選択します。
    次の情報を含む 1 行エディタが開きます。
    可視性 戻り値の型 名前 (パラメータ) {プロパティ...}
  9. 次のように操作を定義します。
    public boolean getIsOperating()
    次の図に示すように、メッセージの上部分にラベルが付けられます。

    ラベルの付いた再帰メッセージ

ページの先頭へ


呼び出しメッセージ要素の使用

validateCashOnHand 操作は ATM クラスに含まれるため、この操作を呼び出すには、生存線にメッセージフローを配置する必要があります。

  1. モデリングパレットの基本区画で、「同期メッセージ (Synchronous Message)」アイコン 「同期メッセージ (Synchronous Message)」アイコン を選択します。
  2. User 生存線要素の getCashOnHand() メッセージの下をクリックします。
  3. 最初にクリックした位置のすぐ右側にある ATM 生存線要素をクリックします。
    次の図に示すように、メッセージと応答メッセージが図に表示されます。

    新しい同期メッセージ

    注: 応答メッセージを図に表示しない場合は、図エディタ内の白い領域を右クリックします。ポップアップメニューで「すべての応答メッセージを表示」を選択解除します。
  4. 図エディタ内の任意の場所を右クリックして「同期メッセージ (Synchronous Message)」アイコンを選択解除します。
  5. 作成したメッセージを右クリックし、ポップアップメニューから「操作」>「操作を追加」選択します。
  6. validateCashOnHand 」と入力し、Enter キーを押します。
    図でメッセージにラベルが付けられ、クラス図で ATM クラスの操作としてメッセージが追加されます。「プロジェクト」ウィンドウで、「ATM」クラスノードを展開して、操作のリストが次の図のようになっていることを確認します。

    「プロジェクト」ウィンドウで「ATM」クラスノードを展開したところ

ページの先頭へ


自動拡張メッセージオプションの使用

IDE には、デザインプロセスを支援するための、メッセージを自動拡張するオプションが用意されています。自動拡張オプションを選択した場合、新しいメッセージを図に配置したときに、領域がメッセージの幅に合わせて自動的に拡張します。

  1. 生存線の上のグレーのヘッダー領域で、User 要素名と ATM 要素名の間の領域を右クリックして自動拡張オプションを設定します。
    ポップアップメニューが表示されます。
  2. 「幅をメッセージ幅に設定」を選択します。
    次の図に示すように、2 つの要素名の間のトラックにインジケータバーが表示されます。

    「幅をメッセージ幅に設定」オプションを選択したシーケンス図

  3. 前述の手順を繰り返して、ATM 要素と Consortium 要素の間、および Consortium 要素と Branch 要素の間でメッセージ幅オプションを設定します。

ページの先頭へ


「メッセージの作成」機能の使用

「メッセージの作成」機能を使用すると、生存線要素またはインスタンスを作成できます。

  1. モデリングパレットの基本区画で、「メッセージの作成 (Create Message)」アイコン 「メッセージの作成 (Create Message)」アイコン を選択します。
  2. Branch 生存線の下部分をクリックします。
  3. Branch 生存線の右方向にリンクを描画し、もう一度クリックします。
    次の図に示すように、メッセージと生存線が図に配置されます。

    メッセージが追加された Branch 生存線

  4. ESC キーを押してアイコンを選択解除します。
  5. 新しい生存線を選択します。
    「プロパティ」ウィンドウに、この生存線要素のプロパティが表示されます。
  6. 「プロパティ」ウィンドウの「対象分類子」という行で、下矢印をクリックします。
    ドロップダウンリストが表示されます。
  7. ドロップダウンリストから「CashierStation」を選択し、Enter キーを押します。
  8. 図エディタ内をクリックして、ラベルの付いた生存線要素を確認します。

    図は次のようになります。

    新しい生存線を追加したシーケンス図

ページの先頭へ

非同期リンクの追加

非同期メッセージ要素は、呼び出し元オブジェクトをブロックしないメッセージを表します。この種類のメッセージでは、新規オブジェクトの作成、新規スレッドの作成、および既存スレッドとの通信を行うことができます。

  1. モデリングパレットの基本区画で、「非同期メッセージ (Asynchronous Message)」アイコン 「非同期メッセージ (Asynchronous Message)」アイコン を選択します。
  2. Branch 生存線要素をクリックし、次に CashierStation 生存線要素をクリックして、これらの要素の間にリンクを描画します。
  3. ESC キーを押してアイコンを選択解除します。
  4. 新しいリンクを右クリックし、ポップアップメニューから「操作」>「 public int getStationID 」を選択します。
    この操作によって、次の図に示すように、メッセージに操作が追加されます。

    非同期メッセージが追加されたシーケンス図

ページの先頭へ

結合フラグメント要素の使用

結合フラグメントを使用すると、論理コンポーネントをシーケンス図で直接表現できます。論理コンポーネントの例として、代替、オプション、例外、並列マージ、ループ、否定、重要な領域、表明などがあります。結合フラグメントは、条件やサブプロセスが適用される領域を指定することで、任意の生存線の任意の部分の特殊な条件やサブプロセスを定義する手段です。

  1. モデリングパレットの制御区画で、「結合フラグメント (Combined Fragment)」アイコン 「結合フラグメント (Combined Fragment)」アイコン を選択します。
  2. メッセージ public void validateCashOnHand をカプセル化する結合フラグメント要素を描画するには、メッセージを表す青い破線の矩形の外側をクリックし、メッセージを矩形で囲むようにドラッグします。
    クリックするときは、生存線要素を選択しないよう注意してください。結合フラグメントは次のようになります。

    メッセージを囲む結合フラグメント

  3. ESC キーを押してアイコンを選択解除します。
  4. 結合フラグメント要素の「 assert 」ラベルを右クリックし、コンテキストメニューから「相互作用演算子」>「loop」を選択します。

    注: loop 相互作用演算子は、結合フラグメントがループを表すことを指定します。ループ反復のたびに、ガード式が評価されます。ガード式には特定回数のループ反復を含めることができます。
  5. 結合フラグメントのラベル「 loop 」を右クリックし、ポップアップメニューから「相互作用オペランド」>「相互作用制約を編集」を選択します。
    ターゲットの結合フラグメント要素内に式のボックスが表示されます。
  6. 「式」をダブルクリックして、次の図に示すように「式」ボックスを編集可能にします。

    メッセージ上の編集可能な「式」ボックス

  7. x < 10 」と入力し、Enter キーを押します。
  8. 図エディタ内をクリックします。
    式が確認され、ボックスに表示されます。図は次のようになります。

    完成したシーケンス図

ページの先頭へ


図の保存

シーケンス図を完成したら、保存します。

  1. 図エディタで、「 SequenceDiagram 」タブを右クリックします。
  2. ポップアップメニューから「ドキュメントを保存」を選択します。
    メニューが閉じて、図が保存されます。

    注: IDE を終了するときにも、図を保存するか破棄するかの確認が求められます。

ページの先頭へ

まとめ

このチュートリアルでは、既存のコラボレーション図を使用してシーケンス図を作成する方法を学びました。具体的には、次の作業を実行する方法を学びました。

  • 既存のコラボレーション図からシーケンス図を生成する
  • モデリングパレットのアイコンを使用して、図にメッセージを追加する
  • 図にリンクを追加する
  • 結合フラグメント要素を追加する
  • 図を保存する

ページの先頭へ

次の手順

  • メーリングリストに登録することによって、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   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by