UML から Java への変換


UML から Java への変換により、UML 2.0 仕様が Java クラスに変換されます。 この変換を使用して、Java プロジェクトを UML 2.0 仕様からシードできます。 初期のシードの後に変換を適用して、更新された UML モデルと既存の Java コードをマージできます。
 

1. 入門

UML から Java への変換を使用する前に、UML 2.0 モデルおよび Java プロジェクトの作成と編集についての知識を身につける必要があります。

次の手順では、Java 変換の最も簡単な使用法を説明します。

UML モデルを Java に変換するには、次の手順を実行します。
1. モデリング・パースペクティブに切り替える。
2. 「モデル・エクスプローラー」ビューで、UML クラス (Class1 など) を右クリックする。
3. 「変換」>「変換を実行」>「UML2 から Javaへ (UML2 to Java)」をクリックする。
4. 「変換を実行」ダイアログが開きます。「対象コンテナーの作成 (Create Target Container)」ボタンをクリックします。
5. 「新規 Java プロジェクト」ダイアログが開く。 「プロジェクト名」フィールドに simple と入力し、 「完了」をクリックします。
6. 「変換の実行」ダイアログで、「完了」をクリックする。

新規の Java プロジェクトにはデフォルトのパッケージが含まれ、そのパッケージには新規の Java クラス Class1 が含まれます。

変換は、それ以外にも、さらに複雑な機能を実行できます。 例えば、ソース・モデルを変更しない名前の指定変更、 可視化を行う UML オブジェクトの置換、UML モデルと Java ソースの変更のマージ、および潜在的な変換の問題を検出するための UML モデルの検証などが あります。
 

2. 変換の詳細

2.1 変換ソース

UML 2.0 モデル、パッケージ、ネストされていないクラス、ネストされていないインターフェース、および列挙 を変換のソースとして選択できます。 それ以外のアイテムをソースとして選択した場合、 変換は進行しますが、実際の変換は行われません。 変換によりモデル、パッケージ、クラス、またはインターフェース が変換された場合、それらのオブジェクトが含むすべてのアイテムも変換されます。 例えば、 変換によりクラスが変換された場合、そのクラスのすべての操作およびプロパティーも変換されます。
 

2.2 変換対象

変換の対象として、少なくとも 1 つのソース・フォルダーを持つ Java プロジェクトを選択 できます。
 

2.3 UML ソース・オブジェクトの変換処理

UML Java 
パッケージ 同じ名前*を持つ Java パッケージ
ステレオタイプ <<perspective>> のパッケージ 無視されます
キーワード <<Analysis>> または <<analysis>> を持つパッケージ 無視されます
クラス 同じ名前* および可視性を持つ Java クラス
(クラス) isLeaf プロパティー Java クラスは、true の場合 "final" です
(Class) isAbstract プロパティー Java クラスは、true の場合 "abstract" です
(Class) 汎化 Java クラスは、指定されたスーパークラスを "拡張" します
実装 Java クラスは、指定されたインターフェースを "実装" します
(クラスとインターフェースの間の) 実現
Java クラスは、指定されたインターフェースを "実装" します
インターフェース 同じ名前* および可視性を持つ Java インターフェース 
(インターフェース) 汎化 Java インターフェースは、指定されたインターフェースを "拡張" します
列挙
同じ名前* および可視性を持つ Java インターフェース
EnumerationLiteral
同じ名前* および可視性を持つ Java フィールド
操作 同じ名前* および可視性を持つ Java メソッド
(操作) isStatic プロパティー Java メソッドは、true の場合 "static" です
(操作) isAbstract プロパティー Java メソッドは、true の場合 "abstract" です
(操作) isLeaf プロパティー Java メソッドは、true の場合 "final" です
クラスと同じ名前を持つ (操作) Java コンストラクター
(操作) ステレオタイプ <<create>> Java コンストラクター
パラメーター 同じ名前*を持つ Java パラメーター
(パラメーター) Type プロパティー Java パラメーターには指定されたタイプ (別のクラスであっても、プリミティブ・タイプであってもかまいません) があります
(パラメーター) Direction プロパティー Java メソッドは、"return" に設定されると "return <param type>" を持ちます。 それ以外の場合は、"<param type> <param name>" をメソッド・シグニチャーに追加します
(パラメーター) Multiplicity プロパティー  多重度についての情報を記載した、次の表を参照してください
プロパティー  同じ名前* および可視性を持つ Java フィールド
(プロパティー) isStatic プロパティー Java フィールドは、true の場合 "static" です
(プロパティー) isLeaf プロパティー Java フィールドは、true の場合 "final" です
(プロパティー) Type プロパティー Java フィールドには指定されたタイプ (別のクラスであっても、プリミティブ・タイプであってもかまいません) があります
(プロパティー) Multiplicity プロパティー  多重度についての情報を記載した、次の表を参照してください

