在這篇文章中, Alesia Krush將對四種最流行的敏捷開發(fā)方法進(jìn)行比較,給出了每種方法的優(yōu)缺點。
市場上有各種各樣的面向?qū)嵺`的敏捷框架,其中最受歡迎的是Scrum、Kanban、Lean和XP。雖然這是一個比較類文章,但分析這些框架卻有點像拿蘋果與橙子做比較,因為其中的一些方法可以相互支持或補充(尤其是當(dāng)它們適用于開發(fā)生命周期不同部分時)。
Scrum
Scrum完全可以被稱為敏捷軟件開發(fā)的框架。Alesia Krush分享了一個經(jīng)歷:“某次我遇到了一個朋友,并告訴他我的新工作是關(guān)于“敏捷”的。他提出的一個問題就是,你每天都在做Scrum之類的事情嗎?“。在很多人看來,Scrum就是敏捷的代名詞。
首先,Scrum是一個管理框架。Scrum明確地規(guī)定了一個模型,根據(jù)這個模型,開發(fā)人員計劃工作、更新計劃并分析過程。該框架介紹了角色Scrum Master,Scrum Master是一個專門為流程提供便利、并確保遵循這一流程的角色。
人工品
Scrum的主要“人工品”(信息傳播者)是:
1. User Story。一小部分功能是,團(tuán)隊將在一個被稱為Sprint的時間段內(nèi)工作。通常的格式是:作為[用戶角色],希望[系統(tǒng)做這個和那個],以便[交付這樣和這樣的商業(yè)價值]。它必須有一個“完成的定義”,用來確定故事是否已經(jīng)正確執(zhí)行。
2. Task。它可以與用戶故事相關(guān)或不相關(guān)。例如,設(shè)置新的開發(fā)環(huán)境或研究CPU內(nèi)存問題是與用戶故事無關(guān)的任務(wù)。
3. Backlog。用戶故事和未來Sprint任務(wù)的列表。
4. Sprint backlog。從Backlog的當(dāng)前Sprint中挑選用戶故事和任務(wù)列表(又名“工作項目”)。
5. Product increment。在Sprint結(jié)束時交付的一種潛在可交付功能塊。
6. Extensions。像Burndown Chart、Velocity等的報告,用于跟蹤團(tuán)隊的進(jìn)展。
角色
1. 開發(fā)團(tuán)隊。包括開發(fā)人員、QA工程師、UI/UX設(shè)計師、業(yè)務(wù)分析師以及其他需要的人員。Scrum團(tuán)隊通常有3到9名成員。當(dāng)9個人還不夠時,團(tuán)隊就一分為二了。
2. Scrum Master。主持每日Scrum會議、策劃/更新/回顧會議,并幫助團(tuán)隊成員解決溝通問題。Scrum Master不是團(tuán)隊成員,所以他們可以同時與多個團(tuán)隊合作。
3. 產(chǎn)品所有者。利益相關(guān)者的代表,將Scrum團(tuán)隊的愿景(作為用戶故事的基礎(chǔ))傳達(dá)給Scrum團(tuán)隊,在每個Sprint結(jié)束時優(yōu)先考慮用戶故事,并接受或拒絕他們。
價值
1. 承諾(在Sprint中實現(xiàn)目標(biāo))。
2. 勇氣(做您認(rèn)為正確的事)。
3. 重點(在當(dāng)前Sprint中的工作項目)。
4. 開放(關(guān)于面臨的任何挑戰(zhàn))。
5. 尊重(相信其他人的能力)。
Kanban
Kanban框架是由豐田工程師Taiichi Ohno發(fā)明的。在20世紀(jì)40年代后期,豐田代表們觀察到超市是如何根據(jù)貨架上的貨物重新進(jìn)貨。這促使豐田建立了一個供應(yīng)體系,生產(chǎn)計劃將由實際消耗驅(qū)動。
Kanban的關(guān)鍵思想之一是避免產(chǎn)生過剩。Kanban通過使用Kanban卡和Kanban板來可視化資源在生產(chǎn)周期中的移動。這使每個人都能夠最大程度地了解流程,并幫助管理人員實時解決盈余/短缺問題。
Kanban系統(tǒng)還引入了“pull”與“push”的概念,工人可以根據(jù)自己的能力進(jìn)行工作,而不是在傳送帶上或在待辦事項列表形式中工作。
在軟件工程中,Kanban意味著一次可以進(jìn)行的工作量是有限的。換句話說,Kanban上的“進(jìn)行中”欄內(nèi)可以擁有卡片是有上限的,這樣做是為了增加焦點并減少上下文切換。
Kanban開發(fā)的另一個方面是,活動始終與客戶需求緊密相關(guān),并與客戶保持持續(xù)的溝通。除非在經(jīng)濟(jì)上有利于客戶,否則什么都不會產(chǎn)生。
原則
1. 專注—減少多任務(wù);
2. 減少浪費;
3. 客戶的需求放在第一位(即他們的業(yè)務(wù)需求-ROI);
實踐
1. 可視化;
2. 限制工作進(jìn)展;
3. 流程管理(可以通過管理隊列或限制工作來完成);
4. 明確政策;
5. 使用反饋循環(huán);
6. 實驗演變;
Kanban和Scrum的關(guān)鍵區(qū)別在于:Kanban是連續(xù)的,而Scrum是迭代的。Kanban更適合在Sprint期間有大量計劃外工作(支持問題;緊急修復(fù);緊急功能請求)的團(tuán)隊。通過這種方式,團(tuán)隊可以隨時重新排序任務(wù),不再需要等待Sprint結(jié)束。
Lean
Lean開發(fā)者,Mary Poppendieck在她的事業(yè)生涯中取得了巨大的成功,她帶領(lǐng)她與Tom Poppendieck共同編寫了Lean軟件。因為Lean大量借用了Kanban,兩種方法之間有許多相似之處。
就像Kanban一樣,Lean盡量避免浪費,最大限度地為客戶帶來價值。與Kanban不同的是,Lean有一些關(guān)于工程實踐的規(guī)定(例如TDD)。與此同時,Lean對交付時間的要求不那么嚴(yán)格,團(tuán)隊可能隨時準(zhǔn)備部署。
XP - 極限編程
極限編程始于Kent Beck的一個實驗,他的想法是把編程實踐做到極致,看看會發(fā)生什么。例如,代碼審查代替代碼檢查。后來,隨著越來越多的公司開始采用這種方法,例如日常集成測試等,某些嚴(yán)格的規(guī)則開始被忽略。
與傳統(tǒng)的觀念相反,XP不只是簡單的平等配對編程,XP還提供了一個流程管理算法。
需要注意的另一點是,理想情況下,所有的XP操作都應(yīng)該一起使用,否則他們將無法正常工作。
XP的管理方面受到了一些項目經(jīng)理批評。例如,持續(xù)存在的客戶被認(rèn)為是壓力的來源。另外,沒有任何要求和設(shè)計系統(tǒng)可能是無效的。
值
XP值與Scrum中的值相關(guān)。見表格:
就像Kanban和Lean,XP也很注重浪費問題。
實踐
1. 計劃游戲;
2. 測試驅(qū)動開發(fā)(“先寫單元測試”);
3. 配對編程;
4. 團(tuán)隊(客戶/程序的實際用戶可用于反饋);
5. 持續(xù)集成;
6. 重構(gòu)設(shè)計改進(jìn);
7. 小版本;
8. 編碼標(biāo)準(zhǔn);
9. 集體代碼所有權(quán);
10. 設(shè)計簡單;
11. 系統(tǒng)隱喻(以程序員,客戶和其他人理解的方式命名事物);
12. 可持續(xù)性。