摘要:極限編程是一種輕量級的軟件開發方法。該文在介紹極限編程主要特點的基礎上,探討了在計算機項目實踐教學中引入極限編程方法的必要性,以及如何在計算機項目實踐教學中有效地應用極限編程方法。
關鍵詞:極限編程;結對編程;教學
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)35-2400-02
The Application of the Extreme Programming in the Project Practice' Teaching
MA Jie
(Henan Industrial Technician College, Zhengzhou 450007, China)
Abstract: Extreme Programming is a lightweight software development methodology. This paper introduces Extreme Programming main feature, we also explored Extreme Programming method in the computer project practice teaching of the necessity. And how to design effective project practice' teaching with Extreme Programming.
Key words: extreme programming; pair programming; teaching
1 引言
極限編程(Extreme Programming, 簡稱XP)作為近年來逐漸普及的一種輕量級軟件開發方法在很多方面和我們傳統意義上的軟件開發工程有所不同。XP從實踐中來,是對實踐的總結,也是經過實踐檢驗的,其主要特征是要適應環境變化和需求變化,充分發揮開發人員的主動精神。正是由于它的特有方法幫助我們減輕了軟件開發的壓力,使軟件能以盡可能快的速度開發出來并向客戶提供最高的效益。
2 極限編程思想及其特點
極限編程強調我們將任務細分為可以在較短周期解決的一個個子任務,并且強調測試、代碼質量和及早發現問題。通常,通過一個個短小的迭代周期,我們就可以獲得一個個階段性的進展,并且可以及時形成一個版本供用戶參考,以便及時對用戶可能的需求變更作出響應。其主要特點有:
2.1 軟件開發采用原型法
極限編程要求將一個軟件開發項目分為多個迭代周期,每個周期實現部分軟件功能。在每個周期都進行提出需求、設計軟件架構、編碼、測試、發布軟件開發的全過程。每個周期都進行充分的測試和集成。這樣的好處是可以不斷地從客戶方面得到反饋,更逼近實際的軟件需求。通過頻繁的重新編碼的過程,可以非常適應功能更改的需求,同時增加軟件的易維護性。在不斷的迭代中,避免架構設計的重大失誤造成的軟件不能如期交工,避免了軟件設計的風險。
2.2 強調設計簡單性
在軟件設計中,強調簡單性,就是堅決不做用不到的通用功能。同時,也不刻意避免重新編碼,只有不斷地重新編碼才能保證軟件得合理性。不害怕對整個軟件推倒重做。認為重新編碼是很正常得現象。每次得重新編碼都會大大減少軟件中得熵值。
2.3 引入現場客戶
在專業分工中,提出在開發團隊中要有全職的客戶人員的參與,同時在軟件團隊中也要有自己的領域專家。這樣,可以和客戶充分交流,徹底了解應用需求。這種軟件需求的提出不是一次性的,而是不斷的交流。
2.4 在軟件開發的順序上,和傳統方法完全相反
傳統方法是按照整體設計、編寫代碼、進行測試、交付客戶的方法。而XP是按照交付客戶、測試、編碼、設計的順序來開發。首先將要交付客戶的軟件的界面做出來,先讓客戶對軟件有實際體驗,這樣,可以獲得客戶的更多的反饋,使需求可以在開發前確定。在編碼前就先把測試程序做好,這樣,編碼完成后就可以馬上進行測試。通過不斷的測試來保證軟件的質量。在進行軟件架構設計之前就進行編碼,可以使問題更早暴露,可以使最后的軟件設計更體現編碼的特點,更符合實際,更容易實現,也保證了設計的合理,保證了軟件設計的大量決定的正確性。
2.5 計劃進度表由技術人員提出
在項目計劃的實現上,每次的計劃都是技術人員對客戶提出時間表,由最后的開發人員對項目經理提出編碼的時間表。這種計劃都是從下而上的,不是從上到下的,更容易保證計劃的按時完成。同時,多個迭代周期也使工期的估計越來越精確。
2.6 在分工上,強調角色輪換,項目的集體負責,分工的自愿性
分工的自愿性就是每個人的工作內容不是由項目經理分派,而是由每個人自愿領取,這樣保證了每個人可以發揮自己的特長,適應自己的情況。當然,在每個問題上都要有唯一的決策人,同時,也要經過充分的交流和溝通。角色輪換就是在項目中,一個人在不同的周期中擔任不同的角色,可以保證每個人對項目的整體把握,方便項目中的溝通和理解。項目的集體負責,就是每個人不是完成自己的工作就可以了,要對整個項目的完成負責,任何人都可以對工作的任何部分提出自己的建議。任何人都可以從事任何工作。任何人都要對整個項目熟悉。這樣做的優點是可以充分的鍛煉人、可以發揮每個人的積極性、可以使項目不依賴于某個特定的人,方便今后的軟件的維護,通過工作內容的變換可以提高人工作的興趣。通過角色輪換還可以使每個人都勞逸結合,方便相互理解,避免由于不理解而造成的各種配合問題。
2.7 每周40小時工作制
保證每天的工作都是高效的,不連續加班。
2.8 結對編程
提出了結對編程的思路,這也是極限編程的實施重點。
2.9 人員分工靈活
在人員的分工上要靈活,要保證軟件開發中的角色的齊全,但每個角色可以由幾個人共同擔任,也可以一個人擔任幾個角色,并且在項目的不同時期,不同角色的人員數量會不斷變化。
2.10 站立會議
每天或隔天,開一個站立會議(保證開會時間盡量短),來解決工作時間不一致和相互打擾工作的情況。在每個迭代周期也有一個計劃和分工等的全體大會。
3 極限編程在項目實踐教學中的應用
3.1 在項目實踐中應用結對編程
極限編程的核心就是結對編程。所謂結對編程,就是每個模塊的編碼都是兩個人一起干,共用一臺電腦。這樣,一個人編碼時,另外一個人就可以檢查代碼,或對編碼的思路進行思考,寫文檔等。不再有另外的測試人員,兩個人同時完成代碼的測試,并且是先寫測試程序然后再編程。這樣既避免了編程人員和測試人員的矛盾,又解決了一個人自己檢查的局限性。兩個人共同檢查可以避免大多數的錯誤。在共同編程中還可以進行經驗的交流和傳授。也避免了將一個工作一直干下去的無聊,交流增加了情趣。并且兩個人共同工作也增加了工作量的彈性,使項目計劃的瓶頸工作能盡快解決。將這種結對編程的思路運用在學生做項目開發中,可以有效控制軟件開發的進度和快速解決開發中出現的問題。
另外根據結對編程的思路,在帶學生項目實踐時,也可以將開發小組分為兩個小組,一個小組進行開發,另一個小組作改進和bug修正等工作。也有同樣的效果。
3.2 極限編程有利于學生培養自信心,全員參與,鍛煉動手能力
傳統的小組項目開發過程中,由于學生的程度不同,自信心不夠,很多情況是一個小組中多是一位主力學生在編程序做項目,而其他學生則處于一個旁觀者的位置。這種小組的不利于團隊合作和項目的完成,。而極限編程則能有利地解決這個問題。在結對編程的方式中, 雙方處于一個對等的位置, 每個人都是項目開發的主角。因此, 應用能力差的學生也有動手的機會, 完全擺脫了過去那種旁觀、旁聽的位置,并能從與對方的合作中學到許多自己不知道和了解的內容,從而鍛煉了動手能力。同時由于學生存在不同的知識水平的差異,因此,在結對編程中雙方容易學習到別人的優點,意識到自己的缺點并加以改正,從而在結對編程中達到提高綜合素質和能力的目的。
3.3 在項目實踐教學中應用極限編程有利于培養學生人際交往能力
溝通問題是一個項目開發設計成功與否的最重要因素之一。這種溝通不僅體現在設計人員和客戶的溝通,同時也體現在團隊內部。一個設計項目可能并沒有什么正式的軟件過程, 但是只要團隊成員能夠進行有效的溝通, 項目成功的可能性就很大, 但是如果項目中缺乏有效的溝通渠道,再優秀、再嚴謹的軟件過程也沒有用。從長期來看,內部能夠進行有效溝通的組織能夠得到很好的發展;但是反過來, 內部溝通不暢的組織將會出現很多的問題。
極限編程的核心準則是:溝通、簡單、反饋和勇氣。運用結對編程是一種非常有效改善溝通的方法。一對編程人員是協作過程中最基本的溝通單元。而結對編程的中心思想就是組內成員以及組與組之間的成員相互協作,相互溝通,迫使成員必須頻繁的交流,增進知識經驗的交流。這種以小組為單位共進退的方式取代了過去以個人為中心的競爭,避免了個人英雄主義。有利于成績差,動手能力差的學生樹立自尊和自信,同時也有利于成績好,動手能力強的學生樹立助人為樂的自豪感。通過相互之間具體的合作,從而順利地建立起兩者之間良好的人際關系。
4 結束語
XP作為一種輕量級的軟件開發方法, 以過程簡單為準則,以人員之間的信息溝通為保證、以提高軟件質量為目標,可以有效應對軟件開發中的需求變化,在世界各地已經得到越來越多的開發機構所采用。XP對于我們學習快速開發技術,減輕開發壓力,提高軟件產品質量,會起到極其重要的作用。但是根據我們國內軟件開發的實際情況,以及XP本身還處于有待完善和改進階段,對于它在軟件開發和教學方面的應用仍然需要進一步的學習和探索。
參考文獻:
[1] Kent Beck. 解析極限編程——擁抱變化[M]. 雷劍文,等譯. 北京:電子工業出版社,2006.
[2] Robert Martin. 敏捷軟件開發:原則、模式和實踐[M]. 鄧輝 譯. 北京:清華大學出版社,2003.