目次


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

Comments

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

カスタムUMLプロファイルの作成について

前回は、MDDツール環境の開発におけるUMLプロファイルの役割と、UMLプロファイルの概要について解説しました。今回は、Rational Software Architect(以下、RSA)拡張機能の1つであるカスタムUMLプロファイル作成機能を使い、プロファイルを実際に作成する手順についてご紹介します。 通常は、UMLプロファイルを作成する際には、以下のステップで作業を行います。

  1. プロファイル・プロジェクトの作成
  2. UMLプロファイル(ステレオタイプ、属性、制約など)の作成
  3. プロファイル・プロジェクトのテスト
  4. UMLプロファイルのリリース
  5. UMLプロファイルのパッケージ化(プラグインの作成)
  6. UMLプロファイルのローカライズ
  7. UMLプロファイルのアセット化

今回ご紹介する手順は、上記のステップのうち、1〜3までを扱います。また、作成するプロファイルは、前回の連載でACME社のサンプル事例としてご紹介した、Webユーザーインターフェースのモデリングを行うためのUMLプロファイルです。

UMLプロファイル・プロジェクトの作成

ここからは、RSAを使って作業します。(UMLプロファイルのカスタマイズ機能は、RSAの他、Rational Systems Developer、Rational Software Modeler、でも利用可能です。) UMLプロファイルの作成は、RSAのモデリング・パースペクティブで行います。まずは、モデリング・パースペクティブを開いてください。パースペクティブを開いたら、以下の手順に従って、プロファイル・プロジェクトの作成を行います。

  1. UMLプロファイル・プロジェクトを作成します。
    ウィンドウ・メニューの「ファイル」→「新規」→「プロジェクト」から新規プロジェクト・ウィザードを開き、「モデリング」→「UMLの拡張性」→「UMLプロファイル・プロジェクト」を選択します。UMLプロファイル・プロジェクトが表示されない場合は、「すべてのウィザードを表示」にチェックを入れます。
    図1:プロジェクトの作成
    図1:プロジェクトの作成
    図1:プロジェクトの作成
  2. UMLプロファイル・プロジェクトを作成します。
    ウィンドウ・メニューの「ファイル」→「新規」→「プロジェクト」から新規プロジェクト・ウィザードを開き、「モデリング」→「UMLの拡張性」→「UMLプロファイル・プロジェクト」を選択します。UMLプロファイル・プロジェクトが表示されない場合は、「すべてのウィザードを表示」にチェックを入れます。
    図2:プロジェクトの作成
    図2:プロジェクトの作成
    図2:プロジェクトの作成
  3. 図3:UMLプロファイル作成
    図3:UMLプロファイル作成
    図3:UMLプロファイル作成
  4. プロファイル名およびファイル名を指定します。
    ファイル名には自動的に拡張子.epxが付与されます(ここではプロファイル名、ファイル名ともに、UXModelingとします)。「モデル・ライブラリーのインポート」では、作成するプロファイルに適用可能なプリミティブ・タイプを指定します(UML2を指定します)。
    最後に「終了」をクリックします。
    ここまでで、UMLプロファイル・プロジェクトおよびUMLプロファイルが作成され、UMLプロファイル・エディターがオープンされます。
    図4:UMLプロファイル・エディター
    UMLプロファイル・エディター
    UMLプロファイル・エディター
  5. 作成したプロファイルの情報を確認します。
    モデル・エクスプローラー上で作成したUMLプロファイル名(ここではUXModeling)をクリックすると、プロパティー・ビューにおいてUMLプロファイルの各種プロパティーを確認できます。プロパティー・ビューの「一般タブ」ではバージョン番号およびリリース・ラベルを確認できます。作成した直後にはバージョン番号は0となっています。
    図5:UMLプロファイルのプロパティー
    UMLプロファイルのプロパティー
    UMLプロファイルのプロパティー

UML プロファイル・プロジェクトの作成は、ここまでで終了です。

UMLプロファイルの作成

