ソフトウェア工学

UMLモデリング

最終更新日:2007.10.13  - 渕田孝康

UML の経緯

UML は Unified Modeling Language(統一モデリング言語)の略であり、1990年代に群雄割拠していたオブジェクト指向分析・設計方法論の統一をはかって、1994年頃に Ratinal Software 社の Grady Booch と Jim Rumbaugh が活動を開始したことに端を発する。その後、方法論そのものを統一することは困難であるという見解から、まずは方法論で使用されるモデルの表記法を統一しようという方向に変化した。

その結果、1997年に、オブジェクト指向業界最大の団体である OMG(Object Management Group) によって UML1.1 が標準仕様として採択された。2003年3月段階での最新版は UML1.5 であり、現在 2.0 の仕様策定が進んでいる。

UML の位置づけ

モデリング言語として、OMGのお墨付きで登場したUMLは、ソフトウェア開発の救世主であるかのような受け入れ方をされ、多くのソフトウェア開発プロジェクトがUMLを採用した。OMGが進めているUML技術者の資格認定等も、その傾向に拍車をかけている。UMLを使わないプロジェクトは旧式開発とみなされ、逆にUMLを使えば開発効率は飛躍的に向上するという認識が多くなされている。

しかし、はじめに断っておくが、

UMLは描き方の基本を決めているだけ

である。

「どのようにして描くのか」や、「どのようにプログラムコードと関連付けるのか」については、何も決められていない。

したがって、UMLを使えば魔法のようにソフトウェアが作られるなどということは、決してない。

そして、この講義の目的も、UMLを修得することではない

「工程管理されたソフトウェア開発方法」

を修得することこそ、本講義の目的である。そのためにオブジェクト指向分析と設計の技法について説明していくが、その一環としてUMLについても触れる。UML記法の背後にあるオブジェクト指向的な考え方を身につけることが重要である。

UML図の種類

UMLは、大雑把に言うと以下の9種類の図である。

分析・設計の各段階において、これらの図をたくさん描くことで、問題を整理し、コード化へスムーズに移行することがUMLの目的である。

しかし、実際に9種類の図をすべて駆使して分析・設計を行わなくても、ソフトウェア開発は可能である。このページでは、上の9つの図の中で、特に重要な図であると考えられる以下の3つについて説明を行う。なお、ここでは各図の概要だけを述べ、具体的な例は実際問題に適用しつつ示すことにする。

ユースケース図

ユースケース図(Use Case Diagram)は、システムがどのように機能するべきか(ユースケース)、およびその外部環境(アクター)を表す図である。システムを使用するエンドユーザーの視点からそのシステムを見ることができる。そのため、エンドユーザーや利用領域の専門家とコミュニケートして、要求に対する相互の理解を保障することが可能となる。

つまり、ユースケース図は、システムの外部と内部との境界をはっきりさせる図であるということができる。

UM-図1

上の図はユースケース図の例を示している。

ユースケース図には、「アクター」と呼ばれる部外者と、「ユースケース」と呼ばれるシステムの持つ機能が登場する。

アクター

ユースケース

ユースケース記述(イベントフロー)

シナリオ

シーケンス図

シーケンス図 (Sequence Diagram) は、システムに登場するオブジェクト間の相互作用を時系列に沿って並べて表現した図である。シーケンス図を使用すると、ユースケースを実現するのに必要なオブジェクトの集合と、そのやりとりを明確に表現できる。オブジェクト間でやり取りされるメッセージを時間順にひとつずつ記述できるため、シナリオと対応させて具体的な内容を示すのに便利である。

UM-図2

上の図はシーケンス図の例を示している。

シーケンス図には、上部に「オブジェクト」を持つ「タイムライン」と呼ばれる縦線と、その上に縦長の長方形で表された「アクティベーション」、さらにアクティベーション間の「メッセージ」によって構成される。

オブジェクト

タイムライン

アクティベーション

メッセージ

メッセージには同期型と非同期型とがある。通常の場合、送信されるメッセージは同期型である場合が多い。同期型メッセージは、呼び出されたオブジェクトでの処理が終わると必ず元のオブジェクトに復帰する。このとき特にメッセージを返さない場合は、復帰メッセージの矢印は省略できる。

同期メッセージは、プログラム言語における手続き呼び出しを表現するのに用いられる。

クラス図

クラス図 (Class Diagram) は、対象領域やシステムの静的な構造を表す図であり、「クラス」と「クラス間の静的な関係 (Relationship)」を図に表現したものである。

クラス図は分析段階でも設計段階でも利用されるが、分析段階のクラス図は利用者の立場に立って問題領域を表すように書かれる。一方、開発段階におけるクラス図は開発者の視点から、より詳細化された形で書かれる。

UM-図3

上の図はクラス図の例を示している。

クラス図は、長方形の中に名前や属性、操作等を書き込んだ「クラス」と、クラス間をつなぐ「関係」によって構成される。関係にはさらに「関連」、「集約」、「汎化」など、いくつかの種類がある。また、設計段階になると、関係の両端に「ロール」や「多重度」を書き入れる場合もある。

クラス (Class)

UM-図4

抽象クラス (Abstract Class)

UM-図5

インターフェイス (Interface)

UM-図6

関係 (Relation)

UM-図7

関連 (Association)

UM-図8

UM-図9

集約 (Aggregation)

UM-図10

合成 (Composition)

UM-図11

汎化 (Generalization)

UM-図12

実現 (Realization)

UM-図13

依存 (Dependency)

UM-図14

まとめ

UML の9つの図のうち、よく使われる3つに限っておおまかな説明を行った。

わずか3つの図についてでさえ、きわめて複雑な規則が定められていることが分かると思う。

UML は基本的に図を描くことでモデルを記述していくグラフィカル言語であるから、その文法に当たるものは図の描き方であり、形である。したがって、ある程度細かく記述方式が定められているのは仕方がない。

しかし、それにしても、ここに示された決まりを厳格に守って図を描いていくことは容易ではないと、誰もが思うだろう。しかも、UML は図の形は規定していても、具体的な描き方までは示していない。つまり、与えられた問題をUML の9つの図の形にしていく方法については、ほとんど何も決められていないのである。

したがって、UML を使ってソフトウェア開発を行おうとすると、まずはたくさんの例題を参考にして、試行錯誤で図を作っていき、それを繰り返すことでノウハウを蓄積するしかない。UML では標準的な記述の形が決まっているだけでも、参考にする多くの例題が利用できるので「まし」だと思う。

UML を利用したソフトウェア開発で最も重要な点は、オブジェクト指向による分析と設計を行うという点である。図を正確に描くことにこだわって、この点を忘れてしまっては本末転倒だが、逆に言うと、オブジェクト指向的分析と設計ができるなら、図の正確性は多少犠牲にしてもかまわないということでもある。

大規模プロジェクトに携わるのなら仕様書としての図にこだわる必要がある。記法の統一されたUMLに準拠して書く必要もあろう。が、この授業ではあまり正確性にはこだわらないで行く。背後のオブジェクト指向的な開発方法を身につけてほしい。


前へ
(オブジェクト指向モデル)
TOP
(ソフトウェア工学)

次へ
(UMLによるオブジェクト指向開発)