敏捷方法中的極限編程(ExtremeProgramming陨献,簡稱XP)

2001 年 2 月盒犹,在美國的猶他州,17 位“無政府主義者”共同發(fā)表了《敏捷軟件開發(fā)言》眨业,在宣言中指出:

盡早地急膀、持續(xù)地向客戶交付有價值的軟件對開發(fā)人員來說是最重要的。

擁抱變化龄捡,即使在開發(fā)的后期卓嫂。敏捷過程能夠駕馭變化,保持客戶的競爭力聘殖。

經常交付可工作的軟件晨雳,從幾周到幾個月,時間范圍越小越好奸腺。

在整個項目中餐禁,業(yè)務人員和開發(fā)者緊密合作

圍繞士氣高昂的團隊進行開發(fā)突照,為團隊成員提供適宜的環(huán)境帮非,滿足他們的需要,并給予足夠的信任讹蘑。

在團隊中末盔,最有效率的、也是效果最好的溝通方式是面對面地交流座慰。

可以工作的軟件是進度首要的度量方式陨舱。

可持續(xù)地開發(fā)。投資人版仔、開發(fā)團隊和用戶應該保持固定的節(jié)奏游盲。

不斷追求優(yōu)秀的技術和良好的設計有助于提高敏捷性。

要簡單蛮粮,盡可能減少工作量背桐。減少工作量的藝術是非常重要的。

最好的架構蝉揍、需求和設計都來自于一個自我組織的團隊链峭。

團隊要定期地總結如何能夠更有效率,然后相應地自我調整又沾。

至此弊仪,敏捷軟件聯(lián)盟建立起來,敏捷軟件開發(fā)方法進入了大發(fā)展的時代杖刷。這份宣言也就是敏捷方法的燈塔励饵,所有的敏捷方法都在向這個方向努力。目前已形成多種敏捷方法滑燃,其中XP傳播最為廣泛役听,為此,本節(jié)主要介紹 XP,其次簡單介紹另外幾種很有特色的開發(fā)模型典予。

XP 方法可以說是敏捷聯(lián)盟中最鮮艷的一面旗幟甜滨,也是相對來說最成熟的一種。XP 方法的雛形最初形成于 1996—1999 年間瘤袖,Kent Beck衣摩、Ward Cunningham、Ron Jeffery 夫婦在開發(fā) C3 項目(Chrysler Comprehensive Compensation)的實踐中總結出了 XP 的基本元素捂敌。

在此之后艾扮,Kent Beck 和他的一些好朋友們一起在實踐中完善提高,終于形成了極限編程方法占婉。

XP 是一種輕量(敏捷)泡嘴、高效、低風險逆济、柔性酌予、可預測、科學而且充滿樂趣的軟件開發(fā)方式纹腌。與其他方法論相比霎终,其最大的不同在于:

(1)在更短的周期內,更早地提供具體升薯、持續(xù)的反饋信息莱褒。

(2)迭代地進行計劃編制,首先在最開始迅速生成一個總體計劃涎劈,然后在整個項目開發(fā)過程中不斷地發(fā)展它广凸。

(3)依賴于自動測試程序來監(jiān)控開發(fā)進度,并及早地捕獲缺陷蛛枚。

(4)依賴于口頭交流谅海、測試和源程序進行溝通。

(5)倡導持續(xù)的蹦浦、演化式的設計扭吁。

(6)依賴于開發(fā)團隊內部的緊密協(xié)作。

(7)盡可能達到程序員短期利益和項目長期利益的平衡盲镶。

XP 由價值觀侥袜、原則、實踐和行為四個部分組成溉贿,它們彼此相互依賴枫吧、關聯(lián),并通過行為貫穿于整個生命周期宇色。

1.四大價值觀

XP 的核心是其總結的溝通九杂、簡單颁湖、反饋、勇氣四大價值觀例隆,它們是 XP 的基礎甥捺,也是XP 的靈魂。

(1)溝通裳擎。

