您的位置:軟件測試 > 軟件項(xiàng)目管理 > 開發(fā)管理 >
敏捷提升軟件研發(fā)管理
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/5/14 15:46:44 ] 推薦標(biāo)簽:

敏捷開發(fā)模式開辟了軟件開發(fā)方法的新空間,這給中國軟件企業(yè)帶來了新開發(fā)模式機(jī)遇的同時,也同樣帶來了前所未有的挑戰(zhàn)。

世界五大軟件開發(fā)教父之一的Matin Fowler認(rèn)為,當(dāng)前只有敏捷的軟件開發(fā)模式才能夠使IT跟上業(yè)務(wù)變化的腳步,只有敏捷的開發(fā)模式才能使軟件實(shí)現(xiàn)快速交付的同時又能成為一個高質(zhì)量、低成本的軟件。

敏捷開發(fā)作為一個新的軟件開發(fā)模式的新名詞,其中蘊(yùn)涵著無限的商機(jī),同時,也是對中國軟件企業(yè)的一次嚴(yán)峻的考驗(yàn)。對于起步遠(yuǎn)遠(yuǎn)滯后于西方的中國軟件業(yè)而言,各種提高軟件開發(fā)速度及降低軟件開發(fā)成本的方式和措施都是值得探討與借鑒的。筆者認(rèn)為敏捷開發(fā)模式對于中國的軟件企業(yè)正是一個行之有效的開發(fā)方式。

問題纏繞軟件開發(fā)

軟件開發(fā)過程中問題多多,這不是新發(fā)現(xiàn)。早在上世紀(jì)60年代,北約(NATO)提出了軟件危機(jī)這一概念。在《人月神話》一書中,軟件開發(fā)則被喻為讓眾多史前巨獸痛苦掙扎,卻無力擺脫的焦油坑。隨著需求和應(yīng)用的日趨深入與復(fù)雜化,軟件開發(fā)的難度和遇到的問題以幾何級數(shù)形式增長,焦油坑也由此變得更深、更大。

復(fù)雜程度高、開發(fā)周期長、結(jié)果無保證,這是軟件開發(fā)的通病。針對這些問題,人們創(chuàng)造了N種方法,并由此產(chǎn)生了軟件工程學(xué)。而在實(shí)際工作過程中,軟件開發(fā)的多變性和不可控制性,仍可輕易摧垮項(xiàng)目開始時項(xiàng)目組苦心經(jīng)營的開發(fā)體系和方法,無論是業(yè)界公認(rèn)的需求、變更、人員流動,還是各種看起來并不起眼的小事件。

以人為本的敏捷開發(fā)

敏捷開發(fā)(Agile Software Development)是一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方法。在敏捷開發(fā)中,如同項(xiàng)目管理中將工作任務(wù)及工作目標(biāo)層層分解一樣,把軟件項(xiàng)目的構(gòu)建切分成多個子項(xiàng)目,各個子項(xiàng)目的成果都經(jīng)過測試,具備集成和可運(yùn)行的特征。簡言之,是把一個大項(xiàng)目分為多個相互聯(lián)系,但也可獨(dú)立運(yùn)行的小項(xiàng)目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。

通過上面的定義可以看出,敏捷開發(fā)其實(shí)借鑒了大量軟件工程中的方法。是傳統(tǒng)軟件開發(fā)意義上的改善,而非創(chuàng)新。例如在傳統(tǒng)的軟件開發(fā)中,把設(shè)計(jì)和構(gòu)建這兩個過程分開進(jìn)行,設(shè)計(jì)完成之后,再按照設(shè)計(jì)構(gòu)建。

實(shí)際上,由于需求在不斷變化,因此在軟件開發(fā)的過程中,很難把設(shè)計(jì)和編程完全區(qū)分開來。而在敏捷開發(fā)中,先搭建一個比較粗的主構(gòu)建框架,只對用戶目前感興趣的部分詳細(xì)開發(fā),并很快交付使用,在使用過程中,按用戶的需求進(jìn)行疊蓋修正,周而復(fù)始,循序漸進(jìn)的開發(fā)軟件產(chǎn)品直到完成。