先ほど作成したプロジェクトの中に、プロファイルを作り込む作業を行います。今回は、Webユーザーインターフェースのモデリングを行うためのステレオタイプを作り込みます。

ステレオタイプの作成

それでは、このUMLプロファイルに紐付けられたステレオタイプを以下の手順で作成しましょう。

  1. 図6:ステレオタイプの作成
    図6:ステレオタイプの作成
    図6:ステレオタイプの作成
  2. モデル・エクスプローラー上に新規ステレオタイプが表示されますので、モデル・エクスプローラー上またはプロパティー・ビューの一般タブにて名前を変更します(ここではglobalとしています)。 ※ステレオタイプ名にスペースを入れると、Object Constraint Language(OCL)を使用して制約を定義するときに問題がおきる可能性がありますので、ステレオタイプ名にはスペースを使用しないでください。
    図7:ステレオタイプ名の指定
    ステレオタイプ名の指定
    ステレオタイプ名の指定

ここまでで、UMLプロファイルへステレオタイプが追加されました。次に「アイコン」、「メタクラス拡張」のプロパティーの指定を行います。

アイコンおよび図形イメージの指定

ステレオタイプに対して図形イメージ(グラフィック・イメージ)を指定することによって、モデル・エクスプローラー上でモデル要素名にアイコンを付加させることや、ダイアグラム・エディター上でモデル要素をグラフィック表示させることができます。アイコン、図形イメージの指定を行いたい場合は、以下の手順を参考にして下さい。

  • アイコンの指定
    ステレオタイプのプロパティー・ビューの「一般タブ」の「アイコン」の右の「参照...」をクリックして、図形ファイルを指定します。BMPまたはGIFファイルが使用できます(推奨サイズは16×16です)。
  • 図形イメージ(モデル要素をグラフィック表示)の指定
    ステレオタイプのプロパティー・ビュー「一般タブ」の「図形イメージ」の右の「参照...」をクリックして、図形ファイルを指定します。SVGファイルが使用できます(推奨サイズは50×50です)。

メタクラス拡張の指定

ステレオタイプを実際のモデル要素に関連づけるには、ステレオタイプ適用可能なモデル要素の型を、メタクラス拡張として指定する必要があります。メタクラス拡張の指定は、以下の手順で行います。

  1. 図8:拡張タブ
    拡張タブ
    拡張タブ
  2. 図9:メタクラス拡張の作成
    メタクラス拡張の作成
  3. ステレオタイプに関連付けるメタクラスを指定します。
    ここでは、Classを指定します。これによってステレオタイプglobalはClass型のモデル要素に適用可能となります。
    図10:Class型の指定
    Class型の指定
    Class型の指定

「必須」オプションにチェックを入れた場合、選択されたメタクラスのモデル要素に対して、ステレオタイプが自動的に適用されるようになります。たとえば図10の例のClassメタクラスの拡張を必須とすると、UXModelingプロファイルが適用されたモデル上でUMLクラス要素を作成したときに自動的に≪global≫ステレオタイプが適用されます。

ステレオタイプへの属性の追加

UMLステレオタイプには、に、属性を追加することが可能です。ここでは、ステレオタイプの属性の追加手順を説明します。

  1. 図11:ステレオタイプの属性の追加
    ステレオタイプの属性の追加
    ステレオタイプの属性の追加
  2. モデル・エクスプローラー上に新規属性が表示されますので、モデル・エクスプローラー上またはプロパティー・ビューの一般タブにて名前を変更します。
    ここではリンクの説明を表す属性としてdescription属性を定義しています。 ※名前にはスペースは使用しないでください。
    図12:属性名の変更
    属性名の変更
    属性名の変更
  3. 属性のデータ・タイプを指定するためにプロパティー・ビューで「一般」タブを開きます。
    図13:データ・タイプの指定
    データ・タイプの指定
    データ・タイプの指定
  4. 「タイプの選択」をクリックします。
    図14:タイプの選択
    タイプの選択
  5. 「要素の選択」ウィンドウで、データ・タイプを選択し、「OK」をクリックします。
    図15:タイプの選択
    タイプの選択
    タイプの選択

