UML(統一モデリング言語)とは:定義・歴史・主要図と活用法

UMLの定義・歴史・主要図の解説と実践的活用法を図解でわかりやすく紹介する完全ガイド。

著者: Leandro Alegsa

UMLUnified Modeling Language)は、ソフトウェア工学分野で広く用いられる汎用的なモデリング言語です。システムやソフトウェアの構造・振る舞いを視覚的に表現するための標準的な記法を提供し、設計の共有、仕様書化、ドキュメント化、モデル駆動開発(MDD)などを支援します。UMLはプログラミング言語ではなく、設計を記述・伝達するための図表と語彙の集合です。[1]

UMLの起源は1990年代前半にさかのぼります。1994〜95年にRational Software社のGrady Booch、Ivar Jacobson、James Rumbaughの3人(しばしば「Three Amigos」と呼ばれる)が、それぞれの方法論や表記を統一する形でUMLの開発を始め、1996年ごろまで彼らを中心に仕様が進められました。1997年にはObject Management Group(OMG)によって標準化プロセスに取り込まれ、その後OMGがUML仕様の管理・公開を行っています。さらに、2005年には国際標準化機構(ISO)でも規格として承認されました。以降、仕様は何度か改訂され、UML 2.0以降は図の表現力が大きく拡張されました。最新のOMG仕様はUML 2.5系(2.5.1が2017年に公開)などがあり、産業界でも学術界でも参照されています。[1][2]

主要な図(ダイアグラム)と役割

UMLは多くの種類の図を定義しており、大きく「構造図(構造を表す)」と「振る舞い図(動作や振る舞いを表す)」に分けられます。代表的なものとその用途は次の通りです:

  • クラス図(Class Diagram):システムの静的な構造を表現。クラスや属性、操作、クラス間の関連(継承、集約、依存など)を示す。オブジェクト指向設計で中心的に使われる。
  • ユースケース図(Use Case Diagram):ユーザー(アクター)とシステムの機能(ユースケース)の関係を示し、要求の全体像を把握するのに有用。
  • シーケンス図(Sequence Diagram):オブジェクト間のメッセージの時系列を表す。インタラクションや処理フローの追跡に適する。
  • アクティビティ図(Activity Diagram):業務フローやアルゴリズムの流れを表す。条件分岐や並列処理などを可視化できる。
  • ステートマシン図(State Machine Diagram):オブジェクトやシステムの状態遷移をモデル化し、イベントに対する振る舞いを示す。
  • コンポーネント図(Component Diagram):大規模システムのモジュール構成や依存関係を示す。設計のモジュール化に役立つ。
  • デプロイメント図(Deployment Diagram):実行環境(ノード)上へのソフトウェア配置を表し、ハードウェアとソフトウェアの対応を示す。
  • その他:オブジェクト図、通信図(コミュニケーション図)、パッケージ図、タイミング図、相互作用概観図など、多数の図が用途に応じて用意されています。

主な用途と活用法

  • 要件把握・設計共有:ユースケース図やシーケンス図で関係者間の合意を取りやすくする。
  • ドキュメント化:設計の「読みもの」として仕様やアーキテクチャを記録する。
  • 設計の検証・レビュー:振る舞いや構造の矛盾を早期に発見するための手段。
  • モデル駆動開発(MDD/ MDA):モデルからコードやドキュメントを自動生成するワークフローに組み込むことができる(ただし自動生成の適用はケースバイケース)。
  • システム工学との連携:SysML(システムモデリング言語)などのUML派生仕様を使い、機械・電気・ソフトの統合的設計に利用する事例もある。

