IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  자바 | 오픈 소스  >

Mylyn 2.0, Part 2: 자동화 된 콘텍스트 관리 (한글)

정보 오버로드를 극복하고 멀티 태스킹을 쉽게!

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Mik Kersten, Mylyn Project Lead; President & CTO, Tasktop Technologies

2007 년 12 월 31 일

Mylyn 2.0 릴리스 (전 Mylar)는 태스크들을 Eclipse로 완벽하게 통합함으로써 생산성을 강화했고, 이러한 태스크들의 콘텍스트를 자동으로 관리합니다. Mylyn 프로젝트 리더인 Mik Kersten은 Mylyn 사용 가이드를 업데이트 했습니다. Part 1에서는 Mylyn의 태스크 관리 장치와 Bugzilla 같은 저장소와의 통합을 설명했습니다. 두 번째 글에서는 Mylyn의 콘텍스트 관리 장치로 멀티 태스킹이 얼마나 쉬워지고, Eclipse에서 대규모 애플리케이션 작업을 할 때 정보 오버로드를 어떻게 줄이는지를 설명합니다.

이 기술자료의 이전 부분에서는, Mylyn의 태스크 관리 장치로 특정 요일 또는 특정 주와 관련한 태스크에 집중할 수 있다는 점을 설명했다. 태스크들이 Eclipse의 일부가 되면, 많은 반복적인 액션들이 여러분이 작업하고 있는 콘텍스트(context)로 집중된다는 것을 알게 된다. 당면한 태스크와 관련된 콘텍스트를 생성 및 재생성 하는 데는 멀티 태스킹이 필요하다. 태스크의 콘텍스트란 것은, 작업하고 있는 동안 참조해야 할 파일, 검색 결과, 기타 관련 정보를 말한다. 예를 들어, 프로그래밍을 할 때, 픽스하고 있는 버그와 관련된 자바™ 엘리먼트만 보고 싶을 때가 있다. 픽스를 끝마치면, 오늘 작업했던 다른 태스크들과는 무관하게 변경하고 싶을 것이다. 아니면, 태스크에 대해 작업하면서 수정했던 것과 관련된 것만 테스트 함으로써 시간을 줄일 수 있다.

무엇이 Mylyn을 "똑똑하다"고 느끼게 하는가?

Mylyn은 종종 똑똑한 사용자 인터페이스로 불리어 지지만, 그 자체로는 똑똑한 구석이 없다. 이것은 단순히 여러분이 가진 것을 재사용 하는 것뿐이다. Mylyn은 작업을 구성하는 에피소드와 태스크를 보다 쉽게 상기시킬 수 있도록 하고 있다. 이것은 예측 가능한 방식으로, 여러분이 작업하고 있는 모든 상세들을 자동으로 포착하여, 상세를 상기시켜 재 검색하는 수고스러운 경험을 하지 않도록 했다. 이해하기 어려운 교육 모델을 사용하는 대신, Mylyn의 태스크 콘텍스트는 시스템 엘리먼트와 관계와의 인터랙션을 예측할 수 있도록 하고 있다. 이 모델은 유연하고, 광범위한 지식 작업 툴로 확대된다. 참고자료 섹션에서 Mylyn의 구조와 아키텍처 또는 프로젝트에 Mylyn을 확장하는 방법을 참조하기 바란다.

Mylyn이 주 노동 시간을 구성하고 있는 태스크에 집중할 수 있게 하는 것 외에도, Eclipse 워크스페이스가 당면한 태스크와 관련된 생성물들에 집중할 수 있게 한다. Mylyn의 Task-Focused UI가 설치된 상태에서, 여러분이 해야 할 일은 어떤 태스크가 활성화 상태인지, 그리고 여러분이 작업하고 있는 모든 파일들이 자동으로 태스크의 콘텍스트에 추가되었다는 것을 나타내야 한다. 이 콘텍스트는 작업하면서 다양한 생성물들에 대해 변화하는 관심도를 나타내도록 관리된다. 심지어 매우 장기적으로 실행되는 태스크에도 그렇다. 태스크를 전환할 때, 콘텍스트가 저장되고, 한 번의 클릭으로 멀티 태스크가 가능하며, 태스크 중심의 지식을 다른 사람들과 쉽게 공유할 수 있다.

소셜 북마크

mar.gar.in mar.gar.in
digg Digg
del.icio.us del.icio.us
Slashdot Slashdot

이 글에서는 Mylyn이 Eclipse UI에서 어떻게 조화되어 프로그래밍 태스크의 콘텍스트를 어떻게 이루는지를 설명한다. 콘텍스트를 관리하는 Mylyn의 메커니즘을 설명한 다음, 관심도 데코레이션, 뷰 필터링, 에디터 관리, 콘텍스트 중심 단위 테스트 수트 같은 UI 장치들을 소개하겠다. 끝으로, Mylyn의 태스크 관리와 콘텍스트 관리가 팀 협업에 어떤 효과를 내는지를 설명하겠다.

그림 1에서 숫자로 표시한 부분은 작동하고 있는 Mylyn의 콘텍스트 관리 장치들이다:

  1. Focus on Active Task 버튼을 클릭하면 Eclipse Package Explorer가 활성 태스크 콘텍스트에 있는 엘리먼트만 보여준다.
  2. 활성 태스크 전환은 Task List를 통해 수행된다.
  3. 전환된 후에, Eclipse 뷰와 에디터는 새롭게 활성화 된 태스크의 콘텍스트에 집중한다.
  4. 태스크 콘텍스트에서 변경 사항들이 반영되도록 변경 세트가 자동으로 관리된다.
  5. 폴딩(folding)과 콘텍스트 도움말은 뷰를 관련 엘리먼트로 집중시킨다.

