티스토리 뷰

난이도 : 초급

Vikas Trivedi, Software Engineer, IBM

2006 년 6 월 28 일

Rational Application Developer 6.0의 Java™ Visual Editor는 복잡한 자바 애플리케이션의 개발을 매우 단순화 시킵니다. 이 글에서는 시각화 기능을 중심으로 설명합니다.

머리말

Application Developer의 Java Visual Editing 지원은 복잡한 자바 애플리케이션의 개발을 매우 단순화 한다. Class 다이어그램을 사용하여 자바 클래스와 인터페이스를 시각적으로 만들고 수정할 수 있다. 또한 Browse와 Topic 다이어그램을 사용하여 다양한 자바 엘리먼트들 간 관계를 보고 애플리케이션의 구조를 검토할 수 있도록 지원한다. 개발자는 개발 중인 어플리케이션을 쉽게 설계할 수 있고 모델과 코드가 자동으로 동기화됨으로써 그 둘 간을 반복하면서 수정할 필요가 없다는 점을 훌륭히 여기게 될 것이다.

기능 소개

콘텍스트 메뉴 시각화

가시화 하위메뉴(그림 1)를 사용해서 선택된 요소들을 클래스 다이어그램 외에 시퀀스 다이어그램, 주제 (토픽) 다이어그램, 또는 정적 메소드 시퀀스 다이어그램에 추가할 수 있다. 찾아보기(브라우즈) 다이어그램에서 탐색 명령어를 사용하여 선택된 요소트들을 탐색할 수 있다. 물론 사용 가능한 옵션들은 선택한 바에 의존한다. 예를 들어, 그림 1에서 보듯, 선택된 요소가 Java Class이면 정적 메소드 시퀀스 다이어그램 옵션을 사용할 수 없다.


그림 1. 가시화 컨텍스트 메뉴
Visualize submenu

가시화 메뉴는 다이어그램상에서 시각화 된 자바 요소에서도 이용할 수 있다. 이 경우 가시화의 하위 메뉴로 “찾아보기(브라우즈) 다이어그램에서 탐색”, “주제(토픽) 다이어그램” 와 같은 것이 제공된다.

취소가 가능한 가시화 진행 다이얼로그

Application Developer에서 가시화 명령어가 수행되는 동안 나타나는 진행 대화창에는 명령을 중단할 수 있는 취소 버튼이 있다.(그림 2) 이 버튼은 가시화할 요소를 많이 선택한 상태에서 선택한 사항을 변경하고자 할 때 매우 유용하다.


그림 2. 취소가 가능한 진행 다이얼로그
Cancelable progress Visualize command

찾아보기(브라우즈)와 주제(토픽)다이어그램

앞서 언급했던 것 처럼 가시화 메뉴는 찾아보기 (브라우즈) 다이어그램을 통하여 자바 요소들을 탐색할 수 있다. 그럼 3은 찾아보기(브라우즈) 다이어그램의 모습인데 이 다이어 그램은 다른 다이어그램들과 달리 편집 및 영구 보존되는 것이 아니며 기존의 요소와 그들간의 관계를 빠르게 살펴볼 수 있도록 임시 상태로 만들어져 읽기상태로 제공되는 다이어그램이다.


그림 3. 찾아보기(브라우즈) 다이어 그램 시각화
Browse Diagram

찾아보기(브라우즈) 다이어그램에서는 보기 원하는 관계를 선택할 수 있고 적용을 클릭하면 새로운 찾아보기(브라우즈) 다이어그램이 새로운 쿼리를 사용하여 생성된다. 툴바 상의 네비게이션 버튼을 사용하여 찾아보기(브라우즈) 다이어그램을 통해서 검색할 수 있다. 찾아보기 (브라우즈) 다이어그램은 임시적이기 때문에, 저장될 수 없다. 하지만, 다이어그램의 File 컨텍스트 메뉴에 접근하여 정규 UML 다이어그램(.dnx) 또는 Image 파일로서 저장될 수 있다.

주제(토픽) 다이어그램은 자바 요소간 관계에 대한 동적 뷰를 빠르게 만드는데 사용될 수 있다. 그림 4는 Topic 마법사가 제공하는 사전 정의된 쿼리를 보여주기 때문에 관계를 볼 수 있다.


그림 4. Topic Diagram 프리셋
Topic Diagram

Topic 다이어그램은 Browse 다이어그램과 마찬가지로 편집될 수 없지만 쿼리를 커스터마이징 할 수 있다. 다이어그램을 리프레쉬 하면 코드 수정을 반영할 수 있다.

