변환 구성이 조정된 모델링 DCMP(Design Contract Management Protocol)를 구현하는 경우, UML에서 Java로(UML-to-Java) 및 Java에서 UML로 변환에 올바른 소스 및 대상 요소를 지정해야 합니다.
변환은 UML 모델, 패키지, 클래스 및 인터페이스의 컨텐츠를 변환합니다. 예를 들어, 변환이 클래스를 변환할 때 변환은 클래스의 오퍼레이션 및 특성도 변환합니다.
변환 구성 편집기를 사용하는 대신 프로젝트 탐색기 보기에서 모델 또는 모델 요소를 선택하는 경우, 사용자가 선택하는 모델 또는 요소는 사용자가 변환 구성에서 지정하는 소스 모델 또는 요소를 대체합니다. 변환 구성은 영향을 받지 않으며 변환 구성 편집기의 소스 및 대상 페이지나 새 변환 구성 마법사에서 지정하는 소스는 변경되지 않습니다.
맵핑 모델을 작성하여 소스 모델을 수정하지 않고 변환이 생성하는 요소의 대체 이름을 지정할 수 있습니다. 플랫폼 독립 모델에서의 이름 지정 제한사항과 같은 Java 특정 세부사항을 포함하려는 경우 또는 소스 모델의 논리적 조직이 대상 패키징으로 적절하지 않은 경우 대체 이름을 지정할 수 있습니다.
com.ibm.NewName과 같은 규정된 이름이나 NewName과 같은 규정되지 않은 이름을 지정할 수 있습니다. 패키지의 대체 이름을 지정하면 클래스류가 완전한 이름을 지정하지 않는 한 해당 패키지의 모든 클래스류에 영향을 줍니다. 또한 변환이 생성하는 요소에 대해 같은 프로젝트에 있는 대체 위치를 지정할 수도 있습니다.
열거 리터럴의 이름 및 값을 검색 가능한 문자열로 보존하는 Java 열거의 생성을 사용할 수 있습니다. 이 기능을 사용하려면 변환을 구성할 때 UML에서 Java로 사용자 정의 열거 확장을 선택합니다.
XSD 유형 모델 라이브러리를 UML 모델에 적용하는 경우 UML에서 Java로(UML-to-Java) 변환을 실행할 때 XSD 데이터 유형이 해당되는 Java 규정 이름으로 변환됩니다. 자세한 맵핑 정보는 아래에 있는 참조 주제를 참조하십시오.
변환은 다른 Java 콜렉션에 대해 매개변수화된 유형 정보를 생성하지 않습니다.
J2SE 5.0과 호환 가능한 코드를 생성하도록 변환을 구성하지 않은 경우 UML에서 Java로(UML-to-Java) 변환은 변환에서 생성되는 Java 콜렉션 유형에 UML 콜렉션 유형에 대한 주석을 추가합니다. 이 주석을 사용하면 시각적 개발 도구에서 Java 콜렉션 유형의 정확한 시각적 표시를 작성할 수 있습니다.
UML 속성에서 *의 다중성을 지정하고 변환 구성에서 Java 콜렉션 정보를 변경하지 않는 경우 기본적으로 UML에서 Java로(UML-to-Java) 변환은 Java 세트를 생성합니다.
| UML 요소 | UML에서 Java로(UML-to-Java) 변환 출력 | 변환 출력의 시각적 표시 |
|---|---|---|
![]() |
변환 구성에서 Java 5 사용 선택란을
지우는 경우 변환은 다음 소스 코드를 생성합니다. public class Class1 {
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
* @uml.annotations for <code>class2</code>
* collection_type="Package1.Class2"
* @generated "UML to Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
*/
private Set class2;
}
|
![]() |
변환 구성에서 Java 5 사용 선택란을
선택하는 경우 변환은 다음 소스 코드를 생성합니다. public class Class1 {
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
* @generated "UML to Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
*/
private Set<Class2> class2;
}
|
다음 이미지는 Java에서 UML로 변환이 생성하는 UML 클래스의 시각적 표시를 보여 줍니다.

