 |
|
난이도 : 중급 Mik Kersten, Project Lead, Mylar Project
2007 년 5 월 02 일 Mylar는 태스크들을 Eclipse로 완벽히 통합하고 그러한 태스크 정황을 작업으로서 자동 관리함으로써 생산성을 향상시킵니다. 두 편으로 구성된 Mylar 가이드 시리즈의 첫 번째 글에서는 프로젝트 리더 Mik Kersten이 Mylar의 태스크 관리 장치와 Bugzilla, Trac, JIRA 같은 리파지토리와의 통합에 대해 설명합니다.
소프트웨어 시스템, 프레임워크, 툴들은 계속해서 성장하고 있지만, 개발자가 정보를 처리하는 능력은 한계가 있다. 대부분의 현대적 IDE는 점증적인 컴파일, 구조 뷰, 검색용 장치들을 통해 이러한 문제들을 해결하고 있다. 이와 같은 방식으로 보다 쉽게 큰 시스템들을 돌아다니며 방대한 정보를 수집할 수 있지만, 개발자들이 프로그래밍 태스크를 완수하기 위해 처리되어야 하는 방대한 정보를 관리하는 데에는 아무런 도움을 주지 못한다. 결과적으로, IDE 구조 뷰들에 무거운 부담이 지워졌고(Eclipse Package Explorer에는 작은 엔터프라이즈 애플리케이션을 위한 수 만 개의 엘리먼트들이 포함될 수 있다.) 개발자들은 작업을 수행하기 보다는 정보를 검색하고 파싱 하는데 많은 시간을 낭비하게 되었다.
재미있는 점은 대부분의 경우, 시스템의 전체적인 계층적 구조나 특정 메소드에 대한 모든 레퍼런스를 보면서 프로그래밍 태스크를 수행할 필요가 없다는 점이다. 여러분이 픽스한 버그나 여러분이 추가한 기능 같은 경우, 여러분은 시스템의 하위 세트에만 관심이 있다.
Mylar는 새로운 인터랙션 기술로서 두 개의 장치들을 Eclipse에 추가함으로써 그러한 하위 세트들을 구체화 시키고 있다. 바로 태스크 관리와 콘텍스트 관리이다. 태스크 관리는 버그/태스크/이슈 트래커를 Eclipse로 통합하고 고급 태스크 편집과 스케줄링 장치들을 제공한다. 콘텍스트 관리는 여러분과 Eclipse 간 인터랙션을 감시하고, 현재의 태스크와 관련된 정보를 자동으로 구분하고, Eclipse 뷰와 에디터에 초점을 맞춰 오직 관련 정보만 보여준다. 이러한 장치들이 결합되면 정보 오버로드를 현격히 줄일 수 있고 개발자의 생산성을 매우 높일 수 있다. (연구 결과를 보려면, 참고자료 섹션의 "Using Task Context to Improve Programmer Productivity"를 참조하라.)
 |
