什么是極限編程 (XP)?
(XP) 是(shi)2000 年代初期(qi)最廣為人知和使用最多的之一。XP 是、和的創意,基于(yu)他們(men)在(zai)戴姆勒克萊斯勒的集體經驗。它的名字變成了(le)馬麥(mai)醬并推遲了(le)管理。它錯誤地喚起了沖(chong)浪者的幻想和缺乏專業精神。
XP 是(shi)一種。團(tuan)隊計劃少量工作并(bing)在(zai)稱為 1 到 4 周迭代(dai)的短內構(gou)建它。XP 與其(qi)他迭代(dai)框架的主要區別在(zai)于,XP 專注于達到極端(duan)水平的軟件工程實(shi)踐。例如,許(xu)多(duo)研究表明代(dai)碼審查是(shi)發(fa)現缺陷的最(zui)有效方法(fa)之(zhi)一。XP 將(jiang)這一點發(fa)揮到極致,并(bing)通過結對編程 100% 地(di)鼓(gu)勵(li)同行評(ping)審。
XP 不(bu)僅專注于短迭代,而(er)且還規(gui)定了較短的發(fa)布(bu)周期,以降低技術產品交付中固有(you)的風險(xian)。進(jin)度延(yan)誤、陳舊的需求(qiu)與客戶需求(qiu)不(bu)一致、業務變(bian)更和不(bu)必要(yao)的功能都可以通過較短的發布周期(qi)來解決。
XP 實踐(jian) (Best Practices)
自 Kent Beck 首次發(fa)表“極限編程解釋”以來,XP 實(shi)踐一直(zhi)在不斷發(fa)展。但是,下圖顯示了與 XP 最(zui)常關聯的集合。

敏(min)捷開發方法(fa)XP的12個最(zui)佳(jia)實踐
1.規劃游戲 (planning game)
- 快速制定計劃,隨著細節的變化而改進;
- 詳細說明:需結合項目進度和技術條件確定下一階段擬開發和發布的系統范圍。當計劃跟不上實際變化時,應更新計劃。
2. 小發布 (Small release)
- 系統的設計應該能夠盡早交付;
- 詳細(xi)說明(ming):強調新版本應該在極(ji)短的時間內增量發布(bu),這樣每(mei)個迭代周期的進(jin)度很(hen)容易估計,工作量和風險也很(hen)容易控制(zhi);同(tong)時,用戶的(de)反饋也能得到(dao)及時處理。
3.系統隱喻 (System Metaphor)
- 找(zhao)一個合適(shi)的(de)比喻來(lai)傳達信息;
- 詳解(jie):通(tong)過比喻(yu)來描述系統的(de)工作原理以及系統如何(he)添加新的(de)功(gong)能。它(ta)通(tong)常包含一些可以參(can)考和比較的類和設(she)計模式。
4. 簡單的設計 (Simple Design)
- 只處理當前的需求,保持設計的簡單;
- 在任何時候,系統都應設計得盡可(ke)能簡單。不必要的(de)復雜性一旦被發現就會被移除(chu)。
5. 測試驅動 (Test-driven)
- 先寫測試代碼,再寫程序;
- 說明:程序員不斷地編寫單元測試,只有這些測試能夠正確運行才能繼續開發。
6. 重構 (Refactoring)
- 重新檢查需求和設計并重新清晰地描述它們以滿足新的和現有的需求;
- 代碼重構是在不改變系統行為的情況下,重新調整和優化系統內部結構,以降低復雜度,消除冗余,增加靈活性,提高性能。
7.結對編程 (Pair Programming)
- 兩個程序員在同一臺計算機上編寫代碼來解決同一個問題。
- 解釋:通常一個人負責編寫代碼,另一個人負責保證代碼的正確性和可讀性。
8. 集體所有 (Collective Programming)
- 任何人都可以隨時隨地更改系統中的任何代碼。
- 說明:每個會員都有修改代碼的權利,每個人對所有的代碼負責。
9. 持續集成 (Continous integration)
- 可以按天甚至按小時運行,供客戶運行版本;
- 提倡一天集成幾次系統,隨著需求的變化,不斷進行回歸測試,避免系統集成一次的噩夢。
10. 每周40小時 (40 hour work)
- 目組成員每周工作時間不(bu)得(de)超(chao)過(guo)40小時,加班時間不(bu)得(de)連續超(chao)過(guo)兩周,否則會影(ying)響生(sheng)產效率。
11. 現場客戶 (One-site customer)
- 在團隊中添加一個真正的、功能性的用戶,他將全職回答問題。
- 說明:在整個項目開發周期中,至少需要一名實際客戶代表在現場確定需求,回答團隊問題,并編寫功能驗收測試。
12. 代碼標準 (Code Standards)
- 通過指定嚴格的代碼規范來強調溝通,以盡量減少不必要的文檔。
XP值(zhi) (Values)
XP 在(zai)采用價(jia)值之前(qian)幾(ji)十年就(jiu)將價值納入方法論中。4個 XP 值 (core Values)是(shi):

- 溝通 (Communication) - 保持正(zheng)確的對話流暢以減少問題的發生。
- 簡單 (Simplecity) - 今天做一件簡單(dan)的(de)事情,而不(bu)是制造你可能永遠不(bu)需要的(de)鍍金。
- 反饋 (Feedback) - 與系統、客戶以(yi)及彼此驅動(dong)解(jie)決方(fang)案的反饋循環。
- 勇氣 (Courage) - 做出艱難的(de)決定以幫(bang)助您以最快(kuai)的(de)速度交(jiao)付。
- 尊(zun)重 (Respect) - 尊(zun)重意味著分享成功和(he)失敗的同時,我(wo)們(men)尊(zun)重彼(bi)此、我(wo)們(men)的協(xie)議(yi)和(he)承(cheng)諾。
XP角色(se) (Roles)
XP 規定(ding)了特定(ding)的(de)角(jiao)色。它非常重(zhong)視程序員,并希望程序員能夠享受測試他們的(de)代(dai)碼(ma)的(de)樂(le)趣。XP 程(cheng)(cheng)序(xu)員(yuan)不僅需要(yao)廣泛的技(ji)術(shu)實踐(jian),還需要(yao)有效的溝通和(he)人際(ji)交往能(neng)力來(lai)實施結對(dui)編程(cheng)(cheng)等實踐(jian)。
盡管開發團隊執行(xing)測(ce)試的平衡,XP 需(xu)要測試人員。測(ce)試(shi)人員的(de)角色轉(zhuan)變(bian)為幫(bang)助(zhu)客戶定義和編寫(xie)驗收測(ce)試(shi)。
所有(you)軟(ruan)件(jian)項目都有(you)一個客戶。XP 將(jiang)客(ke)戶角色發揮到極致,需要與開發團隊(dui)共處(chu),他們必須(xu)能夠對產品做(zuo)出(chu)決策并(bing)以用戶故事的形式指定系統的行為。
為(wei)支持團隊(dui),XP 包含一個跟蹤器,可(ke)為團隊提供(gong)有關他們使(shi)用(yong)數據執行(xing)情(qing)況的寶貴反饋。還有(you)一位教練可以幫(bang)助 XP 團隊實(shi)現(xian)更高水平的績(ji)效。
posted on 2021-10-29 17:17 Lynch_Warren 閱讀(3511) 評論(0) 收藏 舉報