軟件項(xiàng)目管理的實(shí)質(zhì)就是軟件項(xiàng)目計(jì)劃的編制和軟件項(xiàng)目計(jì)劃的跟蹤控制,這里計(jì)劃是項(xiàng)目成功實(shí)施的指南和跟蹤控制的依據(jù),而跟蹤控制又保證項(xiàng)目計(jì)劃的成功執(zhí)行。本文以實(shí)例具體分析在軟件開發(fā)過程中如何進(jìn)行這兩項(xiàng)工作。
在軟件項(xiàng)目中有兩條非常重要的線索,一條是軟件項(xiàng)目開發(fā)過程,另外一條是軟件項(xiàng)目管理過程。通常,人們?nèi)菀鬃⒁廛浖?xiàng)目開發(fā)過程,而忽略軟件項(xiàng)目管理過程的線索。事實(shí)上,后者很重要,有時(shí)其重要性甚至超過項(xiàng)目開發(fā)過程。項(xiàng)目管理可以讓一個(gè)項(xiàng)目獲得高額的盈利也可以讓一個(gè)項(xiàng)目損失慘重,而編碼的影響力則相對(duì)小一些。現(xiàn)實(shí)中由于出色的項(xiàng)目管理,將已經(jīng)虧損很嚴(yán)重的項(xiàng)目又重新扭虧為盈的例子并不少見。
項(xiàng)目管理在生活中的例子很多。例如進(jìn)行一次商品采購,你會(huì)在一張紙上記錄所有需要購買的東西(即采購清單),這個(gè)采購清單幫助你不要遺漏采購項(xiàng),你可以采用“完成一個(gè)采購項(xiàng),在采購清單上打一個(gè)勾”的方法協(xié)助你完成采購。與此類似,軟件項(xiàng)目管理也是如何管理好軟件項(xiàng)目的內(nèi)容、花費(fèi)的時(shí)間(進(jìn)度)以及花費(fèi)的代價(jià)(規(guī)模成本)。為此需要制定一個(gè)好的項(xiàng)目計(jì)劃,然后控制好這個(gè)計(jì)劃。編制軟件項(xiàng)目計(jì)劃、跟蹤控制軟件項(xiàng)目計(jì)劃這就是軟件項(xiàng)目管理的實(shí)質(zhì)。其中,計(jì)劃是項(xiàng)目成功實(shí)施的指南和跟蹤控制的依據(jù),而跟蹤控制是項(xiàng)目計(jì)劃成功執(zhí)行的保證。
確定軟件項(xiàng)目開發(fā)的策略
項(xiàng)目經(jīng)理的首要任務(wù)是編制項(xiàng)目計(jì)劃。項(xiàng)目計(jì)劃有三大核心目標(biāo): 確定項(xiàng)目范圍、項(xiàng)目預(yù)算、項(xiàng)目進(jìn)度,即明確項(xiàng)目做什么、花多少錢、需要多長(zhǎng)時(shí)間。為了制定一個(gè)合理有效的計(jì)劃,項(xiàng)目經(jīng)理需要從項(xiàng)目需求開始確定項(xiàng)目范圍,然后將項(xiàng)目的需求進(jìn)行分解,以便于估算、安排資源和合理的進(jìn)度等。這樣就形成了三個(gè)核心計(jì)劃: 范圍計(jì)劃、成本計(jì)劃和進(jìn)度計(jì)劃。此外,作為完整的項(xiàng)目計(jì)劃,質(zhì)量計(jì)劃、風(fēng)險(xiǎn)計(jì)劃、溝通計(jì)劃等同樣也必不可少。沒有質(zhì)量管理的項(xiàng)目是失敗的項(xiàng)目,沒有風(fēng)險(xiǎn)管理的項(xiàng)目會(huì)時(shí)時(shí)處于風(fēng)險(xiǎn)之中,沒有溝通的項(xiàng)目是很難完成的。項(xiàng)目規(guī)劃從合同階段就開始了,其實(shí)任何一個(gè)合同的主要內(nèi)容也是確定項(xiàng)目的范圍、時(shí)間和成本。
軟件項(xiàng)目最終的結(jié)果是根據(jù)用戶的需求提交一個(gè)用戶滿意的產(chǎn)品,這是一個(gè)從無到有的過程。因此計(jì)劃首先應(yīng)該確定項(xiàng)目開發(fā)的策略,即項(xiàng)目的生存期模型。瀑布、V、原型、螺旋、漸進(jìn)式階段提交等模型是幾種常見的生存期模型,漸進(jìn)式階段提交模型體現(xiàn)了軟件項(xiàng)目漸進(jìn)性的特點(diǎn),同時(shí),分階段提交項(xiàng)目結(jié)果,也有利于軟件項(xiàng)目開發(fā)。RUP(Rational的統(tǒng)一過程)提及的軟件項(xiàng)目生存期模型就是一種漸進(jìn)式階段提交模型。圖1的模型是筆者曾經(jīng)參與的一個(gè)銀行業(yè)務(wù)系統(tǒng)的生存期模型,它是漸進(jìn)階段提交的模型。
如果項(xiàng)目周期不是很長(zhǎng),可以不分階段提交結(jié)果,而只是分階段開發(fā),這樣漸進(jìn)式階段提交模型就演化為增量模型。例如筆者曾完成的一個(gè)《校務(wù)通管理平臺(tái)信息系統(tǒng)》項(xiàng)目,它是對(duì)學(xué)校教務(wù)和教學(xué)活動(dòng)進(jìn)行綜合管理的平臺(tái)系統(tǒng)。盡管分階段實(shí)施項(xiàng)目是比較理想的項(xiàng)目管理模型,但是由于這個(gè)項(xiàng)目不大,沒有必要分階段提交一個(gè)執(zhí)行系統(tǒng),所以采用增量的模型。
生存期模型中可以定義軟件開發(fā)中采用的過程、程序,如果過程定義得很明確,或者過程定義的操作性很強(qiáng),那么作為工廠化的軟件開發(fā)就會(huì)很順利,項(xiàng)目管理的過程也會(huì)很順利,所以在軟件項(xiàng)目中的這兩條線索也是相輔相成的。
制定項(xiàng)目核心計(jì)劃
項(xiàng)目的核心計(jì)劃是范圍、時(shí)間、成本的確定,這三方面并不是截然分開的,而在項(xiàng)目計(jì)劃的制定過程中相互交織。
確定項(xiàng)目范圍要從需求入手,將一個(gè)項(xiàng)目分解為更多的工作細(xì)目或者子項(xiàng)目,使項(xiàng)目變得更小、更易管理、更易操作。目的是為了提高估算(成本、時(shí)間和資源)的準(zhǔn)確性,使工作變得更易操