|
|||
1-1. はじめに | |||
次の順に説明していきます。
|
1-2. UMLとツール |
UMLは、手書きすることもありますが、ここではツールを使います。 UMLを描くのになぜツールを利用するのでしょうか?主なメリットを挙げてみます。
初心者にとってのツールを考えてみると、4, 5が特に意味があると思います。 例えば、間違ったらいつでも簡単にやり直せますし、パッケージからクラスに関連を描こうとすると、 ツールは「そのような関連はかけません」と教えてくれます。また、クラスを抽象クラスに設定すれば、 自動的にクラス名が斜体になります。その他にも、各要素の形と名前の対応関係をツール上で常に確認できます。 ツールにUMLを教わるような気持ちで、いろんな操作をしてみましょう。 おかしくなったらUndo(やり直し)すればいいですからね。 |
1-3. UMLツールJUDEの紹介 |
多くのUMLツールがありますが、ここでは「JUDE/Community」 (JUDE=Java and UML Developers' Environment)を使います。 実は、筆者は現在JUDEを開発中で、多くの方に使ってもらえればと考えています。 JUDEは、以下の特徴・機能をもちます。
その他の特徴については、JUDE/Communityの製品情報を参照ください。 |
1-4. インストール | ||||||||
さっそく、JUDEをインストールしましょう。JUDEはJavaの環境上で動作します。
そのため、①Java環境のインストール、②JUDEのインストール、の手順となります。
インストールは非常に簡単です。
| ||||||||
1-4-1 システム要件
JUDEは、Windows98やLinux、MacOSなどのJ2SE環境でも動作しますが、あまりテストされていません。 ここではWindowsでのセットアップ方法を説明します。 Windows以外でのセットアップ方法については、JUDEの製品サイトを参照ください。 | ||||||||
1-4-2 Java環境のインストール既に推奨のJava環境がインストールされている場合は、この作業は不要ですので、次に進んでください。
JREバンドル版のJUDEをダウンロードする場合も、この作業は不要です。
| ||||||||
1-4-3 ダウンロード次のページからJUDEをダウンロードしましょう。 最新の jude-community-x_x-setup.exe (JREなしの場合約5MB)をダウンロードします。 このファイル一つでインストール可能です。ちなみにこの記事で使用したバージョンは、JUDE/Community3.1です。 | ||||||||
1-4-4 インストールダウンロードが完了したら、そのファイルをダブルクリックすることでインストーラが起動しますので、 インストール先のフォルダなどを指定するだけです。 Windows98、MEの場合は、Setupプログラム完了後、 JUDEインストール先フォルダにあるjude.batを編集して、 JUDE_HOME変数にそのフォルダの絶対パスを設定してください。 | ||||||||
1-4-5 起動WindowsのスタートメニューからJUDEを起動します。起動すると、次の画面が表示されます。 (中央のJUDEロゴは、起動後消えます) |
1-5. 画面構成と基本操作 | ||||||||||||||||||
まず、JUDEの画面構成と基本的な共通操作を説明します。 | ||||||||||||||||||
1-5-1 画面構成と名称JUDEの画面は、次のような構成になっています。
| ||||||||||||||||||
1-5-2 新規プロジェクトを作成するJUDEでは、UMLのデータをプロジェクトというxxx.judeファイルに保存します。 起動後は何もプロジェクトを開いていませんので、まず新規のプロジェクトを作成します。 【ファイル】メニューの【プロジェクトの新規作成】を選択します。構造ツリーとプロパティビューが表示されます。 新規のプロジェクトは、構造ツリーに表示されているように、次のデータを保持しています。 "no_title"の配下に空のユースケース図とクラス図を保持しています。 javaパッケージは、JavaプラットフォームAPIに対応するもので、 "String"や"Vector"といった一部の基本的なクラスが含まれています。 これらのクラスは、属性の型などに使用できるようになっています。 | ||||||||||||||||||
1-5-3 パッケージや図の作成新規のパッケージは、主に構造ツリー上のポップアップメニューから追加します。 新しい図は、構造ツリー上のポップアップメニューから、または【図】メニューから選択して作成します。
| ||||||||||||||||||
1-5-4 アイテムの作成と編集図を描くための基本的な操作方法は、一般的なドローイングソフトでの操作方法とそれほど変わりません。 ドローイングソフトに慣れている場合は、どんどん編集を進めてみてください。 |
Tips: 関係作成途中のキャンセル例えば、予定外のアイテムをクリックしてしまった場合など、関連作成途中でやり直したくなった場合は、 ESCキーまたは、マウスを右クリックすると始めの状態に戻ります。 関連以外の汎化や実現、依存など二つのアイテム間の関係線を編集する場合でも、操作方法は関連と同様です。 編集しながら気付いたと思いますが、作成したアクターやユースケースは、構造ツリー上にも追加されています。 また、左下のプロパティビューには、図上やツリー上で選択したアイテムのプロパティが表示されます。 UMLのデータをダイアグラムエディタ上や、構造ツリー上、そしてプロパティビュー上などから編集可能になっています。 場面に応じて、使いやすい編集方法を選択しましょう。 最後に今描いた図の名前をプロパティビューから変更しておきましょう。 まず、構造ツリー上で"ユースケース図"を選択します。 するとプロパティビューに図のプロパティが表示されますので、 名前を変更してEnterで確定させましょう。 |
Tips: アイテム削除時の注意点図上に追加したアクターやユースケースを削除するには、 ポップアップメニューから【図から削除】または【モデルから削除】を実行します。 削除メニューが二つあるのは、そのアクターやユースケースを、 モデルを共有したまま他の図にも配置できるためです。
|
Tips:ズームとスクロール一つ目の図が描けたところで、表示に関する操作を確認しておきましょう。
今描いた図は小さいのであまり必要性はありませんが、
大きな図を描く場合は、表示領域をかえながら編集することが必要です。
JUDEでは、ダイアグラムエディタ上での右ドラッグで、図を描いた紙をドラッグできます。
斜め方向の移動も簡単です。 |
Tips:UndoとRedoJUDEは、しっかりしたUndo(編集の取り消し)・Redo(編集のやり直し)機構を持っていて、
100回前の編集まで取り消すことが可能です。
この回数はシステムプロパティから変更する事もできます。 (【ツール】-【システムプロパティ】-【その他】) |
1-8 アクティビティ図を描いてみる |
つぎに"スコアを表示する"ユースケースについて処理の流れを描いてみましょう。 アクティビティ図をプロジェクトに追加します。 構造ツリー上で"スコアを表示する"ユースケースのポップアップメニューから、【アクティビティ図の追加】を選択します。 アクティビティ図が追加され、その図がダイアグラムエディタで表示されます。 ユースケース図の時と同様に、図の名前を変更しておきましょう。 "スコア表示の動作"という名前にしておきましょう。 アクティビティ図のツールバーには、次のボタンが並んでいます。 それでは、次のアクティビティ図を描きましょう。 アクティビティ図は、フローチャート図に近い図で動作の流れを表現しますので、わかりやすいですね。 この図では、プレイヤーが投球後、スコア表示が更新されるまでの処理手順がかかれています。 特にストライクのときのみ特別なアニメーションを表示することがわかります。 まず矢印線以外の開始状態、終了状態、アクション状態を作成していきましょう。 作成方法は、アクターやユースケースの作成方法と同様で、 それぞれのモードにして作成したい位置をクリックするだけです。 アクション状態に設定するアクション(entryアクション)は、図上で編集するかプロパティビューで編集します。 |
リサイズ"特別なアニメーションを表示する"アクション状態は、1行だと長いのでサイズを変更して折り返してみましょう。 サイズ変更は、アイテムの外枠を選択後、四隅に表示されるノブをドラッグして行います。 菱形の選択アイテムについては、同じ形の連結アイテムと間違えないように注意して作成します。 さて、動作の流れを表す矢印で各アイテムをつないでいきましょう。この矢印は遷移です。 接続する二箇所をクリックしますが、今度はクリックする順序が違うと向きが逆になりますから注意します。 毎回モードを選択するのは面倒ですから、アイテムの連続作成に挑戦してみましょう。 |
Tips:アイテムの連続作成
うまく作成できましたか?アイテムの連続作成は、慣れると非常に便利ですので、ぜひ習得しましょう。 [ストライク]は、遷移のガードにあたります。遷移の矢印をクリックして選択し、 プロパティビューにおいて、ガードの欄に"ストライク"と入力しましょう。 次に図をきれいにするために有効な三つのTipsを説明します。 複数の要素をまとめて整列させることで、図をきれいに仕上げることができます。 |
Tips:複数選択図上でアイテムを複数選択するには、選択モードにおいて以下の方法があります。
|
Tips:整列左揃え、右揃え、上揃え、下揃えなどの整列機能が利用できます。 ここでは、縦中央揃えを利用して左側のアイテム ("特別なアニメーションを表示する"アクション状態以外)を整列するときれいになりますね。 矩形選択で左側の全アイテムを選択し、【整列】-【縦の整列】-【縦中央揃え】としましょう。 |
Tips:線のスタイル線には二つのスタイルがあります。
状況により直角線スタイルに変更するときれいになります。 今回のアクティビティ図では、すべて直角線スタイルに変更しておくとよいでしょう。 線を選択後ポップアップメニューから【線のスタイル】-【直角線】とします。 |
1-9 クラス図を描いてみる |
次はクラス図です。特にクラス図とシーケンス図は使用頻度が高い図なのでじっくり集中して説明します。 この図は、ボーリングゲームとスコアに注目して分析したクラス図です。 ゲームは10個のフレームで構成され通常のフレームは2投あるが、最終フレームは3投目をもつことが整理されています。 "分析クラス図"と名前をつけて作成しました。 クラス図のツールパレットには、次のボタンが並んでいます。まず、大雑把にクラスを描いてから細かいところを描きましょう。全クラスを作成してみてください。 クラスの作成方法はアクターやユースケースと同様です。 下側の2本の線は、汎化です。汎化の作成時には、汎化元を先にクリックします。 下側にある2本の斜め線と破線以外は、関連です。その3本の関連を次に作成しましょう。 関連はユースケース図でも作成しました。 "ゲーム"クラスと"フレーム"クラス間の関連は、コンポジションになっています。 ゲームはフレームで構成され、ゲームがなくなればフレームもなくなるような関係を表現しています。 |
関連の端点に関するプロパティ設定関連には、集約や多重度などそれぞれの端点に関するプロパティがあります。 ここでは"ゲーム"クラス側の端点にコンポジションを設定します。 今までと違う編集方法を使いますので、注意してください。
コンポジションをポップアップメニューから設定してみましょう。 関連のポップアップメニューの表示位置で動作がかわります。 図のように関連の"ゲーム"クラス側でポップアップメニューを表示するとその端点に関する編集が可能です。 今度は、多重度をプロパティビューから設定してみましょう。 関連を選択するとプロパティビューが次のようになりますので多重度を設定しましょう。 ロールタブが二つの端点に対応して二つあるので、注意が必要です。 今は、ターゲットが"フレーム"となっている方(ロールB)のタブで多重度を10と設定します。 後はクラスの属性と操作の追加です。 |
クラスの属性の追加"フレーム"クラスに三つの属性を追加しましょう。次の三つの方法があります。
図上でフレームクラスのポップアップメニューを表示し、【属性の追加】を選択します。 その後、属性名として”1投目のピン数”と入力します。他の属性も、いずれかの方法で追加してみてください。 属性の削除はプロパティビューまたは構造ツリーから行います。可視性はprivate、型はvoidがデフォルトです。 もしそれらを変更したい場合は、プロパティビューから編集します。 属性の追加にはショートカットキー Ctrl+F も便利です。(操作の追加は、Ctrl+M) |
クラスの操作の追加操作に対する編集方法は、前の属性に対する編集方法と同様です。 ここでは、クラスのプロパティビューから作成してみましょう。 【追加】ボタンで操作を追加します。追加した操作の名前などの編集は、 このテーブル上または、操作固有のプロパティビュー上で編集します。操作固有のプロパティビューでは、 パラメータの設定などのより詳細な設定が可能です。【削除】ボタンは、選択されている操作を削除します。 【編集】ボタンは、選択されている操作の固有プロパティビューを表示します。 【↑】ボタン【↓】ボタンは、選択されている操作の順序を変更します。 "倒れたピンを登録する"操作を追加できたら、パラメータ"ピン数 : int"を追加しましょう。 操作固有のプロパティビューを開き、パラメタタブで同様に追加します。 今までのところついてこれているでしょうか? JUDEを使って図を描いてみるのが目的ですから、細かいことは飛ばして次に進みましょう。 |
1-10 シーケンス図を描いてみる |
次はシーケンス図です。 "ゲーム"クラスがもつ"倒れたピンを登録する"操作を中心とした処理の流れを描いてみましょう。 シーケンス図は、構造ツリーにおいてユースケースの下や、操作の下に追加することができます。 "ゲーム"クラスがもつ"倒れたピンを登録する"操作のポップアップメニューを表示し、 【シーケンス図の追加】を選択してください。 この図は、"プレイヤー"がボーリングの玉を転がすと、"投球監視"オブジェクトがそれを認識し、 "ゲーム"オブジェクトに倒れたピン数を登録する、 そしてストライクなら"スコア表示"オブジェクトが特別なアニメを表示するといった処理の流れを表現しています。 アクティビティ図でも似たような処理の流れを描きましたが、 シーケンス図ではオブジェクト間のメッセージのやり取りを時系列で表現しています。 さて、今まで描いてきた図とは結構見た目が違いますね。 編集方法も多少違いますので気を抜かずに進めましょう。 まず図の上側に並んでいる5つのオブジェクトを描きましょう。 フライングで描き始めていた人は、ちょっと待ってください。 ツールパレットからもオブジェクトを作成できるのですが、構造ツリーを活用するのが便利です。 具体的には、構造ツリーからベースとなるクラスを図にドラッグ&ドロップすることでオブジェクトを作成します。 ドロップするとオブジェクトの名前が編集状態になります。 ここでは特にオブジェクトを区別しませんので省略しています。 この場合BackSpaseキーで名前を空にしてEnterを押します。 構造ツリーで複数のクラスを選択し、一度に図にドラッグすることも可能です。 次にメッセージを作成していきます。 "プレイヤー"から"投球監視"オブジェクトへのメッセージは、非同期メッセージになっています。 ツールパレットの左から4番目のボタンで、非同期メッセージ作成モードにしましょう。 後は、"プレイヤー"のライフライン上をクリックし、さらに"投球監視"のライフライン上をクリックすれば、 メッセージの矢印が引かれます。message0という名前を2回クリックして"投球する"に変更しましょう。 同じように続く"1.1:倒れたピンを数える"メッセージを作成してみてください。今度は同期メッセージです。 また、これは、"投球監視"オブジェクト自身へメッセージ(自己メッセージ)を送付しています。 ツールパレットの左から3番目のボタンで同期メッセージ作成モードにしましょう。 先ほどは、ライフライン上の点をクリックしてメッセージを作成しましたが、 今度は活性区間上をクリックするように注意してください。2点目もその活性区間上をクリックしましょう。 |
メッセージへの操作の対応付けメッセージには操作を対応付けることが可能です。 例えば、対応づけられた操作の名前がクラス図で変更されると、メッセージ名も自動的に変更されるようになります。 操作を対応付ける方法は、メッセージのプロパティビューにおいて、操作の項目で操作を選択するだけです。 今作成したメッセージに"倒れたピンを数える"メッセージを対応付けましょう。 メッセージ送信先のベースクラスである"投球監視"クラスに、操作が登録されていれば、候補が表示されます。 もし、表示されていない場合は、【新規作成】ボタンを押して目的の操作を追加できます。 【プロパティ】ボタンを押すと選択されている操作のプロパティが表示されますので、名前やパラメータの変更が可能です。 常に操作を対応付ける必要はありませんが、これを利用することで図間の整合性を維持しやすくなります。 さて、今までの説明を踏まえて他のメッセージも作成してみてください。 |
Tips:活性区間のサイズメッセージを追加したり、移動したりするとメッセージ送付元の活性区間が勝手に長くなるのに気付くと思います。 これは、送付先の活性区間よりも送付元の活性区間は長くなっているべきで、 JUDEが自動的に活性区間の長さを調整しているためです。 JUDEは自動で活性区間の長さを短くはしませんので、場合によってはユーザが長さを短くすることが可能です。 活性区間の長さの変更方法は、アクション状態などのリサイズと同様の操作で行います。 選択すると四隅にノブが表示されますから、それをドラッグすることでリサイズ可能です。 ただし、活性区間の長さの制約は、非同期メッセージについては適用されません。 |
1-11 その他の図 |
紙面の都合もあり、他の種類の図については、説明を省略します。 ただ参考のために、ボーリングに関するコラボレーション図とステートチャート図の例のみ示します。
このコラボレーション図は、シーケンス図で描いた相互作用と全く同じ物を表現しています。 メッセージを作成する時は、まずリンク上の点をクリックしてください。 このステートチャート図は、ゲームの進行に関する状態を描いたものです。 |
1-12 その他のJUDEの機能 |
JUDEはこの記事で使った機能以外にも、以下の機能を持っています。今後の編集で利用してみてください。
|
1-13 さいごに |
ここでは、皆さんと一緒にUMLモデリングツールJUDEを使っていくつかの図を描いてきました。 JUDEで基本的なUMLを書くことができるようになったのではないでしょうか? 自分で手を動かすことで、あれ?どうだっけと思うこともあったのではないかと思います。 皆さんのUMLとUMLツールについての理解がこの記事により、少しでも深まったなら幸いです。 UMLはJavaや英語と同じように言語の一つです。 それらの習得と同じように、自分で書いたりしゃべったりと体をつかわないと、なかなか身につきません。 いつか開発に活用できるよう、UMLに触れることを継続していきましょう。 前の章で登場した図を、自分の手で描いてみるのもいいでしょうし、 頭の中のものを整理するのにUMLの図を描いてみるのもいいでしょう。 最後にJUDE開発者の1人である筆者から、皆さんにお願いがあります。 JUDEは、ユーザの皆さんからの声を受けながら、手に馴染むツールへ向け日々改善されています。 ぜひ要望やコメントなどをJUDEコミュニティサイトまでお寄せください。 |
1-14 参考 |
|