統一モデリング言語

**統一モデリング言語**（とういつモデリングげんご、英: Unified Modeling Language, **UML**）は、システムの設計を視覚化する標準的な方法を提供する、汎用ビジュアルモデリング言語である

ソフトウェア設計における種々の記法やアプローチを標準化するために開発された物で、1994年から1995年にかけてラショナルソフトウェアによって開発され、1996年まで同社によって追加開発が主導された。

多くの種類の図の標準記法を提供し、これらの図は**振る舞い図**、**相互作用図**、**構造図**に大別される。

1997年にはObject Management Group（OMG）の標準モデリング言語に採択され、以降、同団体によって管理されている。2005年にはISOとIECによって**ISO/IEC 19501**として標準化され、最新版のUMLに合わせて定期的に改訂されている。

ソフトウェアエンジニアリングにおいては、大半の実務家がUMLを使用しておらず、代わりに非形式的な手書きの図を使用しているとされる一方で、それらの図はUMLの要素を含んでいる事が多いとされる。

## 概要

UMLの公式な定義は、OMG が （MOF）のメタモデルを使って行っている。他のMOFベースの仕様と同様、UMLメタモデルとUMLモデルは XMI でシリアライズできる。UML はソフトウェアを中心とするシステムの仕様を記述し、視覚化し、構築し、文書化するために設計された。

UML はソフトウェアのモデリングだけに利用する訳ではない。ビジネスプロセスのモデリングやシステム工学的モデリングにも使われ、組織の構造図を表現するのにも使うことができる。（SysML）は、UML 2.0 プロファイルとして定義されたシステム工学用のドメイン固有モデリング言語である。

UML は、モデル駆動工学（MDE) やモデル駆動型アーキテクチャ (MDA) といったモデル駆動型の技術が発展するきっかけとなった。クラス、コンポーネント、汎化、集約といった概念の視覚的な記法について業界の合意を得るようになったことで、ソフトウェア開発者は設計や構造（アーキテクチャ）に集中できるようになった。

UMLモデルは、OMG が対応する QVT などの変換言語を使って、他の表現（Javaなど）に自動的に変換できる場合がある。

UML当初のオブジェクト指向開発用途はクラスベースだったが、UML 2.0からプロファイル図が導入されたことでプロトタイプベースのデザインにも対応できるようになった。

UMLは、統一的なモデリング言語であって統一的な方法論ではない。当時のメジャーなオブジェクト指向方法論であったOMT、Booch法、OOSE/Objectoryの三つで、それぞれ使われていたオブジェクトモデリング言語の記法を統一したものであって、それ以上ではない。14種類のダイアグラムを揃えているUMLは、様々なソフトウェア開発方法論に対応できるだけの表現力を備えている。

## 歴史

### UML1.0以前

1994年、ラショナルはゼネラル・エレクトリックからジェームズ・ランボーを雇った。その後同社は2つのオブジェクト指向モデリング技法を生み出すこととなった。それは、ランボーのオブジェクトモデル化技法（OMT、オブジェクト指向分析 (OOA) の一種）と、グラディ・ブーチのBooch法（オブジェクト指向設計 (OOD) の一種）である。ランボーとブーチは共同で彼らの技法を統一する作業を開始した。

間もなく、オブジェクト指向ソフトウェア工学（OOSE）の開発者であるイヴァー・ヤコブソンが加わった。ヤコブソンは1995年に自身の会社である Objectory AB が買収されたことにより、ラショナルに合流した。この3人の方法論者はスリーアミーゴスと呼ばれる。

1996年、ラショナルはあまりにも多様なモデリング言語が存在しているとオブジェクト技術の採用が遅れてしまうと判断し、彼らの統合作業をオープンな統一モデリング言語の開発に方向転換した。OOPSLA '96 においてオブジェクト技術系の競合企業が集まってこれに関する話し合いが行われ、ランボーのOMT記法で使われていた四角形でクラスを表す技法がブーチの雲でクラスを表す技法に勝った。