정보 블라인드니스(Information Blindness) 방지
Mylar는 태스크와 콘텍스트 관리를 리치 Eclipse IDE와 결합하여 사람들이 필요로 하는 정보만 볼 수 있도록 하기 때문에 대형 시스템에서의 작업이 수월해진다. 바로 이것이 Mylar의 주 특징이다. 일식을 볼 때 "Mylar" 필름이 블라인드니스를 방지하듯 Mylar는 Eclipse 뷰를 볼 때 정보 블라인드니스를 방지해준다고 생각하면 된다.
|
|
이 두 편의 기술자료는 Mylar 사용 가이드이다. Part 1에서는 Mylar의 개요를 설명하고 이것의 태스크 관리용 장치들을 소개한다. Part 2에서는 콘텍스트 관리용 Mylar 장치들을 설명하고, Focused UI가 프로그래밍과 개발 방식에 미치는 영향을 분석한다. 여러분의 편의를 위해 두 편의 기술자료를 동시에 실었다.
여러분이 Eclipse IDE에 익숙할 것이라고 간주하겠다. Part 1은 프로그래밍 언어나 Eclipse 배포판에 해당한다. Part 2는 자바™ 개발에 초점을 맞추지만, Eclipse 기반 툴에 적용할 수 있는 기능들에 대해서도 논한다. Bugzilla는 이 글에 사용된 예제에 사용되는 태스크 리포지터리(repository)이지만, Mylar에서 지원되는 다른 이슈 트래커로 일반화 할 수 있다.
Mylar 소개
Mylar는 Eclipse SDK를 태스크를 계속 트래킹 하는 고급 메커니즘으로 확장한다. (참고자료) 태스크는 리콜 또는 다른 사람들과 공유하기 원하는 작업 단위로 정의된다. 이를 테면, 사용자가 보고한 버그나 기능을 향상시키기 위해 스스로 작성한 메모 같은 것이다. 태스크들을 워크스페이스에 로컬로 저장하거나, 한 개 이상의 태스크 리포지터리(repository)에서 가져올 수 있다. 태스크 리포지터리(repository)로 연결하려면, 그 리포지터리(repository)를 지원하는 커넥터가 있어야 한다. (태스크 리포지터리(repository)는 Bugzilla, Trac, JIRA 같은 버그/티켓/이슈 트래커이다.)
태스크들이 통합되면 Mylar는 그러한 태스크에 대한 작업 액티비티를 감시하여 태스크와 관련된 정보들을 구분한다. 그리고 나서, Mylar는 태스크 콘텍스트를 생성하는데, 이것은 태스크와 관련된 모든 생성물들이 된다. 여기에는 여러분이 편집했던 메소드, 참조했던 API, 검색했던 문서들이 포함된다. Mylar는 이러한 태스크 콘텍스트를 사용하여 Eclipse UI를 관심이 있는 정보에 맞추고, 관심 없는 부분들은 숨기며, 관련된 것들을 자동을 찾는다. 여러분이 작업을 수행하는데 필요한 정보가 있다면 검색에 드는 시간을 줄임으로써 생산성을 높일 수 있다. Mylar는 태스크 콘텍스트를 명확하게 함으로써, 멀티태스킹, 플래닝, 재사용, 전문성 공유를 용이하게 한다.
시간이 흐르면서, Mylar 사용 결과는 미묘하지만 여러분이 작업하는 방식을 근본적으로 변화시킨다. 태스크 중심적인 방식으로 작업하는데 익숙해지면, 여러분도 다른 Mylar 사용자들과 마찬가지로 생산성 향상을 경험하게 될 것이다. 수 십 개의 버그 리포트를 관리하고, 프로그래스를 트래킹 하는 것에 큰 노력이 들지 않게 된다. (참고자료)
그림 1은 일부 Mylar 태스크와 콘텍스트 관리 기능들을 보여주고 있다. (1)액티브 태스크를 가진 Mylar Task 리스트와 오늘로 정해진 Bugzilla 리포트, (2) 인커밍 코멘트와 연체된 태스크, (3)태스크 콘텍스트에서 관리되는 변경 세트, (4)오프라인 지원이 가능한 풍부한 태스크 에디터, (5) Eclipse Package Explorer의 태스크 중심 모드.
그림1. Mylar Task List 와 Focused UI
전체 그림은 여기를 참조하라.
다음 섹션에서는 Eclipse 플랫폼에 Mylar를 설정 및 설치하는 방법을 설명하고, 가장 많이 사용되는 태스크 관리 기능을 소개한다. Mylar의 태스크 관리 장치에 대해 설명한 다음에는 이것이 매일 매일의 작업 프로세스에 어떤 영향을 미치는지를 설명하겠다.
지원되는 태스크 리포지터리(repository)
이 글에서, 필자는 태스크 리포지터리(repository)의 개념을 강조하기 위해 Mylar의 Bugzilla 커넥터를 사용한다. 이 개념은 다른 지원 태스크 리포지터리(repository)를 사용할 때와 동일하다. 표 1은 Mylar 0.7에서 지원되는 리포지터리(repository)와 통합 레벨을 보여주고 있다. Bugzilla 같은 완전히 통합된 커넥터를 사용하여 작업할 때, 리포지터리(repository)에서 태스크를 저장하고 플래닝 할 수 있고, Eclipse의 삽입된 웹 브라우저에서 이들을 편집할 수 있다. Mylar가 아직 여러분의 리포지터리(repository)를 지원하지 않는다면, 이것을 로컬 태스크와 웹 브라우저 통합을 통해 사용할 수 있다. (예를 들어, URL을 Task List로 끌고 가서 링크로 연결된 태스크들을 자동으로 생성한다.) 하지만, 커넥터 통합 범위가 넓어질수록 생산성은 높아지기 때문에, Mylar에 의해 아직 지원을 받지 않는다면 보팅(voting)을 생각해 보라. (참고자료)
표 1 설명: Rich editing은 드래그앤드롭 같은 통합된 편집 장치를 제공한다. Offline support는 태스크를 열 때 느린 리포지터리(repository)에서 기다리지 않도록 하고, 연결되지 않은 작업을 실행한다. Integrated change notifications 기능을 통해 여러분의 이메일 클라이언트에 의존하는 대신 인박스 같은 Task List를 사용할 수 있다.
표 1. 지원되는 태스크 리포지터리(repository)(Mylar 0.7)
| Connector | Queries | Rich editing | Offline support | Change notification |
|---|
| Bugzilla | * | * | * | * | | Trac | * | * | * | | | JIRA | * | * | | |
Generic Web Repository Connector 역시 다음과 같은 기본적인 쿼리 지원을 제공한다. Google Code Hosting (code.google.com); IssueZilla (java.net, dev2dev, tigris.org); GForge (objectweb.org); SourceForge (sf.net); JIRA; Trac; phpBB; vBulletin. 자세한 내용은 참고자료 섹션을 참조하라.
설치와 설정
Mylar는 정보 오버로드를 줄이는 것이 목적이다. 따라서 이것의 핵심적인 디자인 목표는 Eclipse의 기존 UI 장치들과 통합하는 것이다. 또 다른 목표는 여러분이 필요로 하는 기능들만 설치하여 사용하는 것이다. 예를 들어, 여러분의 역할이 개발이 아닌 버그 분석이라면 Focused UI를 설치하지 않고 Mylar의 Task List를 설치하고 이슈 트래커에 맞는 커넥터를 선택할 수 있다. 여러분이 소프트웨어 개발자라면, 두 기능 모두를 설치해야 한다. 이 글에서는 Task List를 설명하고 다음 글에서는 Focused UI를 설명하겠다.
그림 2. Mylar 기능과 리포지터리(repository) 커넥터 선택하기
Eclipse 버전에 맞는 Mylar를 설치하려면 Eclipse Software Updates 방식을 사용한다: Help > Software Updates
> Search for new features to install. Eclipse를 업데이트 할 때, Search
for updates대신 이 방식을 사용하는 것이 더 낫다. 이것은 의존성 체크를 늘 수행하지는 않는다. Eclipse 3.2를 사용하고 있다면 download.eclipse.org/technology/mylar/update-site/e3.2 업데이트 사이트를 추가하고 그림 2에 보이는 기능을 선택한다. Eclipse 3.1 또는 3.3을 사용하고 있다면, 해당 사이트로 가서 Mylar의 다운로드 페이지를 참조하라. (참고자료).
팁: Mylar는 자바 5 기반으로 구현되고 JDK 1.4 또는 이전 버전을 사용하고 있다면 실행되지 않는다. Help > About Eclipse SDK > Configuration Details에서 Eclipse의 JRE 버전을 체크하라. 설치 문제 해결은 Mylar FAQ(참고자료)을 참조하라.
Focused UI를 설치했다면, Eclipse를 재시작 할 때 권장 프레퍼런스(preference)를 설정하도록 팝업 마법사가 생길 것이다. 마법사 페이지에서 토글링 할 수 있는 콘텍스트 관리 기능을 선택할 수 있다. Part 2에서는 Mylar의 콘텍스트 관리 기능을 소개할 것이므로, 체크된 옵션들은 그대로 남겨두겠다. 지금은 Task List 뷰를 보도록 하자. (그림 3)
그림 3. 설치 후에 자동으로 나타나는 프레퍼런스 설정 마법사
태스크와 리포지터리(repository)
Mylar는 두 가지 종류의 태스크 지원으로 Eclipse를 확장했다.
- 개인 태스크는 Eclipse 워크스페이스에 로컬로 저장되고 스케줄링 같은 기본적인 태스크 관리 기능들을 제공한다.
- 공유 리포지터리(repository) 태스크들은 서버에 저장되고 코멘트 쓰레드와 파일 첨부 같은 협업 기능을 제공한다.
이 섹션에서는 개인 태스크를 생성 및 편집하는 방법과 리포지터리(repository) 태스크에 사용할 수 있는 다양한 기능들을 검토한다. 아래 설명한 기능의 가용성 여부는 여러분 커넥터의 통합 레벨에 달려있기 때문에, 여러분은 적용되는 것만 참조하면 된다. 통합 레벨에 관계 없이 Mylar의 태스크 관리 기능 전부를 사용할 수 있는데, 이 부분은 태스크 관리 및 개인 플래닝 섹션에서 설명할 것이다.
개인 태스크 생성하기
Mylar를 설치한 후에, Task List 뷰(그림 4)의 툴바 버튼을 사용하여 새로운 태스크를 만들고 디스크립션을 채운다. 로컬 태스크를 만드는 또 다른 방법은 웹 브라우저에서 텍스트나 URL을 Task List로 가져오는 것이다. 새로운 태스크는 상응하는 웹 페이지의 타이틀에 따라서 디스크립션이 지동으로 채워진다. Firefox에서는 일반적인 드래그 방식을 사용한다. Internet Explorer에서는 드래그 하면서 Ctrl을 누른다. Task List의 태스크를 더블 클릭하면 태스크 에디터가 열리고, 여러분은 노트를 생성하고 특정 날짜 별로 태스크를 스케줄링 할 수 있다. 기본적으로, 새롭게 생성된 태스크들은 이들이 생성된 날짜 별로 스케줄링 된다. 태스크 노트를 사용하여 관련 정보를 저장하고, 하이퍼링크에 붙이거나, 세분화된 TO-DO 아이템을 만들 수 있다. 또한, 태스크 카테고리를 만들어서 관련 태스크들을 하나로 묶을 수 있다.
그림 4. 개인 태스크 편집
태스크 리포지터리(repository) 추가하기
공유 리포지터리(repository) 태스크들은 개인 태스크와 비슷하지만 Bugzilla 같은 서버에 저장된다. 리포지터리(repository) 태스크에는 고객이 작성한 버그 리포트와 새롭게 스케줄링 된 기능들이 포함되고, 협업이 필요한 다른 작업 단위들이 포함된다. 리포지터리(repository) 태스크와 개인 태스크는 노트를 저장하고 개인 플래닝에 같은 Planning 탭을 사용한다.
Task Repositories 뷰를 열어서(Window > Show View > Mylar > Task Repositories) 태스크 리포지터리(repository)를 만들고, 뷰의 툴바를 사용하여 새로운 리포지터리(repository)를 추가한다. 그런 다음, 리포지터리(repository) 상세를 입력하거나, 가용 템플릿들 중 하나를 선택한다. 그림 5의 bugs.eclipse.org 리포지터리(repository)는 여러분이 Mylar를 설치할 때 자동으로 생성되며, 버그 리포트와 Mylar와 Eclipse에 기능 요청을 쉽게 할 수 있다.
그림 5. Eclipse.org Bugzilla 리포지터리(repository) 추가하기
리포지터리(repository) 쿼리하기
태스크 리포지터리(repository)를 추가했다면 Task List의 팝업 메뉴의 New Query 액션을 통해 그 리포지터리(repository)의 태스크에 액세스 할 수 있는 쿼리를 만들 수 있다. 예를 들어, 필자는 이메일 주소에 할당된 모든 Bugzilla 리포트에 액세스 할 쿼리를 작성했다. (그림 6)
그림 6. 새로운 Bugzilla 쿼리 생성하기
매개변수를 설정하고 Finish를 클릭하면, 쿼리 카테고리가 히트(hit)들로 채워진다. (그림 6) 히트를 열면 이것의 콘텐트를 검색하고 이것을 태스크로 바꾼다. 다시 말해서, 개인 Planning 탭이 태스크를 편집할 때 나타난다. 쿼리의 매개변수들을 변경하려면, 이것을 다시 열어서(Task List에 있는 쿼리를 더블 클릭함) 선택된 값을 편집한다.
Mylar의 웹 통합은 웹 UI에 완벽한 유연성을 제공한다. 태스크를 오른쪽 클릭하거나, 웹 브라우저로 이것을 열도록 쿼리할 수 있다. (Eclipse 브라우저 설정은 Window > Preferences > General > Web Browser에 있다.) 그러면 모든 리포지터리(repository) 태스크들이 Browser 탑을 갖게 된다. 또한 브라우저로 쿼리를 열고, Bugzilla 웹 UI를 사용하여 이를 재정의 하고, New Query 마법사 프롬프트가 뜰 때 이를 붙여서 결과 URL에서 Task List에 있는 새로운 쿼리를 만들 수 있다.
태스크 찾기
태스크 검색은 쿼리를 만드는 것과 비슷하지만, 그 결과를 여러분의 Task List에 저장하지는 않는다. Ctrl+H 또는 Search 메뉴 (Search > Task Search)를 사용하여 리포지터리(repository)를 선택하고, 검색 기준을 입력하고, Search를 클릭한다. Search 뷰가 열리면, 그 검색과 매치되는 태스크를 열 수 있다. (그림 7) 검색을 다시 하기 위해, Search 다이얼로그를 다시 열면 이전 검색 기준이 복원된다. 여러분 Task List에 이미 매치된 것은 태스크 아이콘과 함께 나타난다. (참고자료 섹션에서 Mylar 문서를 참조하라.)
그림 7. 쿼리와 결과 검색하기
태스크 생성 및 중복 탐지
새로운 공유 리포지터리(repository) 태스크를 만들려면, Task List 툴바에서 액션을 사용하거나 File > New 메뉴를 사용하여, 한 개 이상을 갖고 있다면 한 리포지터리(repository)를 선택하고, 그 태스크용 제품을 선택한다. 새로운 에디터가 열리면 여러분은 상세들을 채울 수 있다. 플랫폼과 OS 같은 관련 애트리뷰트들은 자동으로 선택된다.
팁: 간단히 하려면, 쿼리 노드를 오른쪽 클릭한다. 이렇게 하면 쿼리에 상응하는 리포지터리(repository)와 제품을 자동으로 선택한다.
여러분이 만들어야 하는 또 다른 종류의 태스크는 Mylar용 버그 리포트 또는 Eclipse 기반 기타 툴이다. 버그 리포팅은 bugs.eclipse.org 리포지터리(repository)를 추가하고, Eclipse Error Log 뷰에서 액세스 할 수 있는 자동 버그 리포팅 액션을 사용하여 쉽게 이루어진다. 리포팅 하고 싶은 에러 이벤트를 보게 되면, 그것을 오른쪽 클릭하고 Report as Bug를 선택한다. New Repository Task 에디터가 열리고 스택 트레이스 같은 모든 관련 정보들이 포함된다.
이러한 종류의 원클릭(one-click) 버그 리포팅은 상당한 중복 버그 파일들을 만들 수 있기 때문에 Mylar는 자동화된 중복 탐지 기능도 제공한다. Duplicates 버튼에 대한 Search는 자동으로 중첩되거나 직접 붙여진 스택 트레이스를 사용하여 잠재적 중복에 대해 상응 리포지터리(repository)를 쿼리한다. 중복 탐지의 결과는 Search 뷰에 나타난다. (그림 8) 매치를 찾으면, 이것을 열고 새로운 버그 리포트를 만드는 대신 코멘트를 단다.
그림 8. 통합된 에러 리포팅과 중복 탐지
편집과 동기화
태스크를 열면, Bugzilla와 에디터 상의 Planning 탭을 보게 된다. 리포지터리(repository) 태스크는 개인 태스크의 모든 기능을 제공하고, 리포지터리(repository)에 저장된 정보를 직접 편집할 수 있도록 해준다. 버그에 대한 코멘트를 볼 때, Outline 뷰를 사용하여 검색하고, 다른 버그 리포트에 대한 참조와 자바 스택 트레이스 엘리먼트가 하이퍼링크로 연결된다. (그림 9).
그림 9. Bugzilla와 공지 팝업용 리포지터리(repository) 태스크 에디터
여러분의 커넥터가 오프라인 편집을 지원하면, Mylar는 태스크의 카피를 관리하고, 상응하는 쿼리나 태스크가 동기화 될 때마다 이 카피를 업데이트 한다. Ctrl+S를 눌러서 변경 사항들을 로컬에서 저장할 수 있는데, 이렇게 하면 태스크에 아웃고잉(outgoing) 인디케이터가 생기게 된다. (그림 9) 태스크를 제출 할 준비가 되면 에디터 밑에 있는 Submit to Repository를 클릭한다.
누군가가 새로운 코멘트를 추가하여 리포지터리(repository)에서 태스크를 변경하면, 변경 사항을 나타내는 팝업이 나타나고, 태스크는 인커밍(incoming) 화살표로 보여준다. 로컬 카피와 서버의 카피 모두가 변경되었다면, 빨간색의 충돌 인디케이터가 나타나고, 충돌을 해결하라는 프롬프트가 뜬다.
태스크가 이전부터 열려있을 경우, 이것을 다시 열면 오프라인 카피가 열리고, 그 태스크의 백그라운드 동기화가 즉시에 시작된다. 여러분은 태스크를 읽고 작업하기 전에 서버에 대한 라운드트립(round-trip)을 기다릴 필요가 없다. 오프라인 작업을 하기 전에 태스크가 동기화 되는지를 확인하는 것도 좋은 방법이다. 서버에서 연결이 해제되어도 보고 편집할 수 있기 때문이다.
팁: Mylar의 백그라운드 동기화 덕택에, Bugzilla에서 버그 리포트 변경 사항을 받기 위해 이메일 공지에 의존하지 않아도 된다. 여러분이 해야 할 일은 관심이 있는 모든 태스크(예를 들어, 여러분이 복사했던 모든 리포트)를 캡쳐한 쿼리를 설정하고 인박스를 오버로드 하지 않는 간소한 인커밍 화살표의 형태로 공지를 받게 된다. Window > Preferences > Mylar > Tasks를 클릭하여 동기화 스케줄을 설정한다. 트리에 있는 노드를 오른쪽 클릭하고 Synchronize를 선택하여 쿼리와 태스크를 직접 동기화 한다.
첨부(Attachments)
태스크 에디터의 Attachments 섹션에 있는 Add... 버튼을 클릭하여 리포지터리(repository) 태스크에 첨부를 추가할 수 있다. 또한 워크스페이스 또는 윈도우 매니저에서 파일이나 텍스트를 가져다가 에디터의 Attachments 섹션에 가져온다. 첨부를 추가하면 첨부가 클립보드 내용, 컴퓨터에 있는 파일, 또는 Eclipse 워크스페이스 중에서 선택할 수 있도록 마법사를 실행한다. Attachments 테이블에서는 웹 브라우저 또는 에디터에서 첨부를 열고 저장 또는 클립보드에 카피하기 같은 콘텍스트 메뉴를 통해 액션을 수행한다.
태스크 관리와 개인 플래닝
많은 개발자들의 경우, 한 주에 트래킹 및 스케줄링 될 태스크의 범위에는 다음 사항이 포함된다.
- 여러분이 작업하고 있는 제품에 대한 결함과 기능
- 여러분의 동료에 의해 수행되는 태스크, 모니터링, 관리
- 여러분이 사용하고 있는 프레임웍, API, 소프트웨어에 대한 버그 리포트
- 개인적 TO-DO 아이템과 리마인더
모든 태스크들을 하나의 뷰로 통합시키면 관리하기가 더 쉽다. 여러분은 하나의 공간만 보면 다음에 무엇을 해야 할지를 알 수 있기 때문이다. 태스크 관리를 활용하기 위해, Mylar는 태스크 스케줄링과 연기 같은 일반적으로 인식된 태스크 관리 베스트 프랙티스를 삽입하고, XP 스타일의 개발도 채택한다. Mylar의 태스크 관리 툴로는 장기적인 프로퍼티들을 트래킹 하면서, 해당 주에 대한 변경 요구 사항들을 쉽게 적용할 수 있다. 이것 외에도, Mylar는 마일스톤과 프로퍼티 같은 공유 리포지터리(repository) 애트리뷰트를 만들어서 팀과도 통합할 수 있도록 해준다.
 |
쿼리 구성에 대한 권고 사항
다양한 구성 스타일을 지원하기 위해, Mylar의 Task List는 카테고리와 쿼리를 설정 및 사용하는 방식이 매우 유연하다. 여러분의 팀이 반복을 관리하고, 각각의 Bugzilla 리포트에 마일스톤으로 태그를 다는 일에 신경을 쓴다면, 마일스톤에 상응하는 쿼리를 설정하고 이들을 사용하여 팀의 프로그래스를 트래킹 할 수 있다. 다음은 Mylar 개발팀에서 필자가 경험했던 것을 토대로 한 권고 사항들이다.
- 여러분에게 할당된 모든 태스크들에 대한 단일 쿼리를 설정한다. 명확한 제품 또는 컴포넌트 영역이 있다면, 이 쿼리를 여러 개로 나눌 수 있다. 이렇게 하면 각 쿼리의 콘텍스트 메뉴에서 사용할 수 있는 Go Into 액션을 사용하여 제품에 대한 태스크만 볼 수 있다. 관심도 기반 정렬이 다음에 수행할 일에 따라 쿼리에서 엘리먼트의 순서를 정하기 때문에 할당된 모든 태스크들에 대한 단일 쿼리를 선호한다.
- 여러분이 리포팅 하거나, 주석을 달거나 또는 복사했던 모든 버그들에 대한 또 다른 쿼리를 설정한다. 관심 있는 모든 리포지터리(repository)에 대해 이를 수행한다. 이렇게 하면 여러분이 관심 있어 하는 모든 리포트에 대한 변경 사항에 대해 인커밍 공지를 받을 수 있다. 필자는 이러한 방식에 전적으로 의지하고 있다. 이 글을 쓰고 있는 지금 현재, 900개의 읽지 않은 Bugzilla 공지 이메일이 폴더에 있다.
- 여러분이 모니터링, 관리, 페어(pair) 프로그래밍을 수행한다면 각 사람들에게 할당된 태스크에 대한 쿼리를 설정하라. 예를 들어, 필자는 활동적인 Mylar 기여자들에 대한 쿼리가 있기 때문에 후속 논의들에 대해 빠르게 반응할 수 있다.
- 여러분이 버그의 우선 순위를 구분한다면 인덱스 어카운트에 대한 개인 쿼리를 설정하여 인커밍 리포트를 모니터링 할 수 있다.
|
|
다음 섹션에서는 Mylar 단일 태스크와 인박스를 만들어서 여러분의 작업주와 관련된 모든 태스크들을 관리하는 방법을 설명하겠다.
작업주(workweek)에 맞추기
Mylar에서 태스크를 생성하고 공유하는 것이 쉽다고 했을 때, 일단 여러분이 Mylar를 사용하기 시작하면, Task List는 수십 개 아니면 수 백 개의 태스크로 불어날 것이다. 아이러니 하게도, Mylar는 여러분의 Task List에 있는 모든 정보를 사용하여 정보 오버로드를 담당하고 있다. 사실, 이는 Mylar의 얼리 어댑터(early adopter)들에게 발생했다. (필자의 Task List는 현재 2,400개의 아이템들을 보유하고 있고, 이중 700개는 미완 상태이다.) 좋은 소식은 Package Explorer 같은 Eclipse 뷰가 Task List에도 작동한다는 점이다. Mylar는 태스크를 스케줄링 및 연기하는 체계화된 장치들을 제공하고, 작업주와 관련된 태스크들만 보여주는 Task List에 초점을 맞춘다. 새롭게 생성된 태스크들은 생성일에 따라 스케줄링 되고, Planning 에디터나 콘텍스트 메뉴를 통해 빠르게 적용 될 수 있다.
태스크가 스케줄 데드라인에 해당되면 태스크와 이것의 컨테이너(예를 들어, 쿼리)는 빨간색으로 변하고, Eclipse 윈도우가 보이지 않을 경우 팝업 윈도우가 데스크탑에 뜬다. 다른 Mylar 색상 및 폰트 설정과 마찬가지로 Windows > Preferences > General > Appearance > Colors and Fonts를 클릭하여 태스크 하이라이팅 프레퍼런스를 설정할 수 있다. Window > Mylar > Tasks > Scheduling으로 설정된 작업일의 시작은 다음 날짜로 연기될 때 태스크들이 스케줄링 되는 시간을 결정한다. 작업일의 끝을 변경하는 것은 해당 요일에 스케줄링 된 태스크들이 얼마나 지체되었는지를 나타낸다.
Mylar의 태스크 관리 모델의 열쇠는 관심 기반(interest-based) 랭킹과 필터링이고, 이는 Task List 툴바의 Focus on Workweek 액션을 통해 활성화 될 수 있다. 무엇보다도, 관심 기반 랭킹과 필터링은 해당 주에 스케줄링 된 태스크들만 보여준다. 그림 10에서 보듯, 태스크들이 더욱 하이라이트 되고 정렬되어 다음에 무엇을 할 것인지를 빠르게 파악할 수 있다.
- 지체된 태스크들은 빨간색으로 되어있고, 언제나 리스트의 상단에 있다.
- 오늘로 설정된 태스크들은 파란색으로 표시된다.
- 주 후반으로 스케줄링 된 태스크들은 검정색이다.
- 오늘 완료된 태스크들은 녹색이다.
완료된 태스크들이 쿼리에서 사라지면 Archive에서는 여전히 존재하는데, 여기에는 여러분이 그 동안 작업했던 모든 태스크들이 포함되어 있다. 인커밍 변경 사항들과 코멘트들을 가진 태스크들은 언제나 보여지기 때문에 Task List를 인박스로서 사용할 수 있다.
그림 10. 스케줄링 태스크
하루 단위 스케줄링 보기
태스크들을 쉽게 스케줄링 및 연기할 수 있도록 하고, 뷰를 해당 주에 스케줄링 된 태스크들로만 제한하는 것으로 Mylar는 전체적인 프로퍼티 감각을 관리하고 있다. 작업일을 명확하게 하기 위해, Mylar는 현재 요일에 스케줄링 된 모든 태스크들을 파란색으로 표시한다. Focused 모드에서 작업할 때 스크롤바는 거추장스럽기 때문에 Task List는 확장된 형태를 유지하여 다음에 해야 할 일들을 언제나 볼 수 있도록 해준다.
Mylar를 사용하여 관리되는 전형적인 작업주의 흐름을 생각해 보자.
- 한 주의 시작에, 태스크 리스트에는 앞서 스케줄링 되었거나, 금주로 연기된 수 많은 빨간색 태스크들이 포함된다. JUnit에서와 마찬가지로, 빨간색은 그렇게 좋은 의미는 아니다.
- 콘텍스트 메뉴를 사용하여 금주의 오늘 또는 다음 날에 대한 각 태스크를 스케줄링 한다. 모든 빨간색이 사라지면(오늘 자로 스케줄링 된 태스크의 경우는 파란색으로 변하고, 금주 후반으로 스케줄링 된 태스크들은 검정색이 된다.) 금주의 스케줄을 검사하여 이것이 현실적인지를 확인하고 필요에 따라 태스크를 연기 또는 위임한다.
- 작업일의 끝에서는, 해당일에 완료되었어야 했지만 그렇지 못한 태스크들은 빨간색으로 변하고, 오늘 완료된 태스크들은 녹색이 된다. JUnit에서와 마찬가지로 녹색은 행복한 색깔이다.
- 다음 날의 시작에서, 그 날에 스케줄링 된 모든 태스크들은 파란색이고, 연기된 태스크들은 빨간색이다. 작업일을 늘리면 일부 태스크들을 다음 요일들로 연기하기 때문에 파란색 태스크들은 여러분이 그날 완수할 수 있는 작업들을 나타낸다. 태스크를 완료하면 녹색으로 변한다. 주말에 가까워지면 스크롤바는 Task List에서 사라진다.
- 주간이 끝나갈 때, 스크롤바는 사라지고 리스트 상의 대부분의 작업들이 녹색이 된다.
필터링과 검색
자동화 장치 외에도, Mylar는 수동 정렬과 필터링 장치들도 있다. (그림 11) 이것은 다양한 필터와 소터(sorter)들을 반복적으로 토클링 해야 하는 부담이 있지만, 플래닝 할 때 유용하다. Focus on Workweek이 활성화 일 때, 여러분의 수동 필터링과 정렬 설정이 저장된다.
- 이를 테면, 우선 순위에 따라 칼럼을 정렬한다.
- 뷰에서 풀다운(pull-down) 메뉴를 사용하여 우선 순위 별로 필터링 한다.
- 뷰 메뉴를 통해서 완료된 모든 태스크들을 필터링 한다.
-
Go Into (Focused 모드에서도 실행됨)를 클릭하여 특정 카테고리나 쿼리에 있는 태스크들을 필터링 한다.
- 드래그&드롭을 사용하여 태스크들을 직접 정렬한다. 리포지터리(repository) 태스크들을 목록 별로 정렬한다.
그림 11. 수동 Task List 필터
Move to Category 콘텍스트 메뉴를 통해서 또는 콘텍스트 메뉴의 Remove from Category를 선택하여 태스크를 옮길 수 있다. 쿼리에서 사라지거나 목록에서 제거될지라도 콘텍스트 메뉴에서 삭제하지 않는 한 어떤 태스크도 사라지지 않는다. 제거된 태스크들은 Archive 컨테이너에서 찾을 수 있다. 리스트의 위쪽에 있는 Find 바를 사용할 때 매치를 보여준다.
Task List의 상단에 있는 Find 바는 아카이브 또는 어딘가에 있는 오래된 태스크들을 검색할 수 있는 편리한 방법이다. 오른쪽에 Clear 버튼을 클릭하거나 Esc 키를 누르면 이전에 보였던 태스크들이 복원된다. 아카이브 컨테이너는 코멘트가 달렸던 태스크를 보는데 유용하다. 쿼리를 생성하는 일반적인 방식은 해결된 태스크에는 포함되어 있지 않다.
백업과 반입
태스크 중심적인 방식으로 작업을 할수록, Task List의 가치는 더욱 높아진다. Task List의 자동 백업은 기본적으로 실행되며, Window > Preferences > Mylar > Tasks를 클릭하여 백업 디렉토리를 설정할 수 있다. 백업에서 복구하려면, 해당 라디오 버튼을 선택하고 백업 스냅샷을 선택한다. 기본적으로, Mylar는 모든 태스크 데이터들을 매일 찍어두고, 30일 동안의 백업 기간을 유지한다. (Preferences > Tasks에서 설정한다.) File > Export를 클릭하여 태스크들을 반출할 수 있다.
팁: Import를 사용하여 태스크를 가져오는 대신 여러 워크스페이스에서 작업할 때, Window > Preferences > Mylar > Tasks를 클릭하여 태스크 데이터 디렉토리가 공유된 위치에 있도록 설정할 수 있다. 이 위치를 네트워크 드라이브에 놓는다면, 빠른 연결을 통해 사용할 수 있다.
결론
Mylar 사용 가이드, Part 1에서는 Mylar의 태스크 관리 장치를 소개했다. 이러한 장치들이 Bugzilla 같은 웹 기반 이슈 트래커들을 Eclipse에 통합하여 개인 태스크 관리를 지원하는 방법에 대해서도 살펴 보았다. Mylar에서 관리되는 작업주 또는 작업일의 개요와 Task List를 관리하는 방법도 설명했다.
Task List 뷰는 얼마나 많은 태스크 리포지터리(repository)들이 있든지 간에, 모든 작업들을 한 공간에서 관리할 수 있도록 한다. 외부 브러우저 윈도우로 전환하는 대신 Eclipse에서 대부분의 작업을 하게 되어 생산성도 높아진다. 드래그&드롭 첨부와 오프라인 지원 같은 웹 기반 이슈 트래커도 활용할 수 있다.
Mylar가 완성되기 까지는 아직 멀었다. 태스크들이 여러분의 작업의 명확한 일부가 되면, Mylar는 그 정황을 자동으로 관리하기 시작한다. Part 2에서는 Mylar의 콘텍스트 관리 장치를 소개하고, 이것이 정보 오버로드를 줄이고, 멀티태스킹에 어떤 효용성을 가져오는지를 설명하겠다. Part 2 보기.
참고자료 교육
제품 및 기술 얻기
토론
필자소개  | |  | Mik'는 Xerox PARC의 연구원으로서 aspect 지향 프로그래밍 툴을 만들었으며 eclipse.org/aspectj 프로젝트에 기여하고 있다. University of British Columbia에서 박사 과정에 있는 동안, 태스크 중심 인터랙션 기술을 개발했으며 eclipse.org/mylar 프로젝트를 이끌었다. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|