UMLによってモデリングを行う場合、さまざまな図を使います。UMLの最新バージョンである「UML 2.0」では13の図が定義されています。また、モデリングに用いる手法は図によって異なります。今回は、UML 2.0で定義している図とそれぞれの図で用いるモデリング手法を整理します。

UMLとオブジェクト指向

ここまでは、UMLに限定せず、情報システムの一般的なモデリングについて説明しました。ただし、「何を」モデリングするかについては説明しましたが、「どのように」モデリングするかという手法については説明していません。UMLについて説明するためには、この「どのように」についても触れる必要があります。

冒頭の説明では省きましたが、UMLを正確に表すと「オブジェクト指向という手法でモデリングした内容を標記するための言語」となります。

では、オブジェクト指向とは何なのでしょうか。実は、このシンプルな設問に答えることはなかなか難しいです。なぜなら、オブジェクト指向についてどこかで正式に定義されているわけではなく、また、利用目的によって幅広い解釈がなされるからです。しかしながら、本連載の読者にあえて説明するとすれば、オブジェクト指向とは「対象領域に登場する物や概念の構造と役割、そしてそれらの相互作用に着目してモデル化する手法」と言えます。

ここでいう「物や概念」がオブジェクト指向の「オブジェクト」に当たります。なお前述したように、オブジェクトはモデリングの視点によって変わります。例えば、ビジネスモデリングの視点で言えば、オブジェクトは「人、物、事象、情報」などになり、相互作用とは主に業務プロセスになります。

モデリング手法によって異なる図

UMLによるモデリングでは図を用います。表1に示したのは、UML 2.0で定義されている13種類の図です(本稿執筆時点での最新版はUML 2.1ですが、特に断りのない場合はUML 2.0を前提とします)。これらは、モデリング対象の構造を表現する「構造図」と動作(振る舞い)を表現する「振る舞い図」に大別できます。各図の説明に出てくる「クラス」や「インスタンス」などの言葉は、Javaなどオブジェクト指向言語を使っている方にはなじみがあるかもしれませんが、そうではない方も多いと思います。こうしたオブジェクト指向特有の言葉は、連載を通して順次説明していきます。

なお、モデリングに用いる図は手法によって異なります(図1)。著者が20年以上前にこの業界に入ったころ、システムの仕様を書く際にはフローチャートを使うことが多かったです。この仕様化技法にあえて名前を付けるとすれば、プロセス指向(Process Oriented Approach)となるでしょうか。その後、構造化技法という考え方が出てきて、DFD(データフロー・ダイアグラム)による仕様記述を用いるようになりました。この構造化技法もモデリング手法の1つです。続いて、リレーショナルデータベースの広まりとともに、ERD(エンティティ・リレーションシップ・ダイアグラム)によるデータのモデル標記がスタンダードになりました。ERDを用いたモデリングはDOA(Data Oriented Approach)と呼ばれています。余談ですが、DOAという言葉は和製英語のため、海外では通じないようです。

図1 モデリング手法と図の関係

このように、プロセス指向から構造化技法、DOA、オブジェクト指向と、時代とともに新たなモデリング手法が登場してきました。しかし、一概に新たな手法が古い手法よりすぐれているということはありません。開発現場では新たな手法の長所を取り入れながら、旧来の手法を併用するのが一般的です。例えば、構造化技法でも機能を表す「バブル」の中身を説明する際にフローチャートを用いましたし、DOAでもERDとDFDを併用するのが一般的です。オブジェクト指向の表記法であるUMLではこの点が熟慮されており、従来のモデリング手法の考え方を基にした図も多く含まれています。

今回は、UMLの概要について説明を進めてきたため、UMLによる図の作成は行いませんでした。次回からは、具体的なモデリング例を通して、どのような局面でどのようにUMLを使っていくのかを説明していきます。

表1 UML 2.0で定義されている13種の図

図の種類と名称

図の目的

構造図

クラス図

クラスの構造やクラス間の関係、役割を表現する

オブジェクト図

ある状況におけるオブジェクト(もの)どうしのある瞬間における関係を表現する

コンポジット構造図

クラスやコンポーネントなどの要素の内部構造、およびそれらの関係を表現する

コンポーネント図

ソフトウェアコンポーネントの構成を表現する

配置図

ハードウェアやJ2EEコンテナなどの実行環境の上に、開発したプログラムなどをどのように配置するかを表現する

パッケージ図

クラスなどのモデル要素が、どのパッケージにグループ化されているかを表現する

ユースケース図

システムの機能と、システム利用者や他システムなどの外部要素との関係を表現する

振る舞い図

相互作用図

シーケンス図

相互作用するオブジェクト間のメッセージの受け渡しを、時間順序系列に表現する

コミュニケーション図

相互作用するオブジェクト間のメッセージの受け渡しを、オブジェクト間の接続関係に焦点を当てて表現する

タイミング図

リアルタイム処理システムなど、細かな時間間隔での状態遷移や時間制約、メッセージの送受信などを表現する

相互作用概要図

相互作用図どうしの関係を表現するために、シーケンス図をその内部要素として記述し、他のシーケンス図などとの関係をアクティビティ図で表記したもの

ステートマシン図

1つのクラスに着目し、そのオブジェクトの生成から破棄までの状態の移り変わりを表現する

アクティビティ図

システム(や業務)のアクティビティ、データの流れ、アクティビティ実施の条件分岐などを表現する

『出典:システム開発ジャーナル Vol.1(2007年11月発刊)
本稿は原稿執筆時点での内容に基づいているため、現在の状況とは異なる場合があります。ご了承ください。