 |  |
|
난이도 : 중급 Mik Kersten, Project Lead, Mylar Project
2007 년 6 월 19 일 Mylar는 태스크를 Eclipse에 완벽하게 통합하고 그러한 태스크들을 하나의 작업으로서 자동 관리함으로써 생산성을 높입니다. 이번 시간에는, 프로젝트 리더 Mik Kersten이 Mylar의 콘텍스트 관리 기능에 대해 설명합니다. 이러한 기능들로 인해 멀티태스킹이 얼마나 수월해 지는지, Eclipse에서 대형 애플리케이션 작업을 할 때 정보 오버로드를 어떻게 줄이는지를 설명합니다.
Part 1에서는 Mylar의 태스크 관리 장치들이 특정 요일이나 주와 관련된 태스크에 초점을 맞출 수 있도록 하는 방법을 설명했다. 태스크가 Eclipse 경험의 통합된 일부가 되면, 반복되는 많은 액션들이 여러분이 작업하고 있는 콘텍스트에 집중된다는 것을 알 수 있을 것이다. 예를 들어, 주어진 태스크와 관련된 엘리먼트를 보고 다른 관련 태스크와는 관계 없이 변경 작업을 해야 할 경우가 있다. 또는, 변경된 작업에 대해서만 테스트를 실행함으로써 시간을 절약하고 싶을 수도 있다.
Mylar를 통해 여러분이 한 주에 할당된 태스크에 집중할 수 있는 것처럼, Eclipse 작업 공간을 초점을 당면한 태스크와 관련된 생성물에 맞출 수 있다. Mylar의 Focused UI가 설치되어 있다면, 여러분은 어떤 태스크가 활성화 되어 있는지를 알려 주기만 하면 여러분이 작업하는 모든 코드는 자동으로 그 태스크의 콘텍스트에 추가된다. 이 콘텍스트는 여러분이 작업해 가면서 관심을 보이는 다양한 생성물을 정확하게 나타낸다. 태스크를 전환할 때, 콘텍스트가 저장되면서, 여러분은 이를 리콜(recall)하고 다른 팀 멤버들과 공유할 수 있다.
두 번째 글에서는, Mylar가 Eclipse UI를 완벽하게 전개하여 프로그래밍 태스크의 콘텍스트를 관리하는 방법을 설명하겠다. 콘텍스트를 관리하는 Mylar의 장치부터 설명하고 관련 디렉토리, 뷰 필터링, 에디터 폴딩, 액티브 뷰, 콘텍스트 중심 단위 테스트 수트 같은 UI 장치들을 소개하도록 하겠다. 마지막으로, Mylar의 태스크 관리와 콘텍스트 관리가 팀 협업에 어떤 역할을 하는지를 설명할 것이다.
그림 1은 Mylar의 콘텍스트 관리 장치의 실행 모습이다. (1) Focus on Active Task 버튼을 누르면 Eclipse Package Explorer에 액티브 태스크의 콘텍스트에 있는 엘리먼트만 나타난다. (2)액티브 태스크들의 전환은 Task List를 통해 수행된다. (3) 전환 되면, Eclipse 뷰와 에디터들은 새롭게 활성화 된 태스크의 콘텍스트에 집중한다. (4)변경 세트는 자동으로 관리되어 태스크 콘텍스트에 변경 사항들을 반영한다. (5)폴딩과 콘텍스트는 뷰를 관련 엘리먼트에 초점을 맞춘다.
그림 1. Eclipse의 초점을 태스크 콘텍스트에 맞추기
전체 그림을 보려면 여기를 보십시오.
Focused UI 사용하기
변경 사항들을 새로운 기능으로 래핑하여 임박한 코드 데드라인을 맞춰야 하는 상황을 생각해 보자. 여러분이 작업할 때, 그 동안 수정했던 모든 클래스들과 메소드와 이러한 기능을 만들면서 액세스 했던 API에 대한 지식이 쌓였을 것이다. 여러분은 Mylar를 사용하고 있기 때문에, 이러한 지식은 태스크 콘텍스트에 자동으로 반영된다. 태스크를 완료할 때쯤, 심각한 버그가 생기고 주의를 요하게 된다.
한번의 클릭으로, 버그 리포트를 실행시키고 문제를 조사할 수 있다. Mylar의 태스크 에디터에서 하이퍼링크로 연결된 버그의 스택 트레이스들을 검색하면서, 검사와 진단을 통해 새로운 태스크 콘텍스트가 만들어 진다. Mylar의 자동화 콘텍스트 테스트 수트를 클릭하면, 이것이 여러분이 만들었던 콘텍스트와 구조적으로 관련된 단위 테스트를 실행하고, 버그가 실제로는 동료의 코드에 있다는 것도 알게 된다. 또 다른 클릭을 하면 버그를 동료에 재할당 하고 진단을 통해 얻어진 태스크 콘텍스트를 공유한다. 이 모든 일들을 Eclipse에서 했기 때문에 Task List의 Back 버튼을 클릭하면 곧바로 이전 태스크의 콘텍스트로 돌아온다. 여러분의 동료는 여러분이 떠난 곳에서 정확히 버그 리포트를 파악한다.
 |
