開發語言
Trac是採用Python語言開發的,因此Trac的在運行的時候,需要有Python環境的支持,在本手冊中Python採用2.5,Trac採用0.11Beta版本、Apache 2.2。
整個Trac是建立在WIKI和TICKET基礎上的,WIKI在工具中充當書寫文檔、TICKET等的語法,它包含了一些類似HTML但簡化了的語法格式,在Guide文檔中有語法的詳細介紹。WIKI的具體含義將在“Trac中的WIKI”一節中進行詳細介紹。TICKET是Trac中的另一個重要的組成部分,Trac使用Ticket(小紙條)傳遞信息。一個Ticket是具體需要做的事情的載體,也包含很多描述性信息。
模型
Trac是以面向進度模型為項目管理模型的,很明顯的特點就是它以里程碑(Milestone)方式進行項目管理的。每個裡程碑中的具體要做哪些事情,就使用Ticket來進行定義、跟蹤等。里程碑是什麼呢?為什麼我不用時間點呢?原因在於使用時間點往往讓人誤以為,里程碑是按照時間來設計的,而不是按照事件來設立的。
另外,Trac做一個SCM配置管理平台,意味著它有良好的擴充性。通過WebAdmin界面中的Plugin功能,可以很方便的安裝下載的外掛程式,也可以通過此功能查看已經安裝的外掛程式,並可對其中的外掛程式進行啟用或停用操作。
體系架構
Trac許可權體系
Trac的許可權體系是比較完備的設計,默認情況下trac有anonymous和authenticated兩種性質的用戶組。Anonymous即匿名組,默認情況下只要能訪問apache提供的trac實例服務,那么就屬於這個組,這個組瀏覽trac實例界面時,將根據trac實例設定的許可權方案提供可以瀏覽的內容。
在通常情況下,我們都給某個trac實例指定admin用戶,即許可權最大的用戶。可以通過trac-admin 實例名 permission add 用戶名 TRAC_ADMIN,命令在dos提示符下創建此實例的管理員帳戶。需要注意的是許可權是區分大小寫的。設定成功後,此用戶驗證登錄後,將能夠看到Admin這個webadmin管理界面。可以通過此界面可視化的對trac實例進行管理。
Trac使用Subject和Action方法綁定來進行賦權。Subject即操作對象,Action即可以執行的動作。通過這種關係映射,從而實現Trac的許可權管理。默認情況下Trac包含anonymous和authenticated兩個Subject,通過前面的trac-admin後,將出現第三個subject,即用戶名。
對於Subject具體的賦權操作,可通過下圖完成。通過對Subject的分配Action即可完成賦權操作,通過Remove selected items可以取消某個Subject已經分配的許可權。需要注意的是TRAC_ADMIN是最大許可權。同時也可以對Subject進行分組管理。某個組擁有的許可權,組員將會自動繼承。
Trac中的WIKI
在Trac中隨處可見WIKI的影子。Trac的welcome頁面,Ticket的編寫等等,在整個Trac界面中均可以使用WIKI的語法書寫文檔。WIKI包含自己的一套語法,採用Genshi才渲染Web頁面,或者說解釋WIKI語法到HTML語法。
Roadmap
Roadmap中文翻譯路線圖。在Trac中使用Roadmap展現某個軟體的開發過程。在Roadmap中,通過Milestone來分解軟體開發的整個生命周期。多個Milestone就構成了一個Roadmap。當然一個軟體交付後,在以後的維護過程中的變更、修改等都創建新的Milestone進行管理。
Timeline
Timeline中文可譯作時間線,它是以時間進度為參考軸,按時間倒序的方式顯示此trac實例中所以的操作日誌。它監控的對象包括:
•WIKI事件:創建和更改動作;
•Ticket事件:創建、更改、完成等所有的Ticket的事件;
•Source chanege事件:資源庫的代碼發生一些動作事件;
•Milestone事件:Milestone結束事件。
Trac中的Ticket
Ticket是trac中管理項目的核心元素,它在trac中被用作項目的任務、功能需求、錯誤報告、軟體發布支持等,它採用WIKI作為其描述部分文字的語法.
Trac中的Report
Report在trac中主要的用於顯示ticket,可以根據上文中提到的ticket所有的屬性進行過濾,同時也可以定義顯示ticket哪些欄位屬性,如果覺得用戶設定的查詢條件及顯示方式很有價值,那么你可以保存此查詢Report,在下次直接使用。這樣在選單“VIEW TICKETS”中看到此報表。需要注意的是Report只查詢ticket。
Trac中的Search
Search主要是對ticket和WIKI進行查詢的,查詢的內容為ticket和wiki內容,其實查詢的就是timeline選單中列出的所有的內容。Trac使用全文檢索的方式進行查詢。具體就不在描述。Search輸入框中的最小長度的設定在Trac.ini配置檔案中進行配置,參考Help/Guide。
Trac中的Admin
Trac中的admin都是一些重要的操作,但是同時也是很簡單的操作,都是對trac整個環境的基本信息做一些設定。包含兩個部分的設定,即general和ticket。
項目周期
Trac採用面向進度的開發模型,因此產生了Milestone的概念,那么Milestone雖然建立了階段性的里程碑,但是里程碑具體怎么才能到達呢?這就需要採用ticket方式進行處理。當定義的所以的ticket全部closed時,就說明到達了里程碑,但是達到了也並不表示所有的ticket都是fixed,也許是其他的原因關閉的。還有雖然到達了里程碑,但是未必是按時完成的,但是總的階段性結束點是很明確的。
因此用trac管理一個項目,就要做好以下幾方面的工作:
•劃分里程碑
•劃分項目components
•劃分ticket
•熟練掌握Ticket的運作機制
•熟練掌握Change History的查看和使用
•熟練掌握Milestone的查看和使用
前面三項屬於項目架構範疇,後面三項屬於操作範疇。對於前面三項各自的劃分原則是:
劃分里程碑原則
里程碑是一些事件,我們設立這些事件是為了表明當這些事件發生的時候,我們的工作已經達到了某種程度。而我們不能夠僅僅使用時間點來劃分里程碑。
至於選擇什麼事件作為里程碑,其實就是選擇項目利益相關人員最關心的事件作為里程碑。如果為項目計畫時間表開一個會議,肯定有很多人提出他們關心的事件或者時間點,比如銷售人員會問開發人員什麼時候完成alpha測試,好讓他們去找客戶做beta測試,老闆在聽完大致計畫之後會問什麼時候拿出第一個運行版本,開發人員會問什麼時候能夠簽約以便可以開始正式的工作。這些事件或者時間點就是最好的里程碑,里程碑之所以能夠標示項目進度,是因為它是項目相關人員關心的事件,里程碑標示進度的含義也是事件的含義。
在實際項目工作中,里程碑是否已經達到,也是非常明確的事情。事件是否發生應該是很明確的,如果不明確說明選擇的里程碑不是一個事件,比如“評審通過”、客戶在契約上籤字、需求分析文檔被老闆批准,測試中bug收斂,這些事情是否發生都是很清晰的,是一個明確的時間點。
劃分Component原則
一般情況下按功能模組來劃分,比如協同辦公系統可以劃分為公文處理、個人辦公、電子郵件等等。組件和里程碑之間的關係是,一個組件可以屬於多個裡程碑,當然一個里程碑裡面也可以包含多個組件,它們之間是多對多的關係,但是在trac裡面是以里程碑為導向的,所以我們應該站在里程碑這條軸上去管理軟體項目。
具體的Component如何劃分,這就需要跟實際的情況決定了。
劃分Ticket原則
Ticket系統簡介 Ticket系統是Trac中關於項目管理的一個重要單元,它是一個簡單有效的版本差異和Bug跟蹤系統。
在項目開發過程中出現的任何問題,都可以用一個Ticket來標識,例如Bug,項目計畫,功能改進,項目建議,Todo等等,都可以寫成一個Ticket,開發人員通過訪問查看Ticket系統,可以及時的了解到項目進度,有待解決的地方等等
每個Ticket都可以被修改和說明(Description屬性),並說明這個Ticket是Bug還是項目建議還是其他什麼(Type屬性),指派由哪個人對這個Ticket負責(Assigned to/Owner屬性),設定Ticket的優先權(Priority屬性),設定Ticket的最終完成時間(Milestone屬性),設定這個Ticket屬於哪個模組(Component屬性)。一個Milestone包含一個名稱和時間,其中時間即為項目中這個階段的預計完結時間,我們通過設定這個屬性,來表明所要創建的Ticket屬於哪個Milestone,屬於項目的哪個階段,該在哪個時間之前完成。
安裝
Trac 的主頁上有大量的文檔,指導用戶進行安裝和升級。具體安裝過程參見主頁上相關文檔 ;
另外也有一些項目提供預先打包的“Portable”安裝方式 ;