列挙の作成と使用

UMLモデルでは、列挙はユーザー定義のデータ・タイプを表すモデル要素です。列挙には、列挙リテラルと呼ばれる指定された識別子のセットが含まれ、これは列挙の値を表します。列挙はInteger 型やBoolean型などの基本型や、ユーザー定義の型を表すことが可能です。
UMLプロファイルでは、列挙については、属性タイプとして指定できます。ここでは、「列挙の作成」、「列挙リテラルの追加」、「列挙の使用」の順番で作成手順を説明します。
【列挙の作成】

  1. UMLプロファイルに列挙を追加するには、モデル・エクスプローラーでプロファイルを右クリックしてから、「UMLの追加」→「列挙」を選択します。
    図16:列挙の追加
    列挙の追加
    列挙の追加
  2. モデル・エクスプローラー上に新規属性が表示されますので、モデル・エクスプローラー上またはプロパティー・ビューの一般タブにて名前を変更します。
    ここではリンクの種類を表す列挙型としてLinkKindを定義しています。
    図17:列挙の追加例
    列挙の追加例
    列挙の追加例

【列挙リテラルの追加】

列挙リテラルは列挙型の具体的な値を表します。以下の手順で列挙リテラルを追加します。

  1. モデル・エクスプローラー上で列挙を右クリックし、「UMLの追加」→「列挙文字列」をクリックします。
    図18:列挙リテラルの追加
    列挙リテラルの追加
    列挙リテラルの追加
  2. 列挙リテラルの名前を入力し、Enterキーを押します。
    ここでは、HREF参照リンクを表すhrefという値を定義しています。
    図19:列挙リテラル名の入力
    列挙リテラル名の入力
    列挙リテラル名の入力

【列挙の使用】

列挙を作成すると、ステレオタイプの属性の「タイプの選択」を行う際に、「要素の選択」ウィンドウにおいて作成した列挙を選択できるようになります。

図20:列挙の使用
列挙の使用
図21:列挙リテラルの選択
列挙リテラルの選択
列挙リテラルの選択

列挙の作成と使用に関する手順はここまでになります。

制約の追加

RSAではObject Constraint Language(OCL)もしくはJavaを使用して制約を定義することができます。制約はモデル作成時などにRSAによって検証され、制約違反があれば通知されます。制約を定義することで、モデル開発者が適切なモデルを作成することを支援することができます。
制約を追加する手順は、以下のようになります。

  1. モデル・エクスプローラーにて、制約を指定するステレオタイプを右クリックし、「UMLの追加」→「制約」を選択します。
    図22:制約の追加
    制約の追加
    制約の追加

    制約の名前を入力してEnterを押します。

  2. 「プロパティー」ビューの「一般」タブにて、制約を記述する「言語」を選択します。
    ※JavaクラスとOCLが選択可能ですが、OCLを選択することによって、RSAによる検証が可能となります。
    図23:制約を記述する言語の選択
    制約を記述する言語の選択
    制約を記述する言語の選択
  3. 「本体」フィールドに、制約の内容を入力します。
    ここでは、≪input≫ステレオタイプのjavabean属性に指定された値は空文字列ではならないという制約をOCLで定義しています。
    ※「本体」フィールドでは、RSAのコードアシスト機能が利用可能です。
    図24:本体フィールドの入力
    本体フィールドの入力
    本体フィールドの入力
  4. プロパティー・ビューの「詳細」タブにおいて、制約の検証方法を指定します。
    プロパティー列の「メタモデルの制約」を展開し、「評価モード」として「バッチ」と「ライブ」のいずれかを選択します。
    図25:評価モードの入力
    評価モードの入力
    評価モードの入力

    バッチ:
    モデルの検証を明示的に行ったときに、制約の検証が行われます。検証の結果は「問題」ビューに表示されます(図26)。

    ライブ:
    ステレオタイプを適用されたモデル要素を変更した際に、制約の検証が行われます。
    検証の結果がポップアップ・ウィンドウに表示されます(図27)。

    図26:評価モードが「バッチ」の場合の検証結果の表示例
    評価モードが「バッチ」の場合の検証結果の表示例
    評価モードが「バッチ」の場合の検証結果の表示例
    図27:評価モードが「ライブ」の場合の検証結果の表示例
    評価モードが「ライブ」の場合の検証結果の表示例
    評価モードが「ライブ」の場合の検証結果の表示例
  5. 制約違反が発見された際に表示される重大度レベルを指定します。
    プロパティー列の「メタモデルの制約」を展開し、「重大度」の項目でレベルを選択します。
    図28:制約違反の重大度の指定
    制約違反の重大度の指定
    制約違反の重大度の指定

