UML에서 C++로 변환

이 컨텐츠는 버전 7.5.4 이상에 적용됩니다. UML에서 C++로 변환은 UML 모델 요소를 C++ 코드로 변환합니다.

올바른 변환 소스

다음 표는 변환 구성에서 지정하는 DCMP(Design Contract Management Protocol)에 따라 C++ 코드로 변환될 수 있는 UML 소스 오브젝트를 나열한 것입니다.
DCMP UML 소스 오브젝트
개념적 모델 시드 구체적 모델 현재 작업공간의 하나 이상의 UML 프로젝트에서 다음 요소를 선택할 수 있습니다.
  • 모델
  • 패키지
  • 비중첩 클래스류:
    • 클래스
    • 열거
    • 인터페이스
    • 컴포넌트
개념적 모델 드라이브 개발
조정된 모델링 앞에 있는 목록에서 하나 이상의 요소를 선택할 수 있습니다.

UML에서 C++로 변환의 소스로 여러 개의 패키지나 비중첩 클래스류를 선택하는 경우 이 패키지나 클래스류는 동일한 UML 모델에 포함되어야 합니다.

UML에서 C++로 변환 또는 반대로 C++에서 UML로 변환의 소스로 하나 이상의 비중첩 클래스류를 선택하는 경우 변환은 역변환이 처리하는 첫 번째 비중첩 클래스류의 루트 레벨 패키지를 판별합니다. 역변환은 이 루트 레벨 패키지에서 해당 출력을 생성합니다.

변환 구성을 작성하거나 편집할 때 또는 모델에서 직접 모델 요소를 선택하여 변환이 C++ 코드로 변환해야 하는 모델 요소를 지정할 수 있습니다. 선택된 모델 요소는 변환의 소스입니다. 컨테이너와 해당 모델 요소를 둘 다 선택하거나 동일한 모델 요소를 두 번 선택하면 변환에서 오류 메시지가 생성됩니다.

컴포넌트를 사용하여 C++ 코드로 변환하려는 모델의 요소를 구성할 수 있습니다. 컴포넌트를 선택하는 경우, 컴포넌트에 패키지 및 클래스에 대한 사용 관계가 있을 때 UML에서 C++로 변환은 관련 패키지 및 클래스를 C++ 코드로 변환합니다.

변환 소스의 올바른 이름

UML 소스 요소의 이름은 소문자, 대문자 또는 밑줄(_)로 시작할 수 있습니다. 후속 문자는 소문자, 대문자 또는 숫자가 될 수 있습니다. 오퍼레이션 이름에서 콜론(:)을 사용하여 동반자 기능에 대한 완전한 이름을 지정할 수 있습니다. 변환은 숫자나 올바르지 않은 문자로 시작하는 이름에 밑줄(_) 접두부를 붙입니다. 변환은 관련 네임스페이스의 이름이 고유한지 검사합니다. 이름이 고유하지 않은 경우 변환은 밑줄과 증가하는 숫자(예: _1)로 구성하는 접미부를 중복 이름에 지정합니다.

생성된 코드의 읽기 가능성을 개선하고 UML 모델과 생성된 코드 사이의 차이를 최소화하려면 변환을 실행하기 전에 소스 UML 모델에서 사용할 수 없는 이름을 정정하십시오.

올바른 변환 대상

올바른 변환 대상은 C++ 프로젝트입니다. 대상 컨테이너를 작성하는 경우, 사용자가 작성하는 make 파일이나 기존 make 파일을 사용하는 표준 make C++ 프로젝트를 작성하거나, 사용자 대신 자동으로 make 파일을 생성하는 관리 대상 make 프로젝트를 작성할 수 있습니다.

UML에서 C++로 변환이 실행될 때 대상 C++ 프로젝트에서 출력을 생성하고 출력은 소스 UML 모델에서 요소와 동일한 계층 구조를 보유합니다. 변환 구성에서 조정된 모델링 DCMP를 선택하는 경우, C++에서 UML로 변환이나 반대 변환에서 C++ 프로젝트와 동일한 계층 구조로 UML 요소를 생성합니다.

생성된 C++ 코드의 사용자 정의

UML에서 C++로 변환은 JET 변환을 호출하여 C++ 코드를 생성합니다. 대체하는 JET 변환을 작성하고 해당 변환에서 템플리트를 수정하여 조직 특정 주석과 같은 노드 요소를 생성된 코드에 포함시킬 수 있습니다. UML에서 C++로 변환에 대한 구성을 작성할 때 대체하는 JET 변환의 ID를 지정해야 합니다.

UML 모델 요소의 변환

다음 표에서는 UML에서 C++로 변환이 UML 모델 요소를 C++ 코드로 변환하는 방법을 나열합니다.

