資格道場 › レッスン一覧 › システム開発技術
システム開発技術・6/12・12分

UML の図の種類と読み方

ゴール

UMLの主な図(アクティビティ図・シーケンス図・ユースケース図・ステートマシン図・クラス図など)を、説明文やキーワードから正しく選べるようになる。クラス図の線と記号(汎化・関連・コンポジション・依存)を見分けられるようになる。

UMLは、設計を図で共有するための世界共通の書き方です。試験では「この説明はどの図か」「この記号は何の関係か」がほぼ毎回のように出ます。図の名前とキーワードを結び付けておけば、1問30秒で取れる得点源になります。

このレッスンで稽古する(用語チェック・過去問)

結論:まず「構造図」と「振る舞い図」の2つに分ける

UML(Unified Modeling Language:統一モデリング言語)は、システムの設計を図で表すための共通ルールです。UMLの図は、大きく構造図と振る舞い図の2つに分かれます。どの図かを答える問題は、まずこの2つのどちらかを決めると選択肢を半分に減らせます。

系統 何を表すか 時間の流れ 代表的な図
構造図(静的) 何があって、どうつながっているか 無い(スナップショット) クラス図・オブジェクト図・コンポーネント図
振る舞い図(動的) 何がどの順に起こるか・どう変わるか 有る アクティビティ図・シーケンス図・コミュニケーション図・ユースケース図・ステートマシン図

「静的」は止まった状態の作り、「動的」は動いている様子という意味です。選択肢に「静的な構造」とあればクラス図など構造図の説明です。

最重要:振る舞い図は「キーワード1つ」で見分ける

出題が最も多いのはここです。説明文の中にある決め手の言葉を見つければ答えが決まります。

図 決め手のキーワード 表すもの たとえ
アクティビティ図 制御の流れ・ワークフロー・実行順序・分岐 ある処理から次の処理への流れ(フローチャートの仲間) 料理のレシピの手順図
シーケンス図 時系列・相互作用 オブジェクト同士のメッセージのやり取りを時間順に並べたもの LINEのトーク履歴
コミュニケーション図 つながり(リンク)・相互作用 シーケンス図と同じやり取りを、誰と誰がつながっているかを中心に描いたもの —
ユースケース図 アクタ・外部に提供する機能 システムが利用者にどんな機能を提供するか —
ステートマシン図(状態遷移図) 状態・イベント・遷移 1つのオブジェクトの状態がイベントでどう変わるか —

アクタとは、システムを使う人や外部システムのことです。業務の流れ(ビジネスプロセス)や条件による分岐を表したいときは、アクティビティ図を選びます。

構造図:クラス図・オブジェクト図・コンポーネント図

構造図は「時間の流れ」を持たないので、順序や分岐を表す選択肢の答えにはなりません。

図 表すもの
クラス図 クラス(設計図)とクラス同士の関係。システムの静的な構造
オブジェクト図 ある瞬間に実際に存在するオブジェクト(実体)とそのつながり
コンポーネント図 ソフトウェアの部品(コンポーネント)の構成と依存関係

クラス図の四角形は上からクラス名・属性・操作の3段に分かれます。四角形の中に書くのはクラス名で、関係の名前(関連名)は線の上に書きます。

クラス図の四角形は3段に分かれる自動車ナンバー色走る()止まる()車検証有効期限更新する()持つ11上から クラス名 / 属性 / 操作関連名「持つ」は線の上・両端の数字は多重度
クラス図の四角形は上からクラス名・属性・操作の3段で、関連名は四角形の中ではなく線の上に書く。

クラス図の線と記号を読む

前回学んだ継承は、クラス図では汎化という線で描きます。記号の形と向きで関係の種類が決まります。