通常涎永,程序員給人留下的印象就是“內向思币、不善言談”鹿响,項目中的許多問題就出在這些缺乏溝通的開發(fā)人員身上。由于某個程序員做出了一個設計決定谷饿,但是卻不能夠及時地通知團隊中的其他成員惶我,結果使得團隊在協(xié)作與配合上出現很多麻煩。而在傳統(tǒng)的開發(fā)方法中博投,并不在意這種口頭溝通不暢的問題绸贡,而是希望借助于完善的流程和面面俱到的文檔、報表毅哗、計劃來替代听怕,但是,這又引入了效率不高的新問題虑绵。

XP 方法認為尿瞭,如果小組成員之間無法做到持續(xù)的、無間斷的交流翅睛,那么協(xié)作就無從談起声搁。從這個角度來看,通過文檔捕发、報表等人工制品進行交流疏旨,具有很大的局限性。因此扎酷, XP組合了諸如結對編程這樣的最佳實踐檐涝,鼓勵大家進行口頭交流、通過交流解決問題法挨,提高效率谁榜。

(2)簡單。

XP 方法在工作中秉承“夠用即好”的思路坷剧,也就是盡量地簡單化惰爬,只要今天夠用就行,不考慮明天會出現的新問題惫企。這一點看上去十分容易撕瞧,但要真正做到保持簡單的工作其實是很難的陵叽,因為在傳統(tǒng)的開發(fā)方法中,都要求開發(fā)人員對未來做一些預先規(guī)劃丛版,以便對今后可能發(fā)生的變化預留一些擴展空間巩掺。溝通和簡單之間還有一種相當微妙的互相支持關系。一方面页畦,團隊成員之間溝通得越多胖替,就越容易明白哪些工作需要做,哪些工作不需要做;另一方面豫缨,系統(tǒng)越簡單独令,需要溝通的內容也就越少,溝通也將更加全面好芭。

(3)反饋燃箭。

是什么原因使得客戶、管理層這么不理解開發(fā)團隊?究其癥結舍败,就是開發(fā)的過程中缺乏必要的反饋招狸。在很多項目中,當開發(fā)團隊經歷過了需求分析階段之后邻薯,在一個相當長的時間段中裙戏,是沒有任何反饋信息的。整個開發(fā)過程對于客戶和管理層而言就像一個黑盒子厕诡,進度完全看不到累榜。而且,在項目開發(fā)過程中木人,這樣的現象不僅出現在開發(fā)團隊與客戶信柿、管理層之間,還包括在開發(fā)團隊內部醒第。因此渔嚷,開發(fā)團隊需要更加注重反饋。反饋對于任何軟件項目的成功都是至關重要的稠曼,而在 XP 方法論中則更進一步形病,通過持續(xù)、明確的反饋來暴露軟件狀態(tài)的問題霞幅。反饋與溝通有著良好的配合漠吻,及時和良好的反饋有助于溝通。而簡單的系統(tǒng)司恳,更有利于測試和反饋途乃。

(4)勇氣。

在應用 XP 方法時扔傅,每時每刻都在應對變化:由于溝通良好耍共,會有更多需求變更的機會;由于時刻保持系統(tǒng)的簡單烫饼,新的變化會帶來一些重新開發(fā)的需要;由于反饋及時,會有更多中間打斷思路的新需求试读「茏荩總之,這一切使得開發(fā)團隊處于變化之中钩骇,因此比藻,這時就需要有勇氣來面對快速開發(fā),面對可能的重新開發(fā)倘屹。勇氣可以來源于溝通银亲,因為它使得高風險、高回報的試驗成為可能;勇氣可以來源于簡單唐瀑,因為面對簡單的系統(tǒng)群凶,更容易鼓起勇氣;勇氣可以來源于反饋插爹,因為可以及時獲得每一步前進的狀態(tài)(自動測試)哄辣,會讓人更勇于重構代碼。

在 XP 的四大價值觀之下赠尾,隱藏著一種更深刻的東西力穗,那就是尊重。因為這一切都建立在團隊成員之間相互關心气嫁、相互理解的基礎之上当窗。

2.十二個最佳實踐

在 XP 中,集成了 12 個最佳實踐寸宵,有趣的是崖面,它們沒有一個是創(chuàng)新的概念,大多數概念和編程一樣老梯影。其主要的創(chuàng)新點在于提供一種良好的思路將這些最佳實踐結合在一起巫员,并且確保盡可能徹底地執(zhí)行,使得它們能夠在最大程度上互相支持甲棍。

