ウィキペディアから
統一モデリング言語(とういつモデリングげんご、英: Unified Modeling Language, UML)は、システムの設計を視覚化する標準的な方法を提供する、汎用ビジュアルモデリング言語である[1]
ソフトウェア設計における種々の記法やアプローチを標準化したいという動機によって開発されたもので、1994年から1995年にかけてラショナルソフトウェアによって開発され、1996年まで同社によって追加開発が主導された[2]。
多くの種類の図の標準記法を提供し、これらの図は振る舞い図、相互作用図、構造図に大別される。
1997年にはObject Management Group(OMG)の標準モデリング言語に採択され、以降、同団体によって管理されている。2005年にはISOとIECによってISO/IEC 19501として標準化され[3]、最新版のUMLに合わせて定期的に改訂されている[4]。
ソフトウェアエンジニアリングにおいては、ほとんどの実務家がUMLを使用しておらず、代わりに非形式的な手書きの図を使用しているとされる一方で、それらの図はUMLの要素を含んでいることが多いとされる[5]:536。
![]() |
UMLの公式な定義は、OMG が Meta-Object Facility(MOF)のメタモデルを使って行っている。他のMOFベースの仕様と同様、UMLメタモデルとUMLモデルは XMI でシリアライズできる。UML はソフトウェアを中心とするシステムの仕様を記述し、視覚化し、構築し、文書化するために設計された。
UML はソフトウェアのモデリングだけに利用する訳ではない。ビジネスプロセスのモデリングやシステム工学的モデリングにも使われ、組織の構造図を表現するのにも使うことができる。Systems Modeling Language(SysML)は、UML 2.0 プロファイルとして定義されたシステム工学用のドメイン固有モデリング言語である。
UML は、モデル駆動工学(MDE) やモデル駆動型アーキテクチャ (MDA) といったモデル駆動型の技術が発展するきっかけとなった。クラス、コンポーネント、汎化、集約といった概念の視覚的な記法について業界の合意を得るようになったことで、ソフトウェア開発者は設計や構造(アーキテクチャ)に集中できるようになった。
UMLモデルは、OMG が対応する QVT などの変換言語を使って、他の表現(Javaなど)に自動的に変換できる場合がある。
UML当初のオブジェクト指向開発用途はクラスベースだったが、UML 2.0からプロファイル図が導入されたことでプロトタイプベースのデザインにも対応できるようになった。
UMLは、統一的なモデリング言語であって統一的な方法論ではない。当時のメジャーなオブジェクト指向方法論であったOMT、Booch法、OOSE/Objectoryの三つで、それぞれ使われていたオブジェクトモデリング言語の記法を統一したものであって、それ以上ではない。14種類のダイアグラムを揃えているUMLは、様々なソフトウェア開発方法論に対応できるだけの表現力を備えている。
![]() |
1994年、ラショナルはゼネラル・エレクトリックからジェームズ・ランボーを雇った。その後同社は2つのオブジェクト指向モデリング技法を生み出すこととなった。それは、ランボーのオブジェクトモデル化技法(OMT、オブジェクト指向分析 (OOA) の一種)と、グラディ・ブーチのBooch法(オブジェクト指向設計 (OOD) の一種)である。ランボーとブーチは共同で彼らの技法を統一する作業を開始した。
間もなく、オブジェクト指向ソフトウェア工学(OOSE)の開発者であるイヴァー・ヤコブソンが加わった。ヤコブソンは1995年に自身の会社である Objectory AB が買収されたことにより、ラショナルに合流した。この3人の方法論者はスリーアミーゴスと呼ばれる[6]。
1996年、ラショナルはあまりにも多様なモデリング言語が存在しているとオブジェクト技術の採用が遅れてしまうと判断し、彼らの統合作業をオープンな統一モデリング言語の開発に方向転換した。OOPSLA '96 においてオブジェクト技術系の競合企業が集まってこれに関する話し合いが行われ、ランボーのOMT記法で使われていた四角形でクラスを表す技法がブーチの雲でクラスを表す技法に勝った[7]。
スリーアミーゴスの技術リーダーシップの下、UMLパートナーズという国際コンソーシアムが1996年に結成され、UMLの仕様が完成し、OMG RFP に対する応答として提案された。UMLパートナーズの UML 1.0 仕様ドラフト版がOMGに提案されたのは、1997年1月であった。同月、UMLパートナーズはセマンティクス・タスク・フォース[8]を結成し、仕様の意味論的側面の仕上げと他の標準化作業との整合作業を行った。その結果は UML 1.1 としてOMGに1997年8月に提出され、1997年11月に採用された[9]。
モデリング記法としては、OMTの記法がほぼ踏襲された(例えば、クラスやオブジェクトを矩形で表すなど)。ブーチの「雲」記法は除外されたものの、ブーチ法に特有な低レベルな設計の詳細を記述する機能が採用されている。ヤコブソンの Objectory からユースケース図が採用され、ブーチのコンポーネント図も採用された。しかし、意味論的な統合という観点では UML 1.1 は弱く、その点が大きく改善されたのは UML 2.0 であった。
他のオブジェクト指向手法の概念をUMLに緩やかに統合し、ほぼあらゆるオブジェクト指向手法に対応するものとなっている。例えば、CRCカードおよびオブジェクト指向役割分析法が考慮されており、他にもトニー・ヴァッサーマンとペーター・ピルヒャーによるオブジェクト指向構造設計(英: Object-Oriented Structured Design、OOSD)記法、レイ・バーの「Adaによるシステム設計(英: Systems Design with Ada)」、イヴァー・ヤコブソンのユースケース記法、アーチー・ボウウェンのタイミング解析、デイビッド・ハレルの状態図、ポール・ウォードのデータ解析など、当時の様々なオブジェクト指向技法が寄与している[10]。
このとき、彼らはリアルタイムシステム領域もカバーしようとしていた。結果として、UMLは単一プロセスのアプリケーションから分散システムまで、様々な工学的問題に使えるツールとなり、巨大な仕様を抱えることになった。UML は UML 1.1 以降も進化し続けている。いくつかのマイナーバージョン(UML 1.3, 1.4, 1.5)はバグや問題点を修正したものだが、UML 2.0 では大きく進化した。これが現在のOMG標準である。
UML 2.0 の最初の部分は、新しい図とモデリング要素を説明した高次構造(スーパーストラクチャ)であり、2004年10月にOMGにより採用された。他の部分はインフラストラクチャと呼ばれ、Object Constraint Language (OCL、オブジェクト制約言語) と図の関係を示したものであり、順次採用され、2005年11月に完成した。「UML 2.0 specification」最終版が使用可能であると宣言され、OMGの形式仕様ライブラリに追加されている。UML仕様の他の部分として「UML 2.0 infrastructure」、「UML 2.0 Diagram Interchange」、「UML 2.0 OCL」を採用している。よく知られているUMLツールの多くは UML 2.0 のほとんどに対応している。一部、あまり使われない機能を実装していないことがある。
UML図は、システムの静的な構造を描写する構造図と、システムの振る舞いを描写する振る舞い図に分けられる。振る舞い図はシステム内のそれぞれの振る舞いを描写するそれと、それぞれのインタラクションを描写する相互作用図に分けられている。
UML 2.0 以降では、14種類のダイアグラムがあり、それぞれの開発局面に応じて使い分けることができる。クラス図、アクティビティ図、シーケンス図が多用される。次いでコンポーネント図、ディプロイメント図、ユースケース図、ステートマシン図である[独自研究?]。
ダイアグラム | 説明 |
---|---|
クラス図 | クラス、型、その内容、その関係性といった静的モデル要素の集まりの図式化。 |
コンポーネント図 | アプリケーションやシステムを構成するコンポーネントの図式化。それらの相互関係、相互作用、公開インターフェースも記述する。 |
ディプロイメント図 | システムの実行アーキテクチャの図式化。ハードウェアおよびソフトウェアの実行環境のそれぞれをノードで表わし、それらを結合するミドルウェアも記述する。 |
コンポジット構造図 | クラス、コンポーネント、ユースケースといった分類子の内部構造の図式化。分類子とシステム内パーツの相互作用ポイントも合わせて記述する。 |
パッケージ図 | モデル要素のパッケージ分割構成を図式化。パッケージ間の依存関係も記述。 |
オブジェクト図 | 特定タイミングでのオブジェクトとその関係性の図式化。クラス図またはコミュニケーション図での特別ケースを記述。 |
プロファイル図 | プロトタイプベース向けのオブジェクトデザイン。 |
ダイアグラム | 説明 | 使用度 |
---|---|---|
シーケンス図 | 分類子間のメッセージ交換における時系列のエフェクトを描写するシーケンシャル・ロジックのモデル図 | 高 |
インタラクション概要図 | システムや業務プロセス内の制御フローの概要の図式化。その各ノード/アクティビティを、他のインタラクション概要図表記にしての入れ子構図にできる。アクティビティ図の派生とされる。 | 低 |
タイミング図 | 分類子インスタンスや役割子の状態またはコンディションの変遷の図式化。レスポンスや外部イベントによるオブジェクトの状態変化の描写。 | 低 |
コミュニケーション図 | クラスのインスタンス、相互関係、メッセージフローを図式化。メッセージを送受するオブジェクトの構造的機構に注目する。以前はコラボレーション図だった。 | 低 |
UMLはモデリング標準として広く認知され使われているが、以下のような問題点をよく指摘される。
バートランド・メイヤーとエドワード・ヨードンが American Programmer 誌に書いた "UML: The Positive Spin" という記事は、UMLをパロディ形式(UMLをテーマとしてその長所を書かなければならなくなった学生が書いた論文という体裁)で厳密に批判したものである。Eiffel Software のアーカイブ・サイトにある[16]。
Seamless Wikipedia browsing. On steroids.