2014年11月8日 星期六

[經驗分享]如何用VS Online及Scrum帶領兩岸三地團隊進行專案開發與管理 - (六) 從Features展開Backlogs

在實務上,專案可以不寫Features,但不可能跳過Backlogs。 由於蒐集好Features之後,基本上Features只是客戶的Wish List,談不上是什麼規格,基本上只是針對系統需求的期待而已。因此,我們會讓PO稍微排一下優先順序(當然是參考客戶的意見),接著,開始把Features展開成為Backlogs。實務上,你也可以把Features視為Backlogs的大項分類。如果系統不是很大,那只寫Backlogs不寫Features(或是用後面會提到的階層式Backlogs取代Features)也並無不可。

如果參考微軟MSDN網站上的翻譯,微軟把Backlogs稱為『待處理項目 』,類型上還分為三種。

不過我倒是覺得,我們可以從比較扼要的角度來看Backlogs(簡化可以降低工具和開發方法導入的困難度)。

在這邊,我們先簡單定義一下。我們將一開始建立好尚未放入Sprint中)的Backlogs,統稱之為Product Backlogs,至於進入Sprint之後,被放入特定Sprint中的Backlogs,我們稱之為Sprint Backlogs。因此,剛寫好的Backlogs,全都是Product Backlogs。

至於何時要將Product Backlogs放入特定Sprint(成為Sprint Backlogs)? 則是Planning Meeting要決定的事情了。(會在後面Planning Meeting中介紹)

此外,剛才前面有提到過,多個backlogs之間,也是可以有階層關係的,例如:
 
這個階層也可以視為Backlogs的分類,有點像是Features的意味。
 
Backlogs的來源其實有很多種可能性,原則上大多是從Features(或是上一層的Backlog)展開,或是直接從系統分析後的規格書謄過來。
 
=====================================
備註:
        這邊要做一些說明,一般來說,我並不會希望團隊在run scrum的過程中,額外多一個撰寫系統分析說明書這一段。因此,我們一般是直接針對end-user做系統需求訪談,訪談時直接開著VS Online,立即把Features或Backlogs敲到系統裡面,最好不僅僅是標題,還包含初次訪談的手札或筆記甚至錄音,直接以附件的方式加入Backlogs或是填入Backlogs的Description中都可以。
        還記得嗎?我們提過,對於敏捷開發來說,產出客戶可用的軟體是我們的首要目標,也因此,非必要的文件能少就少。如果真需要一些文件(特別是給客戶的),我都盡可能讓Product Owner或是Scrum Master來撰寫,而Developer就是focus在軟體的開發上。

=====================================

敲入Backlogs的方式無須多說,跟Features差不多。基本上就是在Backlogs畫面中title的部分,直接輸入後按下Add即可:

 
在輸入的時候,你一定會發現,一次輸入完大部份能夠想到或列出的Backlogs後,再視實際需要逐一double-click進入輸入description或acceptance critiria,會比你輸入一個backlog就點進去輸入該backlogs的description會來的順暢的多。
 
當你在某一個Backlog上Double-click,會開啟如下圖的畫面,您可以針對每一個欄位,輸入相關的資料:
 
  你會發現上圖中的視窗上半部有一些欄位,我們針對比較重要的欄位說明如下:
  • [Iteration] 也就是這個Backlog被放到哪一個Sprint,一開始建立不用太在意,我們後面會用拖曳的方式來調整它。
  • [Assigned To] 這個Backlog的負責人。
  • [State] 該Backlog的狀態,有New, Approved , Committed, Done, Removed這幾種。在我們這邊是這樣用的,剛建立的Backlog狀態當然都是New,一旦該Backlog規格確認無誤(這是PO和SM的職責),確定可以開始進行開發,則會被移入Approved,這時候多半也代表著該Backlogs已經(或快要)放入Sprint中了。團隊中的開發人員,永遠只focus在當前Sprint所要進行的Backlogs上,一旦開發完成(也通過Unit Test)之後,則Scrum Master可把該Backlog狀態調整為Committed,待PO(或客戶)測試無誤後,則該Backlogs移入done。
  • [Effort]這個backlog的預估工作量。這個數值不一定是天數,嚴格來說這個數值應該是backlog彼此之間預估工作量的差異,它可以用來判斷backlogs大概會被放到哪一個Sprint。不過礙於輸入與參考、計算的便利性,我們大多都是輸入預估天數或預估時數 。
  • 在 [Business Value] 中可輸入數字,表示項目的相對商業價值。(也就是出錢的人有多重視啦,這跟Backlog Priority可能不同喔)
  • [Area]前面在建立iteration的時候曾經提到過,我們可以將一個較大的專案,依照開發團隊或是模組切割成不同的Area/Team,一般來說我們是用開發團隊來切割。當一個Project有多個Area/Team的時候,這個欄位就可以用來識別該Backlog屬於哪一個Area。

 
本篇收錄自 - 『敏捷開發專案管理與架構設計實務



沒有留言: