カテゴリ:8.システム開発 > 8.3 UML詳細

UML(Unified Modeling Language)とは
UMLは、Unified Modeling Languageという言葉のとおり「統一モデリング言語」である
・Unified(統一された)という言葉のとおり、メーカや製品に依存しません。
・Modeling(モデリング)は模型(モデル)を作ることを意味します。データベースの世界ではモデリングとしてE-R図を描く。
・Language(言語)というと、JAVAなどのプログラム言語を思い浮かべるかもしれないが、そうではない。言語よりは図のほうが近いだろう。
・OMGという分散オブジェクト指向技術の標準化団体が定める。OMGはObject Management Groupの略であるがOh My Godと覚えると覚えやすいかもしれない。
UMLは「統一言語」なのに、オブジェクト指向との関連が強い。OMGというオブジェクト指向の団体が作成したことも理由であるが、オブジェクト指向のプログラム開発に利用される。
・以下が分かりやすい
http://www.objectclub.jp/technicaldoc/uml/umlintro2#usecase

UMLの必要性
・ネットワークの世界でいうと、ルータのConfigを読むのは難しいが、ネットワーク構成図があると全体像がわかりやすい。
プログラムの世界でも同じことが言えて、イメージ図があるとわかりやすい。その書き方が人によってまちまちであったら、大変。そこで、UMLで世界標準のモデリング方法が作成された。
・ただ、種類が多いことから逆に使いにくいとの評判もある。すべてのケースでUMLを使うのではなく、必要に応じて使う企業が多いと思う。

UMLの13のダイヤグラム(図)
(1)ユースケース
http://sm.seeeko.com/archives/65920682.html

(2)アクティビティ図
http://sm.seeeko.com/archives/65793281.html

(3)クラス図
http://sm.seeeko.com/archives/65793283.html

(4)シーケンス図
http://sm.seeeko.com/archives/65793282.html

(5)オブジェクト図
http://sm.seeeko.com/archives/65910838.html

(6)ステートマシン図
シーケンス図やコミュニケーションズでは、オブジェクト間の関係を表記していた。一方、ステートマシン図はあるオブジェクト内の状態を表す。

例えば、お店が「営業中」⇔「準備中」

(7)コンポーネント
ソフトウェアの構成を表す。
右上にLANのモジュールのような記号がついているのがトレードマーク

(8)配置図
システム構成図的なものである。
サーバ、クライアントなどのハードウェア環境とともに、ファイルの状態も表す。
ファイルの右上にはファイルのアイコンがついている。

(9)コミュニケーションズ
オブジェクト間の関係を表記


■資格は2種類
・OMG認定UML技術者(OCUP)
UMLモデリング技能検定・・日本独自 15750円  ・・・こっちが人気ありそう。

UMLを記述するツール
PPTで書くのも良いだろうが、便利なツールがたくさんある。
MicrosoftVisioUMLを書くのに便利なツールのひとつだ。
また、プログラムからUMLを自動で書くツールなどもある様子。(私は使ったことが無いので不明だが)

・ユースケース(Use Case)とは、利用者(アクターと言います)がどんな場面(case)で使う(use)のかという「利用シーン」と考えてください。※アクターは、人だけではなく、外部のシステムもアクターになり得ます。こちらにもかるく解説しています。
・要件定義にて利用され、システムを理解するのに便利な図です。

過去問(H18春AD午前)を見てみましょう。
問31 次のユースケース図の説明はどれか。
usecase1
ア 在庫管理システムは人ではないので,アクターは注文担当者だけである。
イ システム化の対象には,注文管理システムと在庫管理システムが含まれる。
ウ 注文管理システムはシステム境界の中にあり,注文担当者と在庫管理システムはシステム境界の外にある。
エ ユースケースは四つあり,各ユースケース名は,注文管理システム,注文処理,注文変更処理,注文取消処理である。
ア:アクターは、注文担当者と在庫管理システムです。
イ:システム化の対象は,注文管理システムです。
ウ:正解選択肢です。
エ:ユースケースは3つあり,注文処理,注文変更処理,注文取消処理です。

正解はウ

過去問(H23秋AP午後問8)で、ユースケースの事例があります。

usecase
作成途中だが、以下がそのユースケース図
usecase2
usecase3
応用情報技術者試験を勉強する成子