### UML1.x
スリーアミーゴスの技術リーダーシップの下、という国際コンソーシアムが1996年に結成され、UMLの仕様が完成し、OMG RFP に対する応答として提案された。UMLパートナーズの UML 1.0 仕様ドラフト版がOMGに提案されたのは、1997年1月であった。同月、UMLパートナーズはセマンティクス・タスク・フォースを結成し、仕様の意味論的側面の仕上げと他の標準化作業との整合作業を行った。その結果は UML 1.1 としてOMGに1997年8月に提出され、1997年11月に採用された。

モデリング記法としては、OMTの記法がほぼ踏襲された（例えば、クラスやオブジェクトを矩形で表すなど）。ブーチの「雲」記法は除外されたものの、ブーチ法に特有な低レベルな設計の詳細を記述する機能が採用されている。ヤコブソンの Objectory からユースケース図が採用され、ブーチのコンポーネント図も採用された。しかし、意味論的な統合という観点では UML 1.1 は弱く、その点が大きく改善されたのは UML 2.0 であった。

他のオブジェクト指向手法の概念をUMLに緩やかに統合し、ほぼあらゆるオブジェクト指向手法に対応するものとなっている。例えば、CRCカードおよびが考慮されており、他にもとペーター・ピルヒャーによるオブジェクト指向構造設計（、OOSD）記法、レイ・バーの「によるシステム設計（）」、イヴァー・ヤコブソンのユースケース記法、アーチー・ボウウェンのタイミング解析、の、ポール・ウォードのデータ解析など、当時の様々なオブジェクト指向技法が寄与している。

このとき、彼らはリアルタイムシステム領域もカバーしようとしていた。結果として、UMLは単一プロセスのアプリケーションから分散システムまで、様々な工学的問題に使えるツールとなり、巨大な仕様を抱えることになった。UML は UML 1.1 以降も進化し続けている。いくつかのマイナーバージョン（UML 1.3, 1.4, 1.5）はバグや問題点を修正したものだが、UML 2.0 では大きく進化した。これが現在のOMG標準である。

### UML2
UML 2.0 の最初の部分は、新しい図とモデリング要素を説明した高次構造（スーパーストラクチャ）であり、2004年10月にOMGにより採用された。他の部分はインフラストラクチャと呼ばれ、 (OCL、オブジェクト制約言語) と図の関係を示したものであり、順次採用され、2005年11月に完成した。「」最終版が使用可能であると宣言され、OMGの形式仕様ライブラリに追加されている。UML仕様の他の部分として「」、「」、「」を採用している。よく知られているUMLツールの多くは UML 2.0 のほとんどに対応している。一部、あまり使われない機能を実装していないことがある。

## 略年表

* 2005年 - UML 1.4.2がISO/IEC 19501:2005として国際標準化。
* 2012年 - UML 2.4.1が、ISO/IEC 19505-1:2012ならびにISO/IEC 19505-2:2012として標準化。
* 2017年 - UML 2.5.1が公開。

## ダイアグラム一覧
UML図は、システムの静的な構造を描写する**構造図**と、システムの振る舞いを描写する**振る舞い図**に分けられる。振る舞い図はシステム内のそれぞれの振る舞いを描写するそれと、それぞれのインタラクションを描写する**相互作用図**に分けられている。

UML 2.0 以降では、14種類のダイアグラムがあり、それぞれの開発局面に応じて使い分けることができる。クラス図、アクティビティ図、シーケンス図が多用される。次いでコンポーネント図、ディプロイメント図、ユースケース図、ステートマシン図である。


ファイル:BankAccount1.svg|クラス図
ファイル:Policy Admin Component Diagram.PNG|コンポーネント図
ファイル:UML Deployment Diagram.svg|配置図
ファイル:Composite Structure Diagram.png|複合構造図
ファイル:Package Diagram.PNG|パッケージ図
ファイル:Object diagram.png|オブジェクト図
ファイル:Uml profilak1.PNG|プロファイル図



ファイル:Activity conducting.svg|アクティビティ図
ファイル:UML state diagram.png|ステートマシン図
ファイル:UML Use Case diagram.svg|ユースケース図
ファイル:CheckEmail.svg|シーケンス図
ファイル:Uml-Iod-Diagram1.svg|相互作用概要図
ファイル:UML Communication diagram.svg|ｺﾐｭﾆｹｰｼｮﾝ図


