1. 程式人生 > >瀑布式開發、迭代開發、敏捷開發、XP與SCRUM的區別

瀑布式開發、迭代開發、敏捷開發、XP與SCRUM的區別

區別之一:  迭代長度的不同

XP的一個Sprint的迭代長度大致為1~2周, 而Scrum的迭代長度一般為 2~ 4周.

區別之二: 在迭代中, 是否允許修改需求

XP在一個迭代中,如果一個User Story(使用者素材, 也就是一個需求)還沒有實現, 則可以考慮用另外的需求將其替換, 替換的原則是需求實現的時間量是相等的。 而Scrum是不允許這樣做的,一旦迭代開工會完畢, 任何需求都不允許新增進來,並有Scrum Master嚴格把關,不允許開發團隊收到干擾

區別之三: 在迭代中,User Story是否嚴格按照優先級別來實現

XP是務必要遵守優先級別的。Scrum在這點做得很靈活, 可以不按照優先級別來做

,Scrum這樣處理的理由是: 如果優先問題的解決者,由於其它事情耽擱,不能認領任務,那麼整個進度就耽誤了。 另外一個原因是,如果按優先順序排序的User Story #6和#10,雖然#6優先順序高,但是如果#6的實現要依賴於#10,則不得不優先做#10.

區別之四:軟體的實施過程中,是否採用嚴格的工程方法,保證進度或者質量

Scrum沒有對軟體的整個實施過程開出養個工程實踐的處方。要求開發者自覺保證,但XP對整個流程方法定義非常嚴格,規定需要採用TDD, 自動測試, 結對程式設計,簡單設計,重構等約束團隊的行為。因此,原作者認為, 這點上,XP的做法值得認同的,但是卻把敏捷帶入了一個讓人困惑的矛盾, 因為xp的理念,結合敏捷模式,表達給團隊的資訊是“你是一個完全自我管理的組織, 但你必須要實現TDD, 結對程式設計, ...等等”

不難發現,這四個區別顯見的是: Scrum非常突出Self-Orgnization, XP注重強有力的工程實踐約束

作者建議, 在管理模式上啟用Scrum, 而在實踐中,創造一個適合自己專案組的XP(“start with Scrum and then invent your own version of XP.”)

SCRUM介紹

        回顧一下我所認識的scrum,算是對自己知識的一個梳理。
        scrum到底是什麼,書中都說,它不是方法學,不是過程,而是一個框架。我並沒有太理解這句話,所以先把scrum中都有些什麼來說一下。

        時間:

scrum把時間分成一個個的sprint,也就是迭代週期。這個週期以2-6個星期為宜,但目前使用的最多的,是一個月,即四個星期。

        每一個sprint的開始和結束都會有一個會議,叫做sprint計劃sprint演示,這很好理解,計劃時計劃做什麼,演示時演示做完的東西。然後,並不是演示完了就完事的,sprint還有一個回顧會議,用來對這個sprint進行回顧,哪些做的好,哪些做的不好。這就是改進。

        組成sprint的每天中,都會有每日例會,叫做每日站會,所以謂站會,即是時間非常短的會議,眾所周知的,沒完沒了的會議總是讓我們,厭倦不已。而這種站會,我想差不多是從這方面來考慮的。

        人物:scrum中有scrum master, product owner和scrum團隊。我理解scrum master就是project manager,而product owner就是product manager,團隊還是那個團隊,只是這裡的團隊,在規模上有一定的限制,它要求人員不要太多,不要太少,3-12個,通常4人團隊比較多見,當然這個具體還得看實際情況來定。團隊中開發測試人員比是1:1,即pair work。

        scrum中的需求,採用story的形式進行描述,整個產品的需求,被列成product backlog,而每一個迭代週期要做什麼,是在每個sprint的計劃會議上進行挑選的,根據po對backlog標記的優先順序,團隊對其進行estimate並挑選出這個sprint裡能完成的story,scrum master把它們列入計劃中。

        backlog有一個用於統計的東西,叫做燃盡圖。從字面理解,就是燃燒掉多少的圖,即sprint backlog中的被完成了多少,每完成一個story,就燃燒掉一個story。產品backlog有產品燃盡圖,sprint有sprint燃盡圖。

        以上基本就是我瞭解的一些scrum知識點,其中忽略了工具部分和工作開展方式部分。因為採用什麼工具或採用什麼方式來實現,我認為是根據實際情況來定的,而且,在每個sprint回顧會議中,這些東西都會被改進。使用excel或白板來記錄story或backlog並不重要,重要的是,你是否有story或backlog。