連載

Visioで始めるUMLモデリング

第2回 Visioを使ったUMLクラス図の拡張

デジタルアドバンテージ
2004/07/29
Page1 Page2 Page3 Page4

UMLクラス図の3つの抽象度レベル

 UMLのクラス図には次の3つの抽象度のレベルが考えられる。

  1. 概念レベル:要件定義〜分析段階でのUMLモデリング
  2. 仕様レベル:概要設計段階でのUMLモデリング
  3. 実装レベル:詳細設計〜実装段階でのUMLモデリング

 UMLモデリングでは、このような3つのレベルを、1、2と順番に経て、最終の3の実装レベルに到達すればよい。

 次の画面は、概念レベルのUMLモデル図である。この図では、基本的なクラス間の関係(=システム構造の概要)しか分からない。最初の概念レベルのUMLモデル図では、どのようなクラスがあり、それらがどう関連し合うのかといったシステム概要(とそこでの簡単な業務プロセス)が分かればよい。

概念レベルのUMLモデル図(クラス図)
どのようなクラスがあり、それらがどう関連し合うのかといったシステム概要が分かる。

 さらに次の画面は、仕様レベルのUMLモデル図である。この段階では、クラスが外部に提供するインターフェイスや機能(例えば「[発注]画面を起動する」など)を明確化する。これによりクラスの性格や機能が簡単に定義できる。ただしこの段階では、まだ、メソッドやフィールドの具体的な名前、クラスの内部処理に不可欠な細かなメソッドやフィールド、プロパティなどを考える必要はない。

仕様レベルのUMLモデル図(クラス図)
クラスが外部に提供するインターフェイスや機能(例えば「[発注]画面を起動する」など)が明確化されている。

 次に、この仕様レベルのUMLモデル図をさらに実装レベルにまで落とし込んで、実際にクラスとしてコーディングできる状態に仕上げる。具体的には、フィールドやプロパティの名前を決定したり、クラスに必要なメソッドやフィールド、プロパティを作成したりする。これにより完成できる最終的なUMLモデル図は、本稿がリバース・エンジニアリングで作成した(実装レベルの)UMLモデル図と同等になる。この実装レベルのUMLモデルのサンプル図面は、前回作成したUMLモデル図を参照してほしい。

 以上、Visioで作成できるUMLモデリングについて、クラス図の最も基本的な部分について解説した。しかし、UMLモデリングで記述できるクラス図はこれだけではなく、もっと詳細にも記述できる。次に、Visioで表現可能なクラス間の関係や関連について解説しよう。なお、以降の解説では、UML要素自体の内容や意味についての解説は割愛させていただく。これらに対する理解を深めるには、@IT:IT Architectの「【改訂版】初歩のUML」や「ここから始めるオブジェクト指向」などを参照していただきたい。

Visioで表現可能なクラス間の関連

 前回、クラス図に関連を設定し、その関連にロールや役割を割り当てた。特に必要がなければこれだけでも十分であるが、この関連をさらに詳細に定義することもできる。

 例えば、「メイン画面から[発注]画面を起動する」という関連があるが、これは「メイン画面から[発注]画面を操作する(逆に[発注]画面からメイン画面が操作されることはない)」という1方向の関連である。このような関連方向性は、UMLでは「誘導可能性(Navigability)」と呼ばれ、UMLモデル図では矢印付きの実線で表される。この誘導可能性は、次の画面のようにして設定することができる。

クラス間の関連に対する誘導可能性の設定
クラス間の関連に誘導可能性を設定しているところ。
  前回の「クラスのロールと多重度の設定」と同じように、「線」図形をダブルクリックすると、[UML 関連プロパティ]ダイアログが表示される。
  操作される方(誘導可能性がある方)の関連端の[IsNavigable]チェック・ボックスにチェックを入れる。
  [UML 関連プロパティ]ダイアログの[OK]ボタンを押して確定すると、でチェックを入れた方の関連端が矢印に変わる。

 リレーショナル・データベースではテーブルとテーブルの関連が1つの外部キーで結ばれるが、これと同様に、複数のクラスを特定の1つのキーとなる属性要素に限定して関連付けることができる。UMLではこのキーは「限定子」と呼ばれ、小さな□(四角形)で表される。

 例えば、商品クラスと注文クラスの関連ならば、「商品番号」というキーとなる属性要素に限定して関連付けることなどが考えられる。次の画面の例では、「id」という属性要素を限定子としてクラス間を結び付けている。

クラス間の関連に対する限定子の設定
クラス間の関連に限定子を設定しているところ。
  「線」図形をダブルクリックすると、[UML 関連プロパティ]ダイアログが表示される。
  [UML 関連プロパティ]ダイアログの[カテゴリ]欄から「関連」を選択する。
  [UML 関連プロパティ]ダイアログの[関連端]欄から限定子を設定したいクラスの関連端を選択する。
  [プロパティ]ボタンをクリックすると、[UML 関連端プロパティ]が表示される。
  [UML 関連端プロパティ]ダイアログの[カテゴリ]欄から「限定子属性」を選択する。
  [新規作成]ボタンをクリックすると、[限定子属性]欄に新しい限定子が追加される。
  追加された新しい限定子属性の項目を選択する。
  [プロパティ]ボタンをクリックすると、[UML 属性プロパティ]ダイアログが表示される。
  [UML 属性プロパティ]ダイアログの[カテゴリ]欄から「属性」を選択する。
  限定子属性の名前(本稿の例では「id」)を入力する。
  限定子属性の型(本稿の例では「VB::Integer」)を選択する。
  次々に[OK]ボタンをクリックして、すべてのダイアログを終了する。
  で選択した方の関連端が□(四角形)に変わる。

 さらに前回でも説明したように、クラス間の関係には「関係」だけでなく、「汎化」や「集約」など、さまざまなものがある。続いては、Visioで表現可能なクラス間の関係の種類について解説しよう。


 INDEX
  Visioで始めるUMLモデリング
  第2回 Visioを使ったUMLクラス図の拡張
    1.クラス図に属性要素を追加するには?
    2.クラス図に操作要素を追加するには?
  3.クラス図の抽象度レベルと表現可能なクラス間の関連
    4.Visioで表現可能なクラス間の関係の種類
 
インデックス・ページヘ  「Visioで始めるUMLモデリング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間