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

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

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

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

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

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

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

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

Java から UML への変換、または後方変換でも、ID を使用して Java プロジェクトと UML モデル間の対応する要素をマッチングすることができます。この方法を使用すると、Java ソース・コード要素に対する変更は、生成されたコードの追加や削除ではなく、変更として、またはコードのリファクタリングとして扱われます。

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

import java.util.Collection;

/** 
 * <!-- begin-UML-doc -->
 * <!-- end-UML-doc -->
 * @uml.annotations
 *     derived_abstraction="platform:/resource/UMLProject/Model.emx#_9YlH8CpPEdyn7_VFIWTp4A"
 * @generated "sourceid:platform:/resource/UMLProject/Model.emx#_9YlH8CpPEdyn7_VFIWTp4A"
 */
public class Class1 {
	/** 
	 * <!-- begin-UML-doc -->
	 * <!-- end-UML-doc -->
	 * @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g"
	 */
	private Integer attribute1;

	/** 
	 * @return the attribute1
	 * @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g?GETTER"
	 */
	public Integer getAttribute1() {
		// begin-user-code
		return attribute1;
		// end-user-code
	}

	/** 
	 * @param theAttribute1 the attribute1 to set
	 * @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g?SETTER"
	 */
	public void setAttribute1(Integer theAttribute1) {
		// begin-user-code
		attribute1 = theAttribute1;
		// end-user-code
	}

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

		// end-user-code
	}

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

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

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

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

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

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

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

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


フィードバック