変換構成では、オプションによって、変換がモデル要素と変換出力との間に生成する関係の型を指定することができます。 デフォルトでは、変換は追跡可能な関係を作成しません。
ソース・モデルの要素がターゲット・プロジェクトの要素とどのように関係しているかを理解するには、変換でソース・モデル要素からターゲット・プロジェクト内に生成された要素への派生関係を作成します。その後、モデル照会を作成および実行して、トピック図内にその派生関係を表示することができます。 システムが生成されたコード要素を視覚化すると、ソース要素とコード要素の間の派生関係が可視になります。
ソース・モデルと変換出力との間の派生関係を生成するように構成された変換を実行すると、この変換のソースに含まれる各 UML 要素に対して、変換は変換出力にソース・コード・コメントを追加します。コメントは // @C#_transform から始まり、そのモデル要素の固有 ID を含みます。
| UML 要素 | 変換出力 | クラス図に示される派生関係 |
|---|---|---|
![]() |
//ファイル Class1.cs のセクションの開始
//TODO: 保持する using ディレクティブを追加します
//ファイル Class1.cs のセクションの終了
using System;
// @generated
// @C#_transform [
// _URI=platform:/resource/Miscellaneous%20Models/eReview.emx#_YzplYASSEdyzprVwZ85oaw
// ]
public class Class1 {
// @generated
// @C#_transform [
// _URI=platform:/resource/Miscellaneous%20Models/eReview.emx#_aQogwASSEdyzprVwZ85oaw
// ]
private Int32 attribute1;
// @generated
// @C#_transform [
// _URI=platform:/resource/Miscellaneous%20Models/eReview.emx#_hy-34ASSEdyzprVwZ85oaw
// ]
public void Operation1() {
//TODO: 自動生成されたメソッド・スタブ
throw new System.NotImplementedException();
}
// @generated
// @C#_transform [
// _URI=platform:/resource/Miscellaneous%20Models/eReview.emx#_ic2UQASSEdyzprVwZ85oaw
// ]
public void Operation2() {
//TODO: 自動生成されたメソッド・スタブ
throw new System.NotImplementedException();
}
}
|
![]() |
変換によって派生関係を生成するように指定した場合には、ソース・モデルは変換によって変更されません。
派生関係の作成は、複数のモデルおよび複数の変換構成を持つような大規模なプロジェクトの場合に便利です。 また、変換出力がソフトウェアの仕様やモデル要素とどのように関係しているかを表示する、追跡可能性照会を作成および実行することもできます。
ソース・モデル要素と変換出力の間の直接参照を作成するように、変換に指定することができます。 変換によって、ソース・モデル要素は変換出力へのポインターに置換されます。 変換によって生成されるソース・コードは基本の技術成果物となり、モデル内の要素はコードのビジュアル表示となります。 この手法は、UML モデルを使用する代わりにターゲット・ドメインを使用して作業をする場合に役立ちます。 モデル内のオブジェクトのビジュアル表示に対する変更は、コード内で即時に可視となります。
モデル要素と変換出力の間の直接参照を作成する変換を実行すると、ソース・モデルが変更されます。 起こりうる問題を回避するために、ソース・モデルのソース管理を行ってください。
ターゲット・ドメインで作業をする利点を実感するために、UML モデルへの増分変更を行うときには直接参照を作成し、その後、そのモデルをコードのビジュアル表示に変換してください。 ネストされた要素などで、UML 要素を変換できない場合、これらの要素は最も近いパッケージに移動されます。変換でモデル要素を最も近いパッケージに移動できない場合、その要素は削除されます。
モデル要素と変換出力の間の直接参照の作成について詳しくは、このトピックに関連するチュートリアルを参照してください。 チュートリアルでは UML から Java への変換を使用してこの概念が説明されていますが、UML から C# への変換を使用しても同様の手順を実行できます。