UML 모델 요소 C++ 코드 요소
연관 관계 클래스 속성
클래스 클래스(.h 및 .cpp 파일)
종속 관계 포함, 전방 참조 또는 없음
주: 특성 창의 C++ 특성 페이지에 대한 설정에 따라 헤더 및 구현 파일에서 생성되는 내용이 판별됩니다.
열거 열거(.h 파일)
일반화 관계 클래스 상속
오퍼레이션 오퍼레이션
패키지 폴더
매개변수 오퍼레이션 인수
특성 클래스 속성
템플리트 바인딩 관계 상속된 클래스(.h 파일)
템플리트 클래스 UML 템플리트 클래스와 이름이 같은 헤더 파일(.h 파일)
주: 헤더 파일에서 메소드 본문 코드도 생성됩니다.
템플리트 매개변수 매개변수화된 클래스의 매개변수

변환에서 UML 모델 요소를 변환하는 방법에 대한 자세한 정보는 이 주제 끝에 있는 관련 참조 주제를 참조하십시오.

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

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

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

소스 모델과 변환 출력 사이에 추적 관계를 생성하도록 구성된 변환을 실행할 경우, 변환은은 소스 코드 주석을 변환 출력에 추가합니다. . 주석은 //@uml.annotations로 시작하고 모델 요소에 대한 고유 ID를 포함합니다. 소스 UML 모델에서 요소 이름을 바꾸는 경우 이 고유 ID를 통해 병합 기능이 해당 요소를 리팩터하고 병합할 수 있습니다. 또한 사용자가 소스 UML 모델에서 요소 이름을 바꾸거나 이동 또는 삭제하는 데 이 요소에 해당되는 C++ 시각화 표시가 있는 경우 UML에서 C++로 변환을 재실행하면 변환이 C++ 시각화 표시에 대한 참조를 갱신합니다.
주: 해당되는 최상위 레벨 클래스의 범위를 벗어나서 UML 요소를 이동시키는 경우 변환을 재실행할 때 병합 알고리즘은 이름이 바뀐 요소를 리팩터하거나 병합하지 않습니다. 요소 범위가 변경되었기 때문입니다.

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

소스 모델 요소와 변환 출력 사이의 관계를 보려면 다이어그램에서 소스 모델 요소를 시각화하고 변환이 생성하는 코드 요소를 해당 다이어그램으로 끌어오십시오. 다음 표는 attribute1이라고 하는 정수 속성을 포함하는 Class1 소스 모델 요소와 매개변수가 없는 두 개의 오퍼레이션 Operation1 및 Operation2, 변환이 생성하는 코드 그리고 요소 사이의 추적 관계를 보여주는 클래스 다이어그램과 같은 항목을 나열합니다.
UML 요소 변환 출력 클래스 다이어그램에서 파생된 관계
다음 이미지는 정수 속성을 가지고 있는 Class1 UML 클래스와 입력 또는 출력 매개변수가 없는 두 개의 오퍼레이션을 보여 줍니다.
#ifndef CLASS1_H
#define CLASS1_H
//Begin section for file Class1.h
//TODO: Add definitions that you want preserved
//End section for file Class1.h

//@uml.annotationsderived_abstraction="platform:/resource/MyModels/UMLModel.emx#_biwQUHdCEduVaMk1fL7Qcw"
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1 {

    //Begin section for Class1
    //TODO: Add attributes that you want preserved
    //End section for Class1

    private:

        //@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
        int attribute1;
    public:

        //@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
        int Operation1();

        //@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
        int Operation2();

};  //end Class Class1

#endif
이 이미지는 Class1과 해당되는 시각적 표시 사이에 파생 스테레오타입이 적용되는 추상 관계를 보여 줍니다.

C++ 표준 오퍼레이션

표준 오퍼레이션은 생성자, 복사 생성자, 가상 및 비가상 소멸자, 대입 연산자, getter 및 setter 메소드입니다. UML에서 C++로 변환이 UML 모드에서 클래스, 구조체 및 공용체에 대해 생성하는 표준 오퍼레이션을 지정할 수 있습니다. 또한 모델의 클래스에 대한 오퍼레이션에 표준 오퍼레이션 중 하나를 나타내는 스테레오타입을 추가할 수도 있습니다. UML에서 C++로 변환은 생성된 표준 오퍼레이션에 UML 오퍼레이션의 가시성을 적용하지만 UML 오퍼레이션의 이름 및 매개변수는 제외합니다.

변환 출력의 위치

변환은 사용자가 변환의 대상으로 지정하는 C++ 프로젝트 및 폴더에서 C++ 코드 파일을 생성합니다.

팀 지원과 통합

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


피드백