專案規劃與估算
1 前言
在本篇筆者從專案初始階段講起,即專案規劃與估算,Work Item(工作項目)已能實作出WBS(Work Breakdown Structure工作分析結構)裡的主要觀念,包含多階層的工作包對應工作項目,以及工作的相依關係。專案估算則是新加的功能,讓我們能依歷史資料來規劃現階段專案人力資源,並可分析現有人力是否有衝突情形。
2 多階層的Work Item
以往VSTS2008 Work Item有一部份不太合理,就是Work Item的階層是平的,只有一階,雖然我們可以透過Area、Iteration來對Work Item進行分類,但總是沒有好的使用者界面顯示與維護方式,這種單階的思維可能比較適用於小型專案,或是僅把Work Item用於Bug管控。在VSTS2010提供了多階層的支援,讓我們可以將大的Work Item往下拆解小的Work Item,並且沒有階層限制,這才符合WBS的精神。
在Project與Excel同樣能展現多階層Work Item,筆者就從Project介紹起,首先開啓Project2007,並連接TFS2010(過程與連結TFS2008相同),規劃我們的WBS,筆者設定了三階,並設定Work Item Type為”Task”,如下圖,完成後Publish至TFS2010。
圖1 在Project2007規劃WBS
接著請開啓Visual Studio 2010,在Team Explorer -> 您的Team Project -> Work Items -> Team Queries,點選”Open Task”,此時發現查詢結果跟過去一樣,那是因為預設的Type of Query為”Flat List of Work Items”,它是VSTS2010新增選項,請按工具列上的[Edit Query]鈕,將Type of Query改為”Tree of Work Items”,就會看到如Project2007裡的展現方式。
圖2 Flat List Query Type查詢結果
圖3 Tree Query Type查詢結果
同樣的資料我們用Excel2007開啟,會看到如下畫面,Work Item的Title欄位對應多個欄來顯示,所以三個階層就會對應成Title 1、Title 2、Title 3,看起來有點奇怪,若我要在Excel查詢Title就必須先知道它的所在階層,筆者猜想要在Excel裡同一欄顯示出階層關係可能有困難,所以微軟採用這種折衷作法。
圖4 在Excel2007展現的多階WBS
接下來我們來看看Work Item結構跟過去有什麼不一樣,請開啓”Use Case 1” Work Item,下面Tab Pages之Links頁改成”Implementation”及”Other Links”頁,在”Implementation”頁即用於維護此Work Item之父子階層關係。
圖5 維護Work Item父子階層關係
接著讓筆者介紹另一種Work Item關係:Predecessor(先執行工作)、Successor(後執行工作),用於表示Work Item執行順序關係,讓我們再回到Project2007設定執行順序關係,只要選擇兩個Work Item,按[Link Tasks]鈕即完成設定,最後請Publish至TFS,回到Visual Studio開啓此Work Item之”Other Links”頁即可看見Predecessor、Successor的設定。
圖6 維護Work Item執行順序關係
接下來介紹另外一種Type of Query:”Work Items and Direct Links”,它是用於查詢Work Item的相關連結(關係),在查詢的Editor視窗,選擇”Type of Query”欄位為” Work Items and Direct Links”,整個畫面分為三個區段,第一區段決定父階Work Item查詢條件;第二區段決定子階Work Item查詢條件;第三區段決定是否顯示有關係、沒有關係、皆要,以及關係的類型,分為Parent、Child、Predecessor、Successor、Related等等,下圖範例為顯示有Predecessor、Successor關係的Work Item:
圖7 顯示有Predecessor、Successor關係的Work Item之查詢條件與結果
3 專案估算
這一節介紹的新功能是關於專案估算,在VSTS2008的報表分為兩類:Reports Service、Web Part,這兩種報表雖然功能強大,但是客製化的難度不低,在VSTS2010加入第三種類型:Excel Service,它的客戶化難度比較低,只要熟悉Excel,就能客製VSTS的報表。
在VSTS2010裡有一張專案估算的Excel報表,位於Team Explorer -> Documents -> Shared Documents -> Iteration 1 -> Iteration Backlog.xlsm,滑鼠雙擊開啓它,第一頁”Iteration Backlog”即載入此專案所有的Work Item,代表的是專案所有的工作,裡面有三個欄位需要填入:”Assigned To”、”Original Estimate”(估算人時)、”Remaining Work”(待辦工作工時)。在VSTS2010新增了”Original Estimate”,讓我們能夠保留原始的估算資訊,以作為後續與實際產出的比較基準,但筆者認為這種單純以工時來控管進度的方式還是有些簡單,目前主流的專案進度管理方法是實獲值管理(Earned Value Management),工時與進度需要各別欄位儲存。請讀者將之前規畫的Work Item填入此三個欄位,並使”Original Estimate”等於”Remaining Work”,如下圖:
圖8 設定Iteration Backlog
接著切換至第二頁”Capacity Planning”,可以用來規畫在一個Iteration(階段)期間,所有可用的人力是否能符合此Iteration所有Work Item的工時需求(即Iteration Backlog),在右上方”Historical Data from Last Iteration”表格,若我們所要估算的Iteration不是第一個,可以透過它計算上一個Iteration歷史資料,每人每天產出工時,以作為這次Iteration估算參考。在”Current Iteration”表格填入對應的Iteration、開始結束日期(注意!今天之前的日期將不會納入可用工時)、預計投入的人員數。在”Holidays”表格規畫此Iteration是否有特別假日(除了星期六日)。在”Planned Interruptions during Current Iteration”表格用於規畫專案成員個別的請假情形,在”Individual Capacity”填入專案成員及其每人每日投入工時(正常情況是一天8小時),最後它會幫我們算出每個人工作量是否有超支(Over Allocated)或不足(Under Allocated)情形。
以下分析範例會比較估算與實際值,第三頁”Breakdown Chart”會分析Work Item實際完成速度,推算出Actual Trend,讓我們可以與原始估算的Idel Trend來比較。第四頁的”Velocity Tracking”可以檢視團隊估算每日所需產出工時與每日實際產出工時的差異。
圖9 Capacity Planning之Current Iteration
圖10 Capacity Planning之Individual Capacity
圖11 Individual Capacity長條圖分析
圖12 Breakdown Chart分析
圖13 Velocity Tracking分析