UTI UML教育研究所
トップページ> 読み物> コラム> 使えるUML 第6回
はじめるUML(全12回)
  はじめてみよう!
  モデル要素の整理整頓
  システム全体の構造(1)
  システム全体の構造(2)
  システム全体の構造(3)
  システム化対象の業務(1)
  システム化対象の業務(2)
  システムの動き(1)
  システムの動き(2)
  状態の移り変わり
  OCUPにチャレンジ!
  UML2.0総括(最終回)
続はじめるUML(全10回)
  使ってみよう!
  UMLによる業務分析
  営業職のOCUP受験体験記
  UMLによる要求分析
  インターメディエイト受験体験記
  UMLによるシステム分析
  アドバンスト受験体験記
  UMLによるシステム設計
  情報システム管理者が利用するUML
  続はじめるUML総括
使えるUML(全10回)
  使いこなしてみよう!
  物事を分けてとらえる
  コンポーネント図のいくつかの表現方法
  枠組みを使用してとらえる
  内容とその表現方法をわける
  パターンの表現
  続・パターンの表現
  モデルのモデル
  あいまいさを排除する
  「どのように(How)」から「何を(What)」へ
  大人のオブジェクト指向(最終回)
資格取得までのステップ
FAQ
教育コンテンツ
キャンペーン
ブックプラス
パートナープログラム
認定ユーザープログラム
メールマガジン登録
お問合わせ
使えるUML 第6回

パターンウィーバー(PatternWeaver) ver2.2
さらに使いやすく、新機能満載!
  • 多言語によるモデル開発をサポート
  • モデル駆動型のSOA(サービス指向アークテクチャ)をサポート
  • MS-Word形式へのドキュメント出力をサポート
  • RCP(Rich Client Platform)版の提供を開始
  • 洗練された各種ダイアグラム
  • 操作性の強化
  • リポジトリ(UML要素管理機能)の強化
  • ソースコード連携の強化

評価版がダウンロードできますので、ぜひお試しください。
http://pw.tech-arts.co.jp/download/community_edition.html

●商品に関するお問い合わせ
株式会社テクノロジックアート
e-mail : pw@tech-arts.co.jp
http://pw.tech-arts.co.jp/

Macユーザーの方注目!Mac版パターンウィーバーver2.2ベータ版が無料でダウンロード可能 〜8/31まで
2007.7.5 掲載
パターンの表現
今回は、前回話題にしたMVCパターンを利用した例を示すとともに、MVCパターンをはじめとしたアーキテクチャパターンや、GoFのパターンに代表されるデザインパターンなどのパターンをUMLでどのように表現すれば良いのかを見ていきたいと思います。

◇MVCパターンの例
前回は、次の表1のようにシステムの構造を分割するMVCパターンについて見てみました。

No 略語 正式名称 日本語訳 説 明
1 M Model モデル データやビジネスロジック
2 V View ビュー ユーザインタフェース
3 C Controller コントローラ モデルとビューの仲介役
表1 MVCの内容

今回はMVCパターンの例として、次のような小さなアプリケーションを考えてみます。

・「時計」をソフトウェア上で実現する。
・「アナログ表示」と「デジタル表示」を切り替える。
・内部的な時刻情報が更新されたタイミングで、表示も更新する。

最初に、簡単なユースケースを定義してみました。

図1 時計アプリケーションのユースケース
図1 時計アプリケーションのユースケース

世の中に既に存在する時計アプリケーションには、日付を確認できるものや、世界中の時刻を表示できるもの、各種設定を行えるものなど、さまざまなものがありますが、ここでは最も簡単で最も主要なユースケースである「時刻を確認する」に注目しています。

次に、「時刻を確認する」ユースケースに関係する初期の概念クラス図として、今回は次の図2のようなモデルを考えました。「時間」は、「時(hour)」と「分(minute)」と「秒(second)」に分けられます。時、分、秒は、感覚的に似ていると感じられるので、ここでは抽象的な「時刻要素」に汎化しています。ユースケースの定義によって、「時刻を確認する」こと以外は範囲外としているので、「年月日」や「国」などの概念は登場しません。

