UML logo
UML logo

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

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

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

1997年にはObject Management Group(OMG)の標準モデリング言語に採択され、以降、同団体によって管理されている。2005年にはISOIECによって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は、統一的なモデリング言語であって統一的な方法論ではない。当時のメジャーなオブジェクト指向方法論であったOMTBooch法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]

出典・脚注

編集
  1. ^ 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
  2. ^ 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
  3. ^ 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日閲覧。
  4. ^ 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日閲覧。
  5. ^ 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 
  6. ^ Unified Modeling Language User Guide, The. Addison-Wesley. (2005). p. 496. ISBN 0321267974. http://www.informit.com/store/unified-modeling-language-user-guide-9780321267979 
  7. ^ この勝利を記念してランボーがジョニ・ミッチェルの「Clouds」をア・カペラで歌ったという[要出典]
  8. ^ : Semantics Task Force
  9. ^ UML Specification v. 1.1 (OMG document ad/97-08-11)
  10. ^ Unified Modeling Language - an overview | ScienceDirect Topics”. www.sciencedirect.com. 2025年1月13日閲覧。
  11. ^ 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日閲覧。
  12. ^ 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日閲覧。
  13. ^ About the Unified Modeling Language Specification Version 2.5.1”. 2022年5月8日閲覧。
  14. ^ a b c Introduction to the Diagrams of UML 2.X”. www.agilemodeling.com. 2021年1月閲覧。 エラー: 閲覧日は年・月・日のすべてを記入してください。(説明
  15. ^ a b c OMG Unified Modeling LanguageTM(OMG UML),Superstructure”. 2021年1月閲覧。 エラー: 閲覧日は年・月・日のすべてを記入してください。(説明
  16. ^ a b Bertrand Meyer: UML: The Positive Spin, in American Programmer, 1997.
  17. ^ http://www.omgsysml.org OMG sysml
  18. ^ ACM の記事 "Death by UML Fever" では、その種の問題を論じている。
  19. ^ The Code is The Design Slashdot
    Code as Design: Three Essays by Jack W. Reeves

参考文献

編集

関連項目

編集

外部リンク

編集

UMLのツール

📚 Artikel Terkait di Wikipedia

QNX

der Veen の特許 は QNX の分散処理機能に関するものであり、マーケティング上は透過分散処理 (Transpatrent Distributed Processing, TDP) と呼ばれている。 全ての入出力、ファイルシステム操作、ネットワーク操作は、上記の手段を使ってデータのやり取りを行っ

チャールズ・バックマン

"Commentary on the CODASYL Systems Committee's Interim Report on Distributed Database Technology." National Computer Conference vol. 47, 1978. 1978. "DDP Will

西尾章治郎

Database Technology (EDBT 1990), pp. 136-152 (Mar. 1990). S. Nishio, T. Ibaraki, H. Miyajima, and T. Hasegawa: File Redundancy Issues in Distributed Database

AMD Am2900

^ "Computers in Spaceflight: The NASA Experience" - Chapter Six - - Distributed Computing On Board Voyager and Galileo - ^ “Data General NOVA4/X recovered

コンピュータ略語一覧

データベース管理システム (Database management system) DCOM Distributed COM DDB Device Dependent Bitmap DDoS 分散型サービス拒否 (Distributed Denial of Service) DDR Double Data Rate

電気通信

transmission system, Olof Solderblom, PN 4,293,948, October 1974. ^ Ethernet: Distributed Packet Switching for Local Computer Networks, Robert M. Metcalfe and

パケット通信

Schuster、1996)pp 52–67 ノーバーグ、アーサー; O'Neill、Judy E. Transforming Computer Technology:Information processing for the Pentagon、1962-1982 (Johns Hopkins University、1996)

検索エンジン

ウェブのクロールは各ピアが独自に行い、インデクサーはRWI(Reverse Word Index)を作成する。作成されたインデックスの一部はDHT(分散ハッシュテーブル、Distributed Hash Table)として他のピアに分配される。 検索は自分のピアの端末からP2Pネットワーク上にある他のピアにリクエストを送信することにより行うことができる。