現(xiàn)在敏捷開發(fā)是越來越火了做粤,人人都在談敏捷,人人都在學(xué)習Scrum和XP...
為了不落后他人捉撮,于是我也開始學(xué)習Scrum怕品,今天主要是對我最近閱讀的相關(guān)資料,根據(jù)自己的理解巾遭,用自己的話來講述Scrum中的各個環(huán)節(jié)肉康,主要目的有兩個闯估,一個是進行知識的總結(jié),另外一個是覺得網(wǎng)上很多學(xué)習資料的講述方式讓初學(xué)者不太容易理解吼和;所以我決定寫一篇掃盲性的博文涨薪,同時試著也與園內(nèi)的朋友一起分享交流一下,希望對初學(xué)者有幫助炫乓。
什么是敏捷開發(fā)刚夺?
敏捷開發(fā)(Agile Development)是一種以人為核心、迭代末捣、循序漸進的開發(fā)方法侠姑。
怎么理解呢?首先箩做,我們要理解它不是一門技術(shù)莽红,它是一種開發(fā)方法,也就是一種軟件開發(fā)的流程邦邦,它會指導(dǎo)我們用規(guī)定的環(huán)節(jié)去一步一步完成項目的開發(fā)安吁;而這種開發(fā)方式的主要驅(qū)動核心是人;它采用的是迭代式開發(fā)燃辖;
為什么說是以人為核心鬼店?
我們大部分人都學(xué)過瀑布開發(fā)模型,它是以文檔為驅(qū)動的郭赐,為什么呢薪韩?因為在瀑布的整個開發(fā)過程中,要寫大量的文檔捌锭,把需求文檔寫出來后俘陷,開發(fā)人員都是根據(jù)文檔進行開發(fā)的,一切以文檔為依據(jù)观谦;而敏捷開發(fā)它只寫有必要的文檔拉盾,或盡量少寫文檔,敏捷開發(fā)注重的是人與人之間豁状,面對面的交流捉偏,所以它強調(diào)以人為核心。
什么是迭代泻红?
迭代是指把一個復(fù)雜且開發(fā)周期很長的開發(fā)任務(wù)夭禽,分解為很多小周期可完成的任務(wù),這樣的一個周期就是一次迭代的過程谊路;同時每一次迭代都可以生產(chǎn)或開發(fā)出一個可以交付的軟件產(chǎn)品讹躯。
關(guān)于Scrum和XP
前面說了敏捷它是一種指導(dǎo)思想或開發(fā)方式,但是它沒有明確告訴我們到底采用什么樣的流程進行開發(fā),而Scrum和XP就是敏捷開發(fā)的具體方式了潮梯,你可以采用Scrum方式也可以采用XP方式骗灶;Scrum和XP的區(qū)別是,Scrum偏重于過程秉馏,XP則偏重于實踐耙旦,但是實際中,兩者是結(jié)合一起應(yīng)用的萝究,這里我主要講Scrum免都。
什么是Scrum?
Scrum的英文意思是橄欖球運動的一個專業(yè)術(shù)語糊肤,表示“爭球”的動作琴昆;把一個開發(fā)流程的名字取名為Scrum,我想你一定能想象出你的開發(fā)團隊在開發(fā)一個項目時馆揉,大家像打橄欖球一樣迅速业舍、富有戰(zhàn)斗激情、人人你爭我搶地完成它升酣,你一定會感到非常興奮的舷暮。
而Scrum就是這樣的一個開發(fā)流程,運用該流程噩茄,你就能看到你團隊高效的工作下面。
【Scrum開發(fā)流程中的三大角色】
- 產(chǎn)品負責人(Product Owner)
主要負責確定產(chǎn)品的功能和達到要求的標準,指定軟件的發(fā)布日期和交付的內(nèi)容绩聘,同時有權(quán)力接受或拒絕開發(fā)團隊的工作成果沥割。 - 流程管理員(Scrum Master)
主要負責整個Scrum流程在項目中的順利實施和進行,以及清除擋在客戶和開發(fā)工作之間的溝通障礙凿菩,使得客戶可以直接驅(qū)動開發(fā)机杜。 - 開發(fā)團隊(Scrum Team)
主要負責軟件產(chǎn)品在Scrum規(guī)定流程下進行開發(fā)工作,人數(shù)控制在5~10人左右衅谷,每個成員可能負責不同的技術(shù)方面椒拗,但要求每成員必須要有很強的自我管理能力,同時具有一定的表達能力获黔;成員可以采用任何工作方式蚀苛,只要能達到Sprint的目標。
Scrum流程圖
下面玷氏,我們開始講具體實施流程堵未,但是在講之前,我還要對一個英文單詞進行講解盏触。
什么是Sprint渗蟹?
Sprint是短距離賽跑的意思侦厚,這里面指的是一次迭代,而一次迭代的周期是1個月時間(即4個星期)拙徽,也就是我們要把一次迭代的開發(fā)內(nèi)容以最快的速度完成它,這個過程我們稱它為Sprint诗宣。
如何進行Scrum開發(fā)膘怕?
1、我們首先需要確定一個Product Backlog
(按優(yōu)先順序排列的一個產(chǎn)品需求列表)召庞,這個是由Product Owner
負責的岛心;
2、Scrum Team
根據(jù)Product Backlog
列表篮灼,做工作量的預(yù)估和安排忘古;
3、有了Product Backlog
列表诅诱,我們需要通過 Sprint Planning Meeting
(Sprint計劃會議) 來從中挑選出一個'Story'作為本次迭代完成的目標髓堪,這個目標的時間周期是1~4個星期,然后把這個Story
進行細化娘荡,形成一個Sprint Backlog
干旁;
4、Sprint Backlog
是由Scrum Team
去完成的炮沐,每個成員根據(jù)Sprint Backlog
再細化成更小的任務(wù)(細到每個任務(wù)的工作量在2天內(nèi)能完成)争群;
5、在Scrum Team
完成計劃會議上選出的Sprint Backlog
過程中大年,需要進行 Daily Scrum Meeting
(每日站立會議)换薄,每次會議控制在15分鐘左右,每個人都必須發(fā)言翔试,并且要向所有成員當面匯報你昨天完成了什么轻要,并且向所有成員承諾你今天要完成什么,同時遇到不能解決的問題也可以提出遏餐,每個人回答完成后伦腐,要走到黑板前更新自己的 Sprint burn down
(Sprint燃盡圖);
6失都、做到每日集成柏蘑,也就是每天都要有一個可以成功編譯、并且可以演示的版本粹庞;很多人可能還沒有用過自動化的每日集成咳焚,其實TFS就有這個功能,它可以支持每次有成員進行簽入操作的時候庞溜,在服務(wù)器上自動獲取最新版本革半,然后在服務(wù)器中編譯碑定,如果通過則馬上再執(zhí)行單元測試代碼,如果也全部通過又官,則將該版本發(fā)布延刘,這時一次正式的簽入操作才保存到TFS中,中間有任何失敗六敬,都會用郵件通知項目管理人員碘赖;
7、當一個Story
完成外构,也就是Sprint Backlog
被完成普泡,也就表示一次Sprint
完成,這時审编,我們要進行 Srpint Review Meeting
(演示會議)撼班,也稱為評審會議,產(chǎn)品負責人和客戶都要參加(最好本公司老板也參加)垒酬,每一個Scrum Team
的成員都要向他們演示自己完成的軟件產(chǎn)品(這個會議非常重要砰嘁,一定不能取消);
8伤溉、最后就是 Sprint Retrospective Meeting
(回顧會議)般码,也稱為總結(jié)會議,以輪流發(fā)言方式進行乱顾,每個人都要發(fā)言板祝,總結(jié)并討論改進的地方,放入下一輪Sprint
的產(chǎn)品需求中走净;
下面是運用Scrum開發(fā)流程中的一些場景圖:
上圖是一個 Product Backlog 的示例券时。
上圖就是每日的站立會議了,參會人員可以隨意姿勢站立伏伯,任務(wù)看板要保證讓每個人看到橘洞,當每個人發(fā)言完后,要走到任務(wù)版前更新自己的燃盡圖说搅。
任務(wù)看版包含 未完成炸枣、正在做、已完成 的工作狀態(tài)弄唧,假設(shè)你今天把一個未完成的工作已經(jīng)完成适肠,那么你要把小卡片從未完成區(qū)域貼到已完成區(qū)域。
每個人的工作進度和完成情況都是公開的候引,如果有一個人的工作任務(wù)在某一個位置放了好幾天侯养,大家都能發(fā)現(xiàn)他的工作進度出現(xiàn)了什么問題(成員人數(shù)最好是5~7個,這樣每人可以使用一種專用顏色的標簽紙澄干,一眼就可以從任務(wù)版看出誰的工作進度快逛揩,誰的工作進度慢)
上圖可不是撲克牌柠傍,它是計劃紙牌,它的作用是防止項目在開發(fā)過程中辩稽,被某些人所領(lǐng)導(dǎo)惧笛。
怎么用的呢?比如A程序員開發(fā)一個功能逞泄,需要5個小時徐紧,B程序員認為只需要半小時,那他們各自取相應(yīng)的牌炭懊,藏在手中,最后攤牌拂檩,如果時間差距很大侮腹,那么A和B就可以討論A為什么要5個小時...