변환 구성의 옵션을 통해 모델 요소와 변환 출력 사이에서 변환이 생성하는 관계의 유형을 지정할 수 있습니다. 기본적으로 변환은 추적 가능 관계를 작성하지 않습니다.
소스 모델의 요소가 대상 프로젝트의 요소와 관련되는 방법을 이해하기 위해 소스 모델 요소로부터 대상 프로젝트에서 생성된 요소로의 변환 작성 추적 관계를 보유할 수 있습니다. 그러면 모델 조회를 작성하고 실행하여 토픽 다이어그램에서 추적 관계를 볼 수 있습니다.
추적 관계 작성은 여러 개의 모델과 여러 개의 변환 구성을 포함할 수 있는 대형 프로젝트에서 유용합니다. 또한 변환 출력이 소프트웨어 스펙과 모델 요소에 관련되는 방법을 표시하는 추적성 조회를 작성하고 실행할 수도 있습니다.
변환을 재실행할 때(필요한 경우) 변환은 소스 코드에 있는 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
}
}
|
![]() |
사용자가 변환에서 추적 관계가 생성되도록 지정하는 경우 변환은 소스 모델을 변경하지 않습니다.
소스 모델 요소와 변환 출력 사이의 직접 참조를 작성하도록 변환에 지시할 수 있습니다. 변환은 소스 모델 요소를 변환 출력의 포인터로 바꿉니다. 변환이 생성하는 소스 코드는 1차 엔지니어링 아티팩트가 되고, 모델의 요소는 코드의 시각적 표시가 됩니다. 이 사례는 UML 모델에 대해 작업하는 대신 대상 도메인에서 작업하려는 경우에 유용합니다. 모델에 있는 오브젝트의 시각적 표시에 대해 작성하는 변경사항은 코드에서 즉시 볼 수 있습니다.
모델 요소와 변환 출력 사이의 직접 참조를 작성하는 변환을 실행하면 소스 모델이 변경됩니다. 가능한 문제점을 피하려면 소스 모델을 버전 제어 하에 두어야 합니다.
대상 도메인에서의 작업 이점을 실현하려면 UML 모델에 대해 증가하는 변경사항을 작성할 때 직접 참조를 작성한 후 모델을 코드의 시각적 표시로 변환해야 합니다. 변환이 중첩 요소와 같은 UML 요소를 변환할 수 없는 경우 이 요소를 가장 가까운 패키지로 이동합니다. 변환이 모델 요소를 가장 가까운 패키지로 이동할 수 없으면 해당 요소를 삭제합니다.
모델 요소와 변환 출력 사이의 직접 참조 작성에 대해 학습하려면 이 주제에 대한 관련 학습을 참조하십시오.