(1)計劃游戲简识。計劃游戲的主要思想就是先快速地制定一份概要的計劃,然后感猛,隨著項目細節(jié)的不斷清晰七扰,再逐步完善這份計劃。計劃游戲產生的結果是一套用戶故事及后續(xù)的一兩次迭代的概要計劃陪白。

(2)小型發(fā)布颈走。XP 方法秉承的是“持續(xù)集成、小步快走”的哲學思維咱士,也就是說每一次發(fā)布的版本應該盡可能地小立由,當然前提條件是每個版本有足夠的商業(yè)價值袖瞻,值得發(fā)布。由于小型發(fā)布可以使得集成更頻繁拆吆,客戶獲得的中間結果越頻繁聋迎,反饋也就越頻繁,客戶就能夠實時地了解項目的進展情況枣耀,從而提出更多的意見霉晕,以便在下一次迭代中計劃進去,以實現更高的客戶滿意度捞奕。

(3)隱喻牺堰。相對而言,隱喻比較令人費解颅围。根據詞典中的解釋是:“一種語言的表達手段伟葫,它用來暗示字面意義不相似的事物之間的相似之處”。隱喻常用于四個方面:尋求共識院促、發(fā)明共享語匯筏养、創(chuàng)新的武器、描述架構常拓。

如果能夠找到合適的隱喻是十分快樂的渐溶,但并不是每一種情況都可以找到恰當的隱喻,因此弄抬,沒有必要去強求茎辐,而是順其自然。

(4)簡單設計掂恕。強調簡單的價值觀拖陆,引出了簡單性假設原則,落到實處就是“簡單設計”實踐懊亡。這個實踐看上去似乎很容易理解依啰,但卻又經常被誤解,許多批評者就指責 XP 忽略設計是不正確的斋配。其實孔飒,XP 的簡單設計實踐并不是要忽略設計,而是認為設計不應該在編碼之前一次性完成艰争,因為那樣只能建立在“情況不會發(fā)生變化”或者“我們可以預見所有的變化”之類的謊言的基礎上坏瞄。

(5)測試先行。對于有些團隊而言甩卓,有時候程序員會以“開發(fā)工作太緊張”為理由鸠匀,繼而忽略測試工作。這樣逾柿,就導致了一個惡性循環(huán)缀棍,越是沒空編寫測試程序宅此,代碼的效率與質量越差,花在找缺陷爬范、解決缺陷的時間也越來越多父腕,實際產能大大降低。由于產能降低青瀑,因此時間更緊張璧亮,壓力就更大。

(6)重構斥难。重構是一種對代碼進行改進而不影響功能實現的技術枝嘶,XP 需要開發(fā)人員在“聞到代碼的壞味道”時,就有重構代碼的勇氣哑诊。重構的目的是降低變化引發(fā)的風險群扶、使得代碼優(yōu)化更加容易。

(7)結對編程镀裤。從 20 世紀 60 年代開始竞阐,就有類似的實踐在進行,長年以來的研究結果給出的結論是淹禾,結對編程的效率反而比單獨編程更高馁菜。一開始雖然會犧牲一些速度,但慢慢地铃岔,開發(fā)速度會逐漸加快。究其原因峭火,主要是結對編程大大降低了溝通的成本毁习,提高了工作的質量。結對編程技術被譽于 XP 保證工作質量卖丸、強調人文主義的一個最典型的實踐纺且,應用得當還能夠使開發(fā)團隊協(xié)作更加順暢、知識交流與共享更加頻繁稍浆、團隊穩(wěn)定性也會更加牢固载碌。

(8)集體代碼所有制。由于 XP 方法鼓勵團隊進行結對編程衅枫,而且認為結對編程的組合應該動態(tài)地搭配嫁艇,根據任務的不同、專業(yè)技能的不同進行最優(yōu)組合弦撩。因此步咪,每一個人都會遇到不同的代碼,代碼的所有制就不再適合于私有益楼,因為那樣會給修改工作帶來巨大的不便猾漫。

所謂集體代碼所有制点晴,就是團隊中的每個成員都擁有對代碼進行改進的權利,每個人都擁有全部代碼悯周,也都需要對全部代碼負責粒督。同時,XP 強調代碼是誰破壞的(修改后出現問題)禽翼,就應該由誰來修復坠陈。

