UML 모델 요소와 UML에서 Java로 변환 출력 사이의 관계

추적성 옵션을 사용하여 소스 모델과 변환 출력 사이의 관계를 작성할 수 있습니다.

변환 구성의 옵션을 통해 모델 요소와 변환 출력 사이에서 변환이 생성하는 관계의 유형을 지정할 수 있습니다. 기본적으로 변환은 추적 가능 관계를 작성하지 않습니다.

소스 모델 요소와 변환 출력 사이의 추적 관계

소스 모델의 요소가 대상 프로젝트의 요소와 관련되는 방법을 이해하기 위해 소스 모델 요소로부터 대상 프로젝트에서 생성된 요소로의 변환 작성 추적 관계를 보유할 수 있습니다. 그러면 모델 조회를 작성하고 실행하여 토픽 다이어그램에서 추적 관계를 볼 수 있습니다.

추적 관계 작성은 여러 개의 모델과 여러 개의 변환 구성을 포함할 수 있는 대형 프로젝트에서 유용합니다. 또한 변환 출력이 소프트웨어 스펙과 모델 요소에 관련되는 방법을 표시하는 추적성 조회를 작성하고 실행할 수도 있습니다.

추적 관계를 작성하도록 구성된 변환을 실행할 경우 변환은 @generated 태그를 지원하는 요소마다 @generated 태그에 고유한 ID를 추가합니다. 소스 UML 모델에서 요소 이름을 바꾸는 경우 이 고유 ID를 통해 병합 기능이 해당 요소를 리팩터하고 병합할 수 있습니다.
주: 해당되는 최상위 레벨 클래스의 범위를 벗어나서 UML 요소를 이동시키는 경우 변환을 재실행할 때 병합 알고리즘은 이름이 바뀐 요소를 리팩터하거나 병합하지 않습니다. 요소 범위가 변경되었기 때문입니다.

변환을 재실행할 때(필요한 경우) 변환은 소스 코드에 있는 ID를 사용하여 해당 요소를 일치시킨 후 코드를 변경하여 모델에 변경사항을 반영합니다. 예를 들어, 소스 모델에서 UML 오퍼레이션의 이름을 바꾸고 변환을 재실행하는 경우 변환은 이전에 생성된 메소드를 삭제하고 새 메소드를 추가하는 대신, 이전에 생성된 Java™ 메소드의 이름을 바꾸고 메소드 본문을 보존합니다.

Java에서 UML로 변환 또는 그 반대의 변환도 ID를 사용하여 Java 프로젝트와 UML 모델 사이에서 해당 요소를 일치시킬 수 있습니다. 적용 가능한 경우 Java 소스 코드 요소 변경사항은 생성된 코드에 대한 추가 및 삭제사항 대신 수정사항이나 코드 리팩토링으로 처리됩니다.

소스 모델 요소와 변환 출력 사이의 관계를 보려면 다이어그램에서 소스 모델 요소를 시각화하고 변환이 생성하는 코드 요소를 해당 다이어그램으로 끌어오십시오. 다음 표는 attribute1이라고 하는 정수 속성을 포함하는 Class1 소스 모델 요소와 매개변수가 없는 두 개의 오퍼레이션 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 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
	}
}
이 이미지는 Class1의 UML 표시와 변환 출력 사이에 파생 스테레오타입이 적용되는 추적 관계를 보여 줍니다.

사용자가 변환에서 추적 관계가 생성되도록 지정하는 경우 변환은 소스 모델을 변경하지 않습니다.

모델 요소와 변환 출력 사이의 직접 참조

소스 모델 요소와 변환 출력 사이의 직접 참조를 작성하도록 변환에 지시할 수 있습니다. 변환은 소스 모델 요소를 변환 출력의 포인터로 바꿉니다. 변환이 생성하는 소스 코드는 1차 엔지니어링 아티팩트가 되고, 모델의 요소는 코드의 시각적 표시가 됩니다. 이 사례는 UML 모델에 대해 작업하는 대신 대상 도메인에서 작업하려는 경우에 유용합니다. 모델에 있는 오브젝트의 시각적 표시에 대해 작성하는 변경사항은 코드에서 즉시 볼 수 있습니다.

모델 요소와 변환 출력 사이의 직접 참조를 작성하는 변환을 실행하면 소스 모델이 변경됩니다. 가능한 문제점을 피하려면 소스 모델을 버전 제어 하에 두어야 합니다.

대상 도메인에서의 작업 이점을 실현하려면 UML 모델에 대해 증가하는 변경사항을 작성할 때 직접 참조를 작성한 후 모델을 코드의 시각적 표시로 변환해야 합니다. 변환이 중첩 요소와 같은 UML 요소를 변환할 수 없는 경우 이 요소를 가장 가까운 패키지로 이동합니다. 변환이 모델 요소를 가장 가까운 패키지로 이동할 수 없으면 해당 요소를 삭제합니다.

모델 요소와 변환 출력 사이의 직접 참조 작성에 대해 학습하려면 이 주제에 대한 관련 학습을 참조하십시오.


피드백