정적 메소드 시퀀스 다이어그램

시각화 메뉴에서는 Java Class에 있는 메소드를 선택할 수 있고, 이를 정적 메소드 시퀀스 다이어그램에서 시각화 할 수 있다. 정적 메소드 다이어그램은 서로 관계를 맺고 있는 자바 엘리먼트의 인스턴스들 간 메시지를 순차적으로 보여준다.(그림 5)


그림 5. Static Method Sequence diagram
Static Method Sequence

시퀀스 다이어그램은 특정 인터랙션에 대해 자바 엘리먼트들의 인스턴스들 간의 메시지 흐름 순서를 보여준다.

시퀀스 다이어그램

Visualize 메뉴에서 시퀀스 다이어그램(그림 6)을 만들고 새로운 인터랙션을 만들 수 있다.


그림 6. 시퀀스 다이어그램
 a Sequence diagram

시퀀스 다이어그램의 생명선들 간 다양한 메시지 유형들을 만들 수 있다. 시퀀스 다이어그램에 변경이 생기면 자바 소스 코드에 영향이 미친다. 따라서 A 생명선에서 B 생명선 까지 새로움 메시지를 만든다면 새로운 메소드가 생명선 B 유형에 만들어질 수 있다. 새로운 연산을 선택했는지, 아니면 기존 연산을 사용하기로 했는지에 따라 다르다.

자바 팔레트

Application Developer의 클래스 다이어그램에서 사용할 수 있는 자바 팔레트에는 자바 요소들간의 관계와 관련된 옵션이 있다.(그림 7) 이 팔레트뷰에서 사용되는 아이콘은 패키지 탐색기뷰에서 사용되는 것과 같은 것으로 두 뷰간 모양새도 동일한다.


그림 7. Java Palette
the Java Palette

Association tool allows you to create an Association relationship between Java types. To create an Association relationship:툴로는 자바 유형들 간 Association 관계를 만들 수 있다. Association 관계를 만들려면,

  1. 팔레트에서 Association 툴을 선택한다.
  2. 다이어그램 상에 소스 엘리먼트를 클릭한다
  3. 커넥터를 목표 엘리먼트 또는 다이어그램으로 드래그한다.
대상 엘리먼트에 커넥터를 놓으면 Association 툴 마법사는 소스와 대상 엘리먼트 간 Association 관계를 만든다. 한편, 다이어그램 표면에 커넥터를 놓으면 팝업 메뉴가 대상 엘리먼트가 기존 자바 유형인지(다이어그램 상에 시각화 될 수도 있고 그렇지 않을 수도 있다.) 아니면 생성되어야 할 새로운 자바 유형인지를 묻는다. Association 마법사로 옮겨가서 관계 만들기를 완료하기 전에 기존 자바 유형을 선택하거나 마법사를 사용하여 새로운 자바 유형을 만든다.

코드의 관점에서 보면 자바 유형 A에서 자바 유형 B까지 Assiciation 관계를 만든 결과는 유형 A에 유형 B라는 새로운 멤버 필드가 만들어졌다는 점이다. 그림 8에서 보듯, Association 툴을 사용할 때 Association 관계가 나타내는 자바 필드를 만들 수 있다.


그림 8. Association 마법사 생성하기
the Create Association wizard

Show Related Elements

Show Related Elements는 다이어그램 상에 관련 엘리먼트들을 쿼리 할 때 도움이 되는 매우 유용한 기능이다. Application Developer에서 Show Related Elements 액션은 Class 다이어그램 상의 자바 엘리먼트용 컨텍스트 메뉴에 접근하여 사용할 수 있다. Filters 메뉴로 옮겨졌다.

Application Developer는 그림 9처럼 향상된 Show Related Elements 다이얼로그를 제공한다. 이 다이얼로그는 사전 정의된 커스텀 쿼리를 제공하여 관련 엘리먼트들을 빠르게 보는데 사용될 수 있다. 기본적으로, 세부사항은 접혀진 상태로 보이지 않고 대화창의 왼쪽 부분만 보인다. 세부사항 버튼을 클릭하면 실제 관계를 볼 수 있다. 선택된 쿼리와 관련된 설정도 볼 수 있다. 쿼리에 생긴 변화들은 앞으로의 사용을 위해 저장될 수 있다.


그림 9. Show Related Elements Dialog
Show Related Elements in Diagram dialog

Incoming, Outgoing, Both 방향을 선택할 수 있다. 예를 들어, 선택된 엘리먼트의 슈퍼 클래스 계층을 보고 싶다면 Outgoing을 선택한다. 하위 클래스 계층을 보려면 Incoming을 선택한다.