集體代碼所有制是 XP 與其他敏捷方法的一個較大不同,也是從另一個側面體現了 XP 中蘊含的很深厚的編碼情節(jié)捐康。

(9)持續(xù)集成仇矾。在前面談到小型發(fā)布、重構解总、結對編程贮匕、集體代碼所有制等最佳實踐的時候,多次提到“持續(xù)集成”花枫,可以說持續(xù)集成是這些最佳實踐的基本支撐條件刻盐。

(10)每周工作 40 小時。這是最讓開發(fā)人員開心劳翰、管理者反對的一個最佳實踐了敦锌,加班、再加班早已成為開發(fā)人員的家常便飯佳簸,也是管理者最常使用的一種策略乙墙。而 XP 方法認為,加班最終會扼殺團隊的積極性生均,最終導致項目的失敗听想,這也充分體現了 XP 方法關注人的因素比關注過程的因素更多一些。不過马胧,有一點是需要解釋的汉买,“每周工作 40 小時”中的“40”不是一個絕對數,它所代表的意思是團隊應該保證按照“正常的時間” 進行工作佩脊。

(11)現場客戶蛙粘。為了保證開發(fā)出來的結果與客戶的預想接近,XP 方法認為最重要的是需要將客戶請到開發(fā)現場威彰。就像計劃游戲中提到過的出牧,在 XP 項目中,應該時刻保證客戶負責業(yè)務決策抱冷,開發(fā)團隊負責技術決策崔列。因此,在項目中有客戶在現場明確用戶故事,并做出相應的業(yè)務決策赵讯,對于 XP 項目而言有著十分重要的意義盈咳。

(12)編碼標準。擁有編碼標準可以避免團隊在一些與開發(fā)進度無關的細枝末節(jié)問題上發(fā)生爭論边翼,而且會給重構鱼响、結對編程帶來很大的麻煩。不過组底,XP 方法的編碼標準的目的不是創(chuàng)建一個事無巨細的規(guī)則列表丈积,而是要能夠提供一個確保代碼清晰,便于交流的指導方針债鸡。

有句經典名言“1+1>2”最適合表達 XP 的觀點江滨,Kent Beck 認為,XP 方法的最大價值在于厌均,在項目中融會貫通地運用這 12 個最佳實踐唬滑,而非單獨使用。當然棺弊,可以使用其中的一些實踐晶密,但這并不意味著就應用了 XP 方法。XP 方法真正能夠發(fā)揮其效能模她,就必須完整地運用 12 個實踐稻艰。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市侈净,隨后出現的幾起案子尊勿,更是在濱河造成了極大的恐慌,老刑警劉巖用狱,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件运怖,死亡現場離奇詭異,居然都是意外死亡夏伊,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門吻氧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溺忧,“玉大人,你說我怎么就攤上這事盯孙÷成” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵振惰,是天一觀的道長歌溉。 經常有香客問我,道長,這世上最難降的妖魔是什么痛垛? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任草慧,我火速辦了婚禮,結果婚禮上匙头,老公的妹妹穿的比我還像新娘漫谷。我一直安慰自己,他們只是感情好蹂析,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布舔示。 她就那樣靜靜地躺著,像睡著了一般电抚。 火紅的嫁衣襯著肌膚如雪惕稻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天蝙叛,我揣著相機與錄音俺祠,去河邊找鬼。 笑死甥温,一個胖子當著我的面吹牛锻煌,可吹牛的內容都是我干的。 我是一名探鬼主播姻蚓,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宋梧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了狰挡?” 一聲冷哼從身側響起捂龄,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎加叁,沒想到半個月后倦沧,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡它匕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年展融,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豫柬。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡告希,死狀恐怖,靈堂內的尸體忽然破棺而出烧给,到底是詐尸還是另有隱情燕偶,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布础嫡,位于F島的核電站指么,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜伯诬,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一晚唇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姑廉,春花似錦缺亮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至号阿,卻和暖如春并鸵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扔涧。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工园担, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枯夜。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓弯汰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親湖雹。 傳聞我的和親對象是個殘疾皇子咏闪,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355