UML에서 Java로 변환

UML에서 Java로(UML-to-Java) 변환은 UML 모델 요소를 Java™ 코드로 변환하고, J2SE 1.4(Java 2 Platform, Standard Edition 1.4) 및 J2SE 5.0(Java 2 Platform, Standard Edition 5.0)과 호환 가능한 코드를 생성합니다.
중요사항: UML에서 Java 1.4로 변환은 사용되지 않으며 이제는 UML에서 Java로(사용되지 않음)(UML-to-Java (deprecated)) 변환이라고 합니다. UML에서 Java로(사용되지 않음)(UML-to-Java (deprecated)) 변환에는 새 기능이 없으므로 변환 동작은 UML에서 Java 5.0으로 변환과 다릅니다. 이제는 이 변환을 UML에서 Java로(UML-to-Java) 변환이라고 합니다. 응용프로그램에 포함된 코드가 J2SE 5.0 또는 J2SE 1.4 이상 중 어느 버전과 호환 가능한지 여부에 관계없이 UML에서 Java로(UML-to-Java) 변환을 사용해야 합니다.

변환 구성이 조정된 모델링 DCMP(Design Contract Management Protocol)를 구현하는 경우, UML에서 Java로(UML-to-Java) 및 Java에서 UML로 변환에 올바른 소스 및 대상 요소를 지정해야 합니다.

올바른 변환 소스

UML에서 Java로(UML-to-Java) 변환은 다음 UML 소스에서 Java 클래스를 생성합니다.
  • UML 모델
  • 패키지 및 해당 컨텐츠
  • 비중첩 클래스 및 해당 컨텐츠
  • 비중첩 인터페이스 및 해당 컨텐츠
  • 비중첩 열거

변환은 UML 모델, 패키지, 클래스 및 인터페이스의 컨텐츠를 변환합니다. 예를 들어, 변환이 클래스를 변환할 때 변환은 클래스의 오퍼레이션 및 특성도 변환합니다.

변환 구성 편집기를 사용하는 대신 프로젝트 탐색기 보기에서 모델 또는 모델 요소를 선택하는 경우, 사용자가 선택하는 모델 또는 요소는 사용자가 변환 구성에서 지정하는 소스 모델 또는 요소를 대체합니다. 변환 구성은 영향을 받지 않으며 변환 구성 편집기의 소스 및 대상 페이지나 새 변환 구성 마법사에서 지정하는 소스는 변경되지 않습니다.

올바른 변환 대상

Java 프로젝트나 Java 프로젝트의 소스 폴더를 UML에서 Java로(UML-to-Java) 변환의 출력에 대한 대상으로 지정할 수 있습니다.

생성된 출력의 대체 이름

맵핑 모델을 작성하여 소스 모델을 수정하지 않고 변환이 생성하는 요소의 대체 이름을 지정할 수 있습니다. 플랫폼 독립 모델에서의 이름 지정 제한사항과 같은 Java 특정 세부사항을 포함하려는 경우 또는 소스 모델의 논리적 조직이 대상 패키징으로 적절하지 않은 경우 대체 이름을 지정할 수 있습니다.

com.ibm.NewName과 같은 규정된 이름이나 NewName과 같은 규정되지 않은 이름을 지정할 수 있습니다. 패키지의 대체 이름을 지정하면 클래스류가 완전한 이름을 지정하지 않는 한 해당 패키지의 모든 클래스류에 영향을 줍니다. 또한 변환이 생성하는 요소에 대해 같은 프로젝트에 있는 대체 위치를 지정할 수도 있습니다.

사용자 정의 열거에 대한 지원

열거 리터럴의 이름 및 값을 검색 가능한 문자열로 보존하는 Java 열거의 생성을 사용할 수 있습니다. 이 기능을 사용하려면 변환을 구성할 때 UML에서 Java로 사용자 정의 열거 확장을 선택합니다.

XSD 데이터 유형의 변환

XSD 유형 모델 라이브러리를 UML 모델에 적용하는 경우 UML에서 Java로(UML-to-Java) 변환을 실행할 때 XSD 데이터 유형이 해당되는 Java 규정 이름으로 변환됩니다. 자세한 맵핑 정보는 아래에 있는 참조 주제를 참조하십시오.

UML에서 Java로(UML-to-Java) 변환이 지원하는 매개변수화된 유형

