谈谈我理解的敏捷开发--转载
“敏捷開發(fā)” 幾乎成了互聯(lián)網(wǎng)家戶喻曉的一個(gè)熱門話題。每個(gè)人都在聊敏捷、Scrum、XP。
我對“敏捷”的認(rèn)識(shí)還算是在一個(gè)正在探索的階段。網(wǎng)上有非常多的資料,五花八門,對于初學(xué)者來說無形之中會(huì)設(shè)了很多的坎。剛好借此機(jī)會(huì)寫個(gè)文章幫助自己進(jìn)行知識(shí)的梳理和總結(jié),另外一方面也希望對剛接觸的人有所幫助。
“敏捷開發(fā)” 知多少?
敏捷開發(fā)(Agile Development)是一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方式。
它并不是一門技術(shù),而是一種開發(fā)方式,也就是一種軟件開發(fā)的流程。它會(huì)指導(dǎo)我們用規(guī)定的環(huán)節(jié)去一步一步完成項(xiàng)目的開發(fā)。因?yàn)樗捎玫氖堑介_發(fā),所以這種開發(fā)方式的主要驅(qū)動(dòng)核心是人。
那為什么說人才是主要的驅(qū)動(dòng)核心了?我們學(xué)過瀑布開發(fā)模型,它是以文檔作為驅(qū)動(dòng),開發(fā)人員都是根據(jù)產(chǎn)品部門提供的需求文檔進(jìn)行開發(fā)的,一切的核心是文檔,所以說文檔是這個(gè)模型中的一個(gè)核心。而敏捷開發(fā)的意義在于它只關(guān)注文檔中的重要點(diǎn),或者盡可能的去簡化文檔,敏捷開發(fā)其實(shí)更注重的是人與人之間的溝通、交流。所以它強(qiáng)調(diào)以人為核心。
迭代:迭代是指把一個(gè)復(fù)雜且開發(fā)周期很長的開發(fā)任務(wù),分解為很多小周期可完成的任務(wù),這樣的一個(gè)周期就是一次迭代的過程;同時(shí)每一次迭代都可以生產(chǎn)或開發(fā)出一個(gè)可以交付的軟件產(chǎn)品。Scrum 和 XP?
Scrum: 英文意思是橄欖球運(yùn)動(dòng)的一個(gè)專業(yè)術(shù)語,表示“爭球”的動(dòng)作;把一個(gè)開發(fā)流程的名字取名為Scrum,我想你一定能想象出你的開發(fā)團(tuán)隊(duì)在開發(fā)一個(gè)項(xiàng)目時(shí),大家像打橄欖球一樣迅速、富有戰(zhàn)斗激情、人人你爭我搶地完成它,你一定會(huì)感到非常興奮的。而Scrum就是這樣的一個(gè)開發(fā)流程,運(yùn)用該流程,你就能看到你團(tuán)隊(duì)高效的工作。 XP:極限編程(Extreme Programming)??蓞⒖?#xff1a;http://blog.csdn.net/fw0124/article/details/48713959
文章開頭談敏捷的時(shí)候更注重的是概念性的,并沒有談到實(shí)際敏捷開發(fā)的實(shí)際應(yīng)用情景。這里開始之所以聊 Scrum 和 XP,因?yàn)檫@就是敏捷開發(fā)的具體方式了。在實(shí)際開發(fā)中,你可以采用 Scrum 方式也可以采用 XP 方式。
Scrum 和 XP 的區(qū)別是,Scrum 偏重于過程,XP 則偏重于實(shí)踐,但是實(shí)際中,兩者是結(jié)合一起應(yīng)用的。
Scrum開發(fā)流程中你會(huì)經(jīng)常聽到三個(gè)項(xiàng)目角色,比如 PO \ SM \ ST ,對于一個(gè)剛接觸敏捷開發(fā)的初學(xué)者來說,聽到這種簡稱內(nèi)心還是極為崩潰的,我當(dāng)初也是感同身受。這里順便簡單的補(bǔ)充下關(guān)于這三個(gè)角色的一個(gè)簡介
產(chǎn)品負(fù)責(zé)人(Product Owner):主要負(fù)責(zé)確定產(chǎn)品的功能和達(dá)到要求的標(biāo)準(zhǔn),指定軟件的發(fā)布日期和交付的內(nèi)容,同時(shí)有權(quán)力接受或拒絕開發(fā)團(tuán)隊(duì)的工作成果。 流程管理員(Scrum Master):主要負(fù)責(zé)整個(gè)Scrum流程在項(xiàng)目中的順利實(shí)施和進(jìn)行,以及清除擋在客戶和開發(fā)工作之間的溝通障礙,使得客戶可以直接驅(qū)動(dòng)開發(fā)。 開發(fā)團(tuán)隊(duì)(Scrum Team):主要負(fù)責(zé)軟件產(chǎn)品在Scrum規(guī)定流程下進(jìn)行開發(fā)工作,人數(shù)控制在5~10人左右,每個(gè)成員可能負(fù)責(zé)不同的技術(shù)方面,但要求每成員必須要有很強(qiáng)的自我管理能力,同時(shí)具有一定的表達(dá)能力;成員可以采用任何工作方式,只要能達(dá)到Sprint的目標(biāo)。Scrum 的流程圖:(以下圖片來自網(wǎng)絡(luò))
讀到這里,我想你對敏捷開發(fā)應(yīng)該有了一個(gè)初步的認(rèn)識(shí)了。接著我們繼續(xù)聊下敏捷開發(fā)的具體開發(fā)流程。
在此之前,我們先來談個(gè)在敏捷開發(fā)中最長聽到的單詞 “Sprint” 。談到這個(gè)詞,以往我第一次聽到的時(shí)候私下去查了,各種各樣的解釋,真是十臉懵逼。借著這次機(jī)會(huì)也給大家簡單的解釋下。
請看以下小段落:
Sprint:是短距離賽跑的意思,這里面指的是一次迭代,而一次迭代的周期是1個(gè)月時(shí)間(即4個(gè)星期),也就是我們要把一次迭代的開發(fā)內(nèi)容以最快的速度完成它,這個(gè)過程我們稱它為 Sprint那么最后我們來細(xì)聊下如何進(jìn)行 Scrum 的開發(fā)。
1.首先我們需要確認(rèn)一個(gè) PB ( Product Backlog , 即按優(yōu)先順序排列的一個(gè)產(chǎn)品需求列表) ,這是由 PO(Product Owner) 負(fù)責(zé)的
2.ST(Scrum Team) 會(huì)根據(jù) PB 列表,進(jìn)行工作量的預(yù)估和安排
3.有了 PB 列表,我們需要通過 Sprint Planning Meeting( Sprint 計(jì)劃會(huì)議)來從中挑選出一個(gè) Story 作為本次迭代完成的目標(biāo),這個(gè)目標(biāo)的時(shí)間周期是1~4個(gè)星期,然后把這個(gè)Story進(jìn)行細(xì)化,形成一個(gè)Sprint Backlog
4.Sprint Backlog 是由 ST 去完成的,每個(gè)成員根據(jù)Sprint Backlog再細(xì)化成更小的任務(wù)(細(xì)到每個(gè)任務(wù)的工作量在2天內(nèi)能完成)
5.在Scrum Team完成計(jì)劃會(huì)議上選出的Sprint Backlog過程中,需要進(jìn)行 Daily Scrum Meeting(每日站立會(huì)議),每次會(huì)議控制在15分鐘左右,每個(gè)人都必須發(fā)言,并且要向所有成員當(dāng)面匯報(bào)你昨天完成了什么,并且向所有成員承諾你今天要完成什么,同時(shí)遇到不能解決的問題也可以提出,每個(gè)人回答完成后,要走到黑板前更新自己的?Sprint burn down(Sprint燃盡圖)
6.做到每日集成,也就是每天都要有一個(gè)可以成功編譯、并且可以演示的版本;很多人可能還沒有用過自動(dòng)化的每日集成,其實(shí)TFS就有這個(gè)功能,它可以支持每次有成員進(jìn)行簽入操作的時(shí)候,在服務(wù)器上自動(dòng)獲取最新版本,然后在服務(wù)器中編譯,如果通過則馬上再執(zhí)行單元測試代碼,如果也全部通過,則將該版本發(fā)布,這時(shí)一次正式的簽入操作才保存到TFS中,中間有任何失敗,都會(huì)用郵件通知項(xiàng)目管理人員
7.當(dāng)一個(gè)Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,這時(shí),我們要進(jìn)行?Srpint Review Meeting(演示會(huì)議),也稱為評(píng)審會(huì)議,產(chǎn)品負(fù)責(zé)人和客戶都要參加(最好本公司老板也參加),每一個(gè)Scrum Team的成員都要向他們演示自己完成的軟件產(chǎn)品(這個(gè)會(huì)議非常重要,一定不能取消)
8.最后就是?Sprint Retrospective?Meeting(回顧會(huì)議),也稱為總結(jié)會(huì)議,以輪流發(fā)言方式進(jìn)行,每個(gè)人都要發(fā)言,總結(jié)并討論改進(jìn)的地方,放入下一輪Sprint的產(chǎn)品需求中
下面是運(yùn)用 Scrum 開發(fā)流程中的一些場景圖:
(每日站立會(huì)議,參會(huì)人員可以隨意姿勢站立,任務(wù)看板要保證讓每個(gè)人看到,當(dāng)每個(gè)人發(fā)言完后,要走到任務(wù)版前更新自己的燃盡圖)
(任務(wù)看版包含 未完成、正在做、已完成 的工作狀態(tài),假設(shè)你今天把一個(gè)未完成的工作已經(jīng)完成,那么你要把小卡片從未完成區(qū)域貼到已完成區(qū)域。每個(gè)人的工作進(jìn)度和完成情況都是公開的,如果有一個(gè)人的工作任務(wù)在某一個(gè)位置放了好幾天,大家都能發(fā)現(xiàn)他的工作進(jìn)度出現(xiàn)了什么問題(成員人數(shù)最好是5~7個(gè),這樣每人可以使用一種專用顏色的標(biāo)簽紙,一眼就可以從任務(wù)版看出誰的工作進(jìn)度快,誰的工作進(jìn)度慢)
?
(計(jì)劃紙牌,它的作用是防止項(xiàng)目在開發(fā)過程中,被某些人所領(lǐng)導(dǎo)。
怎么用的呢?比如A程序員開發(fā)一個(gè)功能,需要5個(gè)小時(shí),B程序員認(rèn)為只需要半小時(shí),那他們各自取相應(yīng)的牌,藏在手中,最后攤牌,如果時(shí)間差距很大,那么A和B就可以討論A為什么要5個(gè)小時(shí))
轉(zhuǎn)載于:https://www.cnblogs.com/taiyanhong/p/8719486.html
總結(jié)
以上是生活随笔為你收集整理的谈谈我理解的敏捷开发--转载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【《Effective C#》提炼总结】
- 下一篇: java中让数据生成excle文件并且支