지원 툴
태스크 저장소와 통합하기 위해 커넥터가 필요한 것과 마찬가지로, Mylar는 브릿지(bridges)를 사용하여 콘텍스트 모델과 구조와 도메인 스팩의 툴의 UI 기능들을 통합한다. 핵심 브릿지 세트는 자바™ 코드, JUnit, PDE, Ant, 기본 리소스들용 브릿지로 Eclipse SDK를 지원한다. 완벽한 통합을 경험하기 위해서, Mylar는 여러분이 작업하는 모든 툴을 위한 (Ruby와 JSP) 브릿지를 필요로 한다. Eclipse SDK용 브릿지 외의 것은 0.7.0 버전 이후는 사용할 수 없기 때문에 작업 공간에 있는 모든 파일들과의 기본적인 상호 운용성을 제공한다. 다시 말해서, 모든 파일에 Focused UI를 사용해야 하지만, Package Explorer에 나타나는 파일만 볼 수 있고 선언 필터링(Outline 뷰), 에디터에서의 선언의 자동 폴딩, 자동 테스트 수트 같은 고급 기능을 사용할 수 없다. (참고자료)
자동화 변경 세트 관리를 제공하려면 Mylar는 버전 컨트롤 프로바이더에 대한 확장이 필요하다. Mylar 0.7.0은 Eclipse의 빌트인 CVS와 Subclipse의 Subversion 통합을 지원한다.
|
|
다음 섹션에서는 Mylar의 콘텍스트 관리 기능을 사용하여 태스크 중심으로 작업하는 방법을 설명하겠다. 예제는 자바 중심이지만, 개념과 일부 기능들은 여러분이 작업할 파일 기반의 생성물에 적용할 수 있다. (지원 툴 상세히 보기)
degree-of-interest 모델
Mylar의 콘텍스트 관리는 개발자와 시스템간 인터랙션이 degree-of-interest 모델로 변형될 수 있다는 개념에 기반하고 있다. 여기에서, 시스템의 각 엘리먼트는 당면한 태스크와의 연관성에 따라서 평가된다. 이 콘텍스트 모델은 가장 중요한 엘리먼트를 강조하고, 중요하지 않은 것을 걸러내고, 관심 엘리먼트에 대한 연산을 수행(관련 변경 사항만 실행하기)함으로써 UI에 집중할 수 있도록 한다. 콘텍스트는 예견 가능한 방식으로 구현된다. 여러분이 태스크를 활성화 하면, 여러분이 선택하거나 편집한 모든 엘리먼트(파일 또는 자바 메소드)는 콘텍스트의 일부가 된다. 여러분이 이 엘리먼트와 더 많이 상호 작동할수록, 태스크에 대한 관심도는 더 높아진다. 엘리먼트의 관심이 충분히 높이 올라가면, 이것은 랜드마크(landmark)가 되고, 북마크를 생성한다. 각각의 인터랙션은 하나의 태스크가 구성하고 있는 모든 엘리먼트들에 대한 정확한 관심도가 점진적으로 쇠퇴시켜서, 관심 엘리먼트 세트를 무한 확장시키기 보다는 현재 관심이 있는 것과 매치 시킨다.
관심 데코레이션과 필터링
Mylar의 콘텍스트 관리 장치는 전통적인 Eclipse 뷰를 사용하여 새로운 방식으로 정보를 나타낸다. 여러분이 해야 할 일은 태스크를 클릭하여 그 태스크에 대한 콘텍스트 관리를 활성화 하는 것이다. 그리고 나서, 여러분이 작업하는 모든 엘리먼트는 태스크 콘텍스트의 일부가 된다. Mylar의 관심 데코레이터는 폰트 컬러링을 사용하여 각 엘리먼트의 관심 레벨을 강조한다. 기본적으로, 비 관심 대상 엘리먼트는 회색으로 나타나고, 관심 대상은 검은 색으로 나타나며, 랜드마크는 볼드체로 표시된다.
하이라이팅(highlighting) 자체는 정보 오버로드를 줄일 때 제한된 유틸리티를 갖고 있는 반면, 자바 멤버와 파일 같은 엘리먼트를 보는 모든 뷰에 일관성 있게 적용된다. 검색 결과 같은 엘리먼트를 바르게 선택할 수 있다. (그림 2의 Search 뷰)
 |