그림 1. 태스크 콘텍스트에 집중하기

크게 보기.

태스크 중심 프로그래밍

데드라인을 맞추기 위해 새로운 기능에 대한 변경 사항을 마쳤다고 해보자. 여러분이 작업할 때, 여러분이 수정했던 모든 클래스들과 메소드와, 이 기능을 만드는 동안 액세스 했던 API에 대한 귀중한 지식을 구축하게 된다. 여러분은 Mylyn을 사용하기 때문에, 이 지식은 태스크 콘텍스트에 자동으로 포착된다. 태스크 완료가 가까워 올 때, 심각한 버그가 나타나고, 이는 즉각적인 주의를 요하게 된다.

하나의 클릭으로, 버그 리포트를 실행하고, 문제 조사를 시작한다. Mylyn의 태스크 에디터를 사용하여 버그의 하이퍼링크로 연결된 스택 트레이스를 검색하면서, 새로운 콘텍스트가 검색과 진단으로 채워진다. Mylyn의 자동화된 Context Test Suite를 클릭하면, 이는 여러분이 생성했던 콘텍스트와 구조적으로 관련된 단위 테스트를 실행하고, 이 버그가 여러분이 아닌 동료의 코드에 있는 것이라는 것을 알게 된다. 개정 히스토리를 태스크와 연결하는 Mylyn 덕택에, 문제 변경에 상응하는 동료의 태스크를 즉각적으로 볼 수 있다. 또 다른 클릭으로, 이 버그를 동료에 할당하고, 진단을 통해 나오는 태스크 콘텍스트를 공유할 수 있다. 여러분은 이 모든 것을 Eclipse를 떠나지 않고 할 수 있기 때문에, Task List의 Back 버튼을 클릭하면 이전 태스크의 콘텍스트들이 즉각적으로 복원된다. 한편, 여러분의 동료는 여러분이 떠난 바로 그 자리에서 버그 리포트를 볼 수 있다. 이것은 Task-Focused UI를 사용하여 개발자들이 쉽게 작업 및 협업할 수 있는 시나리오이다.

지원되는 툴

태스크 저장소와 통합하기 위해 커넥터가 필요한 것처럼 Mylyn은 브리지(bridges)를 사용하여 콘텍스트 모델과 도메인 전용 툴을 통합한다. Eclipse SDK용 핵심 브리지 세트가 Mylyn에 제공되고, 자바 코드, JUnit, the Plug-in Development Environment (PDE), Ant, 파일용 지원이 포함되어 있다. 완전한 통합을 경험할 수 있도록 하기 위해, Mylyn은 여러분이 작업하고 있는 모든 툴과 언어(Ruby와 JSP)에 대한 브리지를 필요로 한다. 프로그래밍 언어나 다른 파일 유형에 대한 브리지가 없을 경우, Mylyn은 파일 레벨로 포커스를 낮추지만, 파일 내의 구조와의 상호 작동을 감시할 수는 없다. 다시 말해서, Package Explorer에 관심 있는 파일이 나타나도록 할 수는 있지만, 세분화된 선언 필터링(예를 들어, Outline 뷰), 에디터에서 선언의 자동 폴딩, Context Test Suites 태스크 같은 고급 기능은 없다.

자동화 된 변경 세트 관리를 위해서, Mylyn은 버전 관리도 통합해야 한다. CVS는 Subversion 같은 다른 버전 관리 시스템 지원이 개별적으로 가능한 곳 어디에나 지원된다. 참고자료 섹션에서 Mylyn 확장 리스트를 참조하여 Mylyn용 추가 브리지와 버전 관리 통합을 다운로드 하기 바란다.

다음 섹션에서는 Mylyn의 콘텍스트 관리 장치들을 태스크 중심 방식으로 활용하는 방법을 설명한다. 예제는 자바 개발에 기반하고 있지만, 개념과 대부분의 기능들은 여러분이 작업하는 파일 기반 생성물에 적용된다. (지원 툴 참조)

관심도(degree-of-interest) 모델

Mylyn의 태스크 콘텍스트 관리는 시스템과의 인터랙션이 관심도(degree-of-interest model)로 변형될 수 있다는 개념에 기반하고 있는데, 이 시스템의 각 엘리먼트는 당면한 태스크와의 관련성에 따라서 무게를 더한다. 무게가 실린 관심도는 태스크와 관련된 모든 엘리먼트들의 콘텍스트를 형성한다. 태스크 콘텍스트는 가장 중요한 엘리먼트를 강조하고, 중요하지 않은 엘리먼트를 가려내며, 관심 있는 엘리먼트에 대한 연산(예, 관련된 변경 사항만을 실행하기)을 수행할 수 있도록 함으로써, UI에 초점을 맞추도록 하고 있다. 태스크 콘텍스트는 여러분이 작업할 때 예견 가능한 방식으로 구현된다. 태스크를 실행하면, 여러분이 선택하거나 편집하는 모든 엘리먼트(파일 또는 자바 메소드)는 태스크 콘텍스트의 일부가 된다. 이 엘리먼트와 더 많이 상호 작동할수록, 태스크에 대한 관심도는 높아진다. 엘리먼트의 관심도가 충분히 높아지면, 이것은 랜드마크(landmark)가 된다. 각각의 인터랙션 역시 태스크를 구성하고 있는 모든 엘리먼트에 발생된 관심도가 점진적으로 쇠퇴하도록 하기 때문에, 관심 엘리먼트 세트는 무한정 확대되기 보다는 현재 관심이 있는 것과 매치된다.

