Scrum是一種用於開發創新產品和服務的敏捷開發方式,我們首先來看一下敏捷開發過程和特點,並著重介紹Scrum框架的角色、活動和工件等內容,然後介紹團隊利用TAPD中的需求管理、缺陷管理、迭代管理等應用功能來幫助團隊有效實踐Scrum敏捷開發。
何為敏捷開發?
敏捷開發所倡導的是通過若干個短期的迭代週期(也稱為衝刺sprint,範圍一般是1周- 1個月),按一定的優先級不斷增量開發和實現產品功能,每次迭代獲得一個可運行的產品增量功能包。
敏捷開發首先需要建立一個按優先級排列的產品列表,其中由產品需求、功能優化或功能缺陷等類型清單項組成,排在前面的是優先級高的項,優先納入迭代計劃進行實現,這些項在納入迭代計劃前進行分解和細化,達到滿足開發團隊實現的粒度。
越往後排的項優先級越低,這部分需求暫時不會提上開發實現日程,當前階段可以粗略描述,也不必急於細化,以應對可能的變更。
每次迭代開始階段,從產品列表中選取一定數量的清單項作為本次迭代需要完成的目標任務,通常是由各方利益相關者討論決定的,數量的多少視開發團隊的情況而定,儘量匹配開發團隊的開發節奏。
迭代過程中開發團隊每天通過站立會的形式溝通工作進展和麵臨的問題,在這期間一般不再接受新的產品項或其他開發任務,特殊情況可以接受任務的置換。
在每次迭代結束時,團隊一起評審已實現的產品功能等工作項,並根據反饋優化當前的工作和開發方式。在這過程中,需要對產品列表進行持續的維護和梳理,比如插入新的需求、更新現有產品功能描述或移除不需要的工作項,並重新排列其優先級。在每次迭代結束後,開始規劃下一次迭代內容,重新開始整個過程。
Scrum框架
Scrum是敏捷開發方式的一種,在其框架中定義了三種角色:
產品負責人:負責敲定開發什麼,以什麼順序開發,產品列表的維護主要由其負責維護;
ScrumMaster:幫助團隊成員理解並樂於接受Scrum的價值觀和原則,指導和協助Scrum框架在組織內的執行和優化;
開發團隊:包括了架構師、開發人員、測試人員等傳統軟件開發角色。開發團隊作為一個整體,負責構建可工作的軟件產品;
下圖說明了Scrum框架中的角色、活動和工件:
- 產品負責人建立產品願景,並通過梳理形成產品列表;
- 衝刺(迭代)開始時,通過沖刺計劃會議圈定本次衝刺包含的開發工作,即衝刺列表。衝刺列表需要得到開發團隊的確認;
- 開發團隊接受到衝刺列表後,即開啟衝刺執行活動,在衝刺過程中每天通過站立會進行計劃的檢查和調整;
- 衝刺執行結束時,產出一個可交付的產品增量;
- 衝刺結束時,還需要通過沖刺評審和衝刺回顧對構建的產品進行審查和對執行過程進行回顧和優化。
使用TAPD進行Scrum開發實踐
TAPD上的應用主要包括需求管理、缺陷管理、迭代管理、故事牆、wiki以及報表等,利用這些TAPD應用功能,可以方便有效地實踐Scrum敏捷開發過程。
01產品列表
Scrum框架中的產品列表的項在TAPD中主要來自於需求和缺陷兩個中的管理內容,每個衝刺清單都從這兩部分工作中挑選和分配,其中:
需求清單主要記錄產品的功能需求、技術研究、以及非功能性需求等,通過需求分類進行歸類管理,還可以通過子需求的方式對粗粒度的需求進行分解和細化,對優先級的設置對需求項進行排序,另外也可以自定義視圖來篩選指定範圍的需求項,主要界面如下:
缺陷管理主要記錄已實現產品功能bug等,通過定義缺陷的錄入模板,明確缺陷的記錄內容,包括問題描述、排查過程、解決方案等,同樣可以定義視圖篩選指定條件的缺陷清單等,界面如下:
02 衝刺計劃與執行
在TAPD中通過迭代管理來實現在衝刺的計劃和執行,創建迭代時定義本次迭代的目標,並從需求和缺陷兩個列表中選取高優先級的項分配到衝刺計劃中,每個任務項落實到開發團隊中的具體人員。在執行過程中,每個需求任務的狀態遵循規劃中 →實現中 →已實現/已拒絕流程變動,每個缺陷任務的狀態遵循新 →接收處理 →已解決 →已驗證 →已關閉流程進行變動,通過對每個任務狀態進行更新和跟蹤,實現對衝刺計劃跟蹤與控制。
另外TAPD提供故事牆的形式展示衝刺計劃,包括了狀態故事牆和資源故事牆,通過資源故事牆可以瞭解開發團隊中每個人的任務情況與進展,每天可以根據此故事牆的展示內容來各自說明負責的工作情況和難點問題。
03衝刺回顧和知識沉澱
在衝刺結束階段,通過沖刺評審和回顧對當前衝刺的成果和過程進行反饋和整理,利用Wiki應用記錄衝刺回顧的內容和相關技術知識的整理內容。項目團隊所有人都可以訪問和更新,並且支持全文搜索,非常方便使用關鍵字查詢。開發團隊通過對衝刺的評審,確認產出的成果;通過對衝刺的回顧,找出執行過程的不足並加以優化;通過對業務和技術知識的沉澱,加速相關知識在團隊成員之間的流動。
總結
Scrum框架並不定義標準化過程,不能保證團隊在依照其步驟一步一步執行後,就一定能在規定時間內產出一個客戶滿意的產品。相反,每個團隊必須結合自身的情況,不斷摸索和改進,才能在基於Scrum敏捷框架之上建立一套特有且有效的實踐方法,形成自身的Scrum版本。