2012-09-14 6 views
8

UML에 익숙하지 않지만 기존 C++ 코드를 기반으로 클래스 다이어그램을 만들고 싶습니다. 다른 StackOverflow 질문에 따르면 Enterprise Architect와 Rational Software Architect라는 두 프로그램이 C++ 코드를 "리버스 엔지니어링"(즉, 기존 C++ 코드를 기반으로 UML 클래스 다이어그램 만들기)하는 데 상당히 뛰어났습니다.Enterprise Architect 또는 Rational Software Architect를 사용하여 소스 코드에서 클래스 다이어그램을 만드는 방법은 무엇입니까?

이러한 두 가지 응용 프로그램의 평가판을 다운로드했습니다. 그러나 이러한 응용 프로그램 중 하나에서 클래스 다이어그램을 만들기 위해해야 ​​할 일을 이해할 수는 없습니다.

Rational Software Architect에서 UML 프로젝트를 만들었지 만 프로그램 내에서 기존 C++ 코드를 선택하고 리버스 엔지니어링하는 방법을 찾을 수 없습니다.

Enterprise Architect에서 C++ 코드를 가져올 수 있었지만 다이어그램에서 모든 요소 (클래스)가 쓸모없고 겹치는 대각선으로 나타났습니다. 나는 서클과 같은 다른 설정을 시도했지만 다이어그램이 패닝 및 확대/축소가 유용하지 않은 (공간 및 공간을 많이 차지하는 속성 및 메소드로 인해) 너무 크기 때문에 읽을 수 없었습니다. 클래스 이름을 제외하고 모든 것을 숨기 (즉, 메소드 나 속성을 표시하지 않음)하여 한 화면에 20 개의 클래스가 편리하고 알기 쉽게 표시되도록하는 것이 좋습니다.

그러나 클래스 이름을 제외한 모든 것을 숨길 방법을 찾을 수 없습니다. 오히려 클래스 이름 이외의 모든 것을 숨길 수있는 것처럼 보이는 (엔터프라이즈 아키텍트에서) 옵션을 발견했을 때 어떤 이유로 클래스 다이어그램에서 요소가 모두 사라졌으며 단계를 반복하지 않아도되었습니다. & 패키지 삭제 및 다시 추가 클래스 다이어그램이 다시 나타납니다.

참고 : My C++ 코드 (Enterprise Architect로 가져 오기 위해 선택한 파일)는 약 20 개 클래스에 불과합니다.

슬프게도이 두 프로그램에 대한 문서를 매우 신중하게 검색하면 일반성 만 제공됩니다.이 프로그램 중 하나에 대한 리버스 엔지니어링과 관련된 구체적인 지침은 아직까지 찾을 수 없습니다.

누군가가 나에게 읽기 쉽고 탐색하기 쉬운 다이어그램을 만들 수있는 기본 단계를 알려 주시면 감사하겠습니다. Enterprise Architect 또는 Rational Software Architect를 사용하여 한 화면에 약 20 개의 클래스가 적합하도록 (읽기 쉽도록) 클래스 이름 만 표시하는 리버스 엔지니어링 (즉, C++에서 UML로) 또는 가능한 모든 다른 도구 이렇게 (나는이 목적을 위해 사용 가능한 최상의 프로그램으로 다른 StackOverflow 답변에서 강조 되었기 때문에 EA와 Rational 만 제안한다).

+0

