敏捷開發(XP,SCRUM)
敏捷方法的核心思想
- 敏捷方法是適應型(Adaptive),而非可預測型(Predictive)。與傳統方法不同,敏捷方法擁抱變化,利用變化來發展,甚至改變自己,最後完善自己。也就是要用重構(Refactoring)
- 敏捷方法是以人為本(people-oriented),而非過程為本(process-oriented)。傳統方法把開發者看作一個生產要素(分析員,測試員,程式設計師),擁有大量的中間產品(需求規約,設計模型等),而忽視了作為決定因素的人的特殊性。敏捷開發它只寫有必要的文件,或儘量少寫文件,敏捷開發注重的是人與人之間,面對面的交流,所以它強調以人為核心。
- 迭代增量式的開發過程。敏捷方法以原型開發思想為基礎。迭代是指把一個複雜且開發週期很長的開發任務,分解為很多小週期可完成的任務,這樣的一個週期就是一次迭代的過程;同時每一次迭代都可以生產或開發出一個可以交付的軟體產品。
關於Scrum和XP(Extreme Programming)
前面說了敏捷它是一種指導思想或開發方式,但是它沒有明確告訴我們到底採用什麼樣的流程進行開發,而Scrum和XP就是敏捷開發的具體方式了,你可以採用Scrum方式也可以採用XP方式;Scrum和XP的區別是,Scrum偏重於過程,XP則偏重於實踐,但是實際中,兩者是結合一起應用的.
XP的12條實踐規則
XP是偏重於實踐的,這些實踐中有些已大量運用於現代軟體開發中。無論你的開發過程是SCRUM還是CMMI,CMMI?是的,這些優秀的軟體工程實踐並不是敏捷的專享,即使你的開發過程是CMMI,也不影響你使用這些實踐。例如TDD,CI(Continues Integration),Agile 和 CMMI 並不是水火不容的對立關係,而是在某種程度上可以有機的結合。
XP的核心價值觀是溝通、簡單、反饋和勇氣。
12條實踐規則:
細粒度反饋(Fine Scale Feedback)
- 1. 結對程式設計(Pair Programming),即任何程式碼都有兩個人合作完成,一個人coding,一個人review code然後提供反饋。現實中一般不會採用此實踐,一種替代方式是定期開code
review meeting。 - 2. 規劃工作(Planning Game),每個迭代週期開一次計劃會議,對此工作週期進行回顧和總結,以及對下個迭代(通常2星期)的開發和釋出進行規劃。
- 3.測試驅動(Test Driver Development),程式設計師在實現功能前應該寫好單元測試程式碼,因為功能程式碼還沒有實現,執行測試的結果可想而知,肯定會失敗,程式設計師的工作就是恰當的程式碼能使此測試用例通過。這個功能實現的過程也是循序漸進、迭代的,每次實現功能的一小部分,然後執行測試,這樣在出現問題時,我們可以很快的定位到問題所在,並很快的解決問題。因為如果你和我一樣不是足夠聰明的人,我們大腦通常只能記住剛剛發生此的事情。概念同樣適用於CI裡,對每次Checkin的Regression
Test,因為如果你的Checkin造成了對現有功能的破壞,因為問題時你剛剛修改程式碼造成的,你也能比較容易的定位問題,修復它。 - 4.完整團隊(Whole Team),有時也叫客戶現場,即客戶並不是需求分析後,就萬事大吉了,應該駐紮在開發現場,這樣開發團隊可以獲取最新,最準確的客服反饋,確保開發沒有偏離客戶需求。
可持續發展(Continues Process)
- 5.可持續整合(Continues Integration),專案應該有一套自動編譯,自動化測試,自動部署的工具(hudson),程式設計師應該在最新的程式碼版本上工作,對於多人並行開發,應該及時的checkin你對程式碼修改,並保證編譯、測試通過。若有問題可以儘早的被暴露,修復。對於減少bug,降低軟體風險都有積極作用。
- 6.程式碼重構(Refactoring),軟體隨著需求的變化和技術的革新是不斷演化的,容易產生程式碼堆砌,程式碼冗餘等程式碼中的“壞味道”,用程式碼重構技術的程式碼進行及時的清理、調整、重組。有助於提高軟體質量和可維護性。
- 7.小版本釋出(Small Release),怎樣吃掉大象?將一個大的問題域分解成小的,可操作的問題,是解決複雜問題的自然之道。將軟體需求分解成小的功能模組,在每個迭代週期中完成預定的部分模組,並形成一個可釋出的版本,在Demo此版本時,可以快速都獲得來自stakeholders的反饋,而不用將風險延遲到專案的最後。
- 8. 40小時工作制(Sustainable Pace),可持續發展,不要加班,該打籃球打球。
共識(Shared Understanding)
- 9.程式碼規範(Coding Standard),統一的程式碼風格和格式
- 10.集體所有制(Collective Code Ownership), 每個人對所有程式碼負責
- 11.簡單設計(Simple Design),簡單是王道,不要over-design
- 12.系統隱喻(System metaphor),系統隱喻是每個人(客戶,程式設計師,經理)都能理解系統是如何工作的,涉及到如何對Class/Method進行命名,使得團隊成員僅從名稱上就能想到起功能,例如一個產品過期,那麼在Catalog(Class)上有makeOverdue的Method。
如何運用Scrum作為開發過程: http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html
相關文章
- scrum敏捷開發Scrum敏捷
- 敏捷開發--Scrum開發模型敏捷Scrum模型
- Scrum敏捷開發方法實踐Scrum敏捷
- scrum敏捷開發工具leangoo標籤Scrum敏捷Go
- scrum|敏捷開發之任務看板Scrum敏捷
- SCRUM敏捷開發規則一欄Scrum敏捷
- 敏捷開發之Scrum掃盲篇敏捷Scrum
- 敏捷開發實踐之Scrum方法運用敏捷Scrum
- 最常用的scrum工具、敏捷開發工具、看板工具Scrum敏捷
- Scrum敏捷精要Scrum敏捷
- 產品研發團隊Scrum敏捷開發協作流程Scrum敏捷
- [敏捷開發實踐](2) 用於開發和維持複雜產品的敏捷開發框架Scrum敏捷框架Scrum
- 【科普】Scrum——從橄欖球爭球到敏捷開發Scrum敏捷
- 說說我們的用的Scrum敏捷開發工具Scrum敏捷
- Scrum:兼顧計劃與靈活的敏捷開發Scrum敏捷
- Scrum並不敏捷! - SimonScrum敏捷
- Scrum敏捷軟體開發之技術實踐——測試驅動開發TDDScrum敏捷
- Scrum轉型(一) 為什麼敏捷和ScrumScrum敏捷
- 關於Scrum敏捷開發,只看這一篇就夠了!Scrum敏捷
- SCRUM: 敏捷團隊的故事(SCRUM: The Story of an Agile Team)——(3)Scrum敏捷
- 碎碎念軟體研發02:敏捷之Scrum敏捷Scrum
- 敏捷開發流程之Scrum:3個角色、5個會議、12原則敏捷Scrum
- 8 款主流 Scrum 敏捷開發工具評測,建議先馬後看!Scrum敏捷
- Scrum是脆弱的,不敏捷的Scrum敏捷
- Craig Larman 論敏捷與 ScrumAI敏捷Scrum
- 敏捷專案管理方式---Scrum敏捷專案管理Scrum
- 敏捷開發系列之旅 第二站(走近XP極限程式設計)敏捷程式設計
- 敏捷工具:Scrum板與Kanban如何抉擇?敏捷工具:Scrum板與Kanban如何抉擇?敏捷Scrum
- 敏捷和 Scrum 之間的區別敏捷Scrum
- 敏捷學習筆記【一】——硝煙中的Scrum和XP(上)【產品backlog、sprint計劃】敏捷筆記Scrum
- 敏捷開發敏捷
- [敏捷開發實踐](1) 認識敏捷開發敏捷
- 開源/免費的敏捷工具:Scrum團隊的增效秘訣敏捷Scrum
- 敏捷開發框架敏捷框架
- 敏捷開發理解敏捷
- scrum敏捷工具推薦幾款,可參考Scrum敏捷
- 《硝煙中的Scrum和XP》學習手札薦Scrum
- 敏捷開發大家談(五)--敏捷開發的設計原則敏捷