図2 時計アプリケーションの概念クラス図
図2 時計アプリケーションの概念クラス図

MVCパターンを採用した際の最も大きな特徴は、アプリケーションの中核的な内容であるモデルと、その表現手段であるビューを分離することです。次の図は、時計アプリケーションのモデルに該当するオブジェクトが、アナログ表示とデジタル表示といった複数のビューによって表現されるイメージを表したものです。モデル部分は、先ほどの概念クラス図で定義したクラスのインスタンスであることに注意してください。

図3 アナログ表示とデジタル表示のイメージ
図3 アナログ表示とデジタル表示のイメージ

◇UMLでのパターンの表現
特に単体で動作するスタンドアローンアプリケーションなどの場合は、MVCアーキテクチャパターンの実現に、デザインパターンのひとつであるObserverパターンが利用されることが多いでしょう。Observerパターンでは、あるオブジェクトに変化があった際に、他のオブジェクトへ通知を行います。

次の図4は、UMLのコンポジット構造図の要素であるコラボレーション(協調)によって、時計アプリケーションでObserverパターンが採用されていることを表現したダイアグラムです。パターンとは、よくある問題やそれに対する解決方法をカタログ化したものですので、「考え方」を再利用するものと捕らえることができます。この図のコラボレーションは、その「考え方の再利用」を時計アプリケーションに当てはめていると言えます。

「コラボレーション」は、複数のインスタンスが、どのように協調して共通の目的であるタスクを遂行するかを表すため、ある側面以外の詳細な内容は省略されます。詳細な内容のうち、特にオブジェクトの相互作用などは、コラボレーションに関連付けられた別のダイアグラムで記述することができます。

図では、時計アプリケーションで「Observer」という名前が付けられたコラボレーションが行われることが示されています。時計アプリケーションのObserverコラボレーションには、状態の変更が通知される側のオブジェクト(subject)として「アナログ表示」クラスのオブジェクトが、通知する側のオブジェクト(observer)として「時刻」クラスのオブジェクトが参加します。ここでの「アナログ表示」クラスは、アナログ時計を表示するためのクラスです。

図4 時計アプリケーションでのObserverコラボレーション
図4 時計アプリケーションでのObserverコラボレーション

図4を図5のように別の書き方で記述することができます。2つの図は同じ意味を表しますが、例えばパートであるオブジェクトに着目したい場合と、パートの型であるクラスに着目したい場合などで記述方法を選択します。

図5 時計アプリケーションでのObserverコラボレーションの別の記述方法
図5 時計アプリケーションでのObserverコラボレーションの別の記述方法

Observerパターンを実装上のフレームワークとして再利用する場合などには、次の図6のように、コラボレーションに参加するクラスを抽象クラス(またはインターフェース)として定義する方法が考えられます。

図6 抽象クラスを利用したObserverコラボレーション
図6 抽象クラスを利用したObserverコラボレーション

コラボレーションが別のコラボレーション内で共通的に存在することを表す「コラボレーション使用(協調使用)」や、「考え方」の再利用だけではなく、モデル上での定義を再利用するための「パラメータ化コラボレーション」については、また次の機会にご紹介することにします。

◇まとめ
今回は、MVCパターンを利用し、モデルとビューを分離する例である時計アプリケーションと、UMLのコラボレーションを利用してパターンを表現する方法をみてみました。時計アプリケーションで行われる相互作用などの詳細や、コラボレーションの高度な利用方法については、また次の機会にみてみましょう。

◇書籍紹介
実装に密着したパターンをUMLで管理する方法に関する詳細につきましては、弊社社員が執筆に関わりました「現場のUML」をご参照ください。

現場のUML 現場のUML
【著作】 浅井麻衣/重田正俊/橋本大輔/浜口弘志/藤井啓詞
【監修】 桐越信一/長瀬嘉秀
【出版】 株式会社ソーテック社

また、UMLによる設計/開発・支援に関しましては、弊社テクノロジックアートで提供しておりますトレーニングコースや、コンサルティングサービスをご活用いただけます。


■筆者紹介
照井 康真/Koma Terui
株式会社テクノロジックアート UMLモデリンググループ グループリーダー シニアシステムコンサルタント