* 一部の文字は、Java 識別子では無効になります (スペースなど)。 Java 変換では、無効文字をアンダースコアー (_) で自動的に置換して、有効な識別子を作成します。 この置換が原因で、名前の競合が生じる可能性があり、変換によって 重複するクラスやインターフェースが生成されることを防止します。 検証機能を使用して、これらの問題を検出できます。 これらの置換の問題を回避するには、要素を名前変更するか、 マッピング機能を使用してソース・モデルを変更しない代替名を指定してください。

プロパティーおよびパラメーターの Java タイプ
UML 多重度 生成された Java タイプ
0..1 属性、ポインター、または参照 (String など)
1 属性 (String など)
N (N > 1)  配列 (String[] など)
1..*、*、または x..y  コレクション、以下の表を参照

1..*、*、または x..y 多重度の Java コレクション

isOrdered プロパティー isUnique プロパティー UML コレクション
生成された Java タイプ
True True Ordered Set
java.util.SortedSet
True False Sequence
java.util.List
False True Set
java.util.Set
False False Bag
java.util.Collection

上でリストされている生成されたタイプはデフォルトであることに注意してください。 これらのタイプは、変換構成の「詳細」タブで指定変更できます。

詳細
「詳細」タブは、いくつかのコード生成オプションを提供します。 「モデリング」>「変換」>「変換を構成」をクリックし、「UML から Java へ」構成を選択し、「詳細」タブを選択します。 このタブには、「getter と setter の生成」チェック・ボックス、および「コレクション」グループが含まれています。 

「getter と setter の生成」にチェックマークが付けられていると、変換によって、UML プロパティーごとに getter および setter メソッドを持つプライベート・フィールドが生成されます。  このプロパティーの isLeaf (final) または isReadOnly が true に設定されている場合、setter は生成されません。 このプロパティーの isDerived が true の場合、setter 実装は空になります。 

「コレクション」グループでは、UML から Java への変換によって生成されるコレクションを指定できます。  例えば、「シーケンス」ドロップダウンから「java.util.Vector」を選択すると、変換によってリストではなく、ベクトルが生成されます。 このドロップダウンにクラス名を入力すると、カスタム・コレクション・クラスを指定することもできます。 「バッグ」ドロップダウンに "custom.Bag" を入力した場合は、変換によってコレクションではなくバッグが生成されます。 

3. 共通の変換技術のサポート

3.1 チーム・サポートとの統合

Java 変換ではチーム・サポートとの統合が提供されており、 自動チェックアウトや、ソース管理システムへの新規ファイルの追加が可能です。
 

3.2 変換マッピング

変換用にソース・モデルを変更しない場合は、変換の対象要素の代替名を指定できます。 Java 固有の詳細 (命名上の制約など) をプラットフォームに依存しないモデルに包含したい場合、または ソース・モデルの論理編成が対象のパッケージングとして適切ではない場合、代替名を指定することもできます。 代替の対称名をソース・モデルを変換しないでサポートするには、 変換マッピング機能を使用します。
変換マッピング機能を使用するには、次の手順を実行します。
1. モデリング・パースペクティブに切り替える。
2.「モデル・エクスプローラー」ビューで、UML モデルをクリックする。
3. メニュー・バーで、「モデリング」>「変換」>「変換を構成」をクリックする。
4. 新規の UML2 から Java への変換を作成する (例えば、変換の名前を「マッピングの作成」にします)。
5.「マッピング」ページで、「マッピング・モデルの作成のみ (変換なし)」をクリックする。
6. ファイル名を指定して、「実行」をクリックする。