Java Show Related Elements Filters 선호 페이지를 주목하라.(그림 10)


그림 10. Java Show Related Elements Filters 특성 페이지
Java Show Related Elements Filters preferences

특성 페이지에서는 Show Related Elements 액션을 실행할 때 바이너리 자바 유형을 필터링 할 수 있는 옵션이 주어진다. 바이너리 자바 유형은 작업공간에서 정의된 유형이 아니라 대신 참조 라이브러리(jar)를 통해서 작업공간에 사용할 수 있다. 관련 엘리먼트들을 볼 때, 외부 jar 에서 정의된 java.lang.Object와 같은 엘리먼트들은 별로 관심사항이 아닐 것이다. 이 특성 페이지에서는 이 같은 유형을 필터링 할 수 있다. 특정 라이브러리(jar), 패키지, 특정 유형들을 차단하고 싶다면 이 페이지에서 이와 관련된 항목의 특성을 설정할 수 있다.

이 설정은 관련 엘리먼트에 대해 쿼리하는 모든 연산에 영향을 준다. 예를 들어 찾아보기 (브라우즈) 다이어그램과 주제 (토픽) 다이어그램에 대한 쿼리에 영향을 준다.

Application Developer에서 Java Show Related Elements용 진행 다이얼로그에는 버튼이 있다.(그림 11) 이는 명령어를 취소하는데 사용된다. 이 기능은 Show Related Elements 마법사에서 여러 단계의 필터링을 선택한 상황에서 예상보다 수행시간이 오래 걸릴 때 유용하게 사용할 수 있다.


그림 11. Show Related Elements의 취소
Cancelable progress dialog

시각적 편집

Application Developer에서 모든 자바 시각적 편집은 Modeling 카테고리 밑에 구성된다. 자바 시각 편집과 관련된 특성은 Java Assisted Modeling, Java Show Related Elements Filters, Java to UML Mapping 밑에서 사용할 수 있다.

액션바

액션바는 클래스다이어그램에서 시각화된 자바 요소 (가령 특정 클래스)에 마우스를 올려놓으면 표시되는 아이콘기반의 메뉴이다. 액션바를 이용하면 선택한 요소와 관련된 명령을 빠르게 접근하여 편집할 수 있다.(그림 12)


그림 12. 자바 엘리먼트용 액션 바
Action bar

Action bar에 버튼을 사용하면 여기에 필드나 메소드를 추가하여 자바 엘리먼트를 편집할 수 있다. 이 액션들은 엘리먼트의 컨텍스트 메뉴에 Add Java 메뉴를 통해 사용할 수 있다.

Modeling Assistant

Modeling Assistant는 엘리먼트간 관계를 작성할 수 있는 빠른 방법을 제공하는데 이 때 엘리먼트는 다이어그램내에서 볼 수 있는 상태일 수도 있고 보이지 않는 상태일 수도 있다. 또한 Modeling Assistant를 이용하여 현재 선택된 요소와 관련된 다른 요소들을 특정 관계에 기반하여 빠르게 볼 수 있다. 자바 엘리먼트에서 검색하면(Class 다이어그램에서 시각화 됨) Modeling Assistant는 2 개의 화살표의 형태로 사용할 수 있다. (하나는 엘리먼트를, 다른 하나는 외부를 가리킨다.)


그림 13. Modeling Assistant
Modeling Assistant

엘리먼트를 향하는 화살표는 인커밍 관계이다. 따라서 선택된 엘리먼트가 목표인 관계를 만들 때 인커밍 화살표를 사용한다. 엘리먼트 밖을 향하는 화살표는 아웃고잉 관계이다.(그림 14)


그림 14. Modeling Assistant를 사용하여 관계 만들기
Modeling Assistant to create relationships

선택된 엘리먼트에서 다른 자바 엘리먼트로 아웃고잉 관계를 만들려면,

  1. 아웃고잉 화살표의 끝에 작은 박스를 클릭한다.
  2. 결과 커넥터를 드래그 한다.
  3. 이것을 다이어그램 표면이나 또 다른 엘리먼트에 둔다.
