登錄

極限編程

百科 > 信息技術(shù) > 極限編程

1.什么是極限編程

  極限編程是由Kent Beck在1996年提出的。Kent仔細(xì)地觀察和分析了各種簡化軟件開發(fā)的前提條件、可能性以及面臨的困難。1996年3月,Kent提出了新的軟件開發(fā)觀念——XP。

  XP是一種輕量級的、靈巧的軟件開發(fā)方法。同時(shí),該方法具有嚴(yán)謹(jǐn)和周密的特征。XP的基礎(chǔ)和價(jià)值觀是交流、樸素、反饋和勇氣,即任何一個(gè)軟件項(xiàng)目都可以從四個(gè)方面入手進(jìn)行改善:加強(qiáng)交流、從簡單做起、尋求反饋和勇于實(shí)事求是。XP是一種近似螺旋式的開發(fā)方法,它將復(fù)雜的開發(fā)過程分解為一個(gè)個(gè)相對比較簡單的小周期,通過積極的交流、反饋以及其他一系列的方法,開發(fā)人員和客戶可以非常清楚開發(fā)進(jìn)度、變化、待解決的問題和潛在的困難等,并根據(jù)實(shí)際情況及時(shí)地調(diào)整開發(fā)過程。

  “Extreme(極限)”是指,對比傳統(tǒng)的項(xiàng)目開發(fā)方式,XP強(qiáng)調(diào)把它列出的每個(gè)方法和思想做到極限、做到最好。XP所不提倡的,則一概忽略(如開發(fā)前期的整體設(shè)計(jì)等)。一個(gè)嚴(yán)格實(shí)施XP的項(xiàng)目,其開發(fā)過程應(yīng)該是平穩(wěn)的、高效的和快速的,能夠做到一周40小時(shí)工作制而不拖延項(xiàng)目進(jìn)度。