関係 記号 意味 例
関連 実線 関係がある(一般的なつながり) 自動車 ― 車検証
汎化 白抜き三角の矢印(子→親の向き) 「〜は〜の一種」(継承) スポーツカー → 自動車
集約 白い菱形(全体側に付く) 全体と部分。部分は単独でも存在できる —
コンポジション 黒い菱形(全体側に付く) 全体と部分。部分は全体と運命を共にする(全体が消えると消える) 自動車 ◆― タイヤ・エンジン
依存 破線の開いた矢印 一時的に相手を使う(相手が変わると影響を受ける) ドライバ ‥> 自動車

線の両端の数字(1 や )は多重度で、相手がいくつ対応するかを表します( は0個以上)。白抜き三角の矢印は親クラス側を指している点に注意しましょう。

ドライバ依存(破線の矢印)自動車車検証関連11タイヤコンポジション汎化(子→親)三角は親の側を指すスポーツカー黒い菱形は全体側(自動車)に付く
自動車を中心に、関連(実線)・汎化(白抜き三角・子→親)・コンポジション(黒い菱形・全体側)・依存(破線の開いた矢印)を実際の形で並べた図。

シーケンス図とコミュニケーション図の共通点

この2つはどちらも相互作用図で、オブジェクト間で送受信されるメッセージを表すという共通点があります。違いは見せ方で、シーケンス図は縦軸が時間、コミュニケーション図はオブジェクト同士のつながりを中心に描きます。

表現する内容 シーケンス図 コミュニケーション図 本来担当する図
オブジェクト間のメッセージ ○ ○ 両方
メッセージを処理している期間 ○(縦長の帯で表す) × シーケンス図
イベントとオブジェクトの状態 × × ステートマシン図
状態にとどまる時間の長さ × × タイミング図
シーケンス図コミュニケーション図客注文注文する確認処理中帯=処理している期間縦軸=時間(下へ進む)客注文1: 注文する2: 確認処理期間は表せない線=つながり・番号=順序
同じ「注文する→確認」のやり取りを、シーケンス図は縦軸の時間で、コミュニケーション図はつながりと番号で描く。

試験での問われ方

  • 説明文→図名:選択肢4つが、アクティビティ図・シーケンス図・ユースケース図・ステートマシン図の説明になっていることが多いです。キーワード表で1つずつ消していきます。
  • 用途→図名:「ワークフロー」「実行順序」「分岐」ならアクティビティ図です。オブジェクト図・クラス図・コンポーネント図は構造図なので、流れは表せません。
  • 記号→関係名:白抜き三角は汎化、黒菱形はコンポジション、破線矢印は依存、ただの実線は関連です。
  • UML以外の図が混ざる:「データの流れに注目」はDFD(データフロー図)の説明で、UMLの図ではありません。

要点(試験直前に読む)

  • UMLの図は構造図(静的:クラス図・オブジェクト図・コンポーネント図)と振る舞い図(動的)に分かれる。
  • 制御の流れ・ワークフロー・分岐はアクティビティ図、時系列の相互作用はシーケンス図。
  • アクタと提供する機能はユースケース図、状態とイベントによる変化はステートマシン図。
  • クラス図の記号は、実線=関連、白抜き三角(子→親)=汎化、黒菱形=コンポジション、白菱形=集約、破線矢印=依存。
  • シーケンス図とコミュニケーション図の共通点は、オブジェクト間のメッセージを表すこと。
  • クラス図の四角形の中に書くのはクラス名(その下に属性・操作)。

ひっかけ

  • 4つの選択肢が「流れ・時系列・アクタ・状態」の説明になっている形が定番。説明文の決め手の言葉を図名に対応させて消していく。
  • 「ワークフローを表す図」の選択肢に、クラス図・オブジェクト図・コンポーネント図が並ぶ。これらは構造図で流れを表せないので、アクティビティ図を選ぶ。
  • 「データの流れに注目して機能を表す」はDFDの説明で、ユースケース図ではない。
  • シーケンス図とコミュニケーション図の共通点を問う問題で、「状態」や「時間の長さ」を選ばせる。状態はステートマシン図、時間の長さはタイミング図が担当するので、答えはメッセージ。
  • 白抜き三角(汎化)と破線の開いた矢印(依存)、黒菱形(コンポジション)と白菱形(集約)の取り違え。線が実線か破線か、記号の塗りつぶしの有無を確認する。

