目次


実践!EclipseベースのMDDツール環境の開発

Rational Software Architect拡張プラグインの作成

Comments

第3回 「UMLプロファイルとは?」

MDDツール環境の開発におけるUMLプロファイルの役割

UMLプロファイルとは、UMLをカスタマイズすることを可能にするUMLの拡張メカニズムであり、UMLプロファイルを利用することで、特定のドメインやプロジェクトや開発組織などに特化したUMLのメタモデルを構築することができます。 UMLプロファイルはモデル駆動型開発において必要とされる以下の特徴を備えています。

  • 明確なセマンティクス
    UMLプロファイルは UML2.0 のメタモデルの中に組み込まれており、明確なセマンティクスを持ちます。後述する制約を使用することで、モデルの意味上の誤りを自動検証させることができるようになります。
  • モデルの編集が容易
    UMLプロファイルによって拡張されたメタモデルは、既存のUMLモデリングツールによって編集可能です。Rational Software Architect(以下、RSA)/Rational Software Modeler(RSM)ではモデル要素へのUMLプロファイルの適用を完全にサポートします。
  • モデル情報を機械的に(プログラムから)参照可能
    RSAはUML 2.0のメタモデルに従い、UMLモデルに適用されているプロファイルや、モデル要素(クラス、メッセージなど)に適用されているスレテオ・タイプにアクセスするAPIを提供します。

モデル駆動型開発では、UMLプロファイルは、メタモデルの構築において使用されます。UMLプロファイルを作成する主な目的は、以下の3点です。

  • パターンやトランスフォーメーションで必要な情報をモデルに含める
  • モデルを理解しやすくするためにモデルの外観や表現方法をカスタマイズする
  • モデルの作成を支援するためにモデルの内容を自動的に検証可能にする

UMLプロファイルは大きく分けてステレオタイプと制約の2つから構成されています。今回の連載では、UMLプロファイルを構成するステレオタイプと制約について説明し、最後にUMLプロファイルの使用例についてご紹介します。

ステレオタイプ

ステレオタイプは、UMLの拡張メカニズムの1つであり、UMLのボキャブラリーを広げ、UML図中で成果物の意味をより具体的にします。外観としては二重の不等号括弧(≪ ≫)で囲まれた名前として表示されます。ステレオタイプはクラスやインターフェースなどの分類子(Classifier)だけではなく、操作(Operation)や属性(Property)などのモデル要素に適用することもできます。 ステレオタイプは以下の要素で構成されます。

  • ステレオタイプ名
  • 拡張 (Extensions)
  • 属性 (ステレオタイプ・プロパティー)
  • 制約
  • アイコン
  • 図形イメージ

拡張 (Extension)

拡張 (Extensions) は、そのステレオタイプが適用できるUMLモデル要素を指定するためのメカニズムです。たとえばRSAのEJBTransformation プロファイルの ≪service≫ステレオタイプはUMLクラス要素(メタクラスのClass)のみを拡張しています。そのため≪service≫ステレオタイプはUMLクラスに対してのみ表示されます。これにより開発者が誤ってクラスの操作や属性に≪service≫ステレオタイプを適用してしまうなど、無意味なモデルが作られてしまうことを防ぐことができます。

TIPS : メタクラスの確認方法

拡張として指定すべきメタクラスはUMLメタモデルに定義されています。メタクラスを確認する方法として、通常のUMLモデル上でステレオタイプを適用したいモデル要素を選択し、プロパティー・ビューのステレオタイプタブで、要素名を確認するという方法があります。要素名の先頭には “<メタクラス名>” という形でメタクラスの名前が表示されます。以下の図の例では<Class>と表示されていることから、この要素のメタクラスはClassであることがわかります。

属性(ステレオタイプ・プロパティー)

属性は特定のステレオタイプに紐付けられた追加情報をモデルに指定するためのメカニズムです。ステレオタイプには属性を持つものと、持たないものがあります。ステレオタイプの属性は、ステレオタイプ・プロパティーとも呼ばれます。この名称はステレオタイプがUMLクラス要素などに適用された際などに、クラスの持つ属性とステレオタイプの属性とを区別するために使用されます。

制約

制約については、次の節で説明します。

アイコンと図形イメージ

アイコンも図形イメージもいずれもモデル上での表記をカスタマイズしてモデルをより理解しやすくするために使用します。アイコンと図形イメージには画像ファイルを指定します。ただしそれぞれ指定可能なファイルの形式が異なります。図形イメージは一般に拡大縮小されるため、それが可能なSVG形式のファイルを指定します。 アイコン : GIFまたはBMPファイル(推奨サイズは 16 x 16 ピクセル)

