極限編程(Extreme Programming,XP)是一門針對業(yè)務(wù)和軟件開發(fā)的規(guī)則,它的作用在于將兩者的力量集中在共同的、可以達(dá)到的目標(biāo)上。它是以符合客戶需要的軟件為目標(biāo)而產(chǎn)生的一種方法論,XP使開發(fā)者能夠更有效
XP 的響應(yīng)客戶的需求變化,哪怕是在軟件生命周期的后期。它強(qiáng)調(diào),軟件開發(fā)是人與人合作進(jìn)行的過程,因此成功的軟件開發(fā)過程應(yīng)該充分利用人的優(yōu)勢,而弱化人的缺點(diǎn),突出了人在軟件開發(fā)過程中的作用。極端編程屬于輕量級的方法,認(rèn)為文檔、架構(gòu)不如直接編程來的直接。
微軟中國正式宣布,將從2008年10月20日起同時(shí)推出兩個(gè)重要更新,使用XP專業(yè)版盜版系統(tǒng)與OfficeXP、Office2003、Office2007盜版軟件的用戶將分別遭遇電腦“黑屏”與“提醒標(biāo)記”等警告。
被稱為Windows正版增值計(jì)劃通知和Office正版增值計(jì)劃通知的這兩個(gè)項(xiàng)目均是可選擇式的服務(wù)。用戶可以通過微軟更新站點(diǎn)或自動(dòng)跟新選擇下載安裝、經(jīng)過驗(yàn)證過程后了解自己使用的WindowsXP或Office產(chǎn)品是否為正版并獲得了相應(yīng)的授權(quán)。
微軟方面透露,驗(yàn)證通過的用戶直接使用WindowsXP或Office程序即可。對于因不同原因未通過驗(yàn)證的用戶,將收到相應(yīng)的系統(tǒng)通知。如:產(chǎn)品未激活或使用試用版下的“未激活驗(yàn)證失敗”;因同步超時(shí)等原因引起的“驗(yàn)證無法完成”;或“非正版驗(yàn)證失敗”。
XP
如果WindowsXP用戶沒有通過正版驗(yàn)證,將會(huì)體驗(yàn)到:用戶開機(jī)進(jìn)入后,桌面背景變?yōu)榧兒谏,用戶可以重新設(shè)置桌面背景,但是每隔60分鐘,桌面背景將重新變回黑色;會(huì)看到一個(gè)登錄中斷的對話框,并在屏幕的右下角會(huì)出現(xiàn)一個(gè)永久通知和持續(xù)提醒的對話框顯示“您可能是軟件盜版的受害者”等提示信息。
如果Office用戶沒有通過正版驗(yàn)證,用戶體驗(yàn)將分為三個(gè)階段:驗(yàn)證失敗后的第1-14天內(nèi),客戶將在每天首次打開Office軟件和此后2小時(shí)分別收到一次對話框提醒;從驗(yàn)證失敗后的第15天開始,提示信息將告知用戶如不采取行動(dòng),將在14天后,Office軟件被添加視覺標(biāo)記;客戶在收到這些對話框通知30天后,Office軟件的Word、Excel,PowerPoint和Outlook程序的菜單欄中將被添加視覺標(biāo)記。
微軟方面認(rèn)為,這兩項(xiàng)計(jì)劃是旨在幫助中國用戶甄別電腦中安裝的微軟Windows操作系統(tǒng)和Office應(yīng)用軟件是否是獲得授權(quán)的正版軟件,從而幫助那些在不知情的情況下安裝和使用了盜版軟件的用戶免受侵害。
XP實(shí)際上是一種經(jīng)歷過很多實(shí)踐考驗(yàn)的一種軟件開發(fā)的方法,它誕生了大概有5 年,它已經(jīng)被成功的應(yīng)用在許多大型的公司,如:Bayeris che Landesbank,Credit Swis s Life,DaimlerChrysler,F(xiàn)irst Union National Bank Ford Motor Company and UBS.XP 的成功得益于它對客戶滿意度的特別強(qiáng)調(diào),XP 是以開發(fā)符合客戶需要的軟件為目標(biāo)而產(chǎn)生的一種方法論,XP 使開發(fā)者能夠更有效的響應(yīng)客戶的需求變化,哪怕在軟件生命周期的后期。
微軟中國正式宣布,將從2008年10月20日起同時(shí)推出兩個(gè)重要更新,使用XP專業(yè)版盜版系統(tǒng)與OfficeXP、Office2003、Office2007盜版軟件的用戶將分別遭遇電腦“黑屏”與“提醒標(biāo)記”等警告!
XP
新聞發(fā)布后即引起了網(wǎng)友的極大反應(yīng)。截止18:00,已有4萬名網(wǎng)友通過搜狐新聞的調(diào)查表達(dá)了自己的意見,其中22.7%的網(wǎng)友反對“黑屏”,認(rèn)為微軟此舉太過分了。而66%的網(wǎng)友則堅(jiān)稱要將盜版使用到底。
支持微軟的網(wǎng)友只占7.8%!
不少堅(jiān)稱繼續(xù)使用盜版!安皇遣幌胗谜妫翘F了!鳖愃圃摼W(wǎng)友,希望微軟繼續(xù)降價(jià)的網(wǎng)友也不在少數(shù)。
同時(shí),XP 也很強(qiáng)調(diào)團(tuán)隊(duì)合作。團(tuán)隊(duì)包括:項(xiàng)目經(jīng)理,客戶,開發(fā)者。團(tuán)結(jié)在一起來保證高質(zhì)量的軟件。XP 其實(shí)是一種保證成功的團(tuán)隊(duì)開發(fā)的簡單而有效的方法。
XP 強(qiáng)調(diào)四種價(jià)值:交流,簡易,回饋,勇氣。XP 程序員之間緊密的相互交流,XP 程序員也和客戶緊密的交流。他們總是保持他們的設(shè)計(jì)簡單明了。項(xiàng)目一開始,XP 就強(qiáng)調(diào)通過對軟件的不斷測試來獲得反饋,程序員盡可能早的把軟件交給客戶,并實(shí)現(xiàn)客戶對軟件需求提出的變化,有了這些基礎(chǔ),XP 程序員就可以自信的面對需求和軟件技術(shù)的變化。
XP
XP 是與眾不同的,它有點(diǎn)象快步的舞蹈。XP 開發(fā)過程包括許多的小卡片,獨(dú)立的看,這些小卡片沒有什么意義,但是當(dāng)它們組合在一起,一幅完整的美麗的圖片就可以看見,XP方法有別于傳統(tǒng)軟件開發(fā),它是軟件開發(fā)的一種新的重要的發(fā)展。它改變了用戶開發(fā)程序的傳統(tǒng)思維方式。下面用戶將介紹它帶給我們那些改變。
XP屬于輕量開發(fā)方法中較有影響的一種方法。輕量開發(fā)方法是相對于傳統(tǒng)的重量開發(fā)方法而言。簡單地理解,“量”的輕重是指用于軟件過程管理和控制的、除程序量以外的“文檔量”的多少。XP等輕量開發(fā)方法認(rèn)識到,在當(dāng)前很多情況下,按傳統(tǒng)觀念建立的大量文檔,一方面需要消耗大量開發(fā)資源,同時(shí)卻已失去幫助“預(yù)見、管理、決策和控制的依據(jù)”的作用。因此必須重新審視開發(fā)環(huán)節(jié),去除臃腫累贅,輕裝上陣。
一、XP的核心思想
從長遠(yuǎn)看,早期發(fā)現(xiàn)錯(cuò)誤以及降低復(fù)雜度可以節(jié)約成本。極限編程強(qiáng)調(diào)我們將任務(wù)/系統(tǒng)細(xì)分為可以在較短周期解決的一個(gè)個(gè)子任務(wù)/模塊,并且強(qiáng)調(diào)測試、代碼質(zhì)量和及早發(fā)現(xiàn)問題。通常,通過一個(gè)個(gè)短小的迭代周期,我們就可以獲得一個(gè)個(gè)階段性的進(jìn)展,并且可以及時(shí)形成一個(gè)版本供用戶參考,以便及時(shí)對用戶可能的需求變更作出響應(yīng)。
二、XP的十二種方法
規(guī)劃策略(The Planning Game);
結(jié)對編程(Pair programming)
測試(Testing)
重構(gòu)(Refractoring)
簡單設(shè)計(jì)(Simple Design)
代碼集體所有權(quán)(Collective Code Ownership)
持續(xù)集成(Continuous Integration)
現(xiàn)場客戶(On-site Customer)
小型發(fā)布(Small Release)
每周40小時(shí)工作制(40-hour Week)
編碼規(guī)范(Code Standards)
系統(tǒng)隱喻(System Metaphor)
三、XP的四個(gè)核心價(jià) 極限編程中有四個(gè)核心價(jià)值是我們在開發(fā)中必須注意的:溝通(Communication)、簡單(Simplicity)、反饋(Feedback)和勇氣(Courage)。
XP
XP用“溝通、簡單、反饋和勇氣”來減輕開發(fā)壓力和包袱;無論是術(shù)語命名、專著敘述內(nèi)容和方式、過程要求,都可以從中感受到輕松愉快和主動(dòng)奮發(fā)的態(tài)度和氣氛。這是一種幫助理解和更容易激發(fā)人的潛力的手段。XP用自己的實(shí)踐,在一定范圍內(nèi)成功地打破了軟件工程“必須重量”才能成功的傳統(tǒng)觀念。
XP精神可以啟發(fā)我們?nèi)绾螌W(xué)習(xí)和對待快速變化、多樣的開發(fā)技術(shù)。成功學(xué)習(xí)XP的關(guān)鍵,是用“溝通、簡單、反饋和勇氣”的態(tài)度來對待XP;輕松愉快地來感受XP的實(shí)踐思想;自己認(rèn)真實(shí)踐后,通過對真實(shí)反饋的分析,來決定XP對自己的價(jià)值;有勇氣接受它,或改進(jìn)它。
四、XP 帶給我們的變化
通過軟件工程設(shè)計(jì)的簡單而優(yōu)美的軟件并不比那些設(shè)計(jì)復(fù)雜而難以維護(hù)的軟件有價(jià)值。這是真的嗎?XP認(rèn)為事實(shí)并非如此。
一個(gè)典型的項(xiàng)目花在人力上的金錢是花在硬件上的時(shí)間的20 倍,這意味著一個(gè)項(xiàng)目每年要花200 萬美元在程序員身上,而僅僅花10 萬美元在電腦設(shè)備上。很多聰明的程序員說:“我們?nèi)绱寺斆,發(fā)現(xiàn)一種方法可以節(jié)省20%的硬件開銷”,然后他們使得源程序大而且難懂和難以維護(hù),他們會(huì)說:“但是我們節(jié)省了20%或者2 萬美元每年,很大的節(jié)省”。反之,如果我們寫我們的程序簡單而且容易擴(kuò)展,我們將至少節(jié)省10%的人力開銷,一筆更大的節(jié)省,這是你客戶一定會(huì)注意到的一些事情。
另外一個(gè)對客戶來說很重要的問題就是程序的BUGS 。XP 不只是強(qiáng)調(diào)測試,而且要求正確的測試。測試必須是能自動(dòng)進(jìn)行的,以便為程序和客戶提供一個(gè)安全的環(huán)境。在編碼的所有階段,我們不斷增加測試用例。當(dāng)找到bug 時(shí),我們就添加新的測試,一個(gè)緊密的安全網(wǎng)就這樣產(chǎn)生了。同一個(gè)BUG 不出現(xiàn)兩次,這些一定會(huì)引起用戶的注意。你的客戶必須注意的另外一件事情:XP 開發(fā)者擁抱需求變化。XP 使我們能夠接受需求的變化。
一般情況下,客戶只有在系統(tǒng)被開發(fā)完成以后能真正去體會(huì)它。XP 卻不一樣,它通過加強(qiáng)客戶的反饋來縮短開發(fā)的周期,同時(shí)獲得足夠的時(shí)間來改變功能和獲得用戶的認(rèn)同。在XP 中,你的客戶應(yīng)該明確的知道這一點(diǎn)。
XP開發(fā)過程的大多的革命是在軟件開發(fā)的方法上,代碼質(zhì)量的重要程度超出人們一般所認(rèn)為的。僅僅因?yàn)橛脩舻目蛻舨荒苊靼子脩舻脑创a并不意味著用戶可以不努力去管理代碼的質(zhì)量。
五、用戶什么時(shí)候用XP
XP方法的產(chǎn)生是因?yàn)殡y以管理的需求變化,從一開始你的客戶并不是很完全的知道他們要的系統(tǒng)是怎么樣的,你可能面對的系統(tǒng)的功能一個(gè)月變化多次。在大多數(shù)軟件開發(fā)環(huán)境中不斷變化的需求是唯一的不變,
XP 這個(gè)時(shí)候應(yīng)用XP 就可以取得別的方法不可能取得的成功。XP 方法的建立同時(shí)也是為了解決軟件開發(fā)項(xiàng)目中的風(fēng)險(xiǎn)問題。假如你的客戶在特定的時(shí)間內(nèi),需要一個(gè)相當(dāng)難開發(fā)的系統(tǒng),而且對于你的項(xiàng)目組來說,這個(gè)系統(tǒng)是一個(gè)新的挑戰(zhàn)(從來沒有做過),那風(fēng)險(xiǎn)就更大了,如果這個(gè)系統(tǒng)對于整個(gè)軟件行業(yè)來說都是新的挑戰(zhàn),那么它的風(fēng)險(xiǎn)就更大了,采用XP 將可以減少風(fēng)險(xiǎn),增加成功的可能。
XP方法是為小團(tuán)體開發(fā)建立的,在2-10 個(gè)人之間。假如你的團(tuán)體恰好合適,你就不需要用其他的軟件工程方法了,就用XP ,但是要注意你不能將XP 方法應(yīng)用于大團(tuán)體的開發(fā)項(xiàng)目中。用戶應(yīng)該注意,在需求一慣呈動(dòng)態(tài)變化或者高具有高風(fēng)險(xiǎn)的項(xiàng)目中,你就會(huì)發(fā)現(xiàn)XP 方法在小團(tuán)體的開發(fā)中的作用要遠(yuǎn)遠(yuǎn)高于在大團(tuán)體的開發(fā)。
XP方法需要一個(gè)擴(kuò)展的開發(fā)團(tuán)體,XP 團(tuán)體不僅僅包括開發(fā)者,經(jīng)理、客戶也是其中的一員,所有的工作一環(huán)扣一環(huán),問問題,商討方法和日程,增加功能測試,這些問題的解決不僅僅涉及到軟件的開發(fā)者。
另一個(gè)需要是可測試性,你必須能增加自動(dòng)的單元測試和功能測試,然而在你進(jìn)行這個(gè)需求的時(shí)候,你會(huì)發(fā)現(xiàn)有許多的問題很難測試,這需要充分發(fā)揮你的測試的經(jīng)驗(yàn)和智慧,而且你有時(shí)還要改變你的設(shè)計(jì)以便它可以更容易的進(jìn)行測試。記。耗莾河行枨螅莾壕蛻(yīng)該有測試的方法。
在XP方法的好處的清單上,最后一條是生產(chǎn)力。在同樣的合作環(huán)境下,XP 項(xiàng)目都一致的表現(xiàn)出比使用其他方法高的多的生產(chǎn)力。但這從來不是XP 方法學(xué)的真正目標(biāo)。XP 真實(shí)追求的目標(biāo)是:在規(guī)定的時(shí)間生產(chǎn)出滿足客戶需要的軟件。假如對于你的開發(fā)來說,這是很重要的方面,你就可以選擇XP 了。
六、極限編程的有效實(shí)踐
1、完整團(tuán)隊(duì)
XP
XP項(xiàng)目的所有參與者(開發(fā)人員、客戶、測試人員等)一起工作在一個(gè)開放的場所中,他們是同一個(gè)團(tuán)隊(duì)的成員。這個(gè)場所的墻壁上隨意懸掛著大幅的、顯著的圖表以及其他一些顯示他們進(jìn)度的東西。
2、計(jì)劃游戲
計(jì)劃是持續(xù)的、循序漸進(jìn)的。每2周,開發(fā)人員就為下2周估算候選特性的成本,而客戶則根據(jù)成本和商務(wù)價(jià)值來選擇要實(shí)現(xiàn)的特性。
3、客戶測試
作為選擇每個(gè)所期望的特性的一部分,客戶可以根據(jù)腳本語言來定義出自動(dòng)驗(yàn)收測試來表明該特性可以工作。
4、簡單設(shè)計(jì)
團(tuán)隊(duì)保持設(shè)計(jì)恰好和當(dāng)前的系統(tǒng)功能相匹配。它通過了所有的測試,不包含任何重復(fù),表達(dá)出了編寫者想表達(dá)的所有東西,并且包含盡可能少的代碼。
5、結(jié)對編程
所有的產(chǎn)品軟件都是由兩個(gè)程序員、并排坐在一起在同一臺機(jī)器上構(gòu)建的。
6、測試驅(qū)動(dòng)開發(fā)
編寫單元測試是一個(gè)驗(yàn)證行為,更是一個(gè)設(shè)計(jì)行為。同樣,它更是一種編寫文檔的行為。編寫單元測試避免了相當(dāng)數(shù)量的反饋循環(huán),尤其是功功能能驗(yàn)證方面的反饋循環(huán)。程序員以非常短的循環(huán)周期工作,他們先增加一個(gè)失敗的測試,然后使之通過。
7、改進(jìn)設(shè)計(jì)
隨時(shí)利用重構(gòu)方法改進(jìn)已經(jīng)腐化的代碼,保持代碼盡可能的干凈、具有表達(dá)力。
8、持續(xù)集成
團(tuán)隊(duì)總是使系統(tǒng)完整地被集成。一個(gè)人拆入(Check in)后,其它所有人責(zé)任代碼集成。
9、集體代碼所有權(quán)
任何結(jié)對的程序員都可以在任何時(shí)候改進(jìn)任何代碼。沒有程序員對任何一個(gè)特定的模塊或技術(shù)單獨(dú)負(fù)責(zé),每個(gè)人都可以參與任何其它方面的開發(fā)。
10、編碼標(biāo)準(zhǔn)
系統(tǒng)中所有的代碼看起來就好像是被單獨(dú)一人編寫的。
11、隱喻
將整個(gè)系統(tǒng)聯(lián)系在一起的全局視圖;它是系統(tǒng)的未來影像,是它使得所有單獨(dú)模塊的位置和外觀變得明顯直觀。如果模塊的外觀與整個(gè)隱喻不符,那么你就知道該模塊是錯(cuò)誤的。
12、可持續(xù)的速度
團(tuán)隊(duì)只有持久才有獲勝的希望。他們以能夠長期維持的速度努力工作,他們保存精力,他們把項(xiàng)目看作是馬拉松長跑,而不是全速短跑。
1.http://news.qq.com/a/20081015/003309.htm
2.http://it.sohu.com/s2008/daobanxp/
3.http://mms1.ganxiu.com/Pic/4420139205b401dd