極限編程 (XP) 是于 1998 年由 Smalltalk 社群中的大師級人物 Kent Beck 首先倡導的。

下面是極限編程的有效實踐:

1、??? 完整團隊

???????? XP 項目的所有參與者(開發人員、客戶、測試人員等)一起工作在一個開放的場所中,他們是同一個團隊 的成員。這個場所的墻壁上隨意懸掛著大幅的、顯著的圖表以及其他一些顯示他們進度的東西。

2、??? 計劃游戲

???????? 計劃是持續的、循序漸進的。每 2 周,開發人員就為下 2 周估算候選特性的成本,而客戶則根據成本和商 務價值來選擇要實現的特性。

3 、客戶測試

???????? 作為選擇每個所期望的特性的一部分,客戶可以根據腳本語言來定義出自動驗收測試來表明該特性可以工 作。

4 、簡單設計

???????? 團隊保持設計恰好和當前的系統功能相匹配。它通過了所有的測試,不包含任何重復,表達出了編寫者想 表達的所有東西,并且包含盡可能少的代碼。

5 、結對編程

???????? 所有的產品軟件都是由兩個程序員、并排坐在一起在同一臺機器上構建的。

6 、測試驅動開發

???????? 編寫單元測試是一個驗證行為,更是一個設計行為。同樣,它更是一種編寫文檔的行為。編寫單元測試避 免了相當數量的反饋循環,尤其是功功能能驗證方面的反饋循環。程序員以非常短的循環周期工作,他們 先增加一個失敗的測試,然后使之通過。

7 、改進設計

???????? 隨時利用重構方法改進已經腐化的代碼,保持代碼盡可能的干凈、具有表達力。

8 、持續集成

???????? 團隊總是使系統完整地被集成。一個人拆入( Check in )后,其它所有人責任代碼集成。

9 、集體代碼所有權

???????? 任何結對的程序員都可以在任何時候改進任何代碼。沒有程序員對任何一個特定的模塊或技術單獨負責, 每個人都可以參與任何其它方面的開發。

10 、編碼標準

???????? 系統中所有的代碼看起來就好像是被單獨一人編寫的。

11 、隱喻

???????? 將整個系統聯系在一起的全局視圖;它是系統的未來影像,是它使得所有單獨模塊的位置和外觀變得明顯 直觀。如果模塊的外觀與整個隱喻不符,那么你就知道該模塊是錯誤的。

12 、可持續的速度

???????? 團隊只有持久才有獲勝的希望。他們以能夠長期維持的速度努力工作,他們保存精力,他們把項目看作是 馬拉松長跑,而不是全速短跑。

??? 極限編程是一組簡單、具體的實踐,這實踐結合在形成了一個敏捷開發過程。極限編程是一種優良的、通用的軟件開發方法,項目團隊可以拿來直接采用,也可以增加一些實踐,或者對其中的一些實踐進行修改后再采用。

???????? 極限編程的核心思想在于:從長遠看,早期發現錯誤以及降低復雜度可以節約成本。極限編程強調我們將任務 / 系統細分為可以在較短周期解決的一個個子任務 / 模塊,并且強調測試、代碼質量和及早發現問題。通常,通過一個個短小的迭代周期,我們就可以獲得一個個階段性的進展,并且可以及時形成一個版本供用戶參考,以便及時對用戶可能的需求變更作出響應。

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 轉自 河工技術論壇 2006-3-3