SCRUM与XP区别
敏捷開發(fā)
1、敏捷的含義
敏捷開發(fā)是一種以人為核心、迭代、增量的開發(fā)方法。在敏捷開發(fā)中,把一個大項目分為多個相互聯(lián)系,可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。
上面提到3個關(guān)鍵詞,下面做個闡述:
以人為核心:眾所周知在瀑布開發(fā)模型中,會出現(xiàn)大量的文檔,開發(fā)人員往往都是根據(jù)文檔進行開發(fā),一切以文檔為依據(jù);而敏捷開發(fā)倡導(dǎo)少寫文檔,注重人與人面對面的交流,用溝通解決項目問題,所以它強調(diào)以人為核心
迭代開發(fā):是指把一個復(fù)雜且開發(fā)周期很長的大任務(wù),分解為很多小周期可完成的任務(wù),這樣的一個周期就是一次迭代;同時每一次迭代都可以生產(chǎn)或開發(fā)出一個可以交付的軟件產(chǎn)品
增量開發(fā):是指軟件每個發(fā)布的版本,都會新增一個用戶可以感知的完整功能。可以理解成,按照新增功能來劃分迭代
2、如何敏捷?
上面闡述的敏捷更多的是一種理念,但要實現(xiàn)敏捷開發(fā)有哪些實現(xiàn)方式呢?常見方式有兩種Scrum和XP,在講解具體步驟前,先說說它們的區(qū)別。
網(wǎng)上隨處可查的區(qū)別是:Scrum偏重于過程,XP則偏重于實踐。簡單解釋一下這句話,Scrum是從管理上,流程上設(shè)計一些方法來定義敏捷。XP是從具體的細節(jié)和某一工作的實現(xiàn)方法上深度挖掘了敏捷思想。區(qū)別詳細如下:
1. Scrum 和 XP 團隊都在迭代的方式下工作,但Scrum的周期一般是從兩周到一個月,XP的周期是一兩周
2. Scrum 團隊在一個sprint中是不接受任何任務(wù)變更的。而XP的團隊在一個迭代中,如果新的用戶故事跟原來的規(guī)模和大小差不多,可以用新的進行替換。
3. XP 團隊會嚴格按照任務(wù)的優(yōu)先級來工作。所有的任務(wù)都被客戶劃分了優(yōu)先級,團隊都被要求在該優(yōu)先級下工作。但scrum團隊的人員會自己決定他們以何種順序來完成所有的任務(wù)。
4. Scrum并沒有定義任何工程實踐的方法,它只是提供了一個實踐的框架給你。但XP,極限編程卻會給你這樣的一些東西。比如測試驅(qū)動開發(fā), 自動化測試,結(jié)對編程,簡單設(shè)計,重構(gòu)等等。
下面我們分別來講講Scrum和XP
Scrum流程
?
Scrum步驟:
1、我們首先需要確定一個Product Backlog(按優(yōu)先級排列的一個產(chǎn)品需求清單),這個是由產(chǎn)品經(jīng)理負責的;
2、Scrum 團隊根據(jù)Product Backlog清單,做工作量的預(yù)估和計劃;
3、有了Product Backlog清單,我們需要通過 Sprint Planning Meeting(Sprint計劃會議) 來從中挑選出一個Story(用戶故事)作為本次迭代完成的目標,這個目標的時間周期是1-4周,然后把這個Story進行細化,形成一個Sprint Backlog;(PS:Sprint 表示一次迭代)
4、Sprint Backlog是由Scrum 團隊去完成的,每個成員根據(jù)Sprint Backlog再細化成更小的任務(wù)(細到每個任務(wù)的工作量在2天內(nèi)能完成);
5、在Scrum 團隊完成計劃會議上選出的Sprint Backlog過程中,需要進行 Daily Scrum Meeting(每日站立會議),每次會議控制在15分鐘左右,每個人都必須發(fā)言,并且要向所有成員當面匯報你昨天完成了什么,承諾你今天要完成什么,同時遇到不能解決的問題也可以提出,每個人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃盡圖,見下圖);
6、做到每日集成,也就是每天都要有一個可以成功編譯、并且可以演示的版本;可使用工具實現(xiàn)提交、更新、測試和發(fā)布;
7、當一個Story完成,也就是Sprint Backlog被完成,也就表示一次迭代完成,我們就要進行 Srpint Review Meeting(演示會議),也稱為評審會議,每一個Scrum 團隊的成員都要演示自己完成的軟件產(chǎn)品;
8、最后就是 Sprint Retrospective Meeting(回顧會議),也稱為總結(jié)會議,以輪流發(fā)言方式進行,總結(jié)并討論改進的地方,放入下一輪Sprint的產(chǎn)品需求中;
?
XP敏捷實踐
XP即極限編程(Extreme Programming的縮寫)。極限編程是一種強調(diào)團隊工作的工作方式,它是多種敏捷方式的一種。與Scrum不同的是,Scrum是一種工作方式的框架,從組織到團隊的設(shè)計,而XP關(guān)注的是具體的工程技術(shù)實踐。XP旨在通過工程實踐的合理搭配使用,使開發(fā)者們能夠自信地響應(yīng)客戶需求。強調(diào)反饋環(huán)機制,客戶與研發(fā)團隊之間的反饋環(huán),測試與開發(fā)的反饋環(huán),具體代碼實現(xiàn)跟單元測試之間的反饋環(huán),結(jié)對之間的反饋環(huán)。極限編程認為在軟件研發(fā)過程中,變化是無所不在的,人們不應(yīng)回避變化,而應(yīng)該適應(yīng)變化,通過對反饋去適應(yīng)變化。
?
XP工程實踐:
1、小型發(fā)布(Small Release)
每一次發(fā)布的版本應(yīng)該盡可能的小,當然前提條件是每個版本有足夠的商業(yè)價值,值得發(fā)布。由于小型發(fā)布可以使得集成更頻繁,客戶獲得的中間結(jié)果也越頻繁,反饋也就越頻繁,客戶就能夠?qū)崟r地了解項目的進展情況,從而提出更多的意見,以便在下一次迭代中計劃進去。以實現(xiàn)更高的客戶滿意度。
2、計劃游戲/規(guī)劃策略(The Planning Game)
計劃游戲的主要思想就是先快速地制定一份概要的計劃,然后隨著項目細節(jié)的不斷清晰,再逐步完善這份計劃。計劃游戲產(chǎn)生的結(jié)果是一套用戶故事及后續(xù)的一兩次迭代的概要計劃。“客戶負責業(yè)務(wù)決策,開發(fā)團隊負責技術(shù)決策”是計劃游戲獲得成功的前提條件。也就是說,系統(tǒng)的范圍、下一次迭代的發(fā)布時間、用戶故事的優(yōu)先級應(yīng)該由客戶決定;而每個用戶故事所需的開發(fā)時間、不同技術(shù)的成本、如何組建團隊、每個用戶故事的風險,以及具體的開發(fā)順序應(yīng)該有開發(fā)團隊決定。
3、現(xiàn)場客戶(On-site Customer)
為了保證開發(fā)出來的結(jié)果與客戶的預(yù)想接近,XP方法論認為最重要的需要將客戶請到開發(fā)現(xiàn)場。因此,在項目中有客戶在現(xiàn)場明確用戶故事,并做出相應(yīng)的業(yè)務(wù)決策,對于XP項目而言有著十分重要的意義。
4、簡單設(shè)計(Simple Design)
這個實踐看上去似乎很容易理解,但卻又經(jīng)常被誤解,許多批評者就指責XP忽略設(shè)計是不正確的。其實,XP的簡單設(shè)計實踐并不是要忽略設(shè)計,而且認為設(shè)計不應(yīng)該在編碼之前一次性完成,因為那樣只能建立在“情況不會發(fā)生變化”或者“我們可以預(yù)見所有的變化”之類的謊言的基礎(chǔ)上的。
5、結(jié)對編程(Pair programming)
所有的軟件都是由兩個程序員、并排坐在一起在同一臺機器上完成的。
6、測試驅(qū)動開發(fā)(Testing)
編寫單元測試是一個驗證行為,更是一個設(shè)計行為。編寫單元測試避免了相當數(shù)量的反饋循環(huán),尤其是功能驗證方面的反饋循環(huán)。程序員以非常短的循環(huán)周期工作,他們將預(yù)先編寫一個自動化測試腳本,然后再編碼使之通過。
7、重構(gòu)(Refractoring)
重構(gòu)是一種對代碼進行改進而不影響功能實現(xiàn)的方式,XP需要開發(fā)人員在聞到代碼的壞味道時,有重構(gòu)代碼的勇氣。重構(gòu)的目的是降低變化引發(fā)的風險,使得代碼更優(yōu)雅。
8、持續(xù)集成(Continuous Integration)
持續(xù)集成的含義則是要求XP團隊每天盡可能多次地做代碼集成,每次都在確保系統(tǒng)運行的單元測試通過之后進行。這樣,就可以及早地暴露、消除由于重構(gòu)、集體代碼所有制所引起的錯誤。一個人commit后,其它所有人都有責任進行代碼集成工作。
9、代碼集體所有權(quán)(Collective Code Ownership)
任何結(jié)對的程序員都可以在任何時候改進任何代碼。沒有程序員對任何一個特定的模塊或技術(shù)單獨負責,每個人都可以參與任何其它方面的開發(fā)。
10、編碼規(guī)范(Code Standards)
XP方法論認為擁有編碼標準可以避免團隊在一些與開發(fā)進度無關(guān)的細節(jié)問題上發(fā)生爭論。
11、系統(tǒng)隱喻(System Metaphor)
它是系統(tǒng)的未來影像,將整個系統(tǒng)聯(lián)系在一起的全局視圖;它使得所有單獨模塊的所屬位置和外觀變得明顯直觀。如果模塊的外觀與整個隱喻不符,那么你就知道該模塊是錯誤的。
12、可持續(xù)的速度/每周40小時工作制(40-hour Week)
加班早已成為開發(fā)人員的家常便飯,也是管理者最常使用的一種策略,而XP方法論認為,加班最終會扼殺團隊的積極性,最終導(dǎo)致項目失敗。團隊只有持久才有獲勝的希望。他們以能夠長期維持的速度努力工作,他們保存精力,他們把項目看作是馬拉松長跑,而不是全速短跑。
?
總結(jié)
以上是生活随笔為你收集整理的SCRUM与XP区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详解CSS的相对定位和绝对定位
- 下一篇: NuGet的使用、部署、搭建私有服务