同一領(lǐng)域的類似項(xiàng)目,這樣才有較強(qiáng)的可比性。由于這些計(jì)劃安排是預(yù)估粗略的,所以還必須在以后的項(xiàng)目各階段完成后進(jìn)行合理的變更,反應(yīng)項(xiàng)目的實(shí)際需求。微軟的辦法是把進(jìn)度估計(jì)的權(quán)限交給開(kāi)發(fā)人員,由開(kāi)發(fā)人員根據(jù)自己的經(jīng)驗(yàn)進(jìn)行估計(jì),由于一般開(kāi)發(fā)人員往往會(huì)高估自己的能力,估計(jì)的進(jìn)度也會(huì)相應(yīng)偏短,最后再做適當(dāng)?shù)难娱L(zhǎng)[2]。這種辦法有它合理的地方,在中國(guó)還需進(jìn)行實(shí)踐摸索。
對(duì)于進(jìn)度的估計(jì),我們有個(gè)經(jīng)驗(yàn)公式,即您最初預(yù)估的時(shí)間再乘以2.5,可能是最后的完成時(shí)間。因?yàn)樵S多人在估計(jì)進(jìn)度的時(shí)候,往往忽略了很多非開(kāi)發(fā)時(shí)間,如與客戶溝通的時(shí)間、項(xiàng)目組溝通時(shí)間、公司培訓(xùn)時(shí)間、假期等,所以我們?cè)诠烙?jì)進(jìn)度的時(shí)候,一定要全方位周全考慮,在盡可能的情況下寧愿把進(jìn)度估計(jì)的長(zhǎng)一點(diǎn),免得在項(xiàng)目后期導(dǎo)致非常被動(dòng)的局面。后面我們將具體講到我們采取的階段性的開(kāi)發(fā)方法,這種方法的運(yùn)用反映在進(jìn)度估計(jì)時(shí)必須在各階段間預(yù)留緩沖時(shí)間,以解決那些我們事先沒(méi)有預(yù)料到的活動(dòng)。如果進(jìn)度表和要求的出貨時(shí)間有沖突,寧愿砍掉一些不重要的功能,也不要盲目增加人手,這種做法可能會(huì)導(dǎo)致產(chǎn)品質(zhì)量下降,最終得不償失,詳細(xì)說(shuō)明請(qǐng)參考[4]。
風(fēng)險(xiǎn)管理是項(xiàng)目管理中非常重要的部分,并且要貫穿項(xiàng)目的始終。一些軟件企業(yè)往往不是很重視風(fēng)險(xiǎn)管理,導(dǎo)致在項(xiàng)目的后期出現(xiàn)了很多預(yù)料之外的事情,使項(xiàng)目進(jìn)度一拖再拖,往往質(zhì)量也達(dá)不到預(yù)期要求。因此我們要特別重視風(fēng)險(xiǎn)的管理,具體方法留待后面專門(mén)詳述。
3.2.4開(kāi)發(fā)過(guò)程
在項(xiàng)目的開(kāi)發(fā)過(guò)程中,我們采用了階段式的開(kāi)發(fā)過(guò)程,這也是微軟公司所推薦的開(kāi)發(fā)過(guò)程。在開(kāi)發(fā)過(guò)程的初期,首要的活動(dòng)是概要設(shè)計(jì)。概要設(shè)計(jì)的目標(biāo)是簡(jiǎn)單、適用、能夠覆蓋所有的需求并能支持后面的階段式開(kāi)發(fā)。微軟的應(yīng)用方案解決模型是基于服務(wù)的三層(多層)架構(gòu),包括用戶層,業(yè)務(wù)層和數(shù)據(jù)層,各層之間采用標(biāo)準(zhǔn)的接口進(jìn)行通訊,至于該方法的具體使用,請(qǐng)參看相關(guān)書(shū)籍,在此就不在贅述了。
階段開(kāi)發(fā)過(guò)程不是傳統(tǒng)的根據(jù)模塊劃分來(lái)依次完成各模塊,最后再進(jìn)行項(xiàng)目的整合,而是在每個(gè)階段完成后,項(xiàng)目都可以推出產(chǎn)品,只不過(guò)該產(chǎn)品的功能比最終產(chǎn)品的功能弱一些。
階段性完成項(xiàng)目比傳統(tǒng)的開(kāi)發(fā)方法最明顯的優(yōu)點(diǎn)是不必到項(xiàng)目的末期才開(kāi)始整合產(chǎn)品,使產(chǎn)品模塊之間協(xié)作產(chǎn)生的問(wèn)題及早產(chǎn)生,也及早修正,從而項(xiàng)目的風(fēng)險(xiǎn)也大大減小。傳統(tǒng)的開(kāi)發(fā)總是在項(xiàng)目的后期才開(kāi)始整合各模塊,使產(chǎn)生的問(wèn)題改正起來(lái)極為困難,成本也大大增加;前面累計(jì)的所有問(wèn)題全部都拖到了后面來(lái)解決,也使后面剩下的工作量大大增加。項(xiàng)目往往看起來(lái)已完成了90%——大部分的功能模塊都已完成,但剩下的10%總是完不成,項(xiàng)目進(jìn)度一拖再拖,很可能還要再花90%的時(shí)間來(lái)完成剩下的10%。當(dāng)然采用階段性開(kāi)發(fā)方法也有相應(yīng)的代價(jià),最大的代價(jià)可能是反復(fù)的整合、測(cè)試已經(jīng)完成的模塊,但采用相應(yīng)的一些自動(dòng)化工具可以減小這個(gè)代價(jià)。
一般在開(kāi)始的階段進(jìn)行的是系統(tǒng)架構(gòu)和最重要的功能,后面的階段是相對(duì)不怎么重要的功能。這樣的分配有利于最終用戶在早期就能看到系統(tǒng)的大致模樣,便于他們及早的對(duì)產(chǎn)品提出意見(jiàn),并對(duì)相應(yīng)的錯(cuò)誤進(jìn)行修改;也有利于項(xiàng)目組在項(xiàng)目后期時(shí)間很緊的情況下,去掉一些不重要的功能,把它們納入下一個(gè)版本處理,確保產(chǎn)品的推出時(shí)間。迭代的順利進(jìn)行依賴于良好的架構(gòu)設(shè)計(jì),前面階段的設(shè)計(jì)應(yīng)該給后面要加入的功能預(yù)留出各種接口,并能使后面的工作在前面的基礎(chǔ)上繼續(xù)進(jìn)行下去。
這種在開(kāi)發(fā)階段的迭代方式不同于整個(gè)項(xiàng)目的完全迭代開(kāi)發(fā),后者是項(xiàng)目的需求、概要設(shè)計(jì)、開(kāi)發(fā)等全部是迭代進(jìn)行,一次迭代要進(jìn)行所有的項(xiàng)目活動(dòng)。至于誰(shuí)優(yōu)誰(shuí)劣可能在不
!--StartFragment-->!--
>