난이도 : 중급
Mik Kersten, Mylyn Project Lead; President & CTO, Tasktop Technologies
2007 년 12 월 31 일
Mylyn2.0 릴리스 (전 Mylar)는 태스크들을 Eclipse로 완벽하게 통합함으로써 생산성을 강화했고, 이러한 태스크들의콘텍스트를 자동으로 관리합니다. Mylyn 프로젝트 리더인 Mik Kersten은 Mylyn 사용 가이드를 업데이트 했습니다. Part 1에서는 Mylyn의 태스크 관리 장치와 Bugzilla 같은 저장소와의 통합을 설명했습니다. 두 번째 글에서는 Mylyn의콘텍스트 관리 장치로 멀티 태스킹이 얼마나 쉬워지고, Eclipse에서 대규모 애플리케이션 작업을 할 때 정보 오버로드를 어떻게줄이는지를 설명합니다.
이 기술자료의 이전 부분에서는, Mylyn의 태스크 관리 장치로 특정 요일 또는 특정 주와 관련한 태스크에 집중할 수 있다는 점을 설명했다. 태스크들이 Eclipse의 일부가 되면, 많은 반복적인 액션들이 여러분이 작업하고 있는 콘텍스트(context)로 집중된다는 것을 알게 된다. 당면한 태스크와 관련된 콘텍스트를 생성 및 재생성 하는 데는 멀티 태스킹이 필요하다. 태스크의콘텍스트란 것은, 작업하고 있는 동안 참조해야 할 파일, 검색 결과, 기타 관련 정보를 말한다. 예를 들어, 프로그래밍을 할때, 픽스하고 있는 버그와 관련된 자바™ 엘리먼트만 보고 싶을 때가 있다. 픽스를 끝마치면, 오늘 작업했던 다른 태스크들과는무관하게 변경하고 싶을 것이다. 아니면, 태스크에 대해 작업하면서 수정했던 것과 관련된 것만 테스트 함으로써 시간을 줄일 수있다.
|
Mylyn이 주 노동 시간을 구성하고 있는 태스크에 집중할 수 있게 하는 것 외에도, Eclipse 워크스페이스가 당면한 태스크와 관련된생성물들에 집중할 수 있게 한다. Mylyn의 Task-Focused UI가 설치된 상태에서, 여러분이 해야 할 일은 어떤태스크가 활성화 상태인지, 그리고 여러분이 작업하고 있는 모든 파일들이 자동으로 태스크의 콘텍스트에 추가되었다는 것을 나타내야한다. 이 콘텍스트는 작업하면서 다양한 생성물들에 대해 변화하는 관심도를 나타내도록 관리된다. 심지어 매우 장기적으로 실행되는태스크에도 그렇다. 태스크를 전환할 때, 콘텍스트가 저장되고, 한 번의 클릭으로 멀티 태스크가 가능하며, 태스크 중심의 지식을다른 사람들과 쉽게 공유할 수 있다.
이글에서는 Mylyn이 Eclipse UI에서 어떻게 조화되어 프로그래밍 태스크의 콘텍스트를 어떻게 이루는지를 설명한다.콘텍스트를 관리하는 Mylyn의 메커니즘을 설명한 다음, 관심도 데코레이션, 뷰 필터링, 에디터 관리, 콘텍스트 중심 단위테스트 수트 같은 UI 장치들을 소개하겠다. 끝으로, Mylyn의 태스크 관리와 콘텍스트 관리가 팀 협업에 어떤 효과를 내는지를설명하겠다.
그림 1에서 숫자로 표시한 부분은 작동하고 있는 Mylyn의 콘텍스트 관리 장치들이다:
- Focus on Active Task 버튼을 클릭하면 Eclipse Package Explorer가 활성 태스크 콘텍스트에 있는 엘리먼트만 보여준다.
- 활성 태스크 전환은 Task List를 통해 수행된다.
- 전환된 후에, Eclipse 뷰와 에디터는 새롭게 활성화 된 태스크의 콘텍스트에 집중한다.
- 태스크 콘텍스트에서 변경 사항들이 반영되도록 변경 세트가 자동으로 관리된다.
- 폴딩(folding)과 콘텍스트 도움말은 뷰를 관련 엘리먼트로 집중시킨다.
그림 1. 태스크 콘텍스트에 집중하기
크게 보기.
데드라인을 맞추기 위해 새로운 기능에 대한 변경 사항을 마쳤다고 해보자. 여러분이 작업할 때, 여러분이 수정했던 모든 클래스들과메소드와, 이 기능을 만드는 동안 액세스 했던 API에 대한 귀중한 지식을 구축하게 된다. 여러분은 Mylyn을 사용하기때문에, 이 지식은 태스크 콘텍스트에 자동으로 포착된다. 태스크 완료가 가까워 올 때, 심각한 버그가 나타나고, 이는 즉각적인주의를 요하게 된다.
하나의 클릭으로, 버그 리포트를 실행하고, 문제 조사를 시작한다.Mylyn의 태스크 에디터를 사용하여 버그의 하이퍼링크로 연결된 스택 트레이스를 검색하면서, 새로운 콘텍스트가 검색과 진단으로채워진다. Mylyn의 자동화된 Context Test Suite를 클릭하면, 이는 여러분이 생성했던 콘텍스트와 구조적으로관련된 단위 테스트를 실행하고, 이 버그가 여러분이 아닌 동료의 코드에 있는 것이라는 것을 알게 된다. 개정 히스토리를 태스크와연결하는 Mylyn 덕택에, 문제 변경에 상응하는 동료의 태스크를 즉각적으로 볼 수 있다. 또 다른 클릭으로, 이 버그를 동료에할당하고, 진단을 통해 나오는 태스크 콘텍스트를 공유할 수 있다. 여러분은 이 모든 것을 Eclipse를 떠나지 않고 할 수있기 때문에, Task List의 Back 버튼을 클릭하면 이전 태스크의 콘텍스트들이 즉각적으로 복원된다. 한편,여러분의 동료는 여러분이 떠난 바로 그 자리에서 버그 리포트를 볼 수 있다. 이것은 Task-Focused UI를 사용하여개발자들이 쉽게 작업 및 협업할 수 있는 시나리오이다.
|
다음 섹션에서는 Mylyn의 콘텍스트 관리 장치들을 태스크 중심 방식으로 활용하는 방법을 설명한다. 예제는 자바 개발에 기반하고 있지만, 개념과 대부분의 기능들은 여러분이 작업하는 파일 기반 생성물에 적용된다. (지원 툴 참조)
Mylyn의 태스크 콘텍스트 관리는 시스템과의 인터랙션이 관심도(degree-of-interest model)로 변형될 수 있다는 개념에 기반하고 있는데, 이 시스템의 각 엘리먼트는 당면한 태스크와의 관련성에 따라서 무게를 더한다.무게가 실린 관심도는 태스크와 관련된 모든 엘리먼트들의 콘텍스트를 형성한다. 태스크 콘텍스트는 가장 중요한 엘리먼트를 강조하고,중요하지 않은 엘리먼트를 가려내며, 관심 있는 엘리먼트에 대한 연산(예, 관련된 변경 사항만을 실행하기)을 수행할 수 있도록함으로써, UI에 초점을 맞추도록 하고 있다. 태스크 콘텍스트는 여러분이 작업할 때 예견 가능한 방식으로 구현된다. 태스크를실행하면, 여러분이 선택하거나 편집하는 모든 엘리먼트(파일 또는 자바 메소드)는 태스크 콘텍스트의 일부가 된다. 이 엘리먼트와더 많이 상호 작동할수록, 태스크에 대한 관심도는 높아진다. 엘리먼트의 관심도가 충분히 높아지면, 이것은 랜드마크(landmark)가 된다. 각각의 인터랙션 역시 태스크를 구성하고 있는 모든 엘리먼트에 발생된 관심도가 점진적으로 쇠퇴하도록 하기 때문에, 관심 엘리먼트 세트는 무한정 확대되기 보다는 현재 관심이 있는 것과 매치된다.
태스크 콘텍스트 모델을 매력적으로 만드는 핵심 요소는 이것이 예견 가능하고 분명하다는 점이다. 여러분이 봐야 할 것이 있다면, 한엘리먼트에 대해 작업을 시작할 때마다, 이것으로 콘텍스트가 채워지는 것을 즉각 보게 된다. 또한, 엘리먼트의 관심도를 직접조작할 수 있고, 관심 없는 것으로 하거나, 랜드마크로 명확하게 표시할 수 있다. 다시 말해서, 여러분에게 이미 익숙해진bookmark/starring/tagging UI에서 취한 것이 아무것도 없다. 하지만, Mylyn에 적응되면, 태스크콘텍스트를 관리할 때 이와 같은 수동 방식에 훨씬 덜 의존하게 될 것이다.
Mylyn의 콘텍스트 관리 장치는 전통적인 Eclipse 뷰를 사용하여 새로운 방식으로 정보를 채운다. 여러분이 해야 할 일은 한 번의클릭으로 태스크를 활성화 하여 Eclipse UI를 그 태스크에 집중시킨다. 그 이후에, 여러분이 상호 작동하는 모든 엘리먼트는태스크 콘텍스트의 일부가 된다. Mylyn의 관심도 데코레이터(decorator)는 폰트 컬러링(coloring)을 사용하여인터랙션에서 발생했던 각 엘리먼트의 관심도를 강조한다. 비 관심 엘리먼트는 회색, 관심 엘리먼트는 검정색, 랜드마크는 볼드체로표시된다.
하이라이팅 자체는 정보 오버로드를 줄일 때 유틸리티를 제한하면서, 자바멤버와 파일 같은 엘리먼트를 볼 수 있는 모든 뷰에 지속적으로 적용되고 있다. 이것 때문에, 긴 엘리먼트 리스트를 스크롤 할 때태스크 콘텍스트에 있는 엘리먼트를 선택하기가 쉽다. 예를 들어, 검색 결과를 스크롤 할 때, 랜드마크는 볼드체로 꾸며지기 때문에가장 관심 있는 것을 즉각적으로 선택할 수 있다. (그림 2).
데코레이션 자체는 수십 또는 수백 개의 파일들을 포함하고 있는 거대한 작업 공간에서 정보 오버로드를 줄이기에는 충분하지 않다.Eclipse의 Project Explorer 같은 구조화 된 뷰는 큰 계층을 검색하는데 매우 효율적이다. 오버로드의 문제는이와 같은 뷰 때문이 아니라, 개발자가 작업하고 있는 거대한 사이즈의 정보 시스템과 주어진 프로그래밍 태스크와 관련된 정보의상대적으로 작은 크기 사이의 미스매치 때문이다. 이러한 미스매치를 가장 잘 드러내는 것 중 하나가, 작업을 수행하는데 필요한정보를 찾기 위해 큰 트리 뷰를 반복적으로 스크롤 하거나 확대 또는 축소하는데 낭비되는 시간이다.
|
Mylyn의 목표는 이 모든 불필요한 스크롤과 클릭을 중단시키는 것이다. 이렇게 하기 위해, Task-Focused UI는 관심 기반 필터링과 구조화 된 뷰 관리를 제공한다. Focus on Active Task버튼으로 토글링 하면, 관심 없는 모든 엘리먼트들을 가려낼 수 있고, 이에 따라 상응하는 뷰를 활성 태스크 콘텍스트에 집중시킬수 있다. 예를 들어, 포커스 모드에서는 Package Explorer가 여러분이 작업 중인 것만 보여준다. 태스크의 일부인소스, 라이브러리 파일, 메소드를 보여준다. 필터링 외에도, 포커스가 적용되면, Mylyn은 트리 뷰의 확장 상태를 자동으로관리하기 때문에, 관심 엘리먼트를 나타내기 위해 트리 노드를 직접 확대 및 축소할 필요가 없다.
뷰에서 포커스 모드를 사용하기 시작하면, 관심 모델이 여러분이 작업할 때마다 변하는 방식을 알게 될 것이다. 엘리먼트를 더 많이선택할수록, 관심도는 더 높아지고, 결국 볼드체의 랜드마크가 된다. 예를 들어, 단 한번 선택된 검색 히트 같은 관심도가 낮은엘리먼트는 관심도가 쇠퇴하고, 필터링 뷰에서 사라지면서, 그 뷰는 비 관심 엘리먼트 때문에 더 이상 팽창되지 않는다. 태스크콘텍스트가 예견 가능한 방식으로 적극적으로 관리되기 때문에, 장기 실행 태스크에서도 관심 있는 엘리먼트만 포함되어야 한다.Mylyn의 태스크 콘텍스트 모델이 현재 태스크와 관련된 것을 반영하도록 디자인 되지만, 엘리먼트의 관심도를 직접 높이거나 낮출수 있다. (예를 들어, 엘리먼트에 콘텍스트 메뉴 액션을 사용하거나, Ctrl+Alt+Shift+up/down 화살표 키보드숏컷을 사용한다.)
|
자바 개발을 지원하기 위해 Mylyn이 제공하는 고급 통합 기능을 살펴보기 전에, 플레인 파일로 작업할 때 Task-FocusedUI가 Eclipse 워크스페이스에 기여한 것이 무엇인지를 알아보자. 그림 2는 핵심 개념을 묘사한 것이다.
- 왼쪽에서, Package Explorer 뷰는 활성 태스크에 초점이 맞춰져 있고, 관심 파일만 보여주며, 랜드마크를 강조하고있다. 여기에서 Alt+Click 메커니즘은 presentation이라고 하는 디렉토리에 있는 모든 파일들을 임시로 보여주기위해 사용되기 때문엔, 또 다른 관심 파일이 선택될 수 있다.
- 오른쪽에서, Task List는 활성 태스크를 보여준다. 태스크 활성화가 해제되면, Package Explorer 뷰로의 포커스가꺼지고, 현재 열린 모든 파일들이 닫힌다. 새로운 태스크가 활성화 되면, 포커스가 다시 적용되고, 태스크에 대한 작업을 하기위해 열려 있던 모든 에디터들이 즉각 복원된다.
그림 2. 태스크 중심 워크스페이스
이글 나머지 부분은 태스크 중심 방식으로 작업하는 방법을 세부적으로 설명한다. 하지만, 태스크 활성화, 뷰 포커싱, 에디터 관리개념은 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 퍼스펙티브를 사용한다면, 윈도우의 툴바 버튼을 사용하여 세 개의 모든 자바 엘리먼트 뷰를 한 번의 클릭으로 포커스 모드로 돌릴 수 있다. 각 뷰를 개별적으로 포커싱 하지 않아도 된다.
|
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에 사용할 수 있는 영역을 확대하기 때문이다.
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 뷰를 태스크 콘텍스트에 집중시키기
|
그림 5의 Project Explorer는 태스크 콘텍스트에 있는 파일들만 보여준다. 이 경우에는 일부 이미지와 XML파일들이다. 열린 파일은 build.xml인데, 이것은 수십 개의 Ant 선언들로 구성된다. Outline 뷰에서, 수십 개의관심 없는 것들 대신, 여러분이 작업중인 선언만 본다. Problems 뷰 역시 활성 태스크에 집중되어 있기 때문에, 관련 없는수백 개의 경고들로 오버로드 시키는 대신, 관심 있는 것들만 본다. (모든 에러, 경고 또는 엘리먼트에 대한 기타 마커)마지막으로, Eclipse Tasks 뷰도 포커스 되기 때문에, 여러분이 접근할 수도 없는 수백 개의 to-do 마커를 보는대신, 태스크 콘텍스트와 관련 있는 것만 본다.
태스크 중심 방식으로 프로그래밍을 하면 단위 테스트를 자주 실행하기가 쉬워진다. 일반적으로, 단위 테스팅 방법은 현재 작업중인 한개 이상의 테스트를 위해 새로운 테스트 런처(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 통합 레벨에 기반하여 어떤 기능을 사용할 것인지를 선택할 수 있다.
|
변경 세트(change set)는 리소스를 그룹핑 하는 빌트인 Eclipse 장치이다. 패치 실행, 업데이트, 또는 생성을 목적으로 Synchronize뷰에서 이에 대한 연산을 한다. 정적인 프로젝트 작업을 하지 않는 한, 변경 세트를 직접 관리한다면 이득 보다는 문제가 더많다. Mylyn은 변경 세트를 자동으로 관리함으로써 소스 저장소와의 작업을 돕는다. 일단 태스크를 활성화 하면, 태스크용 변경세트가 추가되고, Synchronize 뷰에 디스플레이 된다. (그림 7) 태스크 작업을 할 때 변경한 것이 그 변경 세트에추가된다. 뷰의 Change Set노드에서 콘텍스트 메뉴를 사용하여 패치를 오버라이드, 실행, 생성할 수 있다. 팀 멤버에 의한인커밍 변경은 태스크 별로 그룹핑 되어 나타나고, 인커밍 변경 세트를 오른쪽 클릭하여 상응하는 태스크를 열 수 있다. 변경사항이 있고, 태스크를 비활성화 한다면, 변경 세트는 유지되고, 동시에 여러 아웃고잉 변경 사항들로 작업할 수 있다.Mylyn은 콘텍스트와 변경 세트 사이의 일대일 매핑을 보장하기 때문에, 파일을 변경 세트에 직접추가한다면(Synchronize 뷰의 콘텍스트 메뉴 사용), 이 파일 역시 콘텍스트에 추가된다. 현재 지원되는 소스 저장소는CVS와 Subversion (Subclipse와 Subversive)이다.
그림 7. 변경 세트 관리와 태스크 매핑
|
효과는 언뜻 보기에는 미미하지만, 태스크와 리소스를 연결하기 위해 Mylyn이 콘텍스트를 사용한다면 여러분이 작업하는 방식에중대한 영향을 미친다. 예를 들어, Mylyn 프로젝트에서, Mylyn의 변경 세트 통합에 의해 자동으로 생성되기 때문에커밋(commit) 메시지를 작성하지 않는다. (Window > Preferences > Mylyn > Team페이지를 사용하여 자동 커밋 메시지를 생성하는데 사용되는 템플릿을 편집한다.) 이것 덕택에, 한 번의 클릭으로 History뷰에서 개정에 상응하는 태스크로 검색할 수 있고, 이로 인해 원래 태스크에 대한 변경이나 개정을 트래킹 하는 시간을 절약할 수있다. 반대로, 특정 태스크를 위해 변경 되었던 모든 파일들이 CVS 로그에서 쿼리 될 수 있다. 이것은 TeamAnnotations와 Mylyn의 광범위한 하이퍼링크(그림 8)를 보여주는 Eclipse 장치와 결합되어, 변경 사항과 관련된버그나 태스크를 검색하는데 시간을 덜 허비할 수 있다. 일반적으로 단 한 번의 클릭으로 가능하기 때문이다. (하이퍼링크가 팝업또는 텍스트 에디터에 나타나도록 하려면 Ctrl을 눌러야 하고, F2를 누르면 팝업을 전면에 가장 먼저 나타난다.)
그림 8. 하이퍼링크와 팀 주석
태스크 콘텍스트는 태스크가 수행될 때 생성되었던 지식을 파악한다. 태스크를 즉각 재 활성화 하면, 태스크와 관련된 시스템 부분들을기억하는 대신, 다시 그 태스크의 콘텍스트로 돌아가게 된다. 만약 태스크를 팀 멤버에 전달한다면, 여러분의 태스크 콘텍스트는 그멤버에게 시작 포인트를 제공한다. 콘텍스트가 단순한 변경만이 아닌 인터랙션을 통해 생성되기 때문에, 모든 태스크 콘텍스트에는접근한 API와 태스크 작업을 할 때 참조했던 문서 같은 관련 정보가 포함된다. 이와 같은 협업 시나리오를 지원하기 위해 (예를들어, 페어 프로그래밍(pair-programming)), 콘텍스트는 쉽게 공유될 수 있다. Task List의 콘텍스트 메뉴를통해 콘텍스트 공유를 활성화 하거나(그림 9), 태스크 에디터에서 상응하는 체크 박스를 클릭한다:
그림 9. 태스크 첨부를 통한 콘텍스트 공유
첨부를 지원하는 태스크 저장소 커넥터를 사용한다면, 이것을 버그 리포트에 첨부함으로써 태스크 콘텍스트를 쉽게 공유할 수 있다.공유 콘텍스트를 검색할 때, 이 중 하나를 선택할 수 있다. 예를 들어, Mylyn 프로젝트에서, 모든 버그 리포트에 콘텍스트를첨부하고, 그 콘텍스트에 모든 패치가 첨부되도록 요청한다. 태스크 콘텍스트를 통한 전문성 공유로 인해 패치 적용이 훨씬 더쉬워지고, 팀 멤버들과 버그 리포트에 대해 협업할 수 있고, 페어 프로그래밍 세션 후에 코드를 청소하기가 쉬워진다. 해결된 모든버그가 저장된 콘텍스트를 갖고 있다는 것은 버그가 다시 생기거나 비슷한 태스크가 발생할 때마다 예전의 전문 기술을 즉각적으로다시 사용할 수 있다는 것을 의미한다.
|
|
본시리즈에서, 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에 감사의 말을 전한다.
http://www.ibm.com/developerworks/kr/library/j-mylyn2/index.html

