計(jì)算機(jī)軟件開發(fā)從“個(gè)人英雄”時(shí)代向團(tuán)隊(duì)時(shí)代邁進(jìn),計(jì)算機(jī)軟件項(xiàng)目管理也從“作坊式”管理向“軟件工廠式”管理邁進(jìn)。為使軟件項(xiàng)目開發(fā)獲得成功,關(guān)鍵問題是必須對(duì)軟件項(xiàng)目的工作范圍、可能風(fēng)險(xiǎn)、需要資源(人、硬件/軟件)、要實(shí)現(xiàn)的任務(wù)、經(jīng)歷的里程碑、花費(fèi)工作量(成本)、進(jìn)度安排等做到心中有數(shù)。這就要求軟件開發(fā)人員特別是軟件項(xiàng)目管理人員更深一步地理解和掌握現(xiàn)代軟件工程的理論方法,完成思想觀念上的轉(zhuǎn)變。
筆者在此分析了10個(gè)在現(xiàn)代項(xiàng)目管理中思想觀念上容易陷入的誤區(qū),希望能夠拋磚引玉,引發(fā)大家更多的思索和討論。
誤區(qū)1:在項(xiàng)目的需求分析階段,開發(fā)方與客戶方在各種的問題的基本輪廓上達(dá)成一致即可,具體細(xì)節(jié)可以在以后填充。因?yàn)闊o論開始時(shí)有多么細(xì)致,以后對(duì)需求的修改幾乎是必然的。
分析:這是一種非常危險(xiǎn)的思想。實(shí)際上許多軟件項(xiàng)目失敗的最主要的原因就是需求階段對(duì)問題的描述不夠細(xì)致,導(dǎo)致后來預(yù)算超出或者時(shí)間進(jìn)度達(dá)不到要求。正確的做法是:在項(xiàng)目需求分析階段,雙方必須全面地盡可能細(xì)致地討論項(xiàng)目的應(yīng)用背景、功能要求、性能要求、操作界面要求、與其他軟件的接口要求,以及對(duì)項(xiàng)目進(jìn)行評(píng)估的各種評(píng)價(jià)標(biāo)準(zhǔn)。并且,在需求分析結(jié)束以后,雙方還要建立可以直接聯(lián)系的渠道,以盡早地對(duì)需求變動(dòng)問題進(jìn)行溝通。
誤區(qū)2:軟件項(xiàng)目的需求可以持續(xù)不斷的改變,而且這些改變可很容易地被實(shí)現(xiàn)。
分析:的確,在具體實(shí)際中由于種種原因客戶方很難在需求分析階段全面而準(zhǔn)確地描述所有問題。隨著開發(fā)進(jìn)度的推進(jìn),往往會(huì)有一些需求的改變。而現(xiàn)代軟件工程理論也利用軟件的靈活性特點(diǎn)通過各種方式來適應(yīng)這種情況。不過,這并不表明“軟件項(xiàng)目的需求可以持續(xù)不斷的改變,而且這些改變可很容易地被實(shí)現(xiàn)”。實(shí)踐表明:隨著開發(fā)進(jìn)度的推進(jìn),實(shí)現(xiàn)軟件需求更改所需要的代價(jià)呈指數(shù)形式增長。假定在需求分析階段實(shí)現(xiàn)需求更改需要花費(fèi)1倍的代價(jià);那么,在系統(tǒng)設(shè)計(jì)和編碼階段,需要花費(fèi)1.5-6倍的代價(jià);在系統(tǒng)測試階段需要花費(fèi)10-20倍的代價(jià);在軟件版本發(fā)布以后,甚至可能要花費(fèi)60-100倍的代價(jià)。由此可見,在項(xiàng)目開展過程中,軟件需求的改變應(yīng)當(dāng)盡量早地提出。這樣才可能花費(fèi)少,容易被實(shí)現(xiàn)。
誤區(qū)3:軟件程序主要由代碼組成,因此編碼階段是整個(gè)軟件項(xiàng)目的最重要的階段,應(yīng)該給與大量的時(shí)間,并且集中主要的資源。
分析:與以前相比,由于軟件的規(guī)模和復(fù)雜度的增加,以及半自動(dòng)化軟件代碼開發(fā)平臺(tái)的出現(xiàn),現(xiàn)代軟件項(xiàng)目管理的中心發(fā)生了轉(zhuǎn)移——不是著重編碼階段,而是著重系統(tǒng)總體/詳細(xì)設(shè)計(jì)階段。一般說來,在現(xiàn)代軟件項(xiàng)目管理中各種資源的合理分配比例是:項(xiàng)目論證、風(fēng)險(xiǎn)評(píng)估階段3% ,項(xiàng)目需求分析階段8%,系統(tǒng)總體/詳細(xì)設(shè)計(jì)階段45%,編碼階段10%,系統(tǒng)測試階段34%。
誤區(qū)4:為了便于代碼的維護(hù)修改,在系統(tǒng)的詳細(xì)設(shè)計(jì)階段文檔工作應(yīng)該做到寫出所有程序的偽碼。
分析:通常偽碼的最大作用是對(duì)程序的算法流程進(jìn)行描述,便于人們深入了解程序的功能和實(shí)現(xiàn)過程。可見,在一定程度上偽碼的確有利于對(duì)程序代碼的維護(hù)和修改。但是,我們知道為了保證項(xiàng)目文檔和程序代碼的一一對(duì)應(yīng)關(guān)系,維護(hù)程序代碼的時(shí)候同時(shí)需要對(duì)項(xiàng)目文檔進(jìn)行維護(hù)。偽碼和程序代碼是非常接近的,對(duì)偽碼進(jìn)行維護(hù)的話,相當(dāng)于進(jìn)行了2倍的程序代碼維護(hù)。工作量是很大的。所以切合實(shí)際的方式應(yīng)該是對(duì)一般的程序文檔做到