태스크 콘텍스트 모델을 매력적으로 만드는 핵심 요소는 이것이 예견 가능하고 분명하다는 점이다. 여러분이 봐야 할 것이 있다면, 한 엘리먼트에 대해 작업을 시작할 때마다, 이것으로 콘텍스트가 채워지는 것을 즉각 보게 된다. 또한, 엘리먼트의 관심도를 직접 조작할 수 있고, 관심 없는 것으로 하거나, 랜드마크로 명확하게 표시할 수 있다. 다시 말해서, 여러분에게 이미 익숙해진 bookmark/starring/tagging UI에서 취한 것이 아무것도 없다. 하지만, Mylyn에 적응되면, 태스크 콘텍스트를 관리할 때 이와 같은 수동 방식에 훨씬 덜 의존하게 될 것이다.

관심도 데코레이션과 필터링

Mylyn의 콘텍스트 관리 장치는 전통적인 Eclipse 뷰를 사용하여 새로운 방식으로 정보를 채운다. 여러분이 해야 할 일은 한 번의 클릭으로 태스크를 활성화 하여 Eclipse UI를 그 태스크에 집중시킨다. 그 이후에, 여러분이 상호 작동하는 모든 엘리먼트는 태스크 콘텍스트의 일부가 된다. Mylyn의 관심도 데코레이터(decorator)는 폰트 컬러링(coloring)을 사용하여 인터랙션에서 발생했던 각 엘리먼트의 관심도를 강조한다. 비 관심 엘리먼트는 회색, 관심 엘리먼트는 검정색, 랜드마크는 볼드체로 표시된다.

하이라이팅 자체는 정보 오버로드를 줄일 때 유틸리티를 제한하면서, 자바 멤버와 파일 같은 엘리먼트를 볼 수 있는 모든 뷰에 지속적으로 적용되고 있다. 이것 때문에, 긴 엘리먼트 리스트를 스크롤 할 때 태스크 콘텍스트에 있는 엘리먼트를 선택하기가 쉽다. 예를 들어, 검색 결과를 스크롤 할 때, 랜드마크는 볼드체로 꾸며지기 때문에 가장 관심 있는 것을 즉각적으로 선택할 수 있다. (그림 2).

데코레이션 자체는 수십 또는 수백 개의 파일들을 포함하고 있는 거대한 작업 공간에서 정보 오버로드를 줄이기에는 충분하지 않다. Eclipse의 Project Explorer 같은 구조화 된 뷰는 큰 계층을 검색하는데 매우 효율적이다. 오버로드의 문제는 이와 같은 뷰 때문이 아니라, 개발자가 작업하고 있는 거대한 사이즈의 정보 시스템과 주어진 프로그래밍 태스크와 관련된 정보의 상대적으로 작은 크기 사이의 미스매치 때문이다. 이러한 미스매치를 가장 잘 드러내는 것 중 하나가, 작업을 수행하는데 필요한 정보를 찾기 위해 큰 트리 뷰를 반복적으로 스크롤 하거나 확대 또는 축소하는데 낭비되는 시간이다.

팁: 자식 노드 필터 해제하기

자주 포커스 모드를 해제하지 않도록, Mylyn은 Alt+Click 방식을 제공하여 트리 뷰에서 한 노드의 자식들을 임시적으로 필터링 하지 않을 수 있도록 한다. 예를 들어, 보이지 않는 메소드를 선택하려면, 클래스를 Alt+Click하고 그 메소드를 선택하여 태스크 콘텍스트에 추가한다. 뷰에 있는 흰 공백을 Alt+Click하면 모든 루트 노드(이를 테면, 프로젝트)들이 보인다. Alt 키를 계속 누르면, 프로젝트 모드에서 관심 있는 메소드로 바로 검색할 수 있다.

Mylyn의 목표는 이 모든 불필요한 스크롤과 클릭을 중단시키는 것이다. 이렇게 하기 위해, Task-Focused UI는 관심 기반 필터링과 구조화 된 뷰 관리를 제공한다. Focus on Active Task 버튼으로 토글링 하면, 관심 없는 모든 엘리먼트들을 가려낼 수 있고, 이에 따라 상응하는 뷰를 활성 태스크 콘텍스트에 집중시킬 수 있다. 예를 들어, 포커스 모드에서는 Package Explorer가 여러분이 작업 중인 것만 보여준다. 태스크의 일부인 소스, 라이브러리 파일, 메소드를 보여준다. 필터링 외에도, 포커스가 적용되면, Mylyn은 트리 뷰의 확장 상태를 자동으로 관리하기 때문에, 관심 엘리먼트를 나타내기 위해 트리 노드를 직접 확대 및 축소할 필요가 없다.