## 批判
UMLはモデリング標準として広く認知され使われているが、以下のような問題点をよく指摘される。
***言語[[ブロートウェア|肥大]]**
*:UMLは無駄に大きく複雑になっていると批判されることが多い。多数の図と構成要素から成っていて、その一部は滅多に使われず、しかも冗長である。特に UML 2.0 になってから委員会的妥協案が多くなったことで、このような批判が増えている。SysML は UML 2.0 の13種類の図のうち 7 種類を利用し、2種類の図（リクワイアメント図とパラメトリック図）とアロケーションテーブルを追加している。
***学習と採用に関する問題**
*:上の批判とも関係するが、UMLの学習や採用は難しくなりつつある。
***コードとの同期問題**
*:UMLモデリングは、それ自体の美しさよりも実際に動作するシステムのモデルでなくてはならない。Jack Reeves はこれを簡潔に「コードは設計である」と表している。この考え方を推し進めると、ソフトウェアの書き方の改善が必要とされていることになる。UMLは、そこからソースコードや実行コードを生成できるツールもある。しかし、UML 2.0 の Action Semantics がチューリング完全かどうかは明らかではないため、十分とは言えない。
***インピーダンス不整合**
*:UMLは他の表記法と比較しても、簡潔かつ効率的にシステムを表現できる。従って、開発者にはUMLとプログラミング言語の両方で記述可能なソリューションを重視する傾向が生じる。しかし、言語が正統なオブジェクト指向言語でない場合、UMLと言語間に共通点が少ないため、この問題が特に大きくなる。
***見た目の不統一感**
*:場当たり的に様々な図が統合されているため、統一感がないという批判もある。
***八方美人**
*:UMLは汎用モデリング言語であり、様々な実装言語との互換性を達成しようとしている。個別のプロジェクトでは、目標達成のために設計チームがUMLの利用可能な機能を区別する必要がある。さらに言えば、UMLの範囲を特定の領域に限定する方法は完全には定式化されておらず、それも批判の対象となっている。

バートランド・メイヤーとエドワード・ヨードンが American Programmer 誌に書いた "UML: The Positive Spin" という記事は、UMLをパロディ形式（UMLをテーマとしてその長所を書かなければならなくなった学生が書いた論文という体裁）で厳密に批判したものである。Eiffel Software のアーカイブ・サイトにある。

## 出典・脚注



## 参考文献
*
*
*
*
*
*
*
*
*

## 関連項目

*オブジェクト指向モデリング
*オブジェクト指向分析設計
*ブーチ法
*オブジェクトモデル化技法
*オブジェクト指向ソフトウェア工学
*実体関連モデル (ER)
*メタモデル
*モデルベーステスト (MBT)
*UN/CEFACT Modelling Methodology (UMM)
*ビジネスプロセスモデリング表記法 (BPMN)

## 外部リンク
*www.uml.org - OMG (Object Management Group) のUMLウェブサイト
**UMLのツール**
*Rational Rhapsody - Rational Rhapsody （組込み開発向けモデリング・ツール）
*Enterprise Architect - ビジュアルな UML2.0対応 モデリングと CASE のためのツール
*Visual Paradigm for UML - ビジュアルな UML モデリングと CASE のためのツール
*Software Ideas Modeler
*パターンウィーバー - UML モデリングツール

*astah* professional, astah* UML - 日本製のUML2.0モデリングツール
*ArgoUML - Tigris.org によるオープンソースの UML モデリングツール
*EclipseUML - Eclipse に UML モデリングの機能を追加するプラグイン
*IBM Rational 製品群 - IBM Rational

*SystemDirector Application Modeler - UMTP 基準準拠のUML2.0エディタ
*MagicDraw UML - ビジュアルな UML2.0対応 モデリングと CASE のためのツール
*Violet UML Editor - 簡単に使い始められ、クロスプラットフォームで動作するフリーソフトウェア
*
*UMLdraw - 日本製のシンプルな軽量 UML エディタ