UML logo
統一モデリング言語 (とういつモデリングげんご、英 : Unified Modeling Language, UML )は、システム設計を視覚化 する標準的な方法を提供する、汎用ビジュアルモデリング言語 である[ 1] 。
UMLは多くの種類の図の標準記法を提供する。これらはその内容によって、振る舞い図、相互作用図、構造図の三種類に大別される。
UMLは当初、ソフトウェア設計 における種々の記法やアプローチを標準化したいという動機によって作られたもので、1994-95年にかけてラショナルソフトウェア によって開発され、1996年まで同社によってその改良が主導された[ 2] 。
1997年にはObject Management Group (OMG)の標準モデリング言語に採択され、以降は同団体によって管理されるようになった。2005年にUMLはISO とIEC によってISO/IEC 19501 として標準化され[ 3] 、以降、UMLの最新版に合わせて定期的に改訂されている[ 4] 。
ソフトウェアエンジニアリング においては、ほとんどの実務家がUMLを使用しておらず、代わりに非形式的 な手書きの図を使用しているとされるが、それらの図はUMLの要素を含んでいることが多いとされる[ 5] :536 。
概要
UMLダイアグラム
UML2.2ダイアグラム体系 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は、様々なソフトウェア開発方法論に対応できるだけの表現力を備えている。
歴史
UML1.0以前
UMLの歴史
1994年、ラショナル はゼネラル・エレクトリック からジェームズ・ランボー を雇った。その後同社は2つのオブジェクト指向モデリング 技法を生み出すこととなった。それは、ランボーのオブジェクトモデル化技法 (OMT、オブジェクト指向分析 (OOA) の一種)と、グラディ・ブーチ のBooch法 (オブジェクト指向設計 (OOD) の一種)である。ランボーとブーチは共同で彼らの技法を統一する作業を開始した。
間もなく、オブジェクト指向ソフトウェア工学 (OOSE)の開発者であるイヴァー・ヤコブソン が加わった。ヤコブソンは1995年に自身の会社である Objectory AB が買収されたことにより、ラショナルに合流した。この3人の方法論者はスリーアミーゴス と呼ばれる[ 6] 。
1996年、ラショナルはあまりにも多様なモデリング言語が存在しているとオブジェクト技術の採用が遅れてしまうと判断し、彼らの統合作業をオープンな統一モデリング言語の開発に方向転換した。OOPSLA '96 においてオブジェクト技術系の競合企業が集まってこれに関する話し合いが行われ、ランボーのOMT 記法で使われていた四角形でクラスを表す技法がブーチの雲でクラスを表す技法に勝った[ 7] 。
UML1.x
スリーアミーゴスの技術リーダーシップの下、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標準である。
UML2
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 のほとんどに対応している。一部、あまり使われない機能を実装していないことがある。
略年表
2005年 - UML 1.4.2がISO/IEC 19501:2005として国際標準化[ 11] 。
2012年 - UML 2.4.1が、ISO/IEC 19505-1:2012ならびにISO/IEC 19505-2:2012として標準化[ 12] 。
2017年 - UML 2.5.1が公開[ 13] 。
ダイアグラム一覧
UML図は、システムの静的な構造を描写する構造図 と、システムの振る舞いを描写する振る舞い図 に分けられる。振る舞い図はシステム内のそれぞれの振る舞いを描写するそれと、それぞれのインタラクションを描写する相互作用図 に分けられている。
UML 2.0 以降では、14種類のダイアグラムがあり、それぞれの開発局面に応じて使い分けることができる。クラス図 、アクティビティ図 、シーケンス図 が多用される。次いでコンポーネント図 、ディプロイメント図 、ユースケース図 、ステートマシン図である[独自研究? ] 。
構造図[ 14] [ 15]
ダイアグラム
説明
クラス図
クラス、型、その内容、その関係性といった静的モデル要素の集まりの図式化。
コンポーネント図
アプリケーションやシステムを構成するコンポーネントの図式化。それらの相互関係、相互作用、公開インターフェースも記述する。
ディプロイメント図
システムの実行アーキテクチャの図式化。ハードウェアおよびソフトウェアの実行環境のそれぞれをノードで表わし、それらを結合するミドルウェアも記述する。
コンポジット構造図
クラス、コンポーネント、ユースケースといった分類子の内部構造の図式化。分類子とシステム内パーツの相互作用ポイントも合わせて記述する。
パッケージ図
モデル要素のパッケージ分割構成を図式化。パッケージ間の依存関係も記述。
オブジェクト図
特定タイミングでのオブジェクトとその関係性の図式化。クラス図またはコミュニケーション図での特別ケースを記述。
プロファイル図
プロトタイプベース向けのオブジェクトデザイン。
振る舞い図[ 14] [ 15]
ダイアグラム
説明
使用度
アクティビティ図
高水準業務プロセスを図式化。システム内のデータフロー、複合ロジックのロジックを模型化する。
高
ステートマシン図
オブジェクトまたは相互作用を内包した状態と、状態遷移の図式化。状態図、状態チャート図、状態遷移図に言及されていた。
中
ユースケース図
ユースケース、アクター、それらの相互関係を図式化。
中
相互作用図[ 14] [ 15]
ダイアグラム
説明
使用度
シーケンス図
分類子間のメッセージ交換における時系列のエフェクトを描写するシーケンシャル・ロジックのモデル図
高
インタラクション概要図
システムや業務プロセス内の制御フローの概要の図式化。その各ノード/アクティビティを、他のインタラクション概要図表記にしての入れ子構図にできる。アクティビティ図の派生とされる。
低
タイミング図
分類子インスタンスや役割子の状態またはコンディションの変遷の図式化。レスポンスや外部イベントによるオブジェクトの状態変化の描写。
低
コミュニケーション図
クラスのインスタンス、相互関係、メッセージフローを図式化。メッセージを送受するオブジェクトの構造的機構に注目する。以前はコラボレーション図だった。
低
ステートマシン図
相互作用概要図
コニュニケーション図
批判
UMLはモデリング標準として広く認知され使われているが、以下のような問題点をよく指摘される。
言語肥大
UMLは無駄に大きく複雑になっていると批判されることが多い[ 16] 。多数の図と構成要素から成っていて、その一部は滅多に使われず、しかも冗長である。特に UML 2.0 になってから委員会的妥協案が多くなったことで、このような批判が増えている。SysML [ 17] は UML 2.0 の13種類の図のうち 7 種類を利用し、2種類の図(リクワイアメント図とパラメトリック図)とアロケーションテーブルを追加している。
学習と採用に関する問題
上の批判とも関係するが、UMLの学習や採用は難しくなりつつある[ 18] 。
コードとの同期問題
UMLモデリングは、それ自体の美しさよりも実際に動作するシステムのモデルでなくてはならない。Jack Reeves はこれを簡潔に「コードは設計である」と表している[ 19] 。この考え方を推し進めると、ソフトウェアの書き方の改善が必要とされていることになる。UMLは、そこからソースコードや実行コードを生成できるツールもある。しかし、UML 2.0 の Action Semantics がチューリング完全 かどうかは明らかではないため、十分とは言えない。
インピーダンス不整合
UMLは他の表記法と比較しても、簡潔かつ効率的にシステムを表現できる。従って、開発者にはUMLとプログラミング言語の両方で記述可能なソリューションを重視する傾向が生じる。しかし、言語が正統なオブジェクト指向言語でない場合、UMLと言語間に共通点が少ないため、この問題が特に大きくなる。
見た目の不統一感
場当たり的に様々な図が統合されているため、統一感がないという批判もある。
八方美人
UMLは汎用モデリング言語であり、様々な実装言語との互換性を達成しようとしている。個別のプロジェクトでは、目標達成のために設計チームがUMLの利用可能な機能を区別する必要がある。さらに言えば、UMLの範囲を特定の領域に限定する方法は完全には定式化されておらず、それも批判の対象となっている。
バートランド・メイヤー とエドワード・ヨードン が American Programmer 誌に書いた "UML: The Positive Spin" という記事は、UMLをパロディ形式(UMLをテーマとしてその長所を書かなければならなくなった学生が書いた論文という体裁)で厳密に批判したものである。Eiffel Software のアーカイブ・サイトにある[ 16] 。
出典・脚注
^ Unified Modeling Language User Guide, The (2 ed.). Addison-Wesley. (2005). p. 496. ISBN 0321267974 . http://www.informit.com/store/unified-modeling-language-user-guide-9780321267979 , See the sample content, look for history
^ Unified Modeling Language User Guide, The (2 ed.). Addison-Wesley. (2005). p. 496. ISBN 0321267974 . http://www.informit.com/store/unified-modeling-language-user-guide-9780321267979 See the sample content: look for history
^ “ISO/IEC 19501:2005 - Information technology - Open Distributed Processing - Unified Modeling Language (UML) Version 1.4.3 ”. Iso.org (2005年4月1日). 2015年5月7日 閲覧。
^ “ISO/IEC 19505-1:2012 - Information technology - Object Management Group Unified Modeling Language (OMG UML) - Part 1: Infrastructure ”. Iso.org (2012年4月20日). 2014年4月10日 閲覧。
^ Sebastian Baltes; Stephan Diehl (2014-11-11). “Sketches and diagrams in practice” . Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering . FSE 2014. Association for Computing Machinery . pp. 530–541. arXiv :1706.09172 . doi :10.1145/2635868.2635891 . ISBN 978-1-4503-3056-5 . https://doi.org/10.1145/2635868.2635891
^ Unified Modeling Language User Guide, The . Addison-Wesley. (2005). p. 496. ISBN 0321267974 . http://www.informit.com/store/unified-modeling-language-user-guide-9780321267979
^ この勝利を記念してランボーがジョニ・ミッチェル の「Clouds 」をア・カペラ で歌ったという[要出典 ] 。
^ 英 : Semantics Task Force
^ UML Specification v. 1.1 (OMG document ad/97-08-11)
^ “Unified Modeling Language - an overview | ScienceDirect Topics ”. www.sciencedirect.com . 2025年1月13日 閲覧。
^ “ISO/IEC 19501:2005 - Information technology - Open Distributed Processing - Unified Modeling Language (UML) Version 1.4.3 ”. Iso.org (2005年4月1日). 2015年5月7日 閲覧。
^ “ISO/IEC 19505-1:2012 - Information technology - Object Management Group Unified Modeling Language (OMG UML) - Part 1: Infrastructure ”. Iso.org (2012年4月20日). 2014年4月10日 閲覧。
^ “About the Unified Modeling Language Specification Version 2.5.1 ”. 2022年5月8日 閲覧。
^ a b c “Introduction to the Diagrams of UML 2.X ”. www.agilemodeling.com . 2021年1月 閲覧。
^ a b c “OMG Unified Modeling LanguageTM(OMG UML),Superstructure ”. 2021年1月 閲覧。
^ a b Bertrand Meyer: UML: The Positive Spin , in American Programmer , 1997.
^ http://www.omgsysml.org OMG sysml
^ ACM の記事 "Death by UML Fever" では、その種の問題を論じている。
^ The Code is The Design SlashdotCode as Design: Three Essays by Jack W. Reeves
参考文献
Ambler, Scott William (2004年). The Object Primer: Agile Model Driven Development with UML 2 . Cambridge University Press. ISBN 0-521-54018-6 . http://www.ambysoft.com/books/theObjectPrimer.html
Chonoles, Michael Jesse; James A. Schardt (2003年). UML 2 for Dummies . Wiley Publishing. ISBN 0-7645-2614-6
Coad, Peter ; Eric Lefebvre; Jeff De Luca (1999年). Java Modeling In Color With UML: Enterprise Components and Process . Prentice Hall. ISBN 0-13-011510-X
Fowler, Martin . UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd ed. ed.). Addison-Wesley. ISBN 0-321-19368-7
Jacobson, Ivar ; Booch, Grady ; Rumbaugh, James (1998年). The Unified Software Development Process . Addison Wesley Longman. ISBN 0-201-57169-2
Martin, Robert Cecil (2003年). UML for Java Programmers . Prentice Hall. ISBN 0-13-142848-9
Noran, Ovidiu S.. “Business Modelling: UML vs. IDEF ” (PDF). 2005年12月28日 閲覧。
Penker, Magnus; Hans-Erik Eriksson (2000年). Business Modeling with UML . John Wiley & Sons. ISBN 0-471-29551-5
Henderson Sellers, Brian (2006年). about UML profiles . Springer Verlag. MoDELS'2006 Conference, Genova
関連項目
外部リンク
UMLのツール
団体人物 概念
OOP 構造性 操作性 関連性
ジェネラライゼーション
スペシャライゼーション
リアライゼーション
インプリメンテーション
多重度
コンポジション
アグリゲーション
アソシエーション (英語版 )
ディペンデンシー
拡張性
図式
派生言語 その他
カテゴリ