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

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

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

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

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

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

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

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

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

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

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

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

敏捷開發(fā)的特點

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

敏捷開發(fā)方法是“適應性”(Adaptive)而非“預設性” (Predictive)。

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

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

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

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

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

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

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

敏捷開發(fā)的目的是建立起一個項目團隊全員參與到軟件開發(fā)中,包括設定軟件開發(fā)流程的管理人員,只有這樣軟件開發(fā)流程才有可接受性。同時敏捷開發(fā)要求研發(fā)人員獨立自主在技術上進行決策,因為他們是了解什么技術是需要和不需要的。再者,敏捷開發(fā)特別重視項目團隊中的信息交流,有調(diào)查顯示:“項目失敗的原因終都可追溯到信息沒有及時準確地傳遞到應該接受它的人。”

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

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

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

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

對管理水平的要求提高

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

對執(zhí)行力的要求

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

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

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

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

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