カテゴリ: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 業務要件定義において,業務フローを記述する際に,処理の分岐や並行処理,処理の同期などを表現できる図はどれか。
ア アクティビティ図
イ クラス図
ウ 状態遷移図
エ ユースケース

正解はアです。

過去問(H29春AP午前)を見てみましょう。
問26 データモデルを解釈してオブジェクト図を作成した。解釈の誤りを適切に指摘した記述はどれか。ここで,モデルの表記にはUMLを用い,オブジェクト図の一部の属性の表示は省略した。

object

“123456 : 注文”が複数の商品にリンクしているのは,誤りである。
“2ドア冷蔵庫:商品”が複数の注文にリンクしているのは,誤りである。
“A商店:顧客”が複数の注文にリンクしているのは,誤りである。
ドラム式洗濯機:商品”がどの注文にもリンクしていないのは,誤りである。

以下は、H23秋FE午後問5より
2011h23a_fe_pm_qs_図2




BPMN(Business Process Modeling Notation)は言葉のとおり、ビジネスプロセスモデリング表記法のことです。※Notationは表記法の意味。
UMLでは分かりにくいモデルをより分かりやすくしたものです。
とはいっても、UMLより分かりやすいかは人によって感覚が違います。

情報処理試験の過去問では要求・設計技法のBPMNの説明として「イベント・アクチビティ・分岐・合流を示すオブジェクトと、フローを示す矢印などで構成された図によって、業務プロセスを表現する(H21SA午前-問3)と述べられている

・試験は010-020(L1-T2)
L1のLはレベルをあらわす現在はL1~L4まである。
T2のTの意味は知らないがT1とT2があって、これまではT1とT2の両方に合格する必要があった。
最近はT2さえ合格すればUMLのL1と認定される。

情報処理試験システムアーキテクトなどと関連が高い試験だと思う。たとえば、シーケンス図などはよく出てくる。

・試験は例のCBT試験。30問中24問(8割)で合格。
・試験時間は80分。受験料は15750円
・比較的合格率は高そうで、簡単との声も
翔泳社の「UMLモデリング教科書 UMLモデリングL1」がわかりやすそう。問題集は技術評論社の黒本が良いかな。

・ 「L1にはT1,T2の2科目がありますが、T2のみの合格でL1の認定がされます (2005年5月1日改定)。 」
http://www.vue.com/japan/IT/umtp_index.html
書籍はこの対応になっていない気がする。T2だけ勉強すればいいと言う情報は大事であるが、本質を理解するにはT1部分も勉強することになるかと思う
 
・VUEなので、当日受験ができるのがありがたい。
・合格率は80%以上のようだ
・[改訂版] UMLモデリング技能認定試験<入門レベル(L1)>問題集 -UML2.0対応 の内容が、本番と似ていて良いみたい。
・ひっかけはなく、素直な問題らしい。
・以下に受験記があるので、参考にしたい
http://jukenki.com/report/umtp/010-020/index.cgi

試験機関:ピアソンVUE→UMTP
試験科目:010-020(L1-T2)
試験名:UML Modeling Certified Test Level1-Test2
試験時間:80分
問題数:30問
合格基準:8割

8割で合格のところを9割で合格でした。
勉強は翔泳社の「UMLモデリング教科書 UMLモデリングL1」のみ。
これで十分である。また、大学受験などではやった「例の方法」をかなり使った。見直しとしても使える。

オブジェクト指向の理解がとても進んだことが良かった。
しかし、本質をいまいち理解していないのが悔しい。オブジェクトやクラスはなんとなくはわかるが、本質は分かっていない気がする。
例えば、シーケンス図において、上部の箱がある。ここにはオブジェクトやアクターが並ぶわけであるが、「画面」「受注管理」「顧客」などと、どうみても同等の概念ではないものが同等に並んでいる。「画面」はIFを差し、「受注管理」はプログラムを差す。また、「顧客」はデータベース上のエンティティを差す。このあたりの整理が私はできていない。
また、シーケンス図においてメッセージがある。どうやら矢印の先のオブジェクトの操作に対応しているようだ。
例えば、以下のようにオブジェクト「画面」から「商品」へのメッセージである「商品情報取得」に関して、これをクラス図で書く場合、「商品情報取得」のメッセージは、「画面」の操作ではなく、「商品」の操作になるようだ。

画面→(商品情報取得)→商品

このあたりがすっきり分かっていない。
誰かプロに習いたいものだ。

■H20春SW
問44 UMLの説明のうち,適切なものはどれか。
ア UMLでは,アクターから見たシステムの振る舞いをユースケース図で表現する。
イ UMLでは,システムを構成するクラスとその間の動的な関係をクラス図で表現する。
ウ UMLは,特にクライアントサーバシステムを意識して標準化したプログラム言語である。
エ UMLは,モデルの表記法及びソフトウェア開発プロセスを標準化している。
【正解】ア

■H24春高度午前1
問24 業務プロセスを可視化する手法としてUMLを採用した場合の活用シーンはどれか。
ア データ中心にプロセスを表現するために,データをエンティティとその属性で表し,エンティティ間の関連を図に示す。
イ データの流れによってプロセスを表現するために,データの発生,吸収の場所,蓄積場所,データの処理をデータの流れを示す矢印でつないで表現する。
ウ 複数の観点でプロセスを表現するために,目的に応じたモデル図法を使用し,オブジェクトモデリングのために標準化された記述ルールで表現する。
エ プロセスの機能を網羅的に表現するために,一つの要件に対し発生する事象を条件分岐の形式で記述する。
【正解】ウ

↑このページのトップヘ