2.極限編程的要求

  極限編程要求有極限的工作環(huán)境、極限的需求、極限的設(shè)計(jì)、極限的編程和極限的測試。

  1.極限的工作環(huán)境

  為了在軟件開發(fā)過程中最大程度地實(shí)現(xiàn)和滿足客戶和開發(fā)人員的基本權(quán)利和義務(wù),XP要求把工作環(huán)境也做得最好。每個(gè)參加項(xiàng)目開發(fā)的人都將擔(dān)任~個(gè)角色(項(xiàng)目經(jīng)理、項(xiàng)目監(jiān)督人等)并履行相應(yīng)的權(quán)利和義務(wù)。所有的人都在同一個(gè)開放的開發(fā)環(huán)境中工作,每周40小時(shí),不提倡加班。

  2.極限的需求

  客戶應(yīng)該是項(xiàng)目開發(fā)隊(duì)伍中的一員,而不是和開發(fā)人員分開的。因?yàn)閺捻?xiàng)目的計(jì)劃到最后驗(yàn)收整個(gè)過程客戶一直起著很重要的作用。開發(fā)人員和客戶一起,把各種需求分割為一個(gè)個(gè)小的需求模塊,這些模塊又會根據(jù)實(shí)際情況被組合在一起或者被再次分解成更小的模塊。上述需求模塊都被記錄在一些小卡片(Story Card)上,之后將這些卡片分別分配給程序員們,并在一段時(shí)間內(nèi)(通常不超過3個(gè)星期)實(shí)現(xiàn)。客戶根據(jù)每個(gè)模塊的商業(yè)價(jià)值進(jìn)行排序,確定開發(fā)的優(yōu)先級。開發(fā)人員要做的是確定每個(gè)需求模塊的開發(fā)風(fēng)險(xiǎn)。風(fēng)險(xiǎn)高的(通常是因?yàn)槿狈︻愃频慕?jīng)驗(yàn))需求模塊將被優(yōu)先研究、探索和開發(fā)。經(jīng)過開發(fā)人員和客戶分別從不同的角度評估每個(gè)模塊后,它們被安排在不同的開發(fā)周期里,客戶將得到一個(gè)盡可能準(zhǔn)確的開發(fā)計(jì)劃。

  3.極限設(shè)計(jì)

  從具體開發(fā)過程的角度來看,XP內(nèi)部的過程是多個(gè)基于測試驅(qū)動的開發(fā)(Test Driven Development)周期。諸如計(jì)劃和設(shè)計(jì)等外層的過程都是圍繞這些測試展開的,每個(gè)開發(fā)周期都有很多相應(yīng)的單元測試(Unit Test)。通過這種方式,客戶和開發(fā)人員都很容易檢驗(yàn)所開發(fā)的軟件原型是否滿足了用戶需求。XP提倡簡單的設(shè)計(jì)(Simple Design),即針對每個(gè)簡單的需求用最簡單的方式進(jìn)行設(shè)計(jì)和后續(xù)的編程工作。這樣寫出來的程序可以通過所有相關(guān)的單元測試。

  XP強(qiáng)調(diào)拋棄那種一攬子詳細(xì)設(shè)計(jì)方式(Big Design Up Front),因?yàn)樵谶@種設(shè)計(jì)中有很多內(nèi)容是現(xiàn)在或近期所不需要的。

  XP還大力提倡設(shè)計(jì)復(fù)核(Review)、代碼復(fù)核、重整和優(yōu)化(Re{ectory)。所有的這些過程的目標(biāo),歸根到底還是對設(shè)計(jì)的優(yōu)化。在這些過程中不斷運(yùn)行單元測試和功能測試,可以保證經(jīng)過優(yōu)化后的系統(tǒng)仍然符合用戶的需求。

  4.極限編程

  編程是程序員使用某種程序設(shè)計(jì)語言編寫程序代碼,并最終得到能夠解決某個(gè)問題的程序的過程。XP極其重視編程,提倡配對編程(Pair Programming),即兩個(gè)人一起寫同一段程序,而且代碼所有權(quán)是歸于整個(gè)開發(fā)隊(duì)伍(Collective Code Ownership)。程序員在寫程序和優(yōu)化程序的時(shí)候,都要嚴(yán)格遵守編程規(guī)范。任何人都可以修改其他人寫的程序,修改后要確定新程序能通過單元測試

  5.極限測試

  測試在XP中是很重要的。XP提倡開發(fā)人員經(jīng)常把開發(fā)好的模塊整合到一起(Continuous Integration),并且在每次整合后都進(jìn)行單元測試。對代碼進(jìn)行的任何復(fù)核和修改,也都要進(jìn)行單元測試。發(fā)現(xiàn)了錯(cuò)誤,就要增加相應(yīng)的測試,因此XP方法不需要錯(cuò)誤數(shù)據(jù)庫。

3.極限編程要求的測試規(guī)則

  除了單元測試之外,XP還要進(jìn)行整合測試、功能測試、負(fù)荷測試和系統(tǒng)測試等。這些測試是XP開發(fā)過程中最重要的活動之一,與之相對應(yīng)的測試文檔也是最終交付用戶的內(nèi)容之一。

  根據(jù)極限編程的價(jià)值觀,可以總結(jié)出使用該方法進(jìn)行項(xiàng)目開發(fā)的時(shí)候應(yīng)該遵循的規(guī)則。

  1、完整團(tuán)隊(duì)

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

  2、計(jì)劃

  在XP項(xiàng)目中,計(jì)劃是持續(xù)的、循序漸進(jìn)的。XP項(xiàng)目組只為下兩周的開發(fā)活動估算開發(fā)成本,而客戶則根據(jù)成本商業(yè)價(jià)值來選擇要實(shí)現(xiàn)的功能模塊。

  3、客戶測試

  客戶測試已經(jīng)開發(fā)好的模塊是否符合客戶的需求。

  4、簡單設(shè)計(jì)

  XP項(xiàng)目團(tuán)隊(duì)應(yīng)當(dāng)保持設(shè)計(jì)方案恰好和當(dāng)前的系統(tǒng)需求相匹配。它通過了所有的測試,不包含任何重復(fù),表達(dá)出了編寫者想表達(dá)的所有東西,并且包含盡可能少的代碼。

  5、配對編程

  所有的產(chǎn)品軟件都是由兩個(gè)程序員并排坐在一起共同開發(fā)的。

  6、測試驅(qū)動開發(fā)

  編寫單元測試是一個(gè)驗(yàn)證行為,更是~個(gè)設(shè)計(jì)行為。同樣,它也是一種編寫文檔的行為。編寫單元測試避免了相當(dāng)數(shù)量的反饋循環(huán),尤其是功能驗(yàn)證方面的反饋循環(huán)。

  7、改進(jìn)設(shè)計(jì)

  隨時(shí)利用重構(gòu)方法改進(jìn)已經(jīng)過時(shí)的代碼,保持代碼盡可能的干凈、具有表達(dá)力。

  8、持續(xù)集成

  XP團(tuán)隊(duì)總是對現(xiàn)有模塊進(jìn)行集成。

  9、代碼所有權(quán)歸集體所有

  任何配對的程序員都可以在任何時(shí)候改進(jìn)任何代碼。沒有程序員對任何一個(gè)特定的模塊或技術(shù)單獨(dú)負(fù)責(zé),每個(gè)人都可以參與任何其他方面的開發(fā)。

  10、編碼標(biāo)準(zhǔn)

  制定編碼標(biāo)準(zhǔn),并且整個(gè)團(tuán)隊(duì)都必須遵守該編碼標(biāo)準(zhǔn)。使系統(tǒng)中所有的代碼看起來就好像是一個(gè)人編寫的。

  11、可持續(xù)的速度

  XP團(tuán)隊(duì)成員以能夠長期維持的速度努力工作,保存精力,把項(xiàng)目看做是馬拉松長跑,而不是全速短跑。

評論  |   0條評論