ツールと実践のヒント

  • 代表的なツール:Enterprise Architect、MagicDraw(Now Cameo)、IBM Rational製品群、Visual Paradigm、Papyrus、PlantUML(テキストベース)など。ツールによってサポートする図や自動化機能が異なる。
  • 実践のポイント
    • 目的を明確にし、必要な図だけを作る(過剰なモデリングを避ける)。
    • 図は「コミュニケーション手段」として使い、関係者が理解できる粒度で描く。
    • ドキュメントを最新に保つ運用を決める(バージョン管理や図の更新ルール)。
    • テキスト(注釈)やシナリオを併用して、図だけでは伝わりにくい要素を補う。

批判・限界と現実の使われ方

UMLは非常に表現力が高い一方で、その豊富な要素は学習コストや運用コストを招くことがあります。そのため、組織やプロジェクトによってはUMLを全面的に採用するのではなく、必要な図を軽量に使う方針(「ライトUML」)が取られることが多いです。一部では「過度に形式化され現場で使われない」といった批判もありますが、適切に使えば設計の共有や品質向上に大きく貢献します。アジャイル開発環境では、詳細なUML図を常に書き続けるよりも、会話・プロトタイプ・簡潔な図で設計意図を伝える運用が好まれる傾向があります。

まとめと推奨

UMLはシステムの構造と振る舞いを可視化するための標準的な手段を提供します。目的に応じて図を選び、過度な詳細化を避けて「やるべきこと」を明確にすることが重要です。ツールやプロセスと組み合わせることで、要求定義、設計、レビュー、ドキュメント化、さらにモデル駆動のワークフローまで幅広く活用できます。組織の文化やプロジェクト特性に合わせて、UMLを柔軟に取り入れてください。