뷰에서 포커스 모드를 사용하기 시작하면, 관심 모델이 여러분이 작업할 때마다 변하는 방식을 알게 될 것이다. 엘리먼트를 더 많이 선택할수록, 관심도는 더 높아지고, 결국 볼드체의 랜드마크가 된다. 예를 들어, 단 한번 선택된 검색 히트 같은 관심도가 낮은 엘리먼트는 관심도가 쇠퇴하고, 필터링 뷰에서 사라지면서, 그 뷰는 비 관심 엘리먼트 때문에 더 이상 팽창되지 않는다. 태스크 콘텍스트가 예견 가능한 방식으로 적극적으로 관리되기 때문에, 장기 실행 태스크에서도 관심 있는 엘리먼트만 포함되어야 한다. Mylyn의 태스크 콘텍스트 모델이 현재 태스크와 관련된 것을 반영하도록 디자인 되지만, 엘리먼트의 관심도를 직접 높이거나 낮출 수 있다. (예를 들어, 엘리먼트에 콘텍스트 메뉴 액션을 사용하거나, Ctrl+Alt+Shift+up/down 화살표 키보드 숏컷을 사용한다.)




위로


태스크 중심 워크스페이스

자바 개발을 지원하기 위해 Mylyn이 제공하는 고급 통합 기능을 살펴보기 전에, 플레인 파일로 작업할 때 Task-Focused UI가 Eclipse 워크스페이스에 기여한 것이 무엇인지를 알아보자. 그림 2는 핵심 개념을 묘사한 것이다.

  • 왼쪽에서, Package Explorer 뷰는 활성 태스크에 초점이 맞춰져 있고, 관심 파일만 보여주며, 랜드마크를 강조하고 있다. 여기에서 Alt+Click 메커니즘은 presentation이라고 하는 디렉토리에 있는 모든 파일들을 임시로 보여주기 위해 사용되기 때문엔, 또 다른 관심 파일이 선택될 수 있다.

  • 오른쪽에서, Task List는 활성 태스크를 보여준다. 태스크 활성화가 해제되면, Package Explorer 뷰로의 포커스가 꺼지고, 현재 열린 모든 파일들이 닫힌다. 새로운 태스크가 활성화 되면, 포커스가 다시 적용되고, 태스크에 대한 작업을 하기 위해 열려 있던 모든 에디터들이 즉각 복원된다.

그림 2. 태스크 중심 워크스페이스

이 글 나머지 부분은 태스크 중심 방식으로 작업하는 방법을 세부적으로 설명한다. 하지만, 태스크 활성화, 뷰 포커싱, 에디터 관리 개념은 Mylyn을 사용하는데 있어서 가장 중요하고 핵심적인 측면이다. 여러분은 단지 태스크 활성화 개념을 익혀서 태스크 중심 방식으로 작업을 하면 된다. 이렇게 작지만 중요한 작업 방식의 변화는 즉각적인 혜택을 가져온다. 작업하면서 여러분이 구축한 모든 값진 콘텍스트는 태스크를 변환할 때 더 이상 소실되지 않는다.

팁: Task-Focused UI 설정하기

대부분의 Task-Focused UI 기능들은 기본적으로 작동되지만, 뷰 또는 에디터의 버튼을 통해서나 프레퍼런스 설정을 통해서 움직일 수 있다. 자세한 내용은 Mylyn FAQ를 참조하라. (참고자료).

자바 개발에 Mylyn 사용하기

자바 코딩에 Mylyn을 사용하는 개발자들은 포커스 모드에서 Package Explorer를 유지한다. 따라서, 기본적으로, Focus on Active Task 버튼은 태스크를 활성화 할 때 자동으로 선택되고, 태스크를 비활성화 하면 선택이 해제된다. 선택될 경우, 콘텍스트 속에 있는 자바 엘리먼트만 본다. 검색을 통해서나 일반적으로 사용되는 Open Type 메커니즘(Ctrl+Shift+T)을 사용하여 자바 클래스를 선택하자 마자, 타입은 콘텍스트의 일부가 되고, 필터링 된 Package Explorer에서 보인다. 여러분이 선택하고 편집하는 각 메소드는 태스크 콘텍스트에 추가되고, Package Explorer에 나타난다. 그림 3은 포커스 모드에서 Package Explorer를 보여준다. 자바 엘리먼트의 관심 기반 데코레이션과 Package Explorer와 Debug 뷰에서의 활성 필터링을 주목하라.


그림 3. 자바 엘리먼트를 태스크 콘텍스트에 집중시키기

엘리먼트를 여는 Eclipse의 장치들은 포커스 모드의 네비게이터 뷰와 함께 잘 작동한다. (타입을 열 때, Ctrl+Shift+T를, 리소스에는 Ctrl+Shift+R을, 아웃라인에는 Ctrl+O를, 계층에는 Ctrl+-T를 사용한다.) Open Type 다이얼로그에서 타입 선택을 쉽게 하기 위해, 관심 타입들은 리스트의 맨 위에 자동으로 배치된다. 태스크를 전환할 때, 이 리스트에는 새로운 태스크에 대한 관심 타입이 포함된다. 어떤 태스크도 활성화 되지 않으면, 리스트는 최신 사용된 타입의 Eclipse 글로벌 리스트로 되돌아간다.

Java Browsing 퍼스펙티브를 사용한다면, 윈도우의 툴바 버튼을 사용하여 세 개의 모든 자바 엘리먼트 뷰를 한 번의 클릭으로 포커스 모드로 돌릴 수 있다. 각 뷰를 개별적으로 포커싱 하지 않아도 된다.

팁: Quick view

