UML の図の種類と読み方
UMLの主な図(アクティビティ図・シーケンス図・ユースケース図・ステートマシン図・クラス図など)を、説明文やキーワードから正しく選べるようになる。クラス図の線と記号(汎化・関連・コンポジション・依存)を見分けられるようになる。
UMLは、設計を図で共有するための世界共通の書き方です。試験では「この説明はどの図か」「この記号は何の関係か」がほぼ毎回のように出ます。図の名前とキーワードを結び付けておけば、1問30秒で取れる得点源になります。
このレッスンで稽古する(用語チェック・過去問)結論:まず「構造図」と「振る舞い図」の2つに分ける
UML(Unified Modeling Language:統一モデリング言語)は、システムの設計を図で表すための共通ルールです。UMLの図は、大きく構造図と振る舞い図の2つに分かれます。どの図かを答える問題は、まずこの2つのどちらかを決めると選択肢を半分に減らせます。
| 系統 | 何を表すか | 時間の流れ | 代表的な図 |
|---|---|---|---|
| 構造図(静的) | 何があって、どうつながっているか | 無い(スナップショット) | クラス図・オブジェクト図・コンポーネント図 |
| 振る舞い図(動的) | 何がどの順に起こるか・どう変わるか | 有る | アクティビティ図・シーケンス図・コミュニケーション図・ユースケース図・ステートマシン図 |
「静的」は止まった状態の作り、「動的」は動いている様子という意味です。選択肢に「静的な構造」とあればクラス図など構造図の説明です。
最重要:振る舞い図は「キーワード1つ」で見分ける
出題が最も多いのはここです。説明文の中にある決め手の言葉を見つければ答えが決まります。
| 図 | 決め手のキーワード | 表すもの | たとえ |
|---|---|---|---|
| アクティビティ図 | 制御の流れ・ワークフロー・実行順序・分岐 | ある処理から次の処理への流れ(フローチャートの仲間) | 料理のレシピの手順図 |
| シーケンス図 | 時系列・相互作用 | オブジェクト同士のメッセージのやり取りを時間順に並べたもの | LINEのトーク履歴 |
| コミュニケーション図 | つながり(リンク)・相互作用 | シーケンス図と同じやり取りを、誰と誰がつながっているかを中心に描いたもの | — |
| ユースケース図 | アクタ・外部に提供する機能 | システムが利用者にどんな機能を提供するか | — |
| ステートマシン図(状態遷移図) | 状態・イベント・遷移 | 1つのオブジェクトの状態がイベントでどう変わるか | — |
アクタとは、システムを使う人や外部システムのことです。業務の流れ(ビジネスプロセス)や条件による分岐を表したいときは、アクティビティ図を選びます。
構造図:クラス図・オブジェクト図・コンポーネント図
構造図は「時間の流れ」を持たないので、順序や分岐を表す選択肢の答えにはなりません。
| 図 | 表すもの |
|---|---|
| クラス図 | クラス(設計図)とクラス同士の関係。システムの静的な構造 |
| オブジェクト図 | ある瞬間に実際に存在するオブジェクト(実体)とそのつながり |
| コンポーネント図 | ソフトウェアの部品(コンポーネント)の構成と依存関係 |
クラス図の四角形は上からクラス名・属性・操作の3段に分かれます。四角形の中に書くのはクラス名で、関係の名前(関連名)は線の上に書きます。
クラス図の線と記号を読む
前回学んだ継承は、クラス図では汎化という線で描きます。記号の形と向きで関係の種類が決まります。
| 関係 | 記号 | 意味 | 例 |
|---|---|---|---|
| 関連 | 実線 | 関係がある(一般的なつながり) | 自動車 ― 車検証 |
| 汎化 | 白抜き三角の矢印(子→親の向き) | 「〜は〜の一種」(継承) | スポーツカー → 自動車 |
| 集約 | 白い菱形(全体側に付く) | 全体と部分。部分は単独でも存在できる | — |
| コンポジション | 黒い菱形(全体側に付く) | 全体と部分。部分は全体と運命を共にする(全体が消えると消える) | 自動車 ◆― タイヤ・エンジン |
| 依存 | 破線の開いた矢印 | 一時的に相手を使う(相手が変わると影響を受ける) | ドライバ ‥> 自動車 |
線の両端の数字(1 や )は多重度で、相手がいくつ対応するかを表します( は0個以上)。白抜き三角の矢印は親クラス側を指している点に注意しましょう。
シーケンス図とコミュニケーション図の共通点
この2つはどちらも相互作用図で、オブジェクト間で送受信されるメッセージを表すという共通点があります。違いは見せ方で、シーケンス図は縦軸が時間、コミュニケーション図はオブジェクト同士のつながりを中心に描きます。
| 表現する内容 | シーケンス図 | コミュニケーション図 | 本来担当する図 |
|---|---|---|---|
| オブジェクト間のメッセージ | ○ | ○ | 両方 |
| メッセージを処理している期間 | ○(縦長の帯で表す) | × | シーケンス図 |
| イベントとオブジェクトの状態 | × | × | ステートマシン図 |
| 状態にとどまる時間の長さ | × | × | タイミング図 |
試験での問われ方
- 説明文→図名:選択肢4つが、アクティビティ図・シーケンス図・ユースケース図・ステートマシン図の説明になっていることが多いです。キーワード表で1つずつ消していきます。
- 用途→図名:「ワークフロー」「実行順序」「分岐」ならアクティビティ図です。オブジェクト図・クラス図・コンポーネント図は構造図なので、流れは表せません。
- 記号→関係名:白抜き三角は汎化、黒菱形はコンポジション、破線矢印は依存、ただの実線は関連です。
- UML以外の図が混ざる:「データの流れに注目」はDFD(データフロー図)の説明で、UMLの図ではありません。
要点(試験直前に読む)
- UMLの図は構造図(静的:クラス図・オブジェクト図・コンポーネント図)と振る舞い図(動的)に分かれる。
- 制御の流れ・ワークフロー・分岐はアクティビティ図、時系列の相互作用はシーケンス図。
- アクタと提供する機能はユースケース図、状態とイベントによる変化はステートマシン図。
- クラス図の記号は、実線=関連、白抜き三角(子→親)=汎化、黒菱形=コンポジション、白菱形=集約、破線矢印=依存。
- シーケンス図とコミュニケーション図の共通点は、オブジェクト間のメッセージを表すこと。
- クラス図の四角形の中に書くのはクラス名(その下に属性・操作)。
ひっかけ
- 4つの選択肢が「流れ・時系列・アクタ・状態」の説明になっている形が定番。説明文の決め手の言葉を図名に対応させて消していく。
- 「ワークフローを表す図」の選択肢に、クラス図・オブジェクト図・コンポーネント図が並ぶ。これらは構造図で流れを表せないので、アクティビティ図を選ぶ。
- 「データの流れに注目して機能を表す」はDFDの説明で、ユースケース図ではない。
- シーケンス図とコミュニケーション図の共通点を問う問題で、「状態」や「時間の長さ」を選ばせる。状態はステートマシン図、時間の長さはタイミング図が担当するので、答えはメッセージ。
- 白抜き三角(汎化)と破線の開いた矢印(依存)、黒菱形(コンポジション)と白菱形(集約)の取り違え。線が実線か破線か、記号の塗りつぶしの有無を確認する。
用語(19)
ソフトウェアの設計を図で表すための、世界共通の表記ルール。
システムの要素とそのつながりを、時間の流れ抜きで表すUMLの図の系統。
⚠ 振る舞い図は時間の流れや変化を表す。「静的」とあれば構造図。
処理の順序、やり取り、状態の変化など、システムの動きを表すUMLの図の系統。
⚠ 構造図は止まった状態の作りを表す。「動的」とあれば振る舞い図。
ある処理から次の処理への制御の流れや分岐を表す図で、業務のワークフローにも使う。
⚠ シーケンス図は「誰と誰が」時間順にやり取りするかを表す。順序と分岐ならアクティビティ図。
オブジェクト間の相互作用(メッセージのやり取り)を時系列で表す図。
⚠ アクティビティ図は処理の流れを表す。「時系列」「相互作用」とあればシーケンス図。
オブジェクト間のメッセージのやり取りを、オブジェクト同士のつながりを中心に表す図。
⚠ シーケンス図とはメッセージを表す点が共通。時間軸を前面に出すのがシーケンス図。
オブジェクト同士がメッセージを送り合う様子を表す図の総称で、シーケンス図とコミュニケーション図を含む。
システムが外部に提供する機能と、それを使うアクタとの関係を表す図。
⚠ DFDはデータの流れを表す。「アクタ」「外部に提供する機能」ならユースケース図。
システムを利用する人や外部システムなど、システムの外側にいる登場人物。
1つのオブジェクトの状態が、イベントの発生や時間の経過でどう変わるかを表す図。
⚠ アクティビティ図は処理の流れを表す。「状態」「イベント」「遷移」ならステートマシン図。
クラスとクラス間の関係を表して、システムの静的な構造を示す図。
⚠ オブジェクト図はある瞬間の実体を表す。クラス図は設計図どうしの関係を表す。
ある時点に存在する具体的なオブジェクトと、そのつながりを表す図。
⚠ クラス図は型(設計図)を、オブジェクト図は実体を表す。
ソフトウェアを構成する部品と、その依存関係を表す図。
クラス同士に何らかの関係があることを、実線で表す関係。
⚠ 関連名は線の上に書き、四角形の中には書かない。
「子は親の一種」という継承の関係で、子から親へ向かう白抜き三角の矢印で表す。
⚠ 依存は破線の開いた矢印。三角の矢印の先が親クラス。
全体と部分の関係のうち、部分が単独でも存在できるもので、全体側に白い菱形を付ける。
⚠ コンポジションは黒い菱形で、部分は全体と運命を共にする。
全体と部分の関係のうち、全体が消えると部分も消える強い結び付きで、全体側に黒い菱形を付ける。
⚠ 集約は白い菱形。黒が強い結び付きと覚える。
一方のクラスが他方を一時的に使い、相手の変更の影響を受ける関係で、破線の開いた矢印で表す。
⚠ 汎化は実線の白抜き三角矢印。破線なら依存。
関連の両端に書いて、相手のクラスがいくつ対応するかを示す数(1、* など)。
このレッスンの過去問
- UML図の種類と用途(アクティビティ図等)平成31年度 春期 基本情報技術者試験 午前 問46
- UML図の種類と用途(動的/静的)基本情報技術者試験 科目A免除 修了試験 20250126 実施分 問34
- UMLクラス図の関連の種類(汎化・コンポジション・依存)平成26年度 春期 基本情報技術者試験 午前 問46
- UMLシーケンス図とコミュニケーション図の共通要素平成30年度 秋期 基本情報技術者試験 午前 問46