図形イメージ : SVGファイル (推奨サイズは 50 x 50 ピクセル) モデル上では「ステレオタイプと可視性スタイル」を選択することでアイコンもしくは図形イメージの何れかを表示することができます(図1)。

図1:ステレオタイプおよび可視性スタイルとモデル上の表示
ステレオタイプと 可視性スタイルアイコン図形イメージ
モデル上の表示

制約

制約はモデル要素やモデル要素間の関係についてのルールを追加・拡張するメカニズムです。制約はそれ単体で、もしくはステレオタイプと共に使用されモデル開発者が正確なモデルを作成することを助けます。RSAでは制約を自動的に検証してモデルの作成を支援します。 RSAではObject Constraint Language(OCL®)もしくはJavaを使用して制約を定義することができます。この制約はモデル作成時などにRSAによって検証され、制約違反があれば通知されます。制約を定義することで、モデル開発者が適切なモデルを作成することを支援することができます。 図2はJava Transformationプロファイルを適用したモデルを編集中に実行される整合性検証およびエラー表示の例です。このプロファイルにはクラスの多重継承を許さないという制約が含まれています(多重継承はJavaでは実装できないためです)。RSAはこの制約を自動的に検証することで、実装不可能なモデルを作成してしまわないようにモデル作成者を支援します。

図2:モデル作成時の検証エラーの表示(複数のスーパークラス指定)
図2:モデル作成時の検証エラーの表示(複数のスーパークラス指定)
図2:モデル作成時の検証エラーの表示(複数のスーパークラス指定)

ACME社のケース・スタディー

前回(第2回「Rational Software Architect拡張によるMDDツール環境開発のサンプル事例」)で説明したACME社のサンプル事例ではWebユーザーインターフェースのモデリングを行うためのメタモデルを構築する必要があります。このモデルではスクリーン、入力項目、サブミット、リンクといった要素がモデル化されます。このモデルの目的はユーザー・エクスペリエンスを最大にするための必要事項を検討し、決定することです。そのためユーザーインターフェースの入力項目やリンクなどの要素がどのように実装されるのか(たとえばHTMLやJSPタグ)という詳細は検討しません。
このケースではStrutsによる実装を考慮した際に必要となる情報もモデルに含めます。たとえば特定のサブミットによって実行されるStrutsのaction名をサブミットに関連付けて保持します。このような情報はStruts実装へのトランスフォーメーションから参照され、生成される構成ファイルやコードの内容をカスタマイズするために利用されます。これらを考慮して作成したプロファイルを用いたユーザーインターフェースモデルの例を図3に示します。

図3:サンプルのプロファイルを使用したユーザーインターフェースモデルの例
図3:サンプルのプロファイルを使用したユーザーインターフェースモデルの例
図3:サンプルのプロファイルを使用したユーザーインターフェースモデルの例

このモデルでは画面を表すために≪screen≫ステレオタイプを適用したUMLクラス(Class)要素を用います。また画面に対するユーザーの処理(サブミットなど)を≪useraction≫ステレオタイプを指定したUML操作(Operation)要素を用います。ユーザーからの入力は≪input≫ステレオタイプを指定したUMLクラス要素で表し、その入力項目は入力項目の種類にあわせて≪textfield≫などのステレオタイプを指定したUML属性(Property)要素で表します。 幾つかのステレオタイプにはStrutsによる実装へのトランスフォーメーションで使用するための属性(ステレオタイプ・プロパティー)が含まれます。たとえば≪input≫ステレオタイプには、その入力をStrutsで処理するためのActionFormのクラス名をステレオタイプ・プロパティーとして指定するようにします (図4)。

図4:ステレオタイプ・プロパティーの例
図4:ステレオタイプ・プロパティーの例
図4:ステレオタイプ・プロパティーの例

このプロファイルにはStrutsに不慣れな開発者でも忘れずに適切にクラス名などを入力できるように、ステレオタイプ・プロパティーの値を検査する制約が含まれます。

まとめ

RSAでは、モデル駆動型開発をサポートするために、MDD UML 2.0モデリング機能 、UMLプロファイルの作成機能 、トランスフォーメーション作成のためのフレームワークおよびAPI、パターン作成のためのエディターおよびAPI、を提供しています。 今回の連載では、UMLプロファイルに着目し、MDDツール環境の開発においてUMLプロファイルが持つ役割、また、UMLプロファイルを構成する、「ステレオタイプ」と「制約」について説明しました。 次回の連載では、RSA拡張機能の1つであるカスタムUMLプロファイル作成機能を使用して、今回ご紹介したようなプロファイルをどのように作成するのかについて解説します。どうぞお楽しみに!

第4回 「UMLプロファイルの作成」


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Rational
ArticleID=311650
ArticleTitle=実践!EclipseベースのMDDツール環境の開発
publish-date=08302006