敏捷開發之Scrum掃盲篇
現在敏捷開發是越來越火了,人人都在談敏捷,人人都在學習Scrum和XP...
為了不落後他人,於是我也開始學習Scrum,今天主要是對我最近閱讀的相關資料,根據自己的理解,用自己的話來講述Scrum中的各個環節,主要目的有兩個,一個是進行知識的總結,另外一個是覺得網上很多學習資料的講述方式讓初學者不太容易理解;所以我決定寫一篇掃盲性的博文,同時試著也與園內的朋友一起分享交流一下,希望對初學者有幫助。
什麼是敏捷開發?
敏捷開發(Agile Development)是一種以人為核心、迭代、循序漸進的開發方法。
怎麼理解呢?首先,我們要理解它不是一門技術,它是一種開發方法,也就是一種軟體開發的流程,它會指導我們用規定的環節去一步一步完成專案的開發;而這種開發方式的主要驅動核心是人;它採用的是迭代式開發;
為什麼說是以人為核心?
我們大部分人都學過瀑布開發模型,它是以文件為驅動的,為什麼呢?因為在瀑布的整個開發過程中,要寫大量的文件,把需求文件寫出來後,開發人員都是根據文件進行開發的,一切以文件為依據;而敏捷開發它只寫有必要的文件,或儘量少寫文件,敏捷開發注重的是人與人之間,面對面的交流,所以它強調以人為核心。
什麼是迭代?
迭代是指把一個複雜且開發週期很長的開發任務,分解為很多小週期可完成的任務,這樣的一個週期就是一次迭代的過程;同時每一次迭代都可以生產或開發出一個可以交付的軟體產品。
關於Scrum和XP
前面說了敏捷它是一種指導思想或開發方式,但是它沒有明確告訴我們到底採用什麼樣的流程進行開發,而Scrum和XP就是敏捷開發的具體方式了,你可以採用Scrum方式也可以採用XP方式;Scrum和XP的區別是,Scrum偏重於過程,XP則偏重於實踐,但是實際中,兩者是結合一起應用的,這裡我主要講Scrum。
什麼是Scrum?
Scrum的英文意思是橄欖球運動的一個專業術語,表示“爭球”的動作;把一個開發流程的名字取名為Scrum,我想你一定能想象出你的開發團隊在開發一個專案時,大家像打橄欖球一樣迅速、富有戰鬥激情、人人你爭我搶地完成它,你一定會感到非常興奮的。
而Scrum就是這樣的一個開發流程,運用該流程,你就能看到你團隊高效的工作。
【Scrum開發流程中的三大角色】
產品負責人(Product Owner)
主要負責確定產品的功能和達到要求的標準,指定軟體的釋出日期和交付的內容,同時有權力接受或拒絕開發團隊的工作成果。
流程管理員(Scrum Master)
主要負責整個Scrum流程在專案中的順利實施和進行,以及清除擋在客戶和開發工作之間的溝通障礙,使得客戶可以直接驅動開發。
開發團隊(Scrum Team)
主要負責軟體產品在Scrum規定流程下進行開發工作,人數控制在5~10人左右,每個成員可能負責不同的技術方面,但要求每成員必須要有很強的自我管理能力,同時具有一定的表達能力;成員可以採用任何工作方式,只要能達到Sprint的目標。
Scrum流程圖
//------------------------
下面,我們開始講具體實施流程,但是在講之前,我還要對一個英文單詞進行講解。
什麼是Sprint?
Sprint是短距離賽跑的意思,這裡面指的是一次迭代,而一次迭代的週期是1個月時間(即4個星期),也就是我們要把一次迭代的開發內容以最快的速度完成它,這個過程我們稱它為Sprint。
如何進行Scrum開發?
1、我們首先需要確定一個Product Backlog(按優先順序排列的一個產品需求列表),這個是由Product Owner 負責的;
2、Scrum Team根據Product Backlog列表,做工作量的預估和安排;
3、有了Product Backlog列表,我們需要通過 Sprint Planning Meeting(Sprint計劃會議) 來從中挑選出一個Story作為本次迭代完成的目標,這個目標的時間週期是1~4個星期,然後把這個Story進行細化,形成一個Sprint Backlog;
4、Sprint Backlog是由Scrum Team去完成的,每個成員根據Sprint Backlog再細化成更小的任務(細到每個任務的工作量在2天內能完成);
5、在Scrum Team完成計劃會議上選出的Sprint Backlog過程中,需要進行 Daily Scrum Meeting(每日站立會議),每次會議控制在15分鐘左右,每個人都必須發言,並且要向所有成員當面彙報你昨天完成了什麼,並且向所有成員承諾你今天要完成什麼,同時遇到不能解決的問題也可以提出,每個人回答完成後,要走到黑板前更新自己的 Sprint burn down(Sprint燃盡圖);
6、做到每日整合,也就是每天都要有一個可以成功編譯、並且可以演示的版本;很多人可能還沒有用過自動化的每日整合,其實TFS就有這個功能,它可以支援每次有成員進行簽入操作的時候,在伺服器上自動獲取最新版本,然後在伺服器中編譯,如果通過則馬上再執行單元測試程式碼,如果也全部通過,則將該版本釋出,這時一次正式的簽入操作才儲存到TFS中,中間有任何失敗,都會用郵件通知專案管理人員;
7、當一個Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,這時,我們要進行 Srpint Review Meeting(演示會議),也稱為評審會議,產品負責人和客戶都要參加(最好本公司老闆也參加),每一個Scrum Team的成員都要向他們演示自己完成的軟體產品(這個會議非常重要,一定不能取消);
8、最後就是 Sprint Retrospective Meeting(回顧會議),也稱為總結會議,以輪流發言方式進行,每個人都要發言,總結並討論改進的地方,放入下一輪Sprint的產品需求中;
下面是運用Scrum開發流程中的一些場景圖:
上圖是一個 Product Backlog 的示例。
上圖就是每日的站立會議了,參會人員可以隨意姿勢站立,任務看板要保證讓每個人看到,當每個人發言完後,要走到任務版前更新自己的燃盡圖。
任務看版包含 未完成、正在做、已完成 的工作狀態,假設你今天把一個未完成的工作已經完成,那麼你要把小卡片從未完成區域貼到已完成區域。
每個人的工作進度和完成情況都是公開的,如果有一個人的工作任務在某一個位置放了好幾天,大家都能發現他的工作進度出現了什麼問題(成員人數最好是5~7個,這樣每人可以使用一種專用顏色的標籤紙,一眼就可以從任務版看出誰的工作進度快,誰的工作進度慢)
上圖可不是撲克牌,它是計劃紙牌,它的作用是防止專案在開發過程中,被某些人所領導。
怎麼用的呢?比如A程式設計師開發一個功能,需要5個小時,B程式設計師認為只需要半小時,那他們各自取相應的牌,藏在手中,最後攤牌,如果時間差距很大,那麼A和B就可以討論A為什麼要5個小時...
相關文章
- scrum敏捷開發Scrum敏捷
- scrum|敏捷開發之任務看板Scrum敏捷
- 敏捷開發(XP,SCRUM)敏捷Scrum
- 敏捷開發--Scrum開發模型敏捷Scrum模型
- 敏捷開發實踐之Scrum方法運用敏捷Scrum
- RocketMQ掃盲篇MQ
- Scrum敏捷開發方法實踐Scrum敏捷
- JVM快速掃盲篇JVM
- scrum敏捷開發工具leangoo標籤Scrum敏捷Go
- SCRUM敏捷開發規則一欄Scrum敏捷
- 關於Scrum敏捷開發,只看這一篇就夠了!Scrum敏捷
- Scrum敏捷軟體開發之技術實踐——測試驅動開發TDDScrum敏捷
- 碎碎念軟體研發02:敏捷之Scrum敏捷Scrum
- 最常用的scrum工具、敏捷開發工具、看板工具Scrum敏捷
- Scrum敏捷精要Scrum敏捷
- 敏捷和 Scrum 之間的區別敏捷Scrum
- 產品研發團隊Scrum敏捷開發協作流程Scrum敏捷
- [敏捷開發實踐](2) 用於開發和維持複雜產品的敏捷開發框架Scrum敏捷框架Scrum
- 【科普】Scrum——從橄欖球爭球到敏捷開發Scrum敏捷
- 說說我們的用的Scrum敏捷開發工具Scrum敏捷
- Scrum:兼顧計劃與靈活的敏捷開發Scrum敏捷
- 資料安全“掃盲篇”,看完就懂了
- 「掃盲」 ElasticsearchElasticsearch
- Promise掃盲Promise
- HTML掃盲HTML
- Scrum並不敏捷! - SimonScrum敏捷
- Scrum轉型(一) 為什麼敏捷和ScrumScrum敏捷
- PostgreSQL掃盲教程SQL
- ECMAScript 6 掃盲
- SCRUM: 敏捷團隊的故事(SCRUM: The Story of an Agile Team)——(3)Scrum敏捷
- Docker掃盲之容器與映象的基本使用Docker
- Java開發——Redis雲管理平臺實現方案CacheCloud掃盲JavaRedisCloud
- Android NDK開發掃盲及最新CMake的編譯使用Android編譯
- 敏捷開發之10問薦敏捷
- 敏捷開發流程之Scrum:3個角色、5個會議、12原則敏捷Scrum
- 8 款主流 Scrum 敏捷開發工具評測,建議先馬後看!Scrum敏捷
- Dozer掃盲級教程
- Spring AOP 掃盲Spring