UML
ソフトウェアの構造や振る舞いを図で表すための、統一されたグラフィカルなモデリング言語。オブジェクト指向による分析・設計で使われ、OMGが標準化している。
イマシルちゃんの解説
ソフトウェアを作るとき、頭の中にある設計を、ほかの人に伝えるのって難しいよね。
UMLは、「この図はこう描く」っていう世界共通の描き方のルールなんだ。
クラスの関係を描く図、処理の順番を描く図、状態の移り変わりを描く図……。
ルールが同じだから、誰が描いても、誰が読んでも、同じように理解できるんだよ!
より深い解説
定義
UML(Unified Modeling Language)は、1990年代に、それまで乱立していたオブジェクト指向の分析・設計の表記法を統一して作られたモデリング言語である。現在はOMG(Object Management Group)が仕様を管理し、ISO/IEC 19501などとしても標準化されている。プログラム言語ではなく、設計を表現するための「図の言語」である。
主なダイアグラム
UML 2では、ダイアグラムを大きく2つに分けている。
| 分類 | ダイアグラム | 表すもの |
|---|---|---|
| 構造図 | クラス図 | クラスの属性、操作と、クラス間の関係(関連、汎化、集約など) |
| 構造図 | オブジェクト図 | ある時点のオブジェクト(インスタンス)とその関係 |
| 構造図 | コンポーネント図、配置図、パッケージ図 | 部品、ハードウェアへの配置、整理の単位 |
| 振る舞い図 | ユースケース図 | 利用者(アクタ)から見たシステムの機能 |
| 振る舞い図 | シーケンス図 | オブジェクト間のメッセージのやり取りを、時間の順に表す |
| 振る舞い図 | アクティビティ図 | 処理の流れ(フローチャートに近い) |
| 振る舞い図 | ステートマシン図 | オブジェクトの状態と、イベントによる状態の遷移 |
| 振る舞い図 | コミュニケーション図 | オブジェクト間のメッセージのやり取りを、つながりを中心に表す |
クラス図の主な関係
| 関係 | 意味 | 例 |
|---|---|---|
| 汎化(継承) | 「AはBの一種である」(is-a) | 「普通預金口座」は「口座」の一種 |
| 集約 | 「全体と部分」で、部分が独立して存在できる | 「チーム」と「選手」 |
| コンポジション | 「全体と部分」で、全体が消えると部分も消える | 「注文」と「注文明細」 |
| 関連 | 互いに関係がある | 「顧客」と「注文」 |
関連には、相手の数(多重度)を「1」「0..1」「1..*」「*」のように書き添える。
UMLを拡張した言語
UMLは、プロファイルという仕組みで、特定の分野向けに拡張できる。システムズエンジニアリング向けに、UMLの一部を流用して機能を拡張したものが、SysMLである。