UML에서 Java로(UML-to-Java) 변환을 작성하거나 구성할 때 다음 Java 콜렉션 유형을 매개변수화된 유형 또는 일반 유형의 일반 인터페이스로 지정할 수 있습니다.
  • AbstractCollection
  • AbstractList
  • AbstractMap
  • AbstractSequentialList
  • AbstractSet
  • ArrayList
  • BitSet
  • Collection
  • HashMap
  • HashSet
  • Hashtable
  • LinkedList
  • List
  • Map
  • Set
  • SortedMap
  • SortedSet
  • Stack
  • TreeMap
  • TreeSet
  • WeekHashMap
  • Vector

변환은 다른 Java 콜렉션에 대해 매개변수화된 유형 정보를 생성하지 않습니다.

UML 콜렉션 유형

UML 콜렉션 유형은 모델 요소의 다음 특성으로 판별됩니다:
  • 일반 페이지의 특성 보기에서 순서 지정 및 고유 특성은 UML 콜렉션 유형을 지정합니다.
  • 고급 페이지의 특성 보기에서 순서 지정됨 및 고유함 특성은 UML 콜렉션 유형을 지정합니다.
주: 변환이 생성하는 Java 콜렉션 유형을 지정하기 위해 «JavaCollection» 또는 «JavaArray» 스테레오타입을 UML 속성, 연관 또는 오퍼레이션에 적용할 수도 있습니다. 스테레오타입을 적용하면 변환 구성에서 선택하는 기본 콜렉션을 대체합니다. 이 스테레오타입은 UML에서 Java로 변환 프로파일에서 사용 가능합니다.

UML 콜렉션 정보가 있는 Java 소스 코드의 어노테이션

J2SE 5.0과 호환 가능한 코드를 생성하도록 변환을 구성하지 않은 경우 UML에서 Java로(UML-to-Java) 변환은 변환에서 생성되는 Java 콜렉션 유형에 UML 콜렉션 유형에 대한 주석을 추가합니다. 이 주석을 사용하면 시각적 개발 도구에서 Java 콜렉션 유형의 정확한 시각적 표시를 작성할 수 있습니다.

UML 속성에서 *의 다중성을 지정하고 변환 구성에서 Java 콜렉션 정보를 변경하지 않는 경우 기본적으로 UML에서 Java로(UML-to-Java) 변환은 Java 세트를 생성합니다.

다음 표는 Class1 및 Class2 사이의 연관 관계 예제를 보여 줍니다. 연관 관계는 다중성 1..*을 지정합니다. 표는 변환이 변환 구성의 기본값을 사용하여 생성하는 소스 코드의 예외 및 연관 관계의 시각적 표시도 보여 줍니다. 변환이 소스 모델 요소와 생성된 코드 사이의 추적 관계를 작성하도록 구성되지 않았다고 가정합니다.
UML 요소 UML에서 Java로(UML-to-Java) 변환 출력 변환 출력의 시각적 표시
이 이미지는 다중성을 지정하는 연관 관계가 있는 Class1 및 Class2 UML 모델 요소를 보여 줍니다. 변환 구성에서 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;
}
이 이미지는 Class2 클래스의 콜렉션을 포함하는 프로젝트 탐색기 보기에서의 Class1 시각적 표시를 보여 줍니다.
변환 구성에서 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로 변환을 실행하는 경우 변환은 다음 항목을 생성합니다.
  • Class1에서, 변환은 «JavaCollection» 스테레오타입이 적용된 class2 UML 속성을 생성합니다. collectionType 특성은 java.util.Collection으로 설정되고 다중성은 *로 설정됩니다.
  • Class2에서 변환은 다중성이 1로 설정되고 어떤 스테레오타입도 적용되지 않은, class1이라고 하는 클래스 유형의 UML 속성을 생성합니다.

다음 이미지는 Java에서 UML로 변환이 생성하는 UML 클래스의 시각적 표시를 보여 줍니다.

이 이미지는 이전 단락에서 설명한 예제를 보여 줍니다.

Javadoc 정보의 생성

J2SE 5.0 코드를 생성하도록 UML에서 Java로(UML-to-Java) 변환을 구성하는 경우 변환은 지원하는 Java 요소의 Javadoc 정보를 생성합니다. 생성된 Javadoc 정보는 다음 컴포넌트로 구성됩니다.
  • UML 요소에 대한 documentation 특성의 컨텐츠이며 다음 태그 사이에 위치합니다.
    /*
     * <!-- begin-UML-doc -->
     * <!-- end-UML-doc -->
     */
  • 변환이 생성하는 어노테이션
  • 해당되는 Java 유형에 대한 JDT 주석에 의해 생성된 정보
    주: JDT 템플리트가 생성하는 Javadoc 정보를 사용자 정의하려면 > 환경 설정 > Java > 코드 스타일 > 코드 템플리트를 클릭한 후 주석을 펼치고 Java 유형을 선택한 다음 해당 유형의 패턴 필드에서 Java 주석을 사용자 정의하십시오.

