UML モデル要素と UML から Java への変換出力の関係

追跡可能性オプションは、ソース・モデルと変換出力の関係の作成を可能にします。

変換構成では、オプションによって、変換がモデル要素と変換出力との間に生成する関係の型を指定することができます。 デフォルトでは、変換は追跡可能な関係を作成しません。

ソース・モデル要素と変換出力の間のトレース関係

ソース・モデルの要素がターゲット・プロジェクトの要素とどのように関係しているかを理解するには、 変換で、ソース・モデル要素からターゲット・プロジェクト内の生成された要素へのトレース関係を作成します。 その後、モデル照会を作成および実行して、トピック図内にそのトレース関係を表示することができます。

トレース関係の作成は、複数のモデルおよび複数の変換構成を持つような大規模なプロジェクトの場合に便利です。 また、変換出力がソフトウェアの仕様やモデル要素とどのように関係しているかを表示する、追跡可能性照会を作成および実行することもできます。

トレース関係を作成するように構成された変換を実行すると、@generated タグをサポートするそれぞれの要素で、@generated タグに 固有 ID が付加されます。 ソース UML モデル内の要素が名前変更された場合、 マージ機能は、この固有 ID によって、適切な要素のリファクタリングおよびマージを行うことができます。
注: UML 要素をそのトップレベル・クラスの範囲外に移動してから変換を再実行した場合、 その要素の範囲が変更されているために、マージ・アルゴリズムでは、名前変更された要素のリファクタリングまたはマージを実行しません。

変換を再実行すると、必要に応じてソース・コード内の ID を使用して対応する要素との突き合わせが行われ、モデルに対する変更を反映するようにコードが変更されます。 例えば、ソース・モデル内の UML 操作を名前変更してから変換を再実行すると、変換では、以前に生成された Java™ メソッドを削除して新規のメソッドを追加するのではなく、以前に生成されたそのメソッドが名前変更され、メソッド本文が保持されます。

Java から UML への変換、またはその後方変換では、Java プロジェクトと UML モデルの間の対応する要素を突き合わせる場合にも、この ID を使用します。 Java ソース・コード要素への変更は、 生成済みコードでの追加および削除としてではなく、変更またはコード・リファクタリングとして処理されます (そう処理するのが妥当な場合)。

ソース・モデル要素と変換出力の関係を表示するには、ソース・モデル要素を図にして可視化し、変換によって生成されたコード要素をその図の中にドラッグします。以下の表には、attribute1 という整数属性がある Class1 というソース・モデル要素の UML 表記、 パラメーターのない Operation1 および Operation2 という 2 つの操作、 変換によって生成されるコード、および要素間のトレース関係を示すクラス図がリストされています。
UML 要素 変換出力 クラス図でのトレース関係
このイメージは、前の段落で説明されている Class1 という UML 表記を示しています。
/**
 * 
 */

/** 
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * 
 * @uml.annotations
 *     derived_abstraction="platform:/resource/UMLProj/Blank%20Model.emx#_KXR5IBT-EdyMPpwIqIFsyw"
 * @generated "sourceid:platform:/resource/UMLProj/Blank%20Model.emx#_KXR5IBT-EdyMPpwIqIFsyw"
 */
public class Class1 {
	/** 
	 * <!-- begin-user-doc -->
* <!-- end-user-doc -->
	 * 
	 * @generated "sourceid:platform:/resource/UMLProj/Blank%20Model.emx#_kmkjYBgmEdyKx8PsxF7ltw"
	 */
	private Integer attribute1;

	/** 
	 * <!-- begin-user-doc -->
* <!-- end-user-doc -->
	 * @return the attribute1
	 * @generated "sourceid:platform:/resource/UMLProj/Blank%20Model.emx#_kmkjYBgmEdyKx8PsxF7ltw?GETTER"
	 */
	public Integer getAttribute1() {
// begin-user-code
		return attribute1;
// end-user-code
	}

	/** 
	 * <!-- begin-user-doc -->
* <!-- end-user-doc -->
	 * @param theAttribute1 the attribute1 to set
	 * @generated "sourceid:platform:/resource/UMLProj/Blank%20Model.emx#_kmkjYBgmEdyKx8PsxF7ltw?SETTER"
	 */
	public void setAttribute1(Integer theAttribute1) {
// begin-user-code
		attribute1 = theAttribute1;
// end-user-code
	}

	/** 
	 * <!-- begin-user-doc -->
* <!-- end-user-doc -->
	 * 
	 * @generated "sourceid:platform:/resource/UMLProj/Blank%20Model.emx#_MXaS4Bg1EdyKx8PsxF7ltw"
	 */
	public void Operation1() {
// begin-user-code
		// TODO 自動生成されたメソッド・スタブ

// end-user-code
	}

	/** 
	 * <!-- begin-user-doc -->
* <!-- end-user-doc -->
	 * 
	 * @generated "sourceid:platform:/resource/UMLProj/Blank%20Model.emx#_MkZmABg1EdyKx8PsxF7ltw"
	 */
	public void Operation2() {
// begin-user-code
		// TODO 自動生成されたメソッド・スタブ

// end-user-code
	}
}
このイメージは、Class1 という UML 表記と変換出力の間の、derive ステレオタイプが適用されたトレース関係を示しています。

トレース関係を生成するように指定された変換では、ソース・モデルが変更されません。

モデル要素と変換出力の直接参照

ソース・モデル要素と変換出力の間の直接参照を作成するように、変換に指定することができます。 変換によって、ソース・モデル要素は変換出力へのポインターに置換されます。 変換によって生成されるソース・コードは基本の技術成果物となり、モデル内の要素はコードのビジュアル表示となります。 この手法は、UML モデルを使用する代わりにターゲット・ドメインを使用して作業をする場合に役立ちます。 モデル内のオブジェクトのビジュアル表示に対する変更は、コード内で即時に可視となります。

モデル要素と変換出力の間の直接参照を作成する変換を実行すると、ソース・モデルが変更されます。問題が発生するのを防ぐために、ソース・モデルのバージョン管理を行ってください。

ターゲット・ドメインで作業をする利点を実感するために、UML モデルへの増分変更を行うときには直接参照を作成し、その後、そのモデルをコードのビジュアル表示に変換してください。 ネストされた要素などで、UML 要素を変換できない場合、これらの要素は最も近いパッケージに移動されます。変換でモデル要素を最も近いパッケージに移動できない場合、その要素は削除されます。

モデル要素と変換出力の間の直接参照の作成について詳しくは、このトピックに関連するチュートリアルを参照してください。

関連概念
UML から Java への変換
関連タスク
UML モデル要素と UML から Java への変換出力間の関係の作成
UML から Java への変換の出力のショートカットによるソース・モデル要素の置換
UML ソース・モデル要素と UML から Java への変換出力の間のトレース関係の作成
関連情報
変換のチュートリアル

フィードバック