ストラタジーナム メニュー

2007年5月22日火曜日

UML中級講座 第112回 プロファイル

オフィスの移転も終わり、ようやく落ち着いてきました。


プロファイル
プロファイル概説

UML言語の拡張

UMLを使用する上で、言語そのものをカスタマイズしたい、あるいは拡張したいと言う要求は、常に存在します。そして、OMGの標準では、UML1.1の段階から、ステレオタイプおよびタグ付き値で、言語の拡張機能を提供してきましたが、必ずしもその定義は厳密ではなく明確さに欠ける部分がありました。
この問題を解決するために、UML2.0では、プロファイルという言葉が、メタモデリングのテクニックとして、より構造的、より正確に定義される事になりました。
ステレオタイプそのものは、既に皆さんご存知だと思いますが、キーワードをギュメで括って表現します。
ほとんどの場合、ステレオタイプは、標準ステレオタイプと呼ばれるあらかじめUMLで事前に定義されている種類のみを使用しますが、場合により自分固有のステレオタイプを付け加えたい事があります。
下の図は、プロファイリング機能により、通常のクラスを拡張して、Galaxy(銀河)、Rocket(ロケット)、QoSCategory(サービス品質カテゴリー)を表示しています。
UML2.0(もしくは最新の2.1)に対応しているツールでは、このプロファイリングの機能に対応しているケースが多いのですが、表示方法はツールにより異なりますので、この図のように写真表示やアイコン表示ができるとは限りません。(この図は、Visual Paradigmと言う製品を使って書いています。)


なぜ拡張するのか?

なぜ拡張する必要があるのかは、必ずしも一定の法則がある訳ではなく、モデラーによりまちまちですが、代表的なケースとして、次のような場合が上げられます。



  • 特定のプラットフォームやドメインに固有の専門用語を使用したい場合
  • 別のシンボル、アイコンを使いたい場合
  • 既存のメタモデルに、新たにセマンティクスを付け加えたい場合
  • 既存のメタモデルに、制約を付け加えたい場合
  • モデル変換の際に必要な情報を付け加えたい場合

また、往々にして、これらの要件が複数重なって拡張を行なう必要が発生したりします。

プロファイリングとMOF

プロファイリングは、メタモデル構造をいじりますが、その大前提として、UMLそのものの構造や振舞いは一切変えることはできません。例えば、メタモデルの汎化関係のなかに新たなメタクラスを付け加えると言った事はできません。(下のメタクラス(特化メタクラスあるいはサブメタクラス)に影響を与えてしまいます)
メタモデルを変更すると言うことは、新たに言語を作ることに等しい訳で、これはMOFの範疇に所属します。
ファンダメンタルのレベルで学習したように、メタモデル構造はUML言語だけが持つ訳ではなく、JavaやCWMと言った言語も持ち、最近ではBPMN(Business process Modeling Notation)も、MOFにより定義されています。
プロファイルは、あくまでも既存のUMLの言語構造を温存し、その上に機能を拡張するものです。