運転手というアクターが、「運賃を確定させる」というユースケースに関連づけられているのはなぜですか?
この点は、問題文に、「整理券箱にICバスカードをかざさず、かつ、IC整理券を取り忘れた場合は、始発バス亭からの運賃が適用され、運転手が運賃箱にその金額を運賃として設定する」とあります。
つまり、整理券を取り忘れた場合などに、運転手が運賃箱に金額を設定する場合があるからです。

ユースケース図に関する出題は、H20秋SW午後2でも出題されています。

◆過去問(H27秋AP午前)
問64 要件定義において,利用者や外部システムと,業務の機能を分離して表現することで,利用者を含めた業務全体の範囲を明らかにするために使用される図はどれか。

ア アクティビティ図  イ オブジェクト図
ウ クラス図   エ ユースケース図

正解はエのユースケース図

問46 UMLユースケース図の説明はどれか。

ア 外部からのトリガに応じて,オブジェクトの状態がどのように遷移するかを表現する。
イ クラスと関連から構成され,システムの静的な構造を表現する。
ウ システムとアクタの相互作用を表現する。
エ データの流れに注目してシステムの機能を表現する。
正解は、ウです。

問64 業務要件定義において,業務フローを記述する際に,処理の分岐や並行処理,処理の同期などを表現できる図はどれか。

ア アクティビティ図
イ クラス図
ウ 状態遷移図
エ ユースケース
正解は、アです。

・E-R図とほぼ一緒です。でも、厳密には違います。
・E-R図はエンティティの関連図ですが、クラス図はオブジェクトの関連図です。ただ、エンティティもオブジェクトも表現は違えど、実際に指し示しているものは同じであったりします。
・多重度(1対1や1対多)も記載できる。
・UMLのクラス図が表わす内容は、汎化、集約、関連などのクラス間の関係(H21応用情報/秋問43)
・過去問(H20NW午前問14)では、「UMLのクラス図に記述できるものはどれか」という問題で、「多重度」が正解でした。

H20アプリケーションエンジニア試験 午後1問4にクラス図があるので、これをもとに解説します。
以下がその抜粋です。
クラス図1
また、凡例とその説明が書かれてあります。
クラス図2
凡例の解説を引用しながら補足します。

■クラスとオブジェクト
・クラスの前にオブジェクトを説明します。オブジェクトとは物と考えれば良いでしょう。この場合の、宿泊や顧客もすべてオブジェクトです。ただ、厳密にはちょっと違います。
顧客を例にとると、鈴木さん、伊藤さん、山田さん、それぞれがオブジェクトです。一方、クラスとは、それらを包含して概念化したものである。この場合は、顧客がクラスで、鈴木さん、伊藤さん、などの個々を特定するものがオブジェクト。
・□の上段にはクラス名として、宿泊や顧客、宿泊明細が記載されています。これがオブジェクトになる場合は、UMLではアンダーラインが引かれ、オブジェクトであることが明示されます。
・(参考)クラスを実体化するとオブジェクトになるように、このような実体のことをインスタンスという。

■属性
・クラス図の中段の長方形は属性を表します。顧客クラスを例にすると、顧客番号、顧客名が属性です。このあたりはE-R図と同じです。

■操作
・クラス図の下段の長方形は操作を表します。
・操作とは文字通りの意味ですが、宿泊には「宿泊情報取得()」という操作があります。()の中は引数を表していますが、スペースの関係で省略されています。
・操作の例として以下が書かれています。
予約管理クラスの操作として、空室客室情報取得(客室番号のリスト)という操作があります。この操作の中身は、「予約済の客室番号のリストを引数として、予約済以外の客室番号と客室タイプコードの組のリストを取得」とあり、客室クラスへの操作であることが分かります。ちょっとややこしいですが、予約管理で保有している予約済の客室番号のリストを客室クラスに渡し、それを元に客室クラスから予約済以外の客室番号のリストを取得するという操作であると想定されます。

■多重度
・クラス間を結ぶ線はクラス間の関連を表します。
・その線に書かれてあるx...yは、クラス間の多重度を表します。これはE-R図と同じです。
・ひし形の部分は、部分と全体を表し、集約と言います。「部分と全体」という表現がなんとなくしっくりきません。外部キーで接続されていると考えるのがよいかもと思っていますが、ちょっと怪しい。
※スーパークラスとサブクラスの関係である汎化とは違う概念なので、注意が必要です。汎化の関係は、テーブル上の属性が一部異なると考えるとよい。一般顧客、優良顧客、関連顧客などがあり、名前、住所などの共通する属性をスーパークラスの顧客とするような場合である。この場合は、△矢印であらわされる。それ以外には、依存関係は点線矢印、インターフェースは△点線矢印