用語(19)

UML Unified Modeling Language
ソフトウェアの設計を図で表すための、世界共通の表記ルール。
構造図 こうぞうず
システムの要素とそのつながりを、時間の流れ抜きで表すUMLの図の系統。
⚠ 振る舞い図は時間の流れや変化を表す。「静的」とあれば構造図。
振る舞い図 ふるまいず
処理の順序、やり取り、状態の変化など、システムの動きを表すUMLの図の系統。
⚠ 構造図は止まった状態の作りを表す。「動的」とあれば振る舞い図。
アクティビティ図 あくてぃびてぃず
ある処理から次の処理への制御の流れや分岐を表す図で、業務のワークフローにも使う。
⚠ シーケンス図は「誰と誰が」時間順にやり取りするかを表す。順序と分岐ならアクティビティ図。
シーケンス図 しーけんすず
オブジェクト間の相互作用(メッセージのやり取り)を時系列で表す図。
⚠ アクティビティ図は処理の流れを表す。「時系列」「相互作用」とあればシーケンス図。
コミュニケーション図 こみゅにけーしょんず
オブジェクト間のメッセージのやり取りを、オブジェクト同士のつながりを中心に表す図。
⚠ シーケンス図とはメッセージを表す点が共通。時間軸を前面に出すのがシーケンス図。
相互作用図 そうごさようず
オブジェクト同士がメッセージを送り合う様子を表す図の総称で、シーケンス図とコミュニケーション図を含む。
ユースケース図 ゆーすけーすず
システムが外部に提供する機能と、それを使うアクタとの関係を表す図。
⚠ DFDはデータの流れを表す。「アクタ」「外部に提供する機能」ならユースケース図。
アクタ あくた
システムを利用する人や外部システムなど、システムの外側にいる登場人物。
ステートマシン図 すてーとましんず(状態遷移図)
1つのオブジェクトの状態が、イベントの発生や時間の経過でどう変わるかを表す図。
⚠ アクティビティ図は処理の流れを表す。「状態」「イベント」「遷移」ならステートマシン図。
クラス図 くらすず
クラスとクラス間の関係を表して、システムの静的な構造を示す図。
⚠ オブジェクト図はある瞬間の実体を表す。クラス図は設計図どうしの関係を表す。
オブジェクト図 おぶじぇくとず
ある時点に存在する具体的なオブジェクトと、そのつながりを表す図。
⚠ クラス図は型(設計図)を、オブジェクト図は実体を表す。
コンポーネント図 こんぽーねんとず
ソフトウェアを構成する部品と、その依存関係を表す図。
関連 かんれん
クラス同士に何らかの関係があることを、実線で表す関係。
⚠ 関連名は線の上に書き、四角形の中には書かない。
汎化 はんか
「子は親の一種」という継承の関係で、子から親へ向かう白抜き三角の矢印で表す。
⚠ 依存は破線の開いた矢印。三角の矢印の先が親クラス。
集約 しゅうやく
全体と部分の関係のうち、部分が単独でも存在できるもので、全体側に白い菱形を付ける。
⚠ コンポジションは黒い菱形で、部分は全体と運命を共にする。
コンポジション こんぽじしょん
全体と部分の関係のうち、全体が消えると部分も消える強い結び付きで、全体側に黒い菱形を付ける。
⚠ 集約は白い菱形。黒が強い結び付きと覚える。
依存 いぞん
一方のクラスが他方を一時的に使い、相手の変更の影響を受ける関係で、破線の開いた矢印で表す。
⚠ 汎化は実線の白抜き三角矢印。破線なら依存。
多重度 たじゅうど
関連の両端に書いて、相手のクラスがいくつ対応するかを示す数(1、* など)。

このレッスンの過去問

このレッスンで稽古する