連載

Visioで始めるUMLモデリング

第1回 「習うより慣れよ」方式で学ぶUMLモデリング

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

モデル・エクスプローラに追加されたUML要素

 リバース・エンジニアリングを行うと、次の画面のように、[モデル エクスプローラ]上にUML要素が追加される。

[モデル エクスプローラ]に追加されたUML要素
Visioでリバース・エンジニアリング処理を行うと、それによって生成されたUML要素がVisioのモデル・エクスプローラ上に挿入される。右の説明で「(UML要素)」と記述された項目は図面ページにドラッグ&ドロップできる。
システム(UML要素)。モデル化されたシステム全体(すべてのUMLモデルの集合体)を表す特殊なパッケージ(パッケージについては後述)。
UMLモデル。システムを抽象的な概念レベルでまとめたもの。例えば、静的な「構造」という抽象概念でシステムをとらえたUMLモデルは「静的モデル」となり、動的な「動作や振る舞い」という抽象概念でシステムをとらえたUMLモデルは「動的モデル」となる。そのほかにも「機能モデル」「構成モデル」などがある。VS.NETからリバース・エンジニアリングされたUML要素は、「静的モデル」の中に挿入される。
パッケージ(UML要素)。サブシステムやUML要素をグループとしてまとめて管理する。リバース・エンジニアリングすると、ソース・コード上の「名前空間」は、UMLモデル上の「パッケージ」となる(この画面の例では、「SSC_Win名前空間」は「SSC_Winパッケージ」となっている)。
サブシステム(UML要素)。システム内のあるひとまとまりの機能やサービスを提供する部分をグループ化した特殊なパッケージ。機能やサービスを外部に公開するための「操作(=インターフェイス)」を持つので、1つの大きなオブジェクトのように扱うことができる。リバース・エンジニアリングすると、VS.NET上の「プロジェクト」は、UMLモデル上の「サブシステム」となる(この画面の例では、「SSC_Winプロジェクト」は「SSC_Winサブシステム」となっている)。
モデル図(「UMLダイアグラム」とも呼ばれる)。モデル図のアイコンをクリックすると、それに対応した図面ページが開く。モデル図は、図面ページにUML要素などをドラッグ&ドロップした段階で生成され、リバース・エンジニアリングした直後には存在しないので注意してほしい。
クラス要素(UML要素)。内部に「属性」と「操作」を持つオブジェクト。ソース・コード上の「クラス」「プロパティ」「メソッド」は、UMLモデル上の「クラス」「属性」「操作」となる。
属性要素(UML要素)。クラス内の属性を表す。図面ページにドラッグ&ドロップすると、所属しているクラス要素の図形が図面ページに追加される。
操作要素(UML要素)。クラス内の操作を表す。図面ページにドラッグ&ドロップすると、所属しているクラス要素の図形が図面ページに追加される。
C#、C++、IDL、Visual Basicのデータ型を格納するパッケージがデフォルトで登録される。

 VisioではこれらのUML要素を使うことで、簡単にUMLモデリングができる。それでは、実際にUMLモデリングを行ってみよう。

UML要素を使ってUMLクラス図を作成しよう

 UMLモデリングでは、さまざまなモデル図(例えば、クラス図、シーケンス図、ユースケース図など)が利用される。詳しくは次回以降で解説するが、その中で最も頻繁に使われる代表的なモデル図が「クラス図」である。

 クラス図は、システム(もしくはプログラム)の静的な構造を設計するためのモデル図である。よってクラス図を描けば、システム構造がより明確になり、システム全体を把握することが容易になる。

 ここでは、先ほど生成されたUML要素を元にクラス図を書いてみよう。

 といっても、クラス図の作成は非常に簡単だ。クラスのUML要素を図面ページの中にドラッグ&ドロップするだけである。次の画面では先ほど示したサンプル・プログラムのメイン画面であるStartFormクラス要素をドラッグ&ドロップしたところである。

クラス図の作成
[モデル エクスプローラ]の中にあるクラスのモデル要素を図面ページにドラッグ&ドロップする。この例では、サンプル・プロジェクトのメイン画面であるStartFormクラス要素を図面ページにドラッグ&ドロップした。
  クラス名。内部に属性と操作を持つ。
  クラス内の属性。ソース・コード上のプロパティ。
  クラス内の操作。ソース・コード上のメソッド。

 先に示した「サンプル・プログラム『Smart Stationery Corp』Windowsフォーム版」のユーザー・インターフェイスには、メイン画面以外にも独立した4つの画面があった。この4つの画面のクラス要素(具体的には、[発注]画面のOrderFormクラス要素、[出荷指示]画面のShipFormクラス要素、[請求書発行]画面のBillFormクラス要素、[在庫管理]画面StockFormクラス要素)を同じように図面ページにドラッグ&ドロップしたのが次のUMLクラス図である。

サンプル・プロジェクトのUMLクラス図
メイン画面のStartFormクラス要素に加え、[発注]画面のOrderFormクラス要素、[出荷指示]画面のShipFormクラス要素、[請求書発行]画面のBillFormクラス要素、[在庫管理]画面StockFormクラス要素の4つを同じように図面ページにドラッグ&ドロップしたUMLクラス図。なお、これらのクラス要素以外にもリバース・エンジニアリングされたクラス要素は多数あるが、今回のUMLモデリングではモデル図に含めなかった。

 以上のように、クラス要素を図面ページに配置すると、どのようなクラスがあるかが明確に分かるようになる。しかし、どのクラスとどのクラスが「関係」しているのかが分からない。よって、上の図にクラス間の関係を書き加える必要がある。

 では、これらのクラス間に、一体どのような関係があるのだろうか? これらのクラスには、次のような関係がある。

  1. 「メイン画面から[発注]画面を起動する」という関係
  2. 「メイン画面から[出荷指示]画面を起動する」という関係
  3. 「メイン画面から[請求書発行]画面を起動する」という関係
  4. 「メイン画面から[在庫管理]画面を起動する」という関係

 つまり、それぞれ2つの画面(=2項)の間に「起動する/される」という関連、つまり「2項関連」がある(ちなみに、「関係」には「関連」「集約」「汎化」などの種類があるが、詳しくは次回以降で解説する)。この関係をクラス要素の名前を使って表現すると、次のようになる。

  1. 「StartFormクラス/OrderFormクラスが起動する/される」の2項関連
  2. 「StartFormクラス/ShipFormクラスが起動する/される」の2項関連
  3. 「StartFormクラス/BillFormクラスが起動する/される」の2項関連
  4. 「StartFormクラス/StockFormクラスが起動する/される」の2項関連

 UMLクラス図において「関係」は「線」図形を用いて表される。具体的には、関係のあるクラスとクラスの間に線を引く。よって、上の4つの関係を表すために、UMLクラス図に線を書き加えよう。


 INDEX
  Visioで始めるUMLモデリング
  第1回 「習うより慣れよ」方式で学ぶUMLモデリング 
    1.Visioを使ったUMLモデリングの導入
    2.VS.NETプロジェクトのリバース・エンジニアリング
  3.UML要素を使ったUMLクラス図の作成
    4.UMLクラス間の関連の設定
 
インデックス・ページヘ  「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 記事ランキング

本日 月間