ここまでで、制約の追加に関する説明は終わりです。

作成したUMLプロジェクトのテスト

作成したプロファイルをテストするには、まず、テスト用のモデルを用意する必要があります。テスト用モデルを作成後、以下の手順でテストを行います。

UMLプロファイルのテスト

  1. テスト用のモデルのプロパティー・ビューの「プロファイル」タブで、「プロファイルの追加...」ボタンをクリックします。
    図29:プロファイルの追加
    プロファイルの追加
    プロファイルの追加
  2. 「プロファイルの選択」ダイアログで、「ファイル」のラジオボタンを選択し、「参照...」をクリックします。テストしたいUMLプロファイル・プロジェクトのepxファイル(ここではUXModeling.epx)を選択し、「OK」をクリックします。
    図30:プロファイルの選択
    プロファイルの選択
    プロファイルの選択
  3. 「選択されたプロファイルはリリースされていません」という警告が表示されます。「OK」をクリックします。
    ここでは、公開前のプロファイルのテストを行っています。
    図31:リリース前のプロファイルの警告
    リリース前のプロファイルの警告
    リリース前のプロファイルの警告
  4. 適用したプロファイルのバージョンが1にあがったことが確認できます。
    図32:バージョンの確認
    バージョンの確認
    バージョンの確認
  5. テスト用モデルを操作し、ステレオタイプやステレオタイプ・プロパティーが想定どおり適用できることを確認します。

プロファイルのバージョンの不整合とその解消

テスト用のモデルにUMLプロファイルを適用した後、UMLプロファイルを変更しepxファイルを保存すると、UMLプロファイルのバージョンが1つ上がります。保存を行った時点ではテスト用のモデルには前のバージョンのプロファイルが適用されている状態になっており、UMLプロファイルとモデルとのあいだに不整合が発生しています。

不整合の確認と解消は以下の手順で行います。

  1. テスト用のモデルのプロパティー・ビューの「プロファイル」タブを開きます。不整合が発生している場合UMLプロファイルの名前の横に「非同期状態」と表示されます。
    図33:非同期状態
    非同期状態
    非同期状態
  2. 「プロファイルの移動」をクリックしUMLプロファイルのバージョンと同期化します。 UMLプロファイルのその時点の最新バージョンへと同期化されます。
    図34:プロファイル移動後の例
    プロファイル移動後の例
    プロファイル移動後の例

以上で、作成したプロファイルのテスト手順は終わりです。 最後に、UMLプロファイルの作成の際に有用なヘルプのトピックとして以下をご紹介します。実際に作成する際には、ご一読されることをお勧めします。

  • 「Rational Software Architectの機能の拡張」→「カスタム UMLプロファイルを使用したUMLメタモデルの拡張」

    インターネットからオンライン・ヘルプにて確認も可能です。(下記のリンク先は英語表記になります。日本語表記のガイドは製品版をご利用下さい。)

  • Extending the UML metamodel by using custom UML profiles(US)

    今回は、「プロファイル・プロジェクトの作成」、「UMLプロファイルの作成」、そして、「プロファイル・プロジェクトのテスト」を実施しました。次回は、プロファイルのリリース作業についてご紹介します。

第5回 「カスタムUMLプロファイルの公開」


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


関連トピック


コメント

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

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