성능에 대해서?
Mylar는 콘텍스트 관리 장치들이 Eclipse의 성능에 영향을 미치지 않도록 설계된다. 태스크 콘텍스트는 여러분이 작업하는 대규모 시스템이 아닌 적은 인터랙션 규모로 제한되기 때문에 시스템의 크기와 관련이 없다. Eclipse에서 작업할 때 Mylar 때문에 메모리 또는 속도 오버헤드가 생긴다고 생각한다면, 이를 버그로서 보고할 수 있다. 더욱이, 어떤 태스크도 활성화 되지 않으면, Mylar의 콘텍스트 관리와 UI 장치들 역시 비활성화 된다. Mylar의 성능에 대해 자세히 알고 싶으면 Mylar FAQ(참고자료)를 참조하라. Eclipse의 메모리 모니터를 켜고 Window -> Preferences -> General -> Show Heap Status를 사용하라.
|
|
정보 오버헤드를 줄이는 Mylar의 핵심 장치는 관심 기반 필터링이다. Focus on Active Task 버튼으로 토글링 되며, 관심 대상이 아닌 모든 엘리먼트들을 걸러낼 수 있고 콘텍스트 활성 태스크에 집중할 수 있다. 예를 들어, Focused 모드에서는 Eclipse의 Package Explorer가 여러분이 실행하는 것만 보여준다. 태스크의 일부인 모든 소스와 라이브러리 파일들과 메소드들 역시 그림 2를 참조하라.
여러분이 더 많은 엘리먼트를 선택할수록, 볼드체로 된 랜드마크가 생기기 전 까지는 관심 대상이 더 많이 늘어나게 된다. 단 한번 선택된 검색 히트 같은 낮은 관심도를 가진 엘리먼트들은 쇠퇴하고 필터링 뷰에서 사라지게 되면서, 뷰는 더 이상 관심 대상이 아닌 엘리먼트로 늘어나는 일이 없다. 태스크 콘텍스트는 예견 가능한 방식으로 관리되기 때문에 콘텍스트에는 장기 실행 태스크에 대한 엘리먼트들만 포함된다. Mylar의 태스크 콘텍스트 모델은 태스크와 현재 관련된 것을 반영하도록 설계되는 반면, 여러분은 엘리먼트의 관심도를 직접 높이거나 줄일 수 있다. (엘리먼트에 대해 콘텍스트 메뉴 액션을 사용하거나 Ctrl+Alt+Shift+up/down 화살표 키보드 단축키를 사용한다.)
Focused 모드를 꺼야 하는 빈도수를 줄이기 위해, Mylar는 Alt+Click 메커니즘을 통해 트리 뷰의 자식 노드를 임시로 필터링 하지 않는다. 예를 들어, 보이지 않는 메소드를 선택하기 위해, 클래스에 Alt+Click을 수행하고 그 메소드를 선택하면 이것이 태스크 콘텍스트에 추가된다. 이 뷰에서 흰 공간에 대해 Alt+Click을 수행하면 모든 루트 노드들(프로젝트)이 보인다. Alt 키를 계속 누르고 있으면 프로젝트 노드에서 관심 메소드로 빠르게 검색할 수 있다.
Mylar를 자바 개발에 적용하기
Mylar에서 자바 프로그래밍을 사용할 때, Package Explorer를 언제나 Focused 모드에 둔다. 기본적으로, 이 버튼은 태스크를 활성화 할 때와 태스크를 비활성화 할 때를 자동으로 토글링 한다. 이것이 적용되면 여러분의 콘텍스트에 있는 자바 엘리먼트만 볼 수 있다. 자바 클래스를 선택하면(직접 검색 또는 used Open Type mechanism (Ctrl+Shift+T) 사용), 유형은 콘텍스트의 일부가 되고 필터링 된 Package Explorer에 나타난다. 여러분이 선택하고 편집한 각 메소드는 태스크 콘텍스트에 추가되고 Package Explorer에 나타난다. 그림 2는 Focused 모드의 Package Explorer 모습이다. Package Explorer와 Debug 뷰의 자바 엘리먼트의 관심 기반 데코레이션과 활성 필터링에 주목하라.
그림 2. 태스크 콘텍스트 상의 자바 엘리먼트 뷰
Eclipse에서 엘리먼트 열기 장치들은 뷰들이 Focused 모드(Ctrl+Shift+T(유형), Ctrl+Shift+R(리소스), Ctrl+O(아웃라인), Ctrl+T(계층))에 있을 때 잘 작동한다. 콘텍스트에서 유형들을 보다 쉽게 선택하려면 Open Type 리스트의 상단에 배치한다. 태스크를 전환하면, 이 리스트에는 새로운 태스크에 대한 관심 유형이 포함된다. 어떤 태스크도 활성화 되지 않으면, 이 리스트는 최근에 사용된 Eclipse 글로벌 리스트로 전환된다.
Java Browsing 퍼스펙티브를 사용하고 있다면, 툴바 버튼을 사용하여 이러한 세 개의 모든 자바 엘리먼트 뷰들이 한 번의 클릭으로 Focused 모드로 들어가도록 한다.
자동 폴딩과 콘텐트 보조 랭킹
자바 코드를 작성할 때, Eclipse의 자바 에디터에서 대부분의 시간을 보내게 된다. Mylar는 자동 폴딩과 콘텐트 보조 랭킹을 사용하여 자바 에디터가 현재의 태스크와 관련된 것에 집중할 수 있도록 한다. 에디터 툴바에서 Mylar의 Active Folding 버튼을 토클링하면, 모든 관심 엘리먼트들은 접힌다. 이는 에디터의 정보 밀도를 늘리며, Outline 뷰에 의존하지 않고 큰 파일에서 선언들을 보다 쉽게 검색할 수 있다. 엘리먼트를 선택하면 태스크 콘텍스트의 일부가 되며 접힌 것이 펼쳐진다. 그림 3에서, 대부분의 엘리먼트가 선택 또는 편집되지 않았기 때문에, 엘리먼트들은 접혀있다. 반면, 활성 엘리먼트가 펼쳐져 있고, 왼쪽 에디터는 이것이 랜드마크라는 것을 나타낸다.
그림 3. 자동 폴딩과 콘텐트 보조
뷰에서의 필터링 방식과 마찬가지로, Mylar 역시 관심 레벨에 따라서 자바 콘텐트의 등급을 매긴다. 관심 선 밑에 있는 모든 아이템들은 JDT의 표준 랭킹 휴리스틱을 사용하여 정렬된다. 아래쪽 화살표 키를 누르는 것으로 관심 있는 것을 선택할 수 있다. 선택하기 전에 타이핑을 하면, 이 리스트는 일반 랭킹으로 변환한다. getTask() 같은 관심 메소드들은 이 에디터에서 펼쳐져 있다. 엘리먼트들에 대한 관심 레벨을 노출하는 다양한 장치들이 일관성을 유지하면 Focused UI는 더욱 예견 가능하고 사용하기 쉬워진다.
오픈 에디터와 퍼스펙티브 관리하기
Mylar는 또한 하나의 태스크와 관련된 오픈 에디터의 수를 관리할 때 태스크 콘텍스트를 사용한다. 파일에 있는 엘리먼트가 관심 대상 밖으로 사라지면, 그 에디터는 자동으로 닫힌다. 하나의 태스크를 비활성화 하면, 모든 에디터들은 닫히고 태스크 활성화 시 다시 열린다. 엘리먼트의 관심도를 줄이면 에디터가 닫히고, 파일을 닫으면 관심도도 줄어든다. 모든 오픈 에디터들이 관심 엘리먼트에 상응하게 된다면, 오픈 에디터들의 수가 늘어나지 않도록 하고, 관심 파일들간 검색을 위해 Eclipse의 에디터 네비게이션 장치들을 사용할 수 있다. 예를 들어, Package Explorer 같은 네비게이터 뷰가 보이지 않으면 에디터들 간 변환에 Ctrl+E와 Ctrl+F6 명령어를 사용할 수 있다.
이와 비슷한 방식으로, Mylar는 마지막으로 실행했던 태스크에 기반하여 Eclipse의 퍼스펙티브를 관리한다. (Window > Preferences > Mylar이와 비슷한 방식으로, Mylar는 마지막으로 실행했던 태스크에 기반하여 Eclipse의 퍼스펙티브를 관리한다. (
Ant, PDE, 기타 소스 파일에서 작업하기
Mylar의 콘텍스트 관리 장치는 Eclipse SDK에 있는 콘텐트를 보여주는 모든 뷰에 적용될 수 있다. (Package Explorer, Navigator, Project Explorer, Outline, Problems, Tasks, Debug, Packages, Types, Members) Project Explorer 같은 트리 뷰의 Focused 모드는 관심 데코레이션과 필터링을 추가한다. Problems 같은 리스트 뷰는 관심사에 따라서 정렬될 수 있다. 툴이 커스텀 브릿지로 지원되지 않더라도, 기본 지원이 되기 때문에 PHP 개발 같은 비 자바 프로젝트용 Mylar를 사용할 수 있다. (지원 툴 참조)
예를 들어, Ant나 Plug-in Development Environment (PDE)를 사용하여 애플리케이션을 개발하고 있다면 Eclipse UI는 그림 4처럼 보인다. 여러 뷰들이 열려있고 콘텍스트를 보여주고 있다.
그림 4. 태스크 콘텍스트에 대한 기본 IDE 뷰
그림 4의 Project Explorer 뷰는 태스크 콘텍스트에 있는 파일들(이미지와 XML 파일들)만 보여주고 있다. 열린 파일은 "build.xml"인데, 이는 십여 개의 Ant 선언으로 구성된다. Outline 뷰에서, 열 개의 비 관심 선언 대신에 여러분이 작업 중인 선언들만 본다. Problems 뷰는 활성 태스크에만 초점이 맞춰져 있기 때문에, 수 백 개의 관련 없는 경고들로 오버로딩 될 염려 없이, 관련 경고만 볼 수 있다. (태스크 콘텍스트의 엘리먼트에 대한 모든 에러, 경고, 기타 마커들) 마지막으로, Eclipse Tasks 뷰 역시 초점이 맞춰져 있다. 당장 수행하지 않아도 되는 수 백 개의 to-do 마커를 보는 대신에 태스크 콘텍스트와 관련된 것만 볼 수 있다.
팁: Mylar의 Task List 뷰와는 달리, Eclipse SDK의 Tasks 뷰는 to-do 태그 같은 마커를 보여준다. 이는 리소스의 로컬 문제를 가리키고, 컴파일러 경고와 비슷한 것이다. 이러한 '"to-do tasks"는 Mylar의 태스크들 보다 훨씬 낮은 세분성 레벨에 있고, 하나의 태스크에는 여러 TO-DO를 정리하는 것이 포함된다. Tasks 뷰는 빠르게 오버로딩 되므로, Focused 모드를 사용하는 것이 클린업을 수행할 때 편리하다.
콘텍스트 뷰를 사용하여 관련 엘리먼트 찾기
Mylar의 콘텍스트 모델은 여러분이 직접 선택했던 엘리먼트 이상으로 확장되어 구조적으로 연관된 엘리먼트들이 포함될 수 있다. 콘텍스트 뷰는 여전히 Mylar의 일부이고 이들의 UI는 계속 진화하고 있지만, 이들의 역할은 관련 엘리먼트를 트래킹 하는 것이다. 이로 인해 관련 엘리먼트를 검색할 때 시간을 절약할 수 있다. 현재, 두 개의 콘텍스트 뷰, Search와 Context Hierarchy가 있다. Context 뷰는 랜드마크 유형들에 대한 콘텍스트만 보여준다. 따라서, 콘텍스트에 어떤 랜드마크도 없다면 우선 랜드마크부터 만들어야 한다. 랜드마크를 만드는 한 가지 방법은 메소드 같은 엘리먼트를 콘텍스트 뷰로 끌어와야 한다.
팁: 가능하다면 Mylar는 기존 Eclipse UI 기능과 통합하여 콘텍스트를 노출하여 새로운 뷰에 대한 추가 스크린이 필요 없게끔 한다. 높은 해상도 디스플레이(1920x1200 이상)에서, 콘텍스트 뷰를 열어 놓으면 이들에 퍼스펙티브에 추가될 수 있다.
그림 5는 Context Search와 Context Hierarchy 뷰 모습이다. Context Hierarchy는 태스크 콘텍스트의 상속 구조를 디스플레이 하고, Context Search는 Eclipse 검색 장치를 사용하여 콘텍스트 내의 관련 엘리먼트들을 보여준다. 예를 들어, plugin.xml 파일에 의해 참조되는 클래스에 대해 작업할 때, 참조하는 엘리먼트가 Context Search 뷰에 나타난다.
그림 5. Context Hierarchy와 Context Search
Context Test Suite
태스크 중심 방식으로 프로그래밍을 하면 단위 테스트를 자주 실행하기가 쉬워진다. 일반적으로, 단위 테스트 관행은 현재 작업 중인 한 개 이상의 태스크에 새로운 테스트 런처(launcher)를 만드는 것이다. 이는 매우 성가신 일이다. 대안은 모든 테스트를 프로젝트에서 실행하는 것이다. 이는 몇 가지 관련 테스트를 빼먹거나 전체 수트를 실행할 수도 있는데, 이렇게 되면 느려질 수 있다. 이를 해결하기 위해, Mylar는 태스크 콘텍스트에서 엘리먼트의 단위 테스트 수트를 자동으로 관리하고 하나의 태스크를 실행할 때 이를 반복적으로 실행할 수 있도록 한다. (F11 단축키)
이 기능을 실행하려면 JUnit 플러그인 테스트나 플레인 JUnit 테스트용 Context Test Suite(그림 6)을 만든다. Context Test Suite는 자동으로 업데이트 되어 현재 활성 콘텍스트에 모든 테스트 케이스들을 포함시킨다. 이 수트에는 또한 그 콘텍스트에 대한 관심도를 예견할 수 있는 모든 엘리먼트들이 포함된다. (예를 들어, 리팩토링의 결과로 변경된 엘리먼트) Context Search 뷰를 열어 놓으면, Context Search에서 보여주는 관련 엘리먼트들이 이 수트에도 포함된다.
예를 들어, 클래스에서 작업하고 이것이 Context Search가 보여주는 테스트에 의해 참조된다면, 이 테스트는 여러분이 이를 직접 선택하지 않았더라도 실행될 것이다.
그림 6. Context Test Suites
 |
무엇이 Mylar를 '똑똑하게' 만드는가? Mylar는 종종 스마트(smart) 사용자 인터페이스로 불리지만, 그 자체로는 전혀 똑똑하지 않다. 단순히 여러분의 것을 재사용 하는 것이다. 예견 또는 이해하기 어려운 모델을 사용하는 대신, Mylar 콘텍스트는 시스템의 엘리먼트와 관계들과의 인터랙션에 대한 예견 가능한 투영이다. 이 모델은 Context Framework에서 노출되어 다른 툴들이 이곳에서 작동할 수 있고 이를 도메인 스팩의 뷰와 에디터로 투영한다. Mylar의 구조와 아키텍처, 프로젝트에 맞게 Mylar를 확장하는 방법은 참고자료 섹션을 참조하라. |
|
협업을 위한 콘텍스트 사용하기
협업 툴들은 정보 공유에 관한 것이고, 태스크 콘텍스트는 그 정보에 초점을 맞춰 오버로드와 분산을 방지한다. 개발자들은 지속적으로 이메일, 인스턴트 메시지, 파일들을 보내서 태스크를 수행하는데 필요한 정보를 주고 받는다. Mylar는 인스턴트 메시지나 이메일의 필요성을 없애지 않았지만, 협업 액티비티의 일부를 단순화 했다. 태스크는 명확하고, 이해하기 쉬운 작업 단위를 정의하고, 태스크 콘텍스트는 해당 작업과 관련된 엘리먼트와 생성물의 랭킹을 제공하기 때문에 태스크 콘텍스트를 하나의 클릭으로 공유할 수 있는 기능은 협업을 체계화 하는데 도움이 된다.
Part 1에서는 Mylar의 태스크 관리 UI가 Bugzilla 같은 웹 기반 저장소와 통합되어 여러분이 이메일 클라이언트에서 기대하는 협업 통합과 반응성을 이룩하는 부분을 설명했다. 이 섹션에서는 콘텍스트 공유 지원이 결합된 Mylar에서의 변경 사항과 태스크 액티비티의 트래킹 지원이 팀 작업의 효율을 높이고 전문성을 획득하는데 어떤 역할을 했는지를 설명할 것이다. 여러분은 필요에 따라, 그리고 소스와 태스크 저장소와의 통합 레벨에 따라 원하는 기능을 선택할 수 있다.
자동화 된 변경 세트
변경 세트(change set)는 리소스들을 그룹핑 하는 빌트인 Eclipse 장치이고, 패치를 실행, 업데이트, 생성하는 용도로 Synchronize 뷰에서 작동될 수 있다. 아주 정적인 프로젝트에서 작업하는 것이 아니라면, 변경 세트를 직접 관리하는 것은 권장하고 싶지 않다. Mylar는 변경 세트를 자동으로 관리한다. 태스크를 활성화 하면 그 태스크에 대한 변경 세트가 추가되고 Synchronize 뷰에 디스플레이 된다. (그림 7) 태스크를 수행할 때 이루어진 변경 사항들은 변경 세트에 추가된다. 뷰의 Change Set 노드에 있는 콘텍스트 메뉴를 사용하여 패치를 오버라이드, 실행, 생성한다. 팀 멤버들에서 기인한 내부적 변경 사항들은 태스크에 의해 그룹핑 되고, 인커밍 변경 세트를 오른쪽 클릭하여 상응하는 태스크를 연다. 태스크를 변경하고 비 활성화 했다면 변경 세트는 영속하면서 여러분은 동시에 여러 아웃고잉 변경 사항들과 작업할 수 있다. Mylar는 콘텍스트와 변경 세트간 일대일 매핑을 보장하기 때문에, 여러분이 수동으로 파일을 변경 세트에 추가하면(Synchronize 뷰의 콘텍스트 메뉴 사용), 그 파일 역시 콘텍스트에 추가된다. 현재, 지원되는 소스 저장소는 CVS와 Subversion (Subclipse)가 있다.
그림 7. 변경 세트 관리와 태스크 매핑
효과는 작아 보이지만, 태스크와 리소스를 함께 연결하기 위해 Mylar에서 콘텍스트를 사용하면 작업 방식에 근본적인 영향을 미친다. 예를 들어, Mylar 프로젝트에서, commit 메시지를 작성하지 않는다. 왜냐하면, Mylar의 변경 세트 통합에 의해 자동으로 생성되기 때문이다. (Window > Preferences > Mylar > Team 페이지를 사용하여 자동 commit 템플릿을 편집한다.) 이는 History 뷰에서 하나의 클릭으로 개정판에 상응하는 태스크로 검색할 수 있게 해주고, 원래 태스크에 대한 변경 사항들과 개정 사항들을 트래킹 할 때 시간을 줄여준다. 반대로, 특정 태스크에 대해 변경된 모든 파일들은 CVS 로그를 통해서 쿼리된다.
팁: Eclipse는 두 개의 변경 세트 모드가 있다. 3.2에 새로 생긴 모델 기반 모드와 표준 모드이다. 이러한 모드들은 실제로 구분이 불가능하지만, 각 모드는 뚜렷한 한계가 있다. Mylar FAQ (참고자료)를 참조하라.
콘텍스트 공유하기
태스크 콘텐트는 태스크를 수행할 때 생성되었던 지식을 포착한다. 태스크를 즉시 재 활성화 하면 그 태스크의 콘텍스트로 돌아간다. 태스크와 관련된 시스템의 부분들을 리콜 할 필요가 없다. 태스크를 팀 멤버에게 위임한다면, 여러분의 태스크 콘텍스트가 시작 포인트를 제공한다. 콘텍스트는 단순한 변경 외에도 인터랙션을 통해 생성되므로, 모든 태스크 콘텍스트에는 참조되었던 태스크와 문서에서 작업할 때 액세스 되었던 API와, 참조되었던 문서가 포함된다. 페어(pair) 프로그래밍 같은 비슷한 협업 시나리오를 지원하기 위해 콘텍스트는 쉽게 공유될 수 있다. Task List의 콘텍스트 메뉴를 통해 콘텍스트 공유를 활성화 할 수 있고(그림 8) 또는 태스크 에디터에서 상응하는 체크 박스를 클릭한다.
그림 8. 태스크 첨부를 통한 콘텍스트 공유
첨부를 지원하는 Bugzilla와 Trac 커넥터를 사용할 때, 이를 버그 리포트에 첨부함으로써 태스크 콘텍스트를 쉽게 고유할 수 있다. 공유된 콘텍스트를 검색할 때 한 개 이상의 것이 존재한다면 가능한 모든 것을 선택할 수 있다. Mylar 프로젝트에서, 해결된 모든 버그 리포트에 대한 콘텍스트를 첨부하고, 콘텍스트가 기여를 받은 모든 패치로 첨부가 되도록 요청한다. 콘텍스트를 통한 전문성 공유를 통해 패치 적용, 버그 리포트를 팀 멤버에게 위임하는 것, 페어 프로그래밍 세션 후의 코드 정리 등이 쉬워진다. 모든 해결된 버그들은 콘텍스트 저장 방식이 있다. 버그가 발생하거나 비슷한 태스크가 발생할 때마다 즉각 리콜하고 과거 전문 기술을 사용할 수 있다.
결론
Mylar를 이용한 태스크 중심 프로그래밍을 설명했다. 태스크를 Eclipse의 퍼스트 클래스 부분으로서 취급함으로써 매일의 작업이 훨씬 쉬워질 수 있다는 것을 배웠다. 또한, Mylar가 Eclipse 뷰를 사용하여 여러분이 당면한 태스크에 집중할 수 있게 도와주고, 개인과 팀이 사용할 수 있도록 그러한 태스크들의 콘텍스트를 디스플레이 한다.
Mylar의 개념은 "적을수록 좋다(less is more)"이다. 태스크 관리와 콘텍스트 관리 장치들이 함께 작동하기 때문에, 여러분은 관심이 있는 정보만 볼 수 있다. Mylar의 콘텍스트 모델은 Mylar를 사용하는 개발자들의 현장 연구를 통해 입증되었다. (참고자료) 필자는 2004년 0.1 프로토타입을 만든 이후, Mylar를 사용하고 있다. 다른 Mylar 사용자들과 마찬가지로, 필자 역시 작업 중인 정보를 수동으로 찾고 구분하는 것은 이제 상상할 수도 없다.
Mylar가 여러분의 태스크 저장소를 지원한다면 여러분의 일상적인 작업 역시 훨씬 쉬워지고, 집중력도 높아진다. 여러분의 저장소를 지원하지 않는다면, 개인 태스크에 이를 사용할 수 있다. 어떤 상황이든, Bugzilla 통합을 사용하여 피드백을 주고 지원이 필요한 추가 커넥터를 알려주기 바란다. 여러분의 피드백은 향후 Mylar 릴리스에 많은 도움이 된다.
감사의 말
Mylar가 지금 위치에 올 수 있었던 것은 버그 리포트와 패치 기여를 해준 많은 사용자들 덕분입니다. 이러한 협동 노력을 통해 Mylar는 연구 프로토타입에서, 이제는 수 천명의 프로그래머들이 사용하는 경지에 이르게 되었습니다.
Athen O'Shea, Robert Elves, Gail Murphy, Ducky Sherwood가 이 글에 중요한 피드백을 주셨습니다.
참고자료 교육
제품 및 기술 얻기
토론
필자소개  | |  | Mik는 Xerox PARC의 연구원으로서 aspect 지향 프로그래밍 툴을 만들었으며 eclipse.org/aspectj 프로젝트에 기여하고 있다. 브리티시컬럼비아대학교에서 박사 과정에 있는 동안, 태스크 중심 인터랙션 기술을 개발했으며 eclipse.org/mylar 프로젝트를 이끌었다. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|  |