나는 그 프로그램에 대해 아무것도 모른다. 그러나 자유 소프트웨어 인 doxygen을 살펴보고 필요에 따라 선택할 수도있다. 간단한 예제가있다. (http://stackoverflow.com/questions/9484879)/graphviz-doxygen- 생성 -umum- 클래스 다이어그램). –

답변

12

이 답변은 EA에 적용됩니다.

개별 파일이나 전체 디렉터리를 재귀 적으로 또는 아니요로 가져올 수 있습니다. 디렉토리 가져 오기가 가장 일반적인 경우입니다. 단일 파일 가져 오기를 사용하면 자동으로 다이어그램을 만들 수 없습니다.

소스 디렉토리를 가져올 때 각 UML 패키지에 대한 다이어그램을 만들 수도 있고 전혀 다이어그램을 만들지 않을 수도 있습니다. 또한 각 소스 코드 디렉토리, 네임 스페이스 (기본값) 또는 파일에 대한 패키지를 만들지 여부를 결정합니다.

코드가 20 개의 클래스로만 구성되는 경우 단일 디렉토리 및/또는 네임 스페이스에있는 것일 수 있으므로 적절한 수의 다이어그램을 얻으려면 해당 옵션 (가져 오기 소스 대화 상자의 패키지 구조)을 사용하십시오.

동일한 대화 상자에는 다이어그램에 클래스의 속성 및/또는 작업이 포함되어야하는지 여부를 선택할 수있는 다른 설정 대화 상자를 여는 "New Diagram Options"버튼이 있습니다. 공개 멤버 만 공개하는 등 공개 여부를 결정할 수도 있습니다.

이 대화 상자는 다이어그램을 만들 때 다이어그램에 표시된 내용에만 영향을줍니다. 멤버는 가져온 상태로 표시되며 표시되지 않습니다. 이것은 당신이 겪은 것처럼 들립니다.

다이어그램의 빈 영역을 두 번 클릭하거나 마우스 오른쪽 버튼을 클릭하고 속성을 선택하여 모든 다이어그램의 표시 옵션을 변경할 수 있습니다. 이 대화 상자에 들어서 뭔가를 바꾼 것처럼 들리지만 실제로 무엇을 말할 수는 없습니다. 당신이 묘사 한 상황, 즉 디스플레이를 원래 상태로 되돌릴 수없는 상황은 EA에서 만난 적이 없습니다.

다이어그램에서 마우스 오른쪽 단추로 클릭하고 기능 공개를 선택하여 클래스별로 표시 옵션을 선택할 수도 있습니다. 리버스 엔지니어링 된 다이어그램에서 이것을 사용하지 않는 것이 좋습니다. 완전성을 언급하는 것입니다.

당신이 묘사 한 레이아웃은 모든 클래스가 의미가없는 대각선으로되어있어서 다이어그램이 생성 후 제대로 레이아웃되지 않았 음을 나에게 알립니다. 다이어그램 작성은 2 단계 프로세스입니다. 먼저 모든 클래스가 그 위에 놓인 다음 레이아웃이 적용됩니다.

EA는 자동으로 생성 된 다이어그램을 레이아웃하고이 동작을 선택 취소 할 수있는 옵션을 찾을 수 없었기 때문에 이상합니다. 이 문제가 계속되면 Sparx Systems에 버그 보고서를 보냅니다. 다이어그램을 열고 최상위 다이어그램 메뉴에서 레이아웃 다이어그램을 선택하여 언제든지 다이어그램을 배치 할 수 있습니다.

마지막으로 클래스가 다른 패키지 네임 스페이스에 분산되어있어 EA에서 여러 개의 다이어그램을 생성하는 경우 수동으로 병합해야합니다. 두 다이어그램을 모두 열어 하나를 선택하고 (Ctrl-C) 붙여 넣은 다음 (Ctrl-V) 다른 레이아웃 다이어그램을 다시 불러 와서 다이어그램을 다시 열어보십시오.

그래서 :

  1. , 프로젝트 브라우저에서 빈 패키지를 마우스 오른쪽 단추로 클릭하고 코드 엔지니어링 선택 - 가져 오기 소스 디렉토리를.
  2. 대화 상자에서 루트 디렉토리와 소스 유형을 선택하십시오.
  3. "각 패키지에 대한 논리 다이어그램 만들기"를 선택하고 소스 구조에 가장 적합한 패키지 구조를 선택하십시오.
  4. "새 다이어그램 옵션"을 클릭하고 새 대화 상자에서 적용 가능한 경우 "속성 표시", "작업 표시"및 "속성 방법 표시"의 선택을 해제합니다.
  5. 두 대화 상자 모두를 확인하십시오.
  6. 여러 다이어그램을 만든 경우 모든 클래스를 하나의 다이어그램으로 복사하십시오.
  7. 레이아웃이 좋지 않으면 [다이어그램 - 레이아웃 다이어그램]을 선택합니다.

희망이 도움이됩니다.

관련 문제