正如ThoughtWorks的首席科學(xué)家Matin Flower所說:“在敏捷軟件開發(fā)的過程中,我們每兩周都會得到一個可以工作的軟件,這種非常短的循環(huán),使終端客戶可以及時、快速地看到花錢構(gòu)建的軟件是一個什么樣的結(jié)果。”因此敏捷開發(fā)也可理解為在原有軟件開發(fā)方法基礎(chǔ)上的整合——取其精華,去其糟粕。

敏捷開發(fā)的特點(diǎn)

敏捷方法主要有兩個特點(diǎn),這也是其區(qū)別于其他方法,尤其是重型方法的主要特征:

敏捷開發(fā)方法是“適應(yīng)性”(Adaptive)而非“預(yù)設(shè)性” (Predictive)。

這里說的預(yù)設(shè)性,可以通過一般性工程項(xiàng)目的做法理解,比如土木工程,在這類工程實(shí)踐中,有比較穩(wěn)定的需求,同時建設(shè)項(xiàng)目的要求也相對固定,所以此類項(xiàng)目通常非常強(qiáng)調(diào)施工前的設(shè)計(jì)規(guī)劃。只要圖紙?jiān)O(shè)計(jì)得合理并考慮充分,施工隊(duì)伍可以完全遵照圖紙順利建造,并且可以很方便地把圖紙劃分為許多更小的部分交給不同的施工人員分別完成。

然而,在軟件開發(fā)的項(xiàng)目中,這些穩(wěn)定的因素卻很難尋求。軟件的設(shè)計(jì)難處在于軟件需求的不穩(wěn)定,從而導(dǎo)致軟件過程的不可預(yù)測。但是傳統(tǒng)的控制項(xiàng)目模式都是試圖對一個軟件開發(fā)項(xiàng)目在很長的時間跨度內(nèi)做出詳細(xì)的計(jì)劃,然后依計(jì)劃進(jìn)行開發(fā)。所以,這類方法在不可預(yù)測的環(huán)境下,很難適應(yīng)變化,甚至是拒絕變化。

與之相反的敏捷方法則是歡迎變化,目的是成為適應(yīng)變化的過程,甚至能允許改變自身來適應(yīng)變化。所以稱之為適應(yīng)性方法。

敏捷開發(fā)方法是“面向人” (people oriented)而非“面向過程”(process oriented)。

Matin Flower認(rèn)為:“在敏捷開發(fā)過程中,人是第一位的,過程是第二位的。所以個人來說,應(yīng)該可以從各種不同的過程中找到真正適合自己的過程。”這與軟件工程理論提倡的先過程后人正好相反。

在傳統(tǒng)的軟件開發(fā)工作中,項(xiàng)目團(tuán)隊(duì)分配工作的重點(diǎn)是明確角色的定義,以個人的能力去適應(yīng)角色,而角色的定義是為了保證過程的實(shí)施,即個人以資源的方式被分配給角色,同時,資源是可以替代的,而角色不可以替代。

然而,傳統(tǒng)軟件開發(fā)的這些方法在敏捷開發(fā)方式中被完全顛覆。敏捷開發(fā)試圖使軟件開發(fā)工作能夠利用人的特點(diǎn),充分發(fā)揮人的創(chuàng)造能力。

