UMLツール(Unified Modeling Languageツール)とは、ソフトウェアエンジニアリングにおける業界標準の汎用モデリング言語であるUnified Modeling Language (UML)に関連付けられた表記法と意味論の一部または全部をサポートするソフトウェアアプリケーションです。
ここでいうUMLツールは、UMLのみに特化しているわけではないが、アドオン、コンポーネント、または全体機能の一部として、統一モデリング言語(UML)の何らかの機能をサポートするアプリケーションプログラムも含む、広義の意味で使用されている。
UMLツールは、以下の種類の機能をサポートしています。
この文脈における図式化とは、 UML図を作成および編集することを意味します。つまり、統一モデリング言語のグラフィカル表記法に従った図のことです。
UML図を(主に)オブジェクト指向ソフトウェアの図を作成する手段として用いることは、ソフトウェア開発者の間では概ね合意されている。開発者がオブジェクト指向ソフトウェアの図を作成する際には、通常UML表記法を用いる。しかしながら、そもそもそのような図が必要なのか、ソフトウェア開発プロセスのどの段階で使用すべきなのか、あるいはどのように(もし必要であれば)最新の状態に保つべきなのかについては、しばしば議論の的となる。ソフトウェアのソースコードが最優先される傾向にあるため、図はしばしば非推奨とされる。
ラウンドトリップエンジニアリングとは、UMLツールがモデルからコードを生成する機能、およびコードからモデルを生成する機能(リバースエンジニアリングとも呼ばれる)を指し、モデルとコードの両方の意味的な一貫性を維持します。コード生成とリバースエンジニアリングについては、以下でさらに詳しく説明します。
この文脈におけるコード生成とは、ユーザーが関連するモデルデータを含むUML図を作成し、UMLツールがその図からソフトウェアシステムのソースコードの一部または全部を生成することを意味します。一部のツールでは、ユーザーがソースコードテンプレートの形式でプログラムソースコードの骨組みを提供することができ、コード生成プロセス中に、定義済みのトークンがプログラムソースコードの一部に置き換えられます。
よく指摘される批判の一つは、UML図にはプログラムソースに含まれる情報と同じ情報を含めるために必要な詳細が欠けているという点です。ジャック・W・リーブスは、設計の最終的な具現化はソースコードにあると述べています。彼のよく引用される「コードこそが設計である」[ 1 ]という発言は、UML図やソフトウェア要件文書などの中間レベルおよび高レベルのソフトウェア設計成果物は不要であるという意味に誤解されています。
この文脈におけるリバースエンジニアリングとは、UMLツールがプログラムのソースコードを入力として読み込み、そこからモデルデータと対応するグラフィカルなUML図を導き出すことを意味します(「リバースエンジニアリング」という記事で説明されている、やや広義の意味とは異なります)。
リバースエンジニアリングにおける課題には、以下のようなものがある。
classやなどですfunction。XMLメタデータ交換(XMI)は、UMLモデルの交換のためのフォーマットです。XMIはUMLダイアグラム交換をサポートしていません。UMLダイアグラム交換は、あるモデルから別のモデルへUMLダイアグラムをインポートすることを可能にする機能です。
モデル駆動型アーキテクチャ構想に関連する重要な概念の一つは、あるモデルを別のモデルに変換する能力です。例えば、プラットフォームに依存しないドメインモデルを、実装のためにJavaプラットフォーム固有のモデルに変換したい場合などが考えられます。また、 UMLモデルをリファクタリングして、より簡潔で整ったUMLモデルを作成することも可能です。さらに、ビジネスプロセスモデリング表記法(BPMN)など、他のモデリング表記法からUMLモデルを生成することもできます。BPMNもUMLプロファイルの一つです。これをサポートする標準規格は、クエリ/ビュー/変換(QVT)と呼ばれています。オープンソースのQVTソリューションの一例として、フランス国立情報学研究所(INRIA)が開発したATLAS変換言語(ATL)が挙げられます。
。