보이는 네비게이터 뷰(예를 들어, Debug)를 갖고 있지 않은 퍼스펙티브를 사용하거나, 에디터 영역을 최대화 했다면, Navigate > Quick Context View (숏컷은 Ctrl+Shift+Alt+right 화살표이다.)에서 콘텍스트를 검색할 수 있다. Quick Outline (Ctrl+O) 같은 다른 Quick 뷰와 마찬가지로, 이 같은 팝업 뷰는 타이핑 할 수 있다는 이점이 있기 때문에, 관심 있는 파일이나 엘리먼트를 검색할 수 있다.

자동 폴딩(folding)과 콘텐트 어시스트 랭킹

Eclipse의 자바 에디터는 에디터 내에서 많은 구조 네비게이션을 수행할 수 있도록 되어 있다. Mylyn은 자동 폴딩과 콘텐트 어시스트 랭킹을 제공하여 자바 에디터가 현재의 태스크와 관련된 것에 집중할 수 있도록 돕고 있다. 윈도우 툴바에서 Mylyn의 Automatically Fold Uninteresting Elements 버튼을 선택하면, 관심 있는 엘리먼트만 에디터에서 펼쳐진다. 이것은 에디터의 정보 밀도를 높이고, Outline 뷰를 열지 않고서 큰 파일에 있는 선언을 쉽게 검색할 수 있도록 한다. 엘리먼트를 선택하자마자, 이것은 태스크 콘텍스트의 일부가 되고 펼쳐진다. 그림 4에서, 활성 엘리먼트가 펼쳐지고, 왼쪽 에디터 거터(gutter)는 상응하는 엘리먼트가 랜드마크라는 것을 나타낸다:


그림 4. 자동 폴딩과 콘텐트 어시스트 랭킹

뷰에서 필터링 방법과 비슷하게, Mylyn은 관심도 레벨에 따라 자바 콘텐트 어시스트 제안의 등급을 매긴다. 관심도 분리자 아래 있는 모든 아이템들은 Java Development Tool 표준 랭킹 방법을 사용하여 분류된다. 아래쪽 화살표 키를 몇 번만 누르면 관심 있는 제안을 선택할 수 있다는 것을 의미한다. 제안을 선택하기 전에 타이핑을 시작하면, 이 리스트는 일반 랭킹으로 돌아간다. 그림 4에서, getTask() 같은 메소드가 에디터에서 펼쳐진다. 엘리먼트의 관심 레벨을 노출하는 다양한 메커니즘들 사이의 일관성은 Focused UI를 예견 가능하고 사용하기 쉬운 것으로 만든다.

자동 에디터와 퍼스펙티브 관리

Mylyn은 태스크 콘텍스트를 사용하여 태스크와 관련된 열린 에디터들의 수를 관리한다. 파일에 있는 엘리먼트가 관심에서 사라질 때, 그 에디터는 자동으로 닫힌다. 태스크를 비활성화 하면, 이것의 모든 에디터들이 닫히고, 태스크 활성화 시 다시 열린다. 엘리먼트의 관심도를 줄이거나, 반대로 파일을 닫으면 관심도가 떨어진다. 평범한 것처럼 보이지만, 여러분은 더 이상 오픈 에디터 상태를 직접 관리할 필요가 없고, 여러분이 갖고 있는 오픈 에디터의 수가 증가하지 않는다는 것을 의미한다. 모든 오픈 에디터들이 관심 엘리먼트에 상응하게 되면 여러분은 관심 있는 파일들을 검색하기 위해 Eclipse의 에디터-네비게이션 장치를 사용할 수 있다. 예를 들어, Ctrl+E와 Ctrl+F6 숏컷은 Package Explorer 같은 네비게이터 뷰가 보이지 않을 경우, 에디터들간 변환이 편리하다.

이와 비슷하게, Mylyn은 한 태스크에 대한 작업을 할 때 마지막으로 활성화 했던 퍼스펙티브를 복원함으로써, Eclipse의 퍼스펙티브를 관리할 수 있다. (Window > Preferences > Mylyn > Context를 클릭한다.) 이것은 다른 태스크들이 Eclipse에 의해 제공되는 다른 뷰에 상응할 때 유용하다. (예를 들어, 일부 태스크는 자바 개발에 상응하고, 일부는 PHP에 상응한다.) 여러분이 Mylyn의 Planning 퍼스펙티브를 사용할 때 특히 잘 작동한다. 어떤 태스크도 활성화 되지 않은 상태에서 Planning 퍼스펙티브로 전환하면, 여러분이 작업하는 다음 태스크를 비활성화 할 때 자동으로 그 퍼스펙티브로 전환된다. Planning 퍼스펙티브를 사용하면 다음에 어떤 태스크를 작업할 지 파악하기가 더욱 쉬워진다. 이 퍼스펙티브는 태스크 에디터와 Task List에 사용할 수 있는 영역을 확대하기 때문이다.

Ant, PDE, 기타 소스 파일들로 작업하기