敏捷開發(fā)的目的是建立起一個項(xiàng)目團(tuán)隊(duì)全員參與到軟件開發(fā)中,包括設(shè)定軟件開發(fā)流程的管理人員,只有這樣軟件開發(fā)流程才有可接受性。同時敏捷開發(fā)要求研發(fā)人員獨(dú)立自主在技術(shù)上進(jìn)行決策,因?yàn)樗麄兪橇私馐裁醇夹g(shù)是需要和不需要的。再者,敏捷開發(fā)特別重視項(xiàng)目團(tuán)隊(duì)中的信息交流,有調(diào)查顯示:“項(xiàng)目失敗的原因終都可追溯到信息沒有及時準(zhǔn)確地傳遞到應(yīng)該接受它的人。”

敏捷開發(fā)的問題和思考

雖然敏捷開發(fā)是個行之有效的軟件開發(fā)模式,但是任何模式和方法的建立都是基于理論的基礎(chǔ),往往和現(xiàn)實(shí)的情況存在差異,這樣會對軟件企業(yè)操作及執(zhí)行帶來很大的困難,甚至是誤導(dǎo)。所以,僅僅提出敏捷開發(fā)的模式是不夠的,對敏捷開發(fā)的議題的討論并沒有終結(jié)。下面僅筆者理解基礎(chǔ)上提出一些問題的參考。

項(xiàng)目內(nèi)部協(xié)調(diào)的困難加大

敏捷開發(fā)要求將大項(xiàng)目分解成為很多小項(xiàng)目,這樣雖然易于考察、易于管理和易于控制,但是這樣也帶來了項(xiàng)目內(nèi)部各個小項(xiàng)目協(xié)調(diào)問題。對于各個小項(xiàng)目的執(zhí)行,人員分配及其他資源分配的沖突及進(jìn)度的沖突是主要的沖突,而且這些沖突如果解決不徹底,將會對整個大項(xiàng)目帶來難以預(yù)測的負(fù)面結(jié)果。

對管理水平的要求提高

敏捷開發(fā)的問題后是管理的問題。這和很多軟件企業(yè)重技術(shù)輕管理的做法是截然相反的,企業(yè)的這種心智模式一方面是源自管理人才的缺乏和項(xiàng)目組成員對管理制度的排斥;另一方面則是因?yàn)楝F(xiàn)行規(guī)范和管理制度與實(shí)際工作中的不合拍。從這一層面而言,敏捷開發(fā)對管理水平要求提高對軟件企業(yè)的觀念是一種挑戰(zhàn)。

對執(zhí)行力的要求

任何理論只有落到實(shí)處,才能為企業(yè)為社會創(chuàng)造財(cái)富。這是永恒不變的道理。敏捷開發(fā)模式需要經(jīng)驗(yàn)豐富、配合良好而又異常穩(wěn)定的項(xiàng)目組、積極而富有成效的溝通、良好的管理手段和流程、有效的工具與平臺,只有滿足這些條件我們才能實(shí)現(xiàn)敏捷開發(fā)模式帶給我們的益處。

敏捷開發(fā)的出現(xiàn),同樣讓以人為本還是以過程為本的爭論上升到了理論層面。在敏捷開發(fā)過程中,人是第一位的,過程是第二位的,所以個人而言,應(yīng)該可以從各種不同的過程中找到真正適合自己的過程。這與軟件工程理論提倡的先過程后人正好相反,因而被不少人戲稱為對工程學(xué)原理的叛逆。

敏捷方法對需求不確定或常常變更的情形是有效的。但是,沒有哪一種開發(fā)方法是適用于所有項(xiàng)目開發(fā)的,正如上文所說,敏捷方法給傳統(tǒng)軟件開發(fā)帶來了一種新的思路和開發(fā)模式,但也給企業(yè)帶來了軟件研發(fā)項(xiàng)目管理開發(fā)過程的整合困難。

所以,在實(shí)際開發(fā)過程中,需要根據(jù)實(shí)際項(xiàng)目的需要選擇合適的開發(fā)方法,并盡大可能發(fā)揮人的創(chuàng)造性和潛能,利用不同人的不同特點(diǎn),充分溝通,這才是在敏捷方法中真正需要學(xué)習(xí)的。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd