敏捷開發——Scrum核心
在上篇博文中,博主主要對教授課程中所透露的現代開發熱點詞彙進行了總結和介紹。本文將分享自己對敏捷開發的認識,和實現敏捷開發思想的核心方法。
敏捷開發:
一、什麼是敏捷開發?
AgileDevelopment是一種以人為核心、迭代、循序漸進的開發方法。
1、以人為核心vs以文件為驅動
瀑布模型大家都不會陌生,其主要特點之一就是在瀑布模型開發過程中要編寫大量的文件,從需求界定到系統實現,每個開發環節,文件起著至關重要的作用;而敏捷開發的特點則是隻寫必要文件,注重人與人、面對面的交流。
2、迭代開發vs傳統開發
敏捷一詞本就很精確的確定了運用敏捷思想開發的特點:短、快、準;迭代就是實現這個短快準的具體方式,將一個週期長、複雜的任務細分,每個細顆粒任務可把控在短期內完成。一次迭代完成都可以產生一個可交付的產品。
二、如何實踐敏捷開發?
前面提到敏捷是一種指導思想或開發方式,但是它沒有明確告訴我們採用什麼樣的流程進行開發,而Scrum和XP就是敏捷開發的具體方式了,兩者的區別是,Scrum偏重於過程,XP則偏重於實踐,但是實際中,兩者經常是結合一起使用。
敏捷開發實踐者——Scrum
一、Scrum基本認識:
1、什麼是scrum?
Scrum起源於橄欖球運動的一個專業術語,表示“爭球”的動作;在敏捷中,把一個開發流程的名字取名為Scrum,主要寓意在於提現整個團隊的積極奮戰的開發狀態。
2、什麼是sprint?
Scrum具體指整個系統開發的流程,而這個大流程又由多次迭代完成,一次迭代的過程稱之為一個sprint.
3、Scrum三大角色:
產品負責人(Product Owner)——專案經理
主要負責確定產品的功能和達到要求的標準,指定軟體的釋出日期和交付的內容,同時有權力接受或拒絕開發團隊的工作成果。
流程管理員(Scrum Master)——專案組長
主要負責整個Scrum流程在專案中的順利實施和進行,以及清除擋在客戶和開發工作之間的溝通障礙,使得客戶可以直接驅動開發。
開發團隊(Scrum Team)——開發人員
主要負責軟體產品在Scrum規定流程下進行開發工作,人數控制在5~10人左右,每個成員可能負責不同的技術方面,但要求每成員必須要有很強的自我管理能力,同時具有一定的表達能力;成員可以採用任何工作方式,只要能達到Sprint
4、Scrum三大任務顆粒:
任務顆粒 |
描述 |
預期完成耗時 |
Product |
完整交付、已完成的產品 |
按照專案大小具體而定 |
Product-backlog |
按照需求優先順序排列產生的列表文件 |
|
Story |
Product-backlog中所劃分的每個需求為一個story;完成一個story為一次迭代 |
1——4周 |
Sprint Backlog |
將story細化,形成sprint優先順序 |
|
Sprint |
Story細化形成的具體開發任務,還可進行再細化,sprint細化後任務控制在2天內完成 |
由story細化的程度決定,粒度小,完成時間短,粒度大,完成時間長 |
二、Scrum開發流程:
-
產品負責人首先將需求按照優先順序進行排列,產生一個Product Backlog。作用類似於傳統開發中專案經理先確定需求文件。
-
有了ProductBacklog列表,我們需要通過Sprint Planning Meeting(Sprint計劃會議) 來從中挑選出一個Story作為本次迭代完成的目標,這個目標的時間週期是1~4個星期,然後把這個Story進行細化,形成一個Sprint Backlog;
-
Sprint Backlog是開發人員的任務,每個成員根據SprintBacklog再細化成更小的任務(細到每個任務的工作量在2天內能完成);
-
在開發人員完成計劃會議上選出的Sprint Backlog過程中,需要進行 Daily Scrum Meeting(每日站立會議),每次會議控制在15分鐘左右,每個人都必須發言,並且要向所有成員當面彙報你昨天完成了什麼,並且向所有成員承諾你今天要完成什麼,同時遇到不能解決的問題也可以提出,每個人回答完成後,要走到看板前更新自己的 Sprint burn down(Sprint燃盡圖);
-
當一個Story完成時,也就是一次迭代完成,我們要進行 Srpint Review Meeting(演示會議),也稱為評審會議,產品負責人和客戶都要參加,每一個Scrum Team的成員都要向他們演示自己完成的軟體產品。