여러분이 만들 수 있는 관계의 유형은 커넥터가 빠질 때 나타나는 컨텍스트 메뉴에서 사용할 수 있다. 소스와 대상 엘리먼트 간 한 가지 유형의 관계만 만든다면 컨텍스트 메뉴는 나타나지 않고 관계는 자동으로 만들어 진다. 인커밍 관계가 인커밍 화살표를 사용하여 비슷하게 만들어 질 수 있다. 다이어그램 표면에 커넥터를 없애고 관계 유형을 선택한 후에 관계의 대상 엘리먼트가 기존 엘리먼트인지 아니면 새로운 엘리먼트가 생성되어야 하는지를 설정할 수 있다. 기존 엘리먼트를 선택하고 싶다면 Select Existing Java 엘리먼트 다이얼로그가 뜬다. 새로운 엘리먼트를 만들기로 했다면 Create a New Element 마법사가 생긴다. 엘리먼트가 만들어지면 다이어그램에 자동으로 추가되고 두 엘리먼트들 간 관계가 디스플레이 된다. Modeling Assistant의 화살표 끝에 박스를 더블 클릭하고 관련 엘리먼트를 보기 위해 결과 컨텍스트 메뉴에서 관계를 선택할 수 있다.(그림 15)
그림 15. Modeling Assistant를 사용하여 관련 자바 엘리먼트 보기
Viewing related Java elements

엘리먼트의 컨텍스트 메뉴에서 Filter > Show Related Elements 명령어를 실행하고 하나의 관계를 선택하고 이를 인커밍 또는 아웃고잉 관계를 위한 하나의 레벨로 제한하는 것과 비슷하다.

Refactoring

Application Developer에서, Package Explorer에서 사용할 수 있는 Refactor 메뉴는 다이어그램에서도 사용될 수 있다. 다이어그램에서 선택된 엘리먼트의 컨텍스트 메뉴(그림 16)에서 Refactor 메뉴에 액세스 할 수 있다.


그림 16. Refactor 컨텍스트 메뉴
Refactor menu

Refactor 메뉴 옵션을 선택하면 Refactor 다이얼로그가 생기고 선택에 기반하여 엘리먼트를 리팩토링 할 수 있다.

직접 편집

Application Developer에서는 엘리먼트를 선택하고 새로운 이름을 타이핑 하는 것으로 자바 엘리먼트 이름을 재명명 할 수 있다. 다이어그램 상에서 엘리먼트 이름을 바꾸면 리팩토링 되고, 변경 사항은 다이어그램과 Package Explorer 뷰에 즉시 반영된다. (자바 소스 코드도 마찬가지다.) 다이어그램이나 Package Explorer 뷰에서 엘리먼트의 Refactor > Rename 컨텍스트 메뉴에 액세스 해서도 달성할 수 있다.

Cross-Model Reference 데코레이션

Application Developer에는 다른 프로젝트에 속한 엘리먼트용 Cross-Model Reference 데코레이터가 포함되어 있다. Project A의 자바 요소가 Project B에 속한 클래스 다이어그램에서 가시화될 때, Cross Model Reference 데코레이터가 엘리먼트의 왼쪽 상단에 표시된다. 이 데코레이터는 현재 엘리먼트가 다이어그램이 속한 프로젝트와 다른 프로젝트에 속해 있다는 것을 표시한다.


그림 17. Cross-Model Reference 데코레이터
Cross-Model Reference decorator

ClassA는 클래스 다이어그램과 같은 프로젝트에 속해있다. 하지만 NewProjClassA상의 Cross-Model Reference 데코레이터는 이것이 다른 프로젝트에 속해있다고 나타낸다. 이는 자바 엘리먼트들 간 관계를 볼 때 매우 유용하다. 어떤 엘리먼트가 다른 프로젝트에 속해있는지를 즉시 볼 수 있다.

Visualize existing > Java type 메뉴

Visualize existing > Java type 메뉴(그림 18)는 다이어그램 표면의 컨텍스트 메뉴에서 사용할 수 있다. 기존의 모든 자바 유형을 다이어그램으로 시각화 할 수 있다.


그림 18. Visualize existing ... Java type 메뉴
the Visualize existing ... Java type menu

이 메뉴를 선택하면 Visualize Java type 다이얼로그가 시작되고 자바 유형이 다이어그램 상에 시각화 되도록 선택할 수 있다. 이 메뉴를 사용하면 Package Explorer에서 자바 유형을 찾아 이를 다이어그램으로 가져오거나, Visualize > Add to current Class Diagram 명령어에 액세스 하는 수고를 덜어준다. Visualize Java type 다이얼로그에서는 작업 공간의 일부인 유형만 선택할 수 있다.

집합 유형 변경

Java to UML Mapping 선호 페이지에서는 집합 유형으로서 사용되는 자바 유형을 지정할 수 있다.(그림 19)


그림 19. Change Collection Type 명령어
the Change Collection Type command

Collection 유형의 리스트에 정의된 자바 필드 유형을 만들 때 그 필드의 컬렉션 유형이나 Association 를 변경하여 컬렉션에 저장되는 실제 엘리먼트 유형을 반영할 수 있다. 예를 들어, ClassA에 java.util.List 유형의 자바 필드를 만들면 Change Collection Type 액션을 사용하여 그 List가 실제로 String 유형의 엘리먼트를 보유하도록 지정할 수 있다. 따라서 ClassA와 List 보다는 ClassA와 String 사이의 관계를 보게 될 것이다. 이 액션은 수정되는 필드에 대한 실제 소스 코드를 변경하지 않는다. 대신, 시각 에디터에 이 컬렉션의 기본 유형이 String 이라는 것을 알려주는 주석을 필드에 추가한다.

작동은 Application Developer의 초기 버전과는 다르다. 자바 엘리먼트의 부분 리스트에서 다이어그램으로 필드를 끌고 오는 액션은 Change Collection Type 액션을 실행했다. 이제는 컨텍스트 메뉴에서 이 액션을 실행한다.

Create Java Method Wizard

그림 20에서 보여지는 자바 메소드 생성 마법사는 가용성을 향상시킬 수 있게 한다.


그림 20. Create Java Method 마법사
Java Method wizard

이 마법사는 새로운 메소드가 추가될 Class 또는 Interface를 가리킨다. 수정된 자바 유형의 이름은 Preview 그룹 밑에 디스플레이 된다. (이는 Create Java Field 마법사에 추가되었다.)

메소드에 의해 던져질 다중 예외 유형들을 선택할 수 있다. Throws 리스트 옆에 있는 Add 버튼을 클릭하면 Browse 유형 다이얼로그가 뜬다. 여기에서 한 개 이상의 예외(exceptions)를 선택할 수 있다. 게다가 매개변수들을 메소드에 추가하는 인터페이스는 직관적이다. Parameter 리스트 옆에 있는 Add 버튼을 클릭하면 Create Parameter 다이얼로그가 뜬다. 이 곳에서 이름, 유형, 매개변수의 범위를 입력할 수 있다. 이는 매개변수 리스트에 반영된다.

Javadoc with Diagrams 명령어

그림 21은 Project 메뉴 밑에 있는 Generate Javadoc with Diagrams 모습이다. 임베디드 클래스 다이어그램을 가진 Javadocs™를 만들 수 있다.


그림 21. Javadoc with Diagrams 명령어
Javadoc with Diagrams

다이어그램을 생성하기 위하여 자동생성 또는 소스코드에 임베드된 기존 태그를 사용할 수 있다.

그림 22의 Generate Javadoc 마법사에서 다이어그램이 생성될 엘리먼트의 유형을 선택할 수 있다. 다이어그램에 사용할 이미지 포맷도 선택할 수 있다. 소스에 삽입될 다이어그램 용 태그를 원한다면 지정할 수 있다. 옵션을 사용하여 여러분이 사용할 다이어그램의 유형을 커스터마이징 할 수 있다.


그림 22. Generate Javadoc 마법사
Javadoc wizard

결과 Javadocs에는 다이어그램이 삽입되어 있다. 선택된 엘리먼트와 다른 엘리먼트들과의 관계를 보여준다.(그림 23)


그림 23. 다이어그램이 삽입된 Javadoc
embedded diagrams

그림 23은 선택된 엘리먼트용 Javadoc이고 패키지에 저장된 엘리먼트를 가리키는 다이어그램이다.

결론

Application Developer는 자바용 시각적 편집과 관련된 기능을 제공한다. 이를 통하여 UML 모델링 기술을 이용하여 어플리케이션의 설계를 매우 훌륭히 지원받음으로써 기존과 전혀 다른 차원의 자바 개발을 경험할 수 있다. Class 다이어그램, Sequence 다이어그램, Topic 다이어그램, Browse 다이어그램 Show Related Elements 같은 명령어를 사용하게 되어 기존 애플리케이션의 구조와 디자인을 이해하기가 쉬워졌다.

기사의 원문보기




위로


참고자료

교육

제품 및 기술 얻기

토론



필자소개

Vikas Trivedi는 IBM Rational Software Ottawa Lab의 소프트웨어 엔지니어이다. Aurora Platform -- Visualizer Services 팀에서 작업하고 있다. UML 비주얼 모델링 전문가이기도 한 그는 Motilal Nehru National Institute of Technology(Allahabad, India)에서 전자 공학 학사를 받았다. 이메일은 vtrivedi@ca.ibm.com 이다