コンテンツ

 [йљ гЃ™пјЅ 

  • 1 歴史
    • 1.1 UML 1.x以前
    • 1.2 UML 1.x
    • 1.3 UML 2.x
  • 2 デザイン
    • 2.1 ソフトウェア開発手法
    • 2.2 モデリング
  • 3つのダイアグラム
    • 3.1 構造図
    • 3.2 ビヘイビアダイアグラム
      • 3.2.1 インタラクション・ダイアグラム
  • 4 メタ・モデリング
  • 5 養子縁組
  • 6 批判
    • 6.1 UML 1.xへの批判

歴史[編集元|編集]

オブジェクト指向の手法と表記法の歴史

UMLは1990年代後半から進化しており、そのルーツは1980年代後半から1990年代前半に開発されたオブジェクト指向の手法にあると言われています。年表(画像参照)には、オブジェクト指向のモデリング手法や表記法の歴史のハイライトが示されている。

元々はBooch法、OMT(Object-modeling technique)、OOSE(Object-oriented software engineering)の表記法をベースにしており、それらを1つの言語に統合したものです。 [5]

UML 1.x以前[編集元|編集]。

ラショナル・ソフトウェア社は、1994年にゼネラル・エレクトリック社からジェームス・ランボー氏を採用し、その後、当時最も人気のあった2つのオブジェクト指向モデリング手法の発信源となった。[6]ルンボーのオブジェクト・モデリング・テクニック(OMT)とグラディ・ブーシュの手法である。1995年には、オブジェクト指向ソフトウェアエンジニアリング(OOSE)の生みの親であるアイバー・ヤコブソンがRational社に加わり、彼らの活動を支援した。 [1]

この3人(Rumbaugh、Jacobson、Booch)の技術的なリーダーシップのもと、1996年にUMLパートナーと呼ばれるコンソーシアムが組織され、UML(Unified Modeling Language)の仕様を完成させ、OMG(Object Management Group)に提案して標準化を進めていった。また、UMLパートナーには、HP、DEC、IBM、Microsoftなどの他の関係者も参加していた。1997年1月、UML PartnersのUML 1.0ドラフトがコンソーシアムからOMGに提案された。同月、UMLパートナーは、クリス・コブリンを議長、エド・アイクホルトを管理者とする、言語構造の正確な意味を定義するためのグループを結成し、仕様を確定し、他の標準化活動と統合することにしました。この作業の結果、1997年8月にUML 1.1がOMGに提出され、1997年11月にOMGによって採択された。 [1][7]

UML 1.x[ソースを編集|編集]。

最初のリリースの後、言語を改善するためのタスクフォースが結成[1]され、1.3、1.4、1.5といくつかのマイナーリビジョンがリリースされました。 [8]

このようにして作られた規格は(オリジナルの規格と同様に)、曖昧で一貫性がないと指摘されています。

UML 2.x[エディットソース|編集]。

UML 2.0メジャーリビジョンは、2005年のバージョン1.5に代わるもので、コンソーシアムを拡大して開発され、機能の使用に関する新たな経験を反映して言語をさらに改良しました。 [11]

UML 2.1は正式な仕様としては発表されなかったが、2007年にバージョン2.1.1と2.1.2が登場し、2009年2月にはUML 2.2が発表された。2010年5月にはUML2.3が正式にリリースされました。[12]2011年8月にUML 2.4.1が正式にリリースされました。[12]UML 2.5は2012年10月に「In process」バージョンとしてリリースされ、2015年6月に正式にリリースされた。 [12]

UML 2.xの仕様には4つの部分があります。

  1. ダイアグラムとそのモデル要素の表記法とセマンティクスを定義する上部構造
  2. 上部構造のベースとなるコア・メタモデルを定義するインフラストラクチャー
  3. モデル要素のルールを定義するOCL(Object Constraint Language)。
  4. UML 2の図のレイアウトを交換する方法を定義するUML Diagram Interchange

これらの標準の現在のバージョンは以下の通りです。UML Superstructureバージョン2.4.1、UML Infrastructureバージョン2.4.1、OCLバージョン2.3.1、UML Diagram Interchangeバージョン1.0です。[13]UML Superstructureは、言語の問題点を解決する改訂タスクフォースによって、更新と改良が続けられています。 [14]

デザイン[エディットソース|エディット]について

UML(Unified Modeling Language)は、システムのアーキテクチャ設計図を図(画像参照)で可視化する方法で、以下[5]のような要素が含まれています。

  • あらゆる活動(仕事)
  • システムの個々のコンポーネント
    • そして、それらが他のソフトウェアコンポーネントとどのように相互作用するか。
  • システムの動作について
  • エンティティが他とどのように相互作用するか(コンポーネントとインターフェース)
  • 外部ユーザーインターフェース

UML(Unified Modeling Language)は、元々はオブジェクト指向の設計文書のみを対象としていましたが、上記のようなより広い範囲の設計文書をカバーするように拡張され[15]、多くの場面で活用されています。 [16]

ソフトウェア開発手法[編集元|編集]

UMLは、それ自体は開発手法ではありません[17]が、当時の代表的なオブジェクト指向ソフトウェア開発手法(OMT、Booch法、Objectoryなど)との互換性を考慮して設計されており、特にRational Software Inc.での作業開始時に使用することを想定していたRUPとの互換性を考慮して設計されています。

モデリング[エディットソース|編集]。

UMLモデルとシステムのダイアグラムのセットを区別することが重要です。ダイアグラムとは、システムのモデルを部分的に図示したものです。図の集合は、モデルを完全にカバーする必要はなく、図を削除してもモデルは変わりません。また、モデルには、モデル要素や図を駆動する文書(書面によるユースケースなど)が含まれることがあります。

UML図は、システム・モデル[18]の2つの異なるビューを表します。

  • 静的ビュー(構造ビュー):オブジェクト、属性、操作、関係を用いてシステムの静的な構造を強調する。構造ビューには、クラス図や複合構造図などがある。
  • ダイナミック(またはビヘイビア)ビュー:オブジェクト間のコラボレーションやオブジェクトの内部状態の変化を示すことで、システムのダイナミックな動作を強調します。このビューには、シーケンス図、アクティビティ図、ステートマシン図が含まれます。

UMLモデルは、XMI(XML Metadata Interchange)交換フォーマットを使用して、UMLツール間で交換することができます。

ダイアグラム[編集元|編集]

UMLダイアグラム

UMLの構造図

  • クラス図
  • コンポーネント図
  • 複合構造図
  • 展開図
  • オブジェクト図
  • パッケージ図
  • プロフィール図

振る舞いのUML図

  • アクティビティ図
  • 通信図
  • インタラクション概要図
  • シーケンス図
  • 状態図
  • タイミング図
  • ユースケース図

UML 2には多くの種類のダイアグラムがあり、それらは2つのカテゴリーに分けられます。[5]いくつかのタイプは構造情報を表し、残りのタイプは一般的な動作を表し、その中には相互作用のさまざまな側面を表すものもあります。これらの図は、次のクラス図[5]に示すように、階層的に分類することができます。

これらの図には、用途、制約、意図を説明するコメントやメモが含まれていることがあります。

構造図[編集元|編集]。

構造図は、モデル化されるシステムに必ず存在するものを強調するものです。構造図は構造を表しているので、ソフトウェア・システムのソフトウェア・アーキテクチャを文書化する際に広く使用されます。例えば、ソフトウェア・システムがどのようにコンポーネントに分割されているかを記述し、これらのコンポーネント間の依存関係を示すコンポーネント・ダイアグラムがあります。

  • コンポーネント図
  • クラス図

ビヘイビア・ダイアグラム[編集元|編集]。

振る舞い図は、モデル化されたシステムで何が起こるべきかを強調するものです。振る舞い図は、システムの振る舞いを示すものであるため、ソフトウェア・システムの機能を記述するために広く使用されています。例えば、アクティビティ・ダイアグラムでは、システム内のコンポーネントのビジネスおよび運用上のステップ・バイ・ステップのアクティビティを記述します。

  • アクティビティ図
  • ユースケース図

インタラクション・ダイアグラム[編集元|編集].

相互作用図は、動作図のサブセットで、モデル化されたシステム内のものの間の制御とデータの流れを強調するものです。例えば、シーケンス・ダイアグラムは、オブジェクトがどのように相互に通信するかを、メッセージのシーケンスで示します。

  • シーケンス図
  • 通信図

メタモデリング[編集元|編集]

主な記事メタオブジェクト・ファシリティ

メタオブジェクト機能のイメージ

Object Management Group(OMG)は、Unified Modeling Language(UML)を定義するために、Meta-Object Facility(MOF)と呼ばれるメタモデリング・アーキテクチャを開発しました。[19]メタオブジェクト・ファシリティは、右の図のように4層構造のアーキテクチャとして設計されています。一番上の層にはM3層と呼ばれるメタ・メタ・モデルが用意されています。このM3モデルは、メタオブジェクト・ファシリティがM2モデルと呼ばれるメタモデルを構築するために使用する言語です。

レイヤー2のメタオブジェクト・ファシリティ・モデルの最も顕著な例は、UMLメタモデル(UML自体を記述するモデル)です。これらのM2モデルは、M1層の要素を記述したものであり、したがってM1モデルである。これらは、例えば、UMLで書かれたモデルなどになります。最後の層は、M0-層またはデータ層です。これは、システムのランタイムインスタンスを記述するために使用されます。 [20]

メタモデルは、ステレオタイプと呼ばれるメカニズムを使って拡張することができます。これについては、Brian Henderson-SellersとCesar Gonzalez-Perezが「Uses and Abuses of the Stereotype Mechanism in UML 1.x and 2.0」の中で、不十分/不可能であると批判しています。 [21]

採用[エディットソース|エディット]について

UMLは、多くの設計分野で有用であることがわかっており、[16]ITコミュニティの中ではほとんどユビキタスなものとなっています。 [22]

また、デザインの特効薬のように扱われることもありますが、これは使い方に問題があります。誤った使い方とは、過剰な使い方(システムコードの細かい部分までこれで設計する必要はない)や、誰でも(プログラミングをしたことがない人でも)これで何でも設計できると思い込んでしまうことです。 [23]

大規模な言語であり、多くの構造を持っていると考えられています。ジェイコブソンをはじめとする一部の人たちは、その数が多すぎて、学習(ひいては使用)の妨げになると感じている。 [24]

批判の声[編集元|編集]をご紹介します。

この記事のCriticism or Controversyセクションは、主題に対する記事の中立的な視点を損なう可能性があります。批判・論争の部分は、記事の中立性を損なう恐れがありますので、記事全体に統合するか、書き直してください。(2010年12月)

産業界からのUMLに対する一般的な批判には次の[4]ようなものがある。

  • not useful:「現在の進化したやり方や表現に対する利点を提供していない」。
  • 複雑すぎて、特に顧客とのコミュニケーションに支障をきたす。不必要に複雑」「UMLを使わない一番の理由は、すべての関係者にとって『読みやすい』ものではないということです。ビジネスユーザー(顧客)があなたのモデリング努力の結果を理解できないなら、UMLにどれほどの価値があるだろうか?"
  • 一般的なドキュメントと同様に、UMLとコードを同期させる必要があります。

UML 1.xへの批判[編集元|編集]。

カーディナリティの表記

データベースのChen、Bachman、ISO ER図と同様に、クラスモデルは、「look-across」カーディナリティを使用するように規定されているが、何人かの著者(Merise、[25]Elmasri、Navathe[26]など[27])は、ロールや最小および最大カーディナリティのために、同一側または「look-here」を好む。最近の研究者(Feinerer, [28]Dulleaなど[29])は、UMLやER図で使用されている「look-across」技法は、次数が2以上のn-ary関係に適用すると、効果や一貫性が低下することを示している。

Feinerer氏は「UMLのアソシエーションに使われているようなルック・アクロス・セマンティクスに基づいて操作すると問題が発生します。Hartmann[30]はこの状況を調査し、どのように、そしてなぜ異なる変換が失敗するのかを示しています。"(ただし、3.4と3.5の2つの図は実際には同じものなので、言及されている「縮小」は偽物である)また、"次の数ページで見るように、look-acrossの解釈は、単純なメカニズムを2項のアソシエーションからn項のアソシエーションに拡張することを妨げるいくつかの困難をもたらしている "と述べている。

質問と回答

Q: 統一モデリング言語(UML)とは何ですか?


A: 統一モデリング言語(UML)は、ソフトウェア工学で使用されるモデリング言語で、システムの設計がどのように見えるかを示す標準的な方法を提供します。

Q: UMLの本来の目的は何ですか?


A: UMLの当初の目的は、ソフトウェア設計に対するさまざまな表記体系やアプローチを標準化することでした。

Q: UMLは誰が開発したのですか?


A: UMLは、Rational Software社のGrady Booch氏、Ivar Jacobson氏、James Rumbaugh氏によって1994年から1995年にかけて開発され、1996年までは彼らによって開発が進められました。

Q: UMLが標準として採用されたのはいつですか?


A: UMLは、1997年にOMG(Object Management Group)によって標準として採用されました。

Q: UMLは誰が管理しているのですか?


A: UMLは、1997年に標準として採用されて以来、Object Management Groupによって管理されています。

Q: UMLは国際標準として認められましたか?


A: はい、UMLは2005年に国際標準化機構(ISO)によって国際標準として認められました。

Q: ソフトウェア工学におけるUMLの目的は何ですか?


A: ソフトウェア工学におけるUMLの目的は、システムの設計がどのようなものかを示す標準的な方法を提供し、開発者や利害関係者の間で容易に理解し、伝達できるようにすることです。


百科事典を検索する
AlegsaOnline.com - 2020 / 2025 - License CC3