胡 霞
[摘要]在軟件開發(fā)過程中,敏捷開發(fā)思想是現(xiàn)階段最新的軟件開發(fā)思想,它可以讓軟件開發(fā)團隊具有快速工作和響應(yīng)變化能力的價值觀和原則。因此,就這一先進思想在實際項目開發(fā)的應(yīng)用提出一些觀點。
[關(guān)鍵詞]敏捷軟件開發(fā)方法極限編程項目開發(fā)實踐
中圖分類號:TJ8文獻標識碼:A文章編號:1671-7597(2009)1220066-01v
一、引言
敏捷軟件開發(fā)思想是近幾年在軟件領(lǐng)域興起的新思潮,使用該思想設(shè)計出來的軟件靈活、高效、高質(zhì),將其與傳統(tǒng)的開發(fā)原則結(jié)合起來,能有效地提高軟件開發(fā)的效率,是越來越多的軟件開發(fā)者所追捧的一種開發(fā)思想。將該思想引入到小型項目開發(fā)過程中,解決傳統(tǒng)方法在適應(yīng)需求變化方面的不足,能有效控制需求變更和客戶對開發(fā)過程的透明性帶來的風(fēng)險,以求在較短的時間內(nèi)獲得較為滿意的效果。
二、敏捷軟件開發(fā)思想
(一)簡介
敏捷軟件開發(fā)是以Robert C.Martin為代表的軟件行業(yè)的領(lǐng)軍人物提出的軟件開發(fā)思想。在2001年初,由于看到許多公司的軟件團隊陷入了不斷增長的過程的泥潭,一批業(yè)界專家聚集在一起概括出了一些可以讓軟件開發(fā)團隊具有快速工作和響應(yīng)變化能力的價值觀和原則。他們稱自己為敏捷聯(lián)盟,在隨后的幾個月中,他們創(chuàng)建出了一份敏捷聯(lián)盟宣言(The Manifesto of the Agile Alliance)。
人和交互重于 過程和工具
可以工作的軟件 重于 面面俱到的文檔
客戶合作 重于 合同談判
隨時應(yīng)對變化 重于 遵循計劃
敏捷聯(lián)盟以他們親身實踐及幫助他人的實踐提示更好的軟件開發(fā)的方法。該方法強調(diào)了以人為核心、通過迭代、循序漸進地進行軟件開發(fā),它更加靈活,更能夠適應(yīng)不斷變化的需求,提高了軟件開發(fā)的質(zhì)量,大大提高了軟件開發(fā)的效率,同時也縮短了軟件產(chǎn)品開發(fā)的周期。
(二)極限編程模型
敏捷軟件開發(fā)的模型有XP(極限編程,eXtreme Programming)、FDD(特性驅(qū)動開發(fā),Feature-Driven Development)、Scrum、ASP(自適應(yīng)軟件開發(fā)Adaptive Software Development)、DSDM(動態(tài)系統(tǒng)開發(fā)方法,Dynamic System Development Method)、AUP(敏捷統(tǒng)一過程,Agile Unified Process)、Crystal等。本課程中主要通過研究極限編程模型,來學(xué)習(xí)敏捷軟件開發(fā)思想。
XP是一種靈巧的軟件開發(fā)方法。它的基礎(chǔ)和價值觀是交流、樸素、反饋和勇氣;即,任何一個軟件項目都可以從四個方面入手:加強交流;從簡單做起;尋求反饋;勇于實事求是。XP將復(fù)雜的開發(fā)過程分解為一個個相對比較簡單的小周期;通過團隊人員之間、團隊與客戶之間反復(fù)的交流及其它一系列的方法,開發(fā)人員和客戶在整個過程中均可以非常清楚開發(fā)進度、變化、待解決的問題和潛在的困難等,并根據(jù)實際情況及時地調(diào)整開發(fā)過程,縮短軟件開發(fā)的周期,提高軟件開發(fā)的效率和質(zhì)量。
三、敏捷軟件開發(fā)在項目開發(fā)中實踐
按照敏捷開發(fā)提出的設(shè)計要求,在項目開發(fā)中,結(jié)合具體的開發(fā)項目、企業(yè)文化和團隊實際情況合理地利用敏捷開發(fā)方法,真正幫助解決項目開發(fā)中可能出現(xiàn)的危機和潛在的困難,以生產(chǎn)出高品質(zhì)的軟件產(chǎn)品。以下幾個方面是本人在項目開發(fā)具體的實施過程的一點心得:
(一)以人為本,組建完整團隊
敏捷軟件開發(fā)思想認為,“原則、模式和實踐都是重要的,但是使它們發(fā)揮作用的是人”“過程和技術(shù)對于項目的結(jié)果只有次要的影響。首要影響的是人?!庇纱丝梢?具有較強的團隊合作力量,凝聚在一起的團隊具有最強大的軟件開發(fā)實力。傳統(tǒng)的軟件開發(fā)模型要求將用戶需求精確化、完全化,形成最終的需求分析報告,并要求在軟件開發(fā)過程中不允許再發(fā)生變化。而傳統(tǒng)的軟件開發(fā)模式下,客戶與軟件開發(fā)人員并不能經(jīng)常性地交流,往往開發(fā)人員完成的需求分析并不是真正用戶所需要的,或者是用戶的需求一旦發(fā)生新的變化,很容易引發(fā)軟件危機,項目以失敗告終或是軟件殘缺不全。而在敏捷軟件開發(fā)中更加注重團隊合作,這里所指的團隊并不僅僅指一支團結(jié)的軟件開發(fā)團隊,更重要的是把客戶加入到開發(fā)團隊中來??蛻襞c開發(fā)者緊密地工作在一起,進行有效的溝通與及時的反饋,以便于彼此知曉對方所面臨的問題,客戶與開發(fā)人員工作距離越近,需求越精確化,因為溝通不夠而出現(xiàn)問題的可能性就越小。
(二)讓軟件代替文檔
在軟件開發(fā)中,沒有文檔的軟件是一種災(zāi)難,然而過多地文檔比過少的文檔更糟,在很多項目開發(fā)過程中,大部分都是為了文檔而文檔,而每次同步大量的文檔需要花費大量的時間,而不同步的文檔反而容易造成團隊成員重大的誤導(dǎo),反而導(dǎo)致了進度拖延。因此,我們要求軟件開發(fā)過程中的文檔盡可能的簡短,給我的開發(fā)文檔,沒有太多東西,但是你想要的全有,而且特細致。而代碼是最真實的表達者,在軟件開發(fā)過程中,我們盡量地使用可以工作的軟件來代替文檔說明,并通過人與人之間的直接交流,從而完成對整個系統(tǒng)時常變化的脈絡(luò)的把握。因此在開發(fā)初期我們可以選用一些原型設(shè)計工具(例Axure Rp),完成對系統(tǒng)的結(jié)構(gòu)設(shè)計,能夠較快地獲取最初的用戶故事,并根據(jù)這些用戶故事構(gòu)建項目基礎(chǔ)結(jié)構(gòu),并根據(jù)結(jié)構(gòu),確定第一個版本發(fā)布計劃,并完成首次版本的開發(fā)與設(shè)計,“越早交付上線就能夠越早地為企業(yè)提供價值,也就能越早地體現(xiàn)出該軟件及其開發(fā)的工程價值與社會價值”。
(三)短周期迭代交互
敏捷軟件開發(fā)中要求項目每兩周就進行一次迭代,每次迭代都是一次較小的交付,該交付可能成為確認,也可能被舍棄。這樣可以將可能出現(xiàn)的問題避免了擴散,有效地避免傳統(tǒng)開發(fā)過程中出現(xiàn)的返工現(xiàn)象。開發(fā)者將迭代的結(jié)果向客戶演示,根據(jù)客戶的反饋結(jié)果確定迭代的取舍。每次的迭代都必須要求用戶參加,并得到客戶的許可方可進行。在迭代的交流過程中,使用素材卡來獲取記錄新的用戶故事,并及時與用戶交流溝通,確認新的變化與需求,并形成新的迭代計劃,從而很好的擁抱不斷變化的需求。
(四)持續(xù)地進行代碼的重構(gòu)
雖然我們設(shè)計的代碼有些已經(jīng)能夠按照要求在工作,它并沒有出錯,但我們卻建議去修理它,為了是使我們的軟件模塊更加易于閱讀和修改。我們可以根據(jù)軟件設(shè)計的原則來消除我們軟件設(shè)計的臭味,以防我們設(shè)計的軟件出現(xiàn)僵化性、脆弱性、牢固性、粘滯性、不必要的復(fù)雜性、不必要的重復(fù)、晦澀性等軟件氣味,防止我們的軟件腐化。大部分開發(fā)人員在完成項目實踐過程中,習(xí)慣于不停地復(fù)制、粘貼代碼,這樣很容易造成了代碼的冗余,并且不利于軟件模塊的修改。如果我們及時地按照軟件設(shè)計的原則來進行代碼的重構(gòu),可以大大節(jié)省了今后代碼更新所需要的時間,同時也提高了軟件開發(fā)的工作效率,因此在此過程中,我們鼓勵軟件開發(fā)人
員大膽地運用軟件工程的相關(guān)知識,依據(jù)軟件設(shè)計原則來進行代碼的重構(gòu),同時也不會害怕經(jīng)常變化的需求。
四、敏捷軟件開發(fā)實踐中遇到的困難
敏捷開發(fā)思想的出現(xiàn),在軟件行業(yè)引起了一輪研究熱潮,由于越來越多的人對它的追捧,往往會背道而馳,走入敏捷開發(fā)思想的誤區(qū),主要表現(xiàn)在以下幾個方面:
(一)難以實現(xiàn)的結(jié)對編程
俗話說:“三個臭皮匠勝過一個諸葛亮!”在敏捷開發(fā)過程中提倡的結(jié)對編程,也就是說代碼都是由結(jié)對的程序員共同完成的,結(jié)對人員中,一個控制鍵盤并輸入代碼,另一個觀察著輸入的代碼,尋找代碼中的錯誤和可以改進的地方,兩個人頻繁互換角色,這樣可以達到事半功倍的效果。在整個項目組中,結(jié)對編程的關(guān)系可以經(jīng)常變換,不過前提是該項目被劃分成一個個最小的功能模塊,這樣的方式極大地促進知識在團隊中的傳播,同時也能夠更加促進了項目各功能模塊之間銜接,可以大大地減少缺陷率。組員之間通過這樣的結(jié)對編程可以相互交換思想,加快知識的傳播。在企業(yè)中,往往出現(xiàn)的是一個蘿卜一個坑,很難做到二個開發(fā)人員結(jié)對完成代碼的編寫。
(二)敏捷軟件開發(fā)工具的缺乏
與傳統(tǒng)的軟件開發(fā)相比,敏捷開發(fā)往往缺少開發(fā)工具和集成環(huán)境支持的軟件開發(fā)方法,這使得敏捷開發(fā)推廣比較困難。期待著能夠早日出現(xiàn)更成熟、便捷、人性化、可視化的開發(fā)工具、集成環(huán)境,以及在此類開發(fā)工具、集成環(huán)境支持下進行敏捷軟件開發(fā)的成功典型案例庫。
五、結(jié)束語
敏捷設(shè)計就是一個過程,不是一個事件。它是一個持續(xù)的應(yīng)用原則、模式以及實踐來改進軟件的結(jié)構(gòu)和可讀性的過程。本人也是初涉敏捷軟件開發(fā)思想,對其中的精華可能理解還不夠深入,以上僅是一些在課程中應(yīng)用的一點思考。如果能夠?qū)⒚艚菰O(shè)計的一些思想使用到軟件開發(fā)過程中,將會事半功倍的效果,這種軟件開發(fā)思想反映了軟件開發(fā)中較先進的理論軟件開發(fā)價值觀和原則。
參考文獻:
[1](美)Robert C.Martin著,鄧輝譯,敏捷軟件開發(fā)(原則、模式與實踐),清華大學(xué)出版社(北京),2003年9月.
[2](美)Martin Fowler著,侯捷、熊節(jié)譯,重構(gòu)-改善有代碼的設(shè)計,中國電力出版社(北京),2003年8月.
[3](美)Grady Booch著,賈愛霞譯,面向?qū)ο蟮姆治雠c設(shè)計,機械工業(yè)出版社(北京),2003年1月.
作者簡介:
胡霞,女,31歲,江蘇大豐人,蘇州工業(yè)職業(yè)技術(shù)學(xué)院工程師,主要研究方向:軟件開發(fā)。