「マッピング・モデルの作成」をクリックすると、Java 変換により マッピング・モデルが作成されます。これは、変換可能要素ごとに成果物を持つ個別のモデル です。 成果物は元の変換可能な要素を参照し、この要素と同じ名前に なります。 元の要素の代替名を指定するには、 成果物のファイル名プロパティーに新規の名前を 入力します。 成果物のファイル名プロパティーを変更しない場合は、 変換により、成果物のデフォルト名を持つ要素が生成されます。 パッケージに代替名を指定すると、その代替名はそのパッケージ内のすべての分類子 に影響を与えます (分類子が完全修飾名を指定している場合を除く)。 次の表に、代替名の例をリストします。
 
UML ソース マッピング成果物ファイル名 生成された Java
"Package1" ""  "Package1"
"Package2" "com.ibm.test" "com.ibm.test"
Package1 内の "Class1"   "" Package1.Class1
Package2 内の "Interface1" "ITestable" com.ibm.test.ITestable
Package2 内の "Class2" "com.ibm.test.Testable" com.ibm.test.Testable

マッピング・モデルを使用するには、次のステップを完了します。
1. モデリング・パースペクティブに切り替える。
2.「モデル・エクスプローラー」ビューで、UML モデルをクリックする。
3. メニュー・バーで、「モデリング」>「変換」>「変換を構成」をクリックする。
4. 新規の UML2 から Java への変換を作成する (例えば、変換の名前を「マッピングの使用」にします)。
5.「マッピング」ページで、「マッピング・モデルの使用 (Use Mapping Model)」をクリックする。
6. 以前に作成したマッピング・モデルをクリックして、「実行」をクリックする。
変換が実行されると、マッピング・モデルに指定した代替名が 使用されます。
 

3.3 インプレース可視化サポート

元の UML モデルを保持しない場合は、変換の可視性機能を使用して UML 要素を削除し、 それらを生成された Java 要素へのショートカットと置換することができます。 変換を構成して UML モデル要素を削除するには、「変換を構成」ウィンドウの「共通」ページで、「UML 要素の置換」をクリックします。 置換によってデータが失われる場合、 変換は要素を置換しません。 例えば、UML 要素にダイアグラムが含まれている場合、変換を行うとダイアグラムが削除されてしまうため、 要素の置換は行われません。
 

3.4 再適用

Java 変換では、ソース・モデルへの変更と変換されたソース・コードを、 生成された javadoc 内の "@generated" タグを使用して、マージします。 変換は、 "@generated" とマークされた Java 要素を所有しており、再変換中にこれらの要素を上書きしたり、 ソース・モデルから削除された要素があれば削除したりします。 要素の "所有権" は、"@generated" タグを削除すると再利用できます。 これにより、変換による要素の上書きや削除を防ぐことができます。
 

3.5 検証

Java 変換プラグインでは、UML プロファイルが提供されており、これを使用してモデルに 潜在的な変換の問題がないかどうかを検証できます。 例えば、 複数の継承、循環の汎化、名前の競合などは、生成された Java コード内で コンパイル・エラーが発生する原因となります。 生成されたコードで発生する可能性がある 潜在的な問題のリストを参照するには、プロファイルをソース・モデルに適用して、 検証機能を実行します。
 

3.6 追跡可能性

Java 変換では、生成された Java 要素からそれらの UML ソースへの派生関係 を作成できます。 派生関係を「変換を構成」ウィンドウの「共通」ページで作成するには、「ソースからターゲットへの関係を作成する」をクリックします。 システムが生成された Java 要素を可視化する場合、その要素はソース要素への派生関係を持つことになります。
 
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2004. All Rights Reserved.
(C) Copyright IBM Japan 2005