이전 Rational 모델링 제품 릴리스의 Javadoc 정보 보존

제품의 이전 릴리스에서 생성된 Javadoc 태그 사이에 정보를 보존하려면, Java에서 UML로 변환을 한 번 실행하여 Javadoc 정보를 UML 모델에 있는 해당 요소의 documentation 특성으로 이주하십시오.
주: 제품의 이전 릴리스에서 생성된 Javadoc 태그를 생성하기 위해 Java Development Toolkit에서 코드 템플리트를 수정할 수 있습니다.

변환 출력에서 관계 문서

UML에서 Java로(UML-to-Java) 변환은 UML 관계 문서를 다음 UML 관계에 대한 Javadoc 정보로 변환합니다.
  • 연관
  • 일반화
  • 구현
  • 실현
사용 관계 문서를 Javadoc 정보로 변환하려면 J2SE 5.0 코드를 생성하도록 UML에서 Java로(UML-to-Java) 변환을 구성해야 합니다.

변환은 각 관계의 원래 클래스에 대한 UML 문서에 일반화, 구현 및 실현(realization) 관계 문서를 추가합니다. 변환은 각 관계의 생성된 대상 클래스에 대한 Javadoc 정보에도 이 관계의 문서를 추가합니다.

연관의 경우, 변환은 연관된 각 특성의 문서에 UML 문서를 추가합니다.

Java 키워드 보존

UML 모델은 몇 개의 Java 키워드(예: strictfp, native, transient 및 volatile)를 표시할 수 없습니다. UML에서 Java로(UML-to-Java) 변환을 실행할 때 이 키워드를 보존하려면 이 키워드를 UML 키워드로 모델링해야 합니다.

생성된 Java 요소의 시각적 표시

UML에서 Java로(UML-to-Java) 변환의 출력이 1차 엔지니어링 아티팩트가 되도록 하려면 혼합 모델링이라고도 하는 DCMP(Design Contract Management Protocol)를 변환이 구현하도록 지정할 수 있습니다. 이 DCMP를 지정하면, 변환은 소스 UML 오브젝트와 생성된 Java 코드 사이에 직접 관계를 작성합니다. 직접 관계를 작성하면 소스 UML 오브젝트가 삭제되고 소스 오브젝트의 시각적 표시로 바뀝니다.

변환이 중첩 요소와 같은 UML 요소를 변환할 수 없는 경우 이 요소를 가장 가까운 패키지로 이동합니다. 변환이 모델 요소를 가장 가까운 패키지로 이동할 수 없으면 해당 요소를 삭제합니다.

가능한 문제점을 피하려면 소스 모델을 버전 제어 하에 두어야 합니다.

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

UML에서 Java로(UML-to-Java) 변환을 사용하여 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 표시와 변환 출력 사이에 파생 스테레오타입이 적용되는 추적 관계를 보여 줍니다.

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

변환 출력에서 모델 요소 ID

추적 관계를 작성하도록 구성된 변환을 실행할 경우 변환은 @generated 태그를 지원하는 요소마다 @generated 태그에 고유한 ID를 추가합니다. 이 ID는 Java 요소가 생성된 UML 모델 요소를 지정합니다(예: * @generated "sourceid:platform:/resource/UMLProject/SimpleModel.emx#_83GpoBtIEdyLaOwyRX_ZMQ"). 소스 UML 모델에서 요소 이름을 바꾸는 경우 이 고유 ID를 통해 병합 기능이 해당 요소를 리팩터하고 병합할 수 있습니다.

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

팀 지원과 통합

UML에서 Java로(UML-to-Java) 변환은 IBM® Rational® Team Concert, CVS, Rational ClearCase®Rational ClearCase LT 버전 제어 시스템(파일을 자동으로 체크아웃하거나 새 파일을 추가할 수 있도록 하는)과의 통합 기능을 제공합니다. 구성 관리 시스템에 대해 작업하려면 팀 기능이 사용 가능해야 합니다.


피드백