UTI UML教育研究所
トップページ> 読み物> コラム> 続はじめるUML 第8回
はじめる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 第8回
2006.10.2 掲載
UMLによるシステム設計
前回はアドバンスト受験の体験記をテーマにお送りしましたが、今回は前々回のケーススタディによるUMLを用いた「システム分析」に引き続き、「システム設計」をお届けします。

これまでの工程で、ビジネスプロセスやユースケースといったユーザから見た側面のモデルと、システム内部のデータ構造を表す分析レベルのクラス図を作成しました。 
ケーススタディの最終回となる今回は、ここまでの分析結果から明らかになった要求を実現するために必要なシステム構造とその振る舞いについて、コンポーネント図や相互作用図、クラス図を用いて表してみます。また、MDA(Model Driven Architecture)における特定のプラットフォームへの展開を行います。

◇コンポーネント図の作成
まずは、システムの内部を設計する前に、今までの分析結果からシステム全体の構造を俯瞰する意味でコンポーネント図を作成してみます。このコンポーネント図は、開発対象となるシステムを中心に、連携が必要な対象(企業、外部システム、サービスなど)をコンポーネントとして表現するものです。
今回のケースでは、要求分析で作成したユースケース図より、連携が必要な対象として「データベースシステム」が存在していることがわかっています。
(ここでのデータベースシステムは、単純なデータベースサーバではなく、各業務に共通する情報を集中的に管理するためのシステムで、各業務に特化したシステムから情報を利用するためのサービスを提供します。)
また、ユースケース記述より、このデータベースシステムのインターフェースとして、「利用者情報を取得する」「請求情報を取得する」が必要であることがわかります

図1 - コンポーネント図>>画像を大きく表示

◇相互作用図の作成
相互作用図は、オブジェクト間のメッセージのやり取りを表す図です。UML2.0では相互作用図として、シーケンス図とコミュニケーション図が定義されています。シーケンス図が時系列的な視点でオブジェクトのやり取りを記述するのに対し、コミュニケーション図はオブジェクト間の関連を重視する場合に適しています。UML入門者の方にとっては、時系列で記述されたシーケンス図の方がわかりやすいと思います。本稿でも、シーケンス図を使用して、ユースケース記述とコンポーネント図からシナリオを実現するために、システム内部のやりとりを表しています。なお、ユースケース記述に記載されているログイン部分の機能については、共通機能として抽出できるためここでは除外します。
また、相互作用図を作成するにあたり、システムアーキテクチャを決定しておくことも重要です。ここでは、マーティン・ファウラーの3階層構造のシステムアーキテクチャを採用します。ユーザインターフェース(画面表示)を担当する役割を「Presentation」、ユーザインターフェースから入力された情報をもとに判断や計算を行う役割を「Domain」、データベースやファイルなどに永続データとして記録する役割を「DataSource」として階層構造の役割分担を決めます。これらの役割を各オブジェクトのステレオタイプとして記述して表現します。
今回のケースでは、Presentation層には「請求画面」のオブジェクトを割当てます。 Domain層には「請求情報管理」のオブジェクトを新たに用意します。DataSource層には分析クラス図から請求情報を管理する「請求情報」のオブジェクトを割当てます。ただし、永続データである「請求情報」はデータベースシステムから取得する必要があります。

図2 - シーケンス図(PIM)>>画像を大きく表示

◇設計クラス図の作成

シーケンス図によりシステム内部の振る舞いを設計した後は、それを反映したシステム全体の構造を整理していきます。システムの構造を表現するために、シーケンス図や分析レベルのクラス図をもとに詳細化した設計レベルのクラス図を作成します。

図3 - クラス図>>画像を大きく表示

◇プラットフォームへの展開
ここまで作成してきたモデルは、特定のプラットフォームに依存しないモデルであり、MDAにおけるPIM(Platform Independent Model)にあたります。そこで、PIMからPSM(Platform Specific Model)への展開するにあたり、J2EEプラットフォームを選択します。また、PIMとPSMの対応付けを以下のように行います。

図4 - PIMとPSMの対応付け>>画像を大きく表示

この対応付けに従って、PIMのシーケンス図(「請求情報の作成」部分)をPSMに変換してみると次のようになります。

図5 - シーケンス図(PSM)>>画像を大きく表示

以上でケースタディによるUMLを用いたモデリングは終了ですが、いかがでしたでしょうか?実際のシステムではもっと複雑な事象を扱うことになると思いますが、本連載がUMLモデリングをはじめるきっかけになれば幸いです。

次回は、弊社ネットワーク管理者によるOCUP受験体験記をお届けします。

コラム
このコラムでは、バージョンアップしたパターンウィーバーの新しい機能について紹介しています。
今回は、まもなくリリース予定のバージョン2.2の主な新機能について簡単に紹介します。

◇パターンウィーバー バージョン2.2の主な新機能
■多言語対応
1つのモデルを複数の言語(日本語+英語+中国語など)で編集できるようになります。これにより、外国人技術者とのコミュニケーションにUMLが利用可能になり、オフショア開発に活用できます。
なお、多言語対応のモデルはStandard版でのみ新規に作成できますが、Lite版でもStandard版で作成された多国語のモデルを編集することは可能です。

■各種出力
PDFや各種画像ファイルへの出力は以前のバージョンでも対応していましたが、今回のバージョンアップにより、MS-Wordへの出力が可能になります(Standard版のみ)。

■ソースコード生成、リバースエンジニアリングの改善
モデルとソースコード連携が大幅に改善されています。

  • モデル全体のソースコード生成に対応します。
  • JARファイルのリバース時に、Javaのパッケージ構成がモデルの名前空間に反映されるようになります(Standard版のみ)
  • JARファイルのリバース時に、クラス図を自動生成するようになります(Standard版のみ)
  • JARファイルのリバース時に、汎化関係と実現関係を再現するようになります(Standard版のみ)
  • インナークラスのリバースに対応します(Standard版のみ)
  • 多重配列のリバースに対応します(Standard版のみ)
そのほか、多くの細かな改善がなされており、書きやすさの面でもかなり向上しています。


■筆者紹介
株式会社テクノロジックアート テクニカルデプト システムコンサルタント
勝浦 正博/Masahiro Katsuura

パターンウィーバー(PatternWeaver) ver2.1
さらに使いやすく!
  • 名前空間(ネームスペース)の管理機能を搭載
  • 各種環境設定(デフォルト設定)が可能に
  • モデルのビュー(視点)管理機能を搭載
  • 最新Eclipseにも対応
  • Eclipse3.1.1へ対応
  • 組込み系ユーザにも対応
  • 状態遷移表の機能を搭載
  • C++ソースコード生成プラグイン
●商品に関するお問い合わせ
株式会社テクノロジックアート
e-mail : pw@tech-arts.co.jp
http://pw.tech-arts.co.jp/