/* * <!-- begin-UML-doc --> * <!-- end-UML-doc --> */
변환은 각 관계의 원래 클래스에 대한 UML 문서에 일반화, 구현 및 실현(realization) 관계 문서를 추가합니다. 변환은 각 관계의 생성된 대상 클래스에 대한 Javadoc 정보에도 이 관계의 문서를 추가합니다.
연관의 경우, 변환은 연관된 각 특성의 문서에 UML 문서를 추가합니다.
UML 모델은 몇 개의 Java 키워드(예: strictfp, native, transient 및 volatile)를 표시할 수 없습니다. UML에서 Java로(UML-to-Java) 변환을 실행할 때 이 키워드를 보존하려면 이 키워드를 UML 키워드로 모델링해야 합니다.
UML에서 Java로(UML-to-Java) 변환의 출력이 1차 엔지니어링 아티팩트가 되도록 하려면 혼합 모델링이라고도 하는 DCMP(Design Contract Management Protocol)를 변환이 구현하도록 지정할 수 있습니다. 이 DCMP를 지정하면, 변환은 소스 UML 오브젝트와 생성된 Java 코드 사이에 직접 관계를 작성합니다. 직접 관계를 작성하면 소스 UML 오브젝트가 삭제되고 소스 오브젝트의 시각적 표시로 바뀝니다.
변환이 중첩 요소와 같은 UML 요소를 변환할 수 없는 경우 이 요소를 가장 가까운 패키지로 이동합니다. 변환이 모델 요소를 가장 가까운 패키지로 이동할 수 없으면 해당 요소를 삭제합니다.
가능한 문제점을 피하려면 소스 모델을 버전 제어 하에 두어야 합니다.
UML에서 Java로(UML-to-Java) 변환을 사용하여 UML 소스 모델 요소에서 생성된 Java 클래스로의 추적 관계를 작성할 수 있습니다. 그러면 모델 조회를 작성하고 실행하여 토픽 다이어그램에서 추적 관계를 볼 수 있습니다.
추적 관계 작성은 여러 개의 모델과 여러 개의 변환 구성을 포함할 수 있는 대형 프로젝트에서 유용합니다. 또한 변환 출력이 소프트웨어 스펙과 모델 요소에 관련되는 방법을 표시하는 추적성 조회를 작성하고 실행할 수도 있습니다.
변환을 재실행할 때(필요한 경우) 변환은 소스 코드에 있는 ID를 사용하여 해당 요소를 일치시킨 후 코드를 변경하여 모델에 변경사항을 반영합니다. 예를 들어, 소스 모델에서 UML 오퍼레이션의 이름을 바꾸고 변환을 재실행하는 경우 변환은 이전에 생성된 메소드를 삭제하고 새 메소드를 추가하는 대신, 이전에 생성된 Java 메소드의 이름을 바꾸고 메소드 본문을 보존합니다.
Java에서 UML로 변환 또는 그 반대의 변환도 ID를 사용하여 Java 프로젝트와 UML 모델 사이에서 해당 요소를 일치시킬 수 있습니다. 적용 가능한 경우 Java 소스 코드 요소 변경사항은 생성된 코드에 대한 추가 및 삭제사항 대신 수정사항이나 코드 리팩토링으로 처리됩니다.
| 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 Auto-generated method stub
// end-user-code
}
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_R04v0OSnEdyXH8PWExuX2g"
*/
public void Operation2() {
// begin-user-code
// TODO Auto-generated method stub
// end-user-code
}
}
|
![]() |
사용자가 변환에서 추적 관계가 생성되도록 지정하는 경우 변환은 소스 모델을 변경하지 않습니다.
추적 관계를 작성하도록 구성된 변환을 실행할 경우 변환은 @generated 태그를 지원하는 요소마다 @generated 태그에 고유한 ID를 추가합니다. 이 ID는 Java 요소가 생성된 UML 모델 요소를 지정합니다(예: * @generated "sourceid:platform:/resource/UMLProject/SimpleModel.emx#_83GpoBtIEdyLaOwyRX_ZMQ"). 소스 UML 모델에서 요소 이름을 바꾸는 경우 이 고유 ID를 통해 병합 기능이 해당 요소를 리팩터하고 병합할 수 있습니다.
Java에서 UML로 변환 또는 그 반대의 변환도 ID를 사용하여 Java 프로젝트와 UML 모델 사이에서 해당 요소를 일치시킬 수 있습니다. 적용 가능한 경우 Java 소스 코드 요소 변경사항은 생성된 코드에 대한 추가 및 삭제사항 대신 수정사항이나 코드 리팩토링으로 처리됩니다.