メタモデルを定義
概要
メタモデルとは、エンティティの構造や関連性を定義したものです。 メタモデルを定義することで、設計すべき内容や設計時に考慮すべき制約を形式知化できます。
以下では、アクターとユースケースで構成されるユースケースモデルを題材に、 新規にプロファイルを作成してメタモデルを定義する際の、基本的な手順を説明します。
定義するメタモデルのイメージ
メタモデルの全体構成について
Next Design では製品に関わる様々なモデルを1つのプロジェクトで扱えるため、プロジェクト中のモデル数が多くなります。 そのため、プロジェクト直下でモデルの種類を大別できるような階層構造が有用です。
以下では、次のような階層構造のプロジェクトとなるようにメタモデルを定義することにします。 このプロジェクト例では、プロジェクト直下に [要求モデル]、[設計モデル] を設けて、モデルの種類を大別しています。
また、プロジェクトの対象範囲を広げると、プロファイルで定義するメタモデルの構成要素数も多くなります。 そのため、モデルの種類ごとにパッケージを設けてメタモデルの構成要素を分類しておくことが有用です。 それによりメタモデルの全体構成を俯瞰しやすくなります。
以下では、次のように [ユースケースモデル] パッケージを設けてメタモデルを定義することにします。 このプロファイル例では、プロファイルのルート直下に [ユースケースモデル] パッケージを設けて、メタモデルの構成要素を分類しています。
事前準備
画面構成を理解
メタモデル定義時には、左側にプロファイルナビゲータを、中央にクラス図を、右側にインスペクタを表示して使用します。
中央にクラス図を開くには、プロファイルナビゲータで開きたいクラス図をダブルクリックします。 クラス図を閉じるには、クラス図の右上に表示される [×] アイコンをクリックします。
note
- モデルエディタと違って、プロファイルナビゲータでツリーノードを クリック して選択ノードが変わってもクラス図の表示は切り替わりません。
- 別のクラス図を表示するには、表示したいクラス図を ダブルクリック して開きます。
以下では、ユースケースモデルのメタモデルを次の手順で定義してみましょう。
- プロファイルにユースケースモデルを追加
- ユースケースモデルの構造を定義
1. プロファイルにユースケースモデルを追加
プロファイルにユースケースモデルのメタモデルを追加するには、次の手順で行います。
- 新規プロファイル用のプロジェクトを作成
- プロファイルを構成して [ユースケースモデル] のエンティティを追加
- [ユースケースモデル] のメタモデルを定義するためのクラス図を準備
1.1 プロジェクトを新規作成
新規プロファイル用のプロジェクト作成
新規プロファイル用にプロジェクトを作成するには、以下の手順でプロジェクトを新規作成します。
操作手順
- Next Design を起動して、[スタートメニュー] から [スタート] > [プロジェクトの新規作成] リンクをクリックします。
- [プロジェクトの新規作成] ダイアログで、[プロジェクト名] は入力し、[プロファイル] は指定せず、[作成] ボタンを押下して、プロジェクトを新規作成します。
メタモデル定義のための画面構成に切り替え
事前準備で説明したメタモデル定義のための画面構成に切り替えるには、以下の手順で行います。
操作手順
- ナビゲータ上部のセレクタから [プロファイルナビゲータ] を選択して、ナビゲータを切り替えます。
- リボンの [表示] > [ペイン] > [インスペクタ] をクリックして、画面右側にインスペクタを表示します。
1.2 プロファイルを構成
プロジェクト直下のエンティティを追加
プロジェクト直下でモデルの種類を大別するために、[要求モデル] のエンティティを次の手順で追加します。
操作手順
- プロファイルナビゲータの先頭に表示されている [プロジェクト定義サンプル] を右クリックして、 コンテキストメニューから [追加] > [メタモデル] > [エンティティ] をクリックします。
- [新しいエンティティ] ダイアログで、下記表の通り、項目を入力して[OK] ボタンを押下します。
項目 | 値 |
---|---|
[表示名] | 名前として「要求モデル」と入力 |
[クラス名] | (表示名と同じ名前が自動入力されます) |
[アイコン] | 選択肢からアイコンを選択 |
プロジェクト直下に配置できるように定義変更
モデリング時にモデルナビゲータでプロジェクト直下に追加できるエンティティは特定のエンティティのみに限定されます。 先の手順で追加した [要求モデル] をプロジェクト直下に追加できるようにするには、次の手順で定義を変更します。
操作手順
- プロファイルナビゲータで [要求モデル] を選択して、インスペクタに詳細を表示します。
- インスペクタで [プロジェクト直下の配置を許可する] をチェックします。
パッケージを設けて [ユースケースモデル] エンティティを追加
プロファイル内にパッケージを設けて [ユースケースモデル] のエンティティを追加するには、次の手順で行います。
操作手順
- プロファイルナビゲータの先頭に表示されている [プロジェクト定義サンプル] を右クリックして、 コンテキストメニューから [追加] > [パッケージ] をクリックします。
- 追加されたパッケージを右クリックし、コンテキストメニューから [名前の変更] をクリックして、名前を [ユースケースモデル] に変更します。
- 続けて、パッケージのコンテキストメニューから [追加] > [メタモデル] > [エンティティ] をクリックします。
- [新しいエンティティ] ダイアログで、[表示名] に [ユースケースモデル] を入力し、[アイコン] を選択して、[OK] ボタンを押下します。
1.3 メタモデルを定義するクラス図を準備
[ユースケースモデル] にクラス図を追加
[ユースケースモデル] のメタモデルを UML のクラス図形式で定義するには、次の手順でクラス図を追加します。
操作手順
- プロファイルナビゲータ上の [ユースケースモデル] パッケージを右クリックして、 コンテキストメニューから [クラス図の追加] をクリックします。
- プロファイルナビゲータ上に追加されたクラス図の名前には [ユースケースモデル構造図] と入力します。
[ユースケースモデル] の親子関係を構成
モデリング時に階層的にモデルを作成していくためには、親子関係にあたるエンティティを所有関連で結んでおく必要があります。
モデリング時に [要求モデル] の下に [ユースケースモデル] を追加できるようにするには、次の手順で所有関連を結びます。
操作手順
- [ユースケースモデル構造図] をダブルクリックして、クラス図を開きます。
- プロファイルナビゲータから [要求モデル] と [ユースケースモデル] をドラッグ&ドロップしてクラス図に追加します。
- 関連を結ぶには、親となる [要求モデル] にポインタを移動し、その四方向に表示される [▲] アイコンをドラッグして、関連付ける [ユースケースモデル] にドロップします。
- ドロップすると、関連の種類の選択肢がポップアップ表示されますので、それらの中から [所有] をクリックして選択します。
- これにより、[要求モデル] から [ユースケースモデル] への所有関連が結ばれ、[要求モデル] と [ユースケースモデル] の親子関係が定義されます。
2. ユースケースモデルの構造を定義
[ユースケースモデル] の構造を定義するには、クラス図に [アクター] と [ユースケース] のエンティティを追加して関連付けます。 その手順は次の通りです。
- [アクター] と [ユースケース] をエンティティとして追加します。
- エンティティにフィールドを追加します。
- エンティティを関連付けて [ユースケースモデル] の構造を定義します。
2.1 エンティティを追加
クラス図にエンティティを追加するには、次の手順で行います。
操作手順
- クラスツールボックスから [エンティティ] をドラッグ&ドロップして追加して、名前を入力します。
- ここでは、エンティティとして [アクター] と [ユースケース] を追加します。
注意
- エンティティを選択して delete キーを押下した場合は、コンテキストメニューの [図から削除] と同様、クラス図上で非表示となるだけで、メタモデルからは削除されず、プロファイルナビゲータ上にも残ります。
- 間違って追加したエンティティを削除するときは、エンティティのコンテキストメニューから [モデルを削除] を実行します。
追加したエンティティのアイコンを変更するには、次の手順で行います。
操作手順
- クラス図でアイコンを変更するエンティティを選択します。
- インスペクタでアイコンを選択します。
2.2 エンティティにフィールドを追加
エンティティにデータを保持するフィールドを追加するには、次の手順で行います。
操作手順
- クラス図のエンティティ上にポインタを移動します。
- [フィールド] の右端に表示される [+] アイコンをクリックします。 ここでは、次の通り、[ユースケース] エンティティに [事前条件] フィールド(文字列型)を追加します。
- [新しいフィールド] ダイアログで、下記表の通り、項目を入力して [OK] ボタンを押下します。
項目 | 値 |
---|---|
[表示名] | 名前として「事前条件」を入力 |
[フィールド名] | (表示名と同じ名前が自動入力されます) |
[データ型] | 選択肢から [文字列型] を選択 |
2.3 エンティティを関連付けて構造を定義
あるエンティティを構成する子要素として別のエンティティを追加できるようにするには、エンティティ間の親子関係を表す所有関連を結びます。
また、[アクター] と [ユースケース] のように、親子関係以外の関連性を持つエンティティを関連付けできるようにするには、エンティティ間に参照関連を結びます。
ここでは、[ユースケースモデル] の構造定義として次の2種類の関連を定義します。
関連 | 説明 |
---|---|
[ユースケースモデル] から [アクター] と [ユースケース] への所有関連 | [ユースケースモデル] の子に [アクター] と [ユースケース] を追加できるようになります。 |
[アクター] から [ユースケース] への参照関連 | [アクター] と [ユースケース] を関連付けできるようになります。 |
操作手順
- 関連元のエンティティ上にポインタを移動します。
- 四方向に表示される [▲] アイコンをドラッグして、関連先のエンティティにドロップします。
- 関連の種類の選択肢がポップアップ表示されますので、クリックして選択します。
注意
- エンティティの削除と同様、クラス図上の関連線を選択して delete キーを押下した場合は、クラス図上で非表示となるだけで、メタモデルからは削除されず、プロファイルナビゲータ上にも残ります。
- 間違って追加した関連を削除するときは、関連線のコンテキストメニューから [モデルから削除] を実行します。