Mylyn의 포커싱 장치들은 Eclipse SDK(Package Explorer, Navigator, Project Explorer, Outline, Problems, Tasks, Debug, Packages, Types, Members)에 있는 콘텍스트를 보여주는 모든 뷰에 적용될 수 있다. Project Explorer 같은 트리 뷰의 포커스 모드는 관심 데코레이션, 필터링, 확장 관리를 추가한다. Problems 같은 리스트 뷰들 역시 포커스 될 때 관심도에 따라서 분류된다. 이러한 기본적인 지원 덕분에, PHP 개발 같은 비 자바 프로젝트에도 Mylyn을 사용할 수 있다. 커스텀 브리지로 툴이 지원되지 않더라도 지원된다. (지원 툴 참조). 이 섹션은 다른 언어와 툴들로 프로그래밍 할 때 Mylyn을 사용하는 것에 대해 간략히 설명했다. 자세한 내용은 참고자료 섹션의 Mylyn Extensions를 참조하라.

예를 들어, Ant와 PDE를 사용하여 애플리케이션을 개발하는 것을 고려해 보라. 이 시나리오에서, Eclipse 워크스페이스는 그림 5에서 보듯 여러 뷰들이 열려 있고 콘텍스트를 보여주고 있다:


그림 5. 일반적인 IDE 뷰를 태스크 콘텍스트에 집중시키기

팁: to-do 마커 제거하기

Mylyn의 Task List 뷰와는 반대로, Eclipse SDK의 Tasks 뷰는 to-do 태그 같은 마커를 보여주는데, 이것은 리소스에 문제가 있다는 것을 나타내며, 컴파일러 경고와 비슷하다. 이러한 마커들은 Mylyn의 태스크 보다 훨씬 낮은 세분성 레벨이다. 소스 코드의 라인들에 상응하고, 하나의 Mylyn 태스크에는 여러 마커들이 포함될 수 있기 때문이다. Tasks 뷰가 빠르게 오버로드 되기 때문에, 포커스 모드를 사용하면 실행 전에 to-do 마커를 제거하기에 편리하다.

그림 5의 Project Explorer는 태스크 콘텍스트에 있는 파일들만 보여준다. 이 경우에는 일부 이미지와 XML 파일들이다. 열린 파일은 build.xml인데, 이것은 수십 개의 Ant 선언들로 구성된다. Outline 뷰에서, 수십 개의 관심 없는 것들 대신, 여러분이 작업중인 선언만 본다. Problems 뷰 역시 활성 태스크에 집중되어 있기 때문에, 관련 없는 수백 개의 경고들로 오버로드 시키는 대신, 관심 있는 것들만 본다. (모든 에러, 경고 또는 엘리먼트에 대한 기타 마커) 마지막으로, Eclipse Tasks 뷰도 포커스 되기 때문에, 여러분이 접근할 수도 없는 수백 개의 to-do 마커를 보는 대신, 태스크 콘텍스트와 관련 있는 것만 본다.

Context Test Suite

태스크 중심 방식으로 프로그래밍을 하면 단위 테스트를 자주 실행하기가 쉬워진다. 일반적으로, 단위 테스팅 방법은 현재 작업중인 한 개 이상의 테스트를 위해 새로운 테스트 런처(launcher)를 만드는 것이다. 이것은 매우 지루한 작업이다. 대안은 프로젝트에서 모든 테스트를 실행하는 것인데, 이렇게 하면 일부 관련 테스트를 잃거나, 전체 수트를 실행하게 된다. 이것은 매우 느려질 수 있다. 이를 해결하기 위해, Mylyn은 Context Test Suite라고 하는 태스크 콘텍스트 속의 엘리먼트의 단위 테스트 수트를 자동으로 관리하고(그림 6), 여러분이 태스크에 대해 작업할 때 이것을 반복적으로 실행할 수 있다. (숏컷은 F11이다.):


그림 6. Context Test Suites

이 기능을 실행하려면, JUnit 플러그인 태스크나 플레인 JUnit 테스트용 Context Test Suite를 만든다. Context Test Suite는 자동으로 업데이트 되어, 현재 활성화 된 콘텍스트의 모든 테스트 케이스를 포함시킨다.




위로


콘텍스트 속에서 협업하기

협업 툴은 정보를 교환하는 것에 관한 것이고, 태스크 콘텍스트는 오버로드와 분산을 방지하기 위해 그 정보에 집중한다. 개발자들은 계속적으로 이메일, 인스턴트 메시지, 파일을 보내서, 그날의 태스크를 수행하는데 필요한 정보를 교환한다. Mylyn이 인스턴트 메시지나 이메일에 대한 필요를 없애면서, 이것을 줄이고 협업 액티비티를 단순화 한다. 태스크가 명확한 작업 단위를 정의하고, 태스크 콘텍스트가 그 작업에 관련된 정보를 정의하기 때문에, 한 번의 클릭으로 태스크 콘텍스트를 공유하는 기능으로 협업의 통신 부담을 줄일 수 있다.

Part 1에서는 Mylyn의 태스크 관리가 Bugzilla 같은 웹 기반 저장소와 통합하여 이메일 클라이언트에서 기대되는 협업 통합과 응답성을 제공하는 방법을 설명했다. 이 섹션에서는 변경 세트와 태스크 액티비티에 대한 Mylyn의 자동화 된 트래킹 지원과 콘텍스트 공유 지원이 결합되어 팀웍을 더욱 활용하고 전문성을 늘릴 수 있는 방법을 설명한다. 일반적으로, 필요와, 소스와 태스크 저장소와의 Mylyn 통합 레벨에 기반하여 어떤 기능을 사용할 것인지를 선택할 수 있다.

자동화된 변경 세트

팁: 변경 세트 모드

Eclipse는 CVS 변경 세트에 두 개의 모드를 갖고 있다. 3.2에 새롭게 등장한 모델 기반 모드와 표준 모드이다. 이러한 모드들이 실제로는 뚜렷하게 구별되지 않지만, 모델 기반 모드는 인커밍 및 아웃고잉 변화를 모두 보여주기 때문에 모델 기반 모드가 선호된다. 모드 간 전환에 관한 상세한 내용은 Mylyn FAQ를 참조하라. (참고자료).

변경 세트(change set)는 리소스를 그룹핑 하는 빌트인 Eclipse 장치이다. 패치 실행, 업데이트, 또는 생성을 목적으로 Synchronize 뷰에서 이에 대한 연산을 한다. 정적인 프로젝트 작업을 하지 않는 한, 변경 세트를 직접 관리한다면 이득 보다는 문제가 더 많다. Mylyn은 변경 세트를 자동으로 관리함으로써 소스 저장소와의 작업을 돕는다. 일단 태스크를 활성화 하면, 태스크용 변경 세트가 추가되고, Synchronize 뷰에 디스플레이 된다. (그림 7) 태스크 작업을 할 때 변경한 것이 그 변경 세트에 추가된다. 뷰의 Change Set노드에서 콘텍스트 메뉴를 사용하여 패치를 오버라이드, 실행, 생성할 수 있다. 팀 멤버에 의한 인커밍 변경은 태스크 별로 그룹핑 되어 나타나고, 인커밍 변경 세트를 오른쪽 클릭하여 상응하는 태스크를 열 수 있다. 변경 사항이 있고, 태스크를 비활성화 한다면, 변경 세트는 유지되고, 동시에 여러 아웃고잉 변경 사항들로 작업할 수 있다. Mylyn은 콘텍스트와 변경 세트 사이의 일대일 매핑을 보장하기 때문에, 파일을 변경 세트에 직접 추가한다면(Synchronize 뷰의 콘텍스트 메뉴 사용), 이 파일 역시 콘텍스트에 추가된다. 현재 지원되는 소스 저장소는 CVS와 Subversion (Subclipse와 Subversive)이다.


그림 7. 변경 세트 관리와 태스크 매핑

팁: 프로젝트와 태스크 저장소 연결하기

"see bug 123"(Bugzilla) 또는 "ABC-123"(JIRA) 같은 텍스트와 자바 에디터의 레퍼런스에 대한 하이퍼링크를 실행하려면, 리소스에 상응하는 프로젝트를 태스크 저장소에 제휴시켜야 한다. 프로젝트를 오른쪽 클릭하고, PropertiesTask Repository를 선택한다. 프로젝트와 태스크 저장소 제휴는 Mylyn이 리소스에서 태스크를 참조할 때마다 사용되기 때문에, History 또는 Team Annotation 하이퍼링크에도 필요하다. 프로젝트가 공유된다면 버전 관리에도 이와 같은 설정을 검사할 수 있다.

효과는 언뜻 보기에는 미미하지만, 태스크와 리소스를 연결하기 위해 Mylyn이 콘텍스트를 사용한다면 여러분이 작업하는 방식에 중대한 영향을 미친다. 예를 들어, Mylyn 프로젝트에서, Mylyn의 변경 세트 통합에 의해 자동으로 생성되기 때문에 커밋(commit) 메시지를 작성하지 않는다. (Window > Preferences > Mylyn > Team 페이지를 사용하여 자동 커밋 메시지를 생성하는데 사용되는 템플릿을 편집한다.) 이것 덕택에, 한 번의 클릭으로 History 뷰에서 개정에 상응하는 태스크로 검색할 수 있고, 이로 인해 원래 태스크에 대한 변경이나 개정을 트래킹 하는 시간을 절약할 수 있다. 반대로, 특정 태스크를 위해 변경 되었던 모든 파일들이 CVS 로그에서 쿼리 될 수 있다. 이것은 Team Annotations와 Mylyn의 광범위한 하이퍼링크(그림 8)를 보여주는 Eclipse 장치와 결합되어, 변경 사항과 관련된 버그나 태스크를 검색하는데 시간을 덜 허비할 수 있다. 일반적으로 단 한 번의 클릭으로 가능하기 때문이다. (하이퍼링크가 팝업 또는 텍스트 에디터에 나타나도록 하려면 Ctrl을 눌러야 하고, F2를 누르면 팝업을 전면에 가장 먼저 나타난다.)


그림 8. 하이퍼링크와 팀 주석

콘텍스트 공유하기

태스크 콘텍스트는 태스크가 수행될 때 생성되었던 지식을 파악한다. 태스크를 즉각 재 활성화 하면, 태스크와 관련된 시스템 부분들을 기억하는 대신, 다시 그 태스크의 콘텍스트로 돌아가게 된다. 만약 태스크를 팀 멤버에 전달한다면, 여러분의 태스크 콘텍스트는 그 멤버에게 시작 포인트를 제공한다. 콘텍스트가 단순한 변경만이 아닌 인터랙션을 통해 생성되기 때문에, 모든 태스크 콘텍스트에는 접근한 API와 태스크 작업을 할 때 참조했던 문서 같은 관련 정보가 포함된다. 이와 같은 협업 시나리오를 지원하기 위해 (예를 들어, 페어 프로그래밍(pair-programming)), 콘텍스트는 쉽게 공유될 수 있다. Task List의 콘텍스트 메뉴를 통해 콘텍스트 공유를 활성화 하거나(그림 9), 태스크 에디터에서 상응하는 체크 박스를 클릭한다:


그림 9. 태스크 첨부를 통한 콘텍스트 공유

첨부를 지원하는 태스크 저장소 커넥터를 사용한다면, 이것을 버그 리포트에 첨부함으로써 태스크 콘텍스트를 쉽게 공유할 수 있다. 공유 콘텍스트를 검색할 때, 이 중 하나를 선택할 수 있다. 예를 들어, Mylyn 프로젝트에서, 모든 버그 리포트에 콘텍스트를 첨부하고, 그 콘텍스트에 모든 패치가 첨부되도록 요청한다. 태스크 콘텍스트를 통한 전문성 공유로 인해 패치 적용이 훨씬 더 쉬워지고, 팀 멤버들과 버그 리포트에 대해 협업할 수 있고, 페어 프로그래밍 세션 후에 코드를 청소하기가 쉬워진다. 해결된 모든 버그가 저장된 콘텍스트를 갖고 있다는 것은 버그가 다시 생기거나 비슷한 태스크가 발생할 때마다 예전의 전문 기술을 즉각적으로 다시 사용할 수 있다는 것을 의미한다.




위로


결론

성능에 관하여

Mylyn은 콘텍스트 관리 장치가 Eclipse의 성능에 영향을 주지 않도록 설계되었다. 작업하고 있는 시스템의 크기와는 상관 없다. 태스크 콘텍스트는 대형 사이즈의 시스템이 아닌, 비교적 적은 인터랙션 양으로 측정되기 때문이다. 메모리나 속도 오버헤드가 있다면 버그로 간주되며, 높은 심각성으로 보고되어야 한다. 더욱이, 어떤 태스크도 활성화 되어 있지 않으면, Mylyn의 태스크 콘텍스트 관리는 완전히 휴면 상태에 있다. Mylyn의 성능 프로파일에 대한 내용은 Mylyn FAQ (참고자료)를 참조하라. Eclipse의 메모리 모니터를 켜려면, Window > Preferences > General > Show Heap Status를 사용한다.

본 시리즈에서, Mylyn을 이용한 태스크 중심 프로그래밍을 설명했다. Mylyn이 태스크를 Eclipse의 퍼스트 클래스 파트로 취급함으로써 작업을 쉽게 수월하게 할 수 있다는 것을 설명했다. 또한, Mylyn이 Eclipse 뷰를 사용하여 당면한 태스크에 집중할 수 있도록 해주고, 개별 및 팀 사용에 대한 태스크의 콘텍스트를 나타낸다.

Mylyn의 철학은 "작을수록 좋다"이다. Mylyn의 통합 태스크 관리와 자동 콘텍스트 관리로 콘텍스트를 잃지 않고 멀티태스크가 가능하고, 필요한 정보만 볼 수 있다. Mylyn의 태스크 콘텍스트 모델은 이 툴을 사용하는 현장 개발자들의 필드 스터디를 통해 입증되었다. (참고자료) 통계적으로 중요한 생산성 증가는 이러한 사용자들에게서 입증되었고, 수천 개의 버그/향상 리포트 덕택에, Mylyn 2.0은 빠르게 성장했다. 필자는 2004년 8월에 0.1 프로토타입을 만든 이래 작업에 Mylyn을 사용해 왔다. 다른 많은 Mylyn 사용자들과 마찬가지로, 현재 작업하고 있는 것과 관련한 정보를 직접 찾고 규명할 필요가 없어졌다. 전적으로 Mylyn에 의존하여 많은 태스크 중심 인터랙션과 멀티태스킹을 관리한다.

Mylyn이 태스크 저장소를 지원한다면, 매일 매일의 작업이 훨씬 더 쉬워지고, 생산성은 높아지고, 더 집중할 수 있게 된다. 저장소를 지원하지 않는다면, 개인적인 태스크에서 이것을 사용해야 한다. Bugzilla 통합을 사용하여 피드백을 주고, 지원되어야 하는 추가 커넥터에 투표를 하라. (참고자료). 여러분의 인풋을 통해 Mylyn을 진화시키고, 사용자 커뮤니티 기반을 확립할 것이다. Mylyn 커미터와 필자는 여러분의 피드백을 언제나 환영한다.

감사의 말

지금까지의 Mylyn의 성공과 발전은 버그를 보고하고 패치를 기여해 준 수 많은 사용자들의 인풋의 결과이다. 이러한 협업으로 Mylyn은 연구 프로토타입에서 성장하여 사용자들이 매일 매일의 작업에 의존하는 중요한 부분이 되었다.

소중한 피드백을 준 Athen O'Shea, Robert Elves, Gail Murphy, Ducky Sherwood에 감사의 말을 전한다.



참고자료

교육

제품 및 기술 얻기

토론


필자소개

Mik는 Xerox PARC의 연구원으로서 aspect 지향 프로그래밍 툴을 만들었으며 eclipse.org/aspectj 프로젝트에 기여하고 있다. 브리티시컬럼비아대학교에서 박사 과정에 있는 동안, 태스크 중심 인터랙션 기술을 개발했으며 eclipse.org/mylar 프로젝트를 이끌었다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



아니오잘 모르겠음
 


 


12345
 



위로


Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. 기타 회사, 제품, 및 서비스명은 다른 상표나 서비스 마크일 수 있습니다.

developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.
    IBM 소개 개인정보 보호정책 문의