コンポジション(黒のひし形◆)は、全体と一部分を表す関係です。
白のひし形(◇)もありますが、こちらは「一部分」がインスタンスとして独立できる関係か否かです。
たとえば、「注文」が取り消されれば「注文明細」は存在できなくなります。その場合が黒で、一部分が存在し続けるのであれば白です。

以下の過去問(H18春FE午前問39)で整理します。
問39 UMLのクラス図において,集約の関係にあるクラスはどれか。
uml
ア クラスAとクラスB    イ クラスAとクラスC 
ウ クラスBとクラスD    エ クラスCとクラスD

順にみていきましょう。
ア:→は通常のE-R図のような、1対多の関係を表すものです。
イ:◇は、「全体ー部分」の関係です。「全体ー部分」は、集約と分解の関係ですから、たとえば、自動車とハンドルやタイヤの関係です。
エ:△は、スーパークラスとサブクラスの関係です。

・情報処理試験では、「オブジェクト間のメッセージの送受信を時系列で表す(H17共通16)」と述べられています。
・シーケンス図 に関して過去問(H18NW午前 問13)では、「UMLで用いる図のうち、オブジェクト間で送受信するメッセージによる相互作用が表せるもの」と述べられています。

H20アプリケーションエンジニア試験 午後1問4にシーケンス図があるので、これをもとに解説します。

シーケンス1
凡例の解説を引用しながら補足します。

シーケンス2
シーケンス図は、アクタ、オブジェクト間の動作を時系列を加味して表します。

◆アクタ
ユースケース図で登場しますが、基本的には人です。ただ、人以外にもシステムなどの場合もあります。

■クラス名
・「:」があるのが気になると思いますが、本来は「オブジェクト名:クラス名」を書くべきですが、オブジェクト名が省略されています。※オブジェクト=インスタンスと考えれば、個別のインスタンスではなく、クラス全体を表した図なので、オブジェクト名が省略されます。
・凡例には「オブジェクトを表す」とあります。クラスではありません。多少違和感を感じる人もいるかもしれませんが、実際に動作するのはクラスではなくオブジェクトなので、オブジェクトです。


■縦の破線
・生存線で、オブジェクトが生存している期間を表します。

■長方形
・活性区間であり、オブジェクトが操作を実行している区間。長いものはその間、ずっと実行している。

■矢印
・メッセージを表し、()内は引数を表す。
・(あまり重要ではないが)メッセージには同期メッセージと非同期メッセージがある。上図のように矢印が黒く塗りつぶされているものは同期メッセージであり、メッセージが終わらないと次に進めません。よって、1番2番と順番に進むしかなく、いきなり5番のメッセージを実行することはない。
・点線の矢印は戻り値を表す。

アクティビティ図は、「業務要件定義において,業務フローを記述する際に,処理の分岐や並行処理,処理の同期などを表現できる図(H25春AP問64)」です。
アクティビティ図は、フローチャートと考えると良いでしょう。
プログラムを作るときに、フローチャートで流れを作りますよね。それがこのアクティビティ図です。

アクティビティは「活動」と訳される。
情報処理試験のアクティビティ図の凡例には「業務や処理を行っている状態(アクティビティ)」と書かれてあり、具体例として「ログイン」「書籍検索」「候補一覧表示」「注文冊数入力」「在庫確認」「在庫なし結果表示」などがある。

H19アプリケーションエンジニア午後1問1に、インターネットを利用した書籍販売システムのアクティビティ図の例がある。

aa

2
また、情報処理試験の過去問ではUMLのアクティビティ図の特徴として「現実のビジネスプロセスで生じる並行処理が表現できる(H21SA午前-問1)と述べられている。

H21春AP午後では、アクティビティ図が書かれているとともに、凡例もあります。
以下がその凡例です。
アクティビティ図凡例

■H20秋AE午前
問17 UMLのアクティビティ図の特徴はどれか。
ア 多くの並行処理を伴う振る舞いが記述できる。
イ オブジェクト群がどのようにコラボレーションを行うか記述できる。
ウ クラスの仕様と,クラスの間の静的な関係が記述できる。
エ システムのコンポーネント間の物理的な関係が記述できる。
【正解】ア

■H25春AP
問64 業務要件定義において,業務フローを記述する際に,処理の分岐や並行処理,処理の同期などを表現できる図はどれか。
ア アクティビティ図
イ クラス図
ウ 状態遷移図
エ ユースケース

正解はアです。

↑このページのトップヘ