什么是敏捷開發(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)品負責(zé)人(Product Owner)
主要負責(zé)確定產(chǎn)品的功能和達到要求的標準,指定軟件的發(fā)布日期和交付的內(nèi)容耀销,同時有權(quán)力接受或拒絕開發(fā)團隊的工作成果楼眷。
流程管理員(Scrum Master)
主要負責(zé)整個Scrum流程在項目中的順利實施和進行,以及清除擋在客戶和開發(fā)工作之間的溝通障礙熊尉,使得客戶可以直接驅(qū)動開發(fā)罐柳。
開發(fā)團隊(Scrum Team)
主要負責(zé)軟件產(chǎn)品在Scrum規(guī)定流程下進行開發(fā)工作,人數(shù)控制在5~10人左右狰住,每個成員可能負責(zé)不同的技術(shù)方面张吉,但要求每成員必須要有很強的自我管理能力,同時具有一定的表達能力催植;成員可以采用任何工作方式肮蛹,只要能達到Sprint的目標。
什么是Sprint创南?
Sprint是短距離賽跑的意思伦忠,這里面指的是一次迭代,而一次迭代的周期是1個月時間(即4個星期)扰藕,也就是我們要把一次迭代的開發(fā)內(nèi)容以最快的速度完成它缓苛,這個過程我們稱它為Sprint。
如何進行Scrum開發(fā)邓深?
1未桥、我們首先需要確定一個Product Backlog(按優(yōu)先順序排列的一個產(chǎn)品需求列表),這個是由Product Owner 負責(zé)的芥备;
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ā)言师枣,并且要向所有成員當(dāng)面匯報你昨天完成了什么,并且向所有成員承諾你今天要完成什么萧落,同時遇到不能解決的問題也可以提出践美,每個人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃盡圖)铐尚;
6拨脉、做到每日集成,也就是每天都要有一個可以成功編譯宣增、并且可以演示的版本玫膀;很多人可能還沒有用過自動化的每日集成,其實TFS就有這個功能爹脾,它可以支持每次有成員進行簽入操作的時候帖旨,在服務(wù)器上自動獲取最新版本,然后在服務(wù)器中編譯灵妨,如果通過則馬上再執(zhí)行單元測試代碼解阅,如果也全部通過,則將該版本發(fā)布泌霍,這時一次正式的簽入操作才保存到TFS中货抄,中間有任何失敗,都會用郵件通知項目管理人員朱转;
7蟹地、當(dāng)一個Story完成,也就是Sprint Backlog被完成藤为,也就表示一次Sprint完成怪与,這時,我們要進行 Srpint Review Meeting(演示會議)缅疟,也稱為評審會議分别,產(chǎn)品負責(zé)人和客戶都要參加(最好本公司老板也參加)遍愿,每一個Scrum Team的成員都要向他們演示自己完成的軟件產(chǎn)品(這個會議非常重要,一定不能取消)耘斩;
8沼填、最后就是 Sprint Retrospective Meeting(回顧會議),也稱為總結(jié)會議括授,以輪流發(fā)言方式進行倾哺,每個人都要發(fā)言,總結(jié)并討論改進的地方刽脖,放入下一輪Sprint的產(chǎn)品需求中;
敏捷開發(fā)的4句宣言
個體與交互 勝過 過程與工具
可以工作的軟件 勝過 面面俱到的文擋
客戶協(xié)作 勝過 合同談判
響應(yīng)變化 勝過 遵循計劃