前言
軟件開發(fā)項(xiàng)目計(jì)劃為項(xiàng)目管理服務(wù)的,本文用項(xiàng)目管理的眼光去看待項(xiàng)目計(jì)劃的內(nèi)容。應(yīng)用本文的方法制定的項(xiàng)目計(jì)劃可以:
1. 讓項(xiàng)目的時(shí)間、成本、進(jìn)度的估算可以通過簡易的公式進(jìn)行一次性計(jì)算得到
2. 讓不了解項(xiàng)目實(shí)現(xiàn)技術(shù)的人,如客戶、投資者、管理者及愿意了解項(xiàng)目的人員很容易地了解項(xiàng)目的時(shí)間、成本、進(jìn)度的狀態(tài)及其完工估算
3. 讓項(xiàng)目工作量的分配更具體、更客觀,對(duì)成員的績效表現(xiàn)顯而易見
4. 使項(xiàng)目之間的工作績效具有可比性
實(shí)例
一般情況下我們的項(xiàng)目計(jì)劃是這樣的:
1. 第一層是項(xiàng)目開發(fā)的實(shí)際階段
2. 第二層是所在階段的工作
3. 第三層是對(duì)較大工作量的工作做進(jìn)一步分解
問題
這樣的計(jì)劃有以下幾個(gè)缺點(diǎn):
1. 不適應(yīng)迭代開發(fā)的工作模式。多數(shù)應(yīng)用軟件的開發(fā)不是純粹“瀑布開發(fā)模型”,當(dāng)?shù)竭_(dá)后面的階段時(shí),不可避免的發(fā)現(xiàn)以前階段的工作沒有真正完成,需要繼續(xù)進(jìn)行。例如,設(shè)計(jì)階段時(shí),極有可能會(huì)發(fā)現(xiàn)分析需求階段中漏了一個(gè)功能沒有考慮進(jìn)去,以致分析需求階段沒有真正完成而需要繼續(xù)。
2. 計(jì)劃的實(shí)際執(zhí)行數(shù)據(jù)不能作為項(xiàng)目的完成估算的依據(jù)。 比如調(diào)研和需求確認(rèn)階段完成時(shí),依據(jù)該階段的實(shí)際執(zhí)行數(shù)據(jù)不能預(yù)知項(xiàng)目將在什么時(shí)間結(jié)束,在什么成本范圍完成。有以下幾個(gè)原因:
1) 階段本身的界限是不清晰的
2) 階段之間的時(shí)間、成本、進(jìn)度的分配關(guān)系并不確定
3. 這些估算數(shù)據(jù)難以被以后的開發(fā)計(jì)劃所借鑒。當(dāng)一個(gè)項(xiàng)目或一個(gè)階段結(jié)束后,我們總會(huì)想在這個(gè)已執(zhí)行完成的計(jì)劃的上面得到一點(diǎn)關(guān)于估算方面的經(jīng)驗(yàn)或教訓(xùn),如:
1) 這個(gè)項(xiàng)目的總開發(fā)成本與其他項(xiàng)目相比,是多了還是少了?
2) 設(shè)計(jì)分析階段的時(shí)間分是不是不與項(xiàng)目的需求不匹配?
3) 哪個(gè)階段的成本分配有問題?
4) 各項(xiàng)工作的平均時(shí)間合不合適?
按上面的計(jì)劃,我們不能夠很好的回答這些問題,是因?yàn)檫@個(gè)計(jì)劃是按階段來劃分的,實(shí)際工作中,這些階段的界限并不明顯,無法得到準(zhǔn)確的數(shù)據(jù)。
4. 當(dāng)需求變更時(shí),不知把這些變更的工作放入項(xiàng)目計(jì)劃的哪個(gè)階段。因?yàn)檫@些變更往往包含了很多的階段。有人建議把它們放到一個(gè)叫做“需求變更”的特殊階段中,但這些變更是不可預(yù)知的,它幾乎分布到項(xiàng)目的整個(gè)開發(fā)過程中,我們又如何在計(jì)劃是反應(yīng)它們呢?
實(shí)際過程
在介紹本文的方法以前,了解RUP(rational unified process) 的朋友,知道軟件開發(fā)過程并不是我們想象的如此簡單。它告訴我們?cè)谕粋€(gè)時(shí)間內(nèi)所有的開發(fā)階段是有可能共存的。也是說整個(gè)開發(fā)過程可以是多個(gè)迭代同時(shí)進(jìn)行。
我們回顧一下日常的開發(fā)過程:
1. 得知有一個(gè)項(xiàng)目需要開發(fā)。有可能是老板告訴你的,也可能是業(yè)務(wù)部門告訴你的,總之我們要為它而工作了,同時(shí)確信老板同意開始這個(gè)項(xiàng)目
2. 對(duì)這個(gè)項(xiàng)目涉及的人員及其需求進(jìn)行調(diào)查。這里的需求包括了所有項(xiàng)目的需求,比如老板對(duì)這個(gè)項(xiàng)目的要求及期望,用戶對(duì)這個(gè)項(xiàng)目的期望,開發(fā)人員對(duì)這個(gè)項(xiàng)目的期望。這時(shí),我們很快會(huì)發(fā)現(xiàn),調(diào)查所有人是不可能的,調(diào)查所有需求也是不可能的。因此,
1) 我們會(huì)先找?guī)讉€(gè)關(guān)鍵人物,了解他們的期望,確定系統(tǒng)的邊界(或叫輪廓,XP(Extreme Programming)中把它叫系統(tǒng)隱喻);
2) 再把系統(tǒng)劃分為幾個(gè)部分,確定先做哪個(gè)部分后做哪個(gè)部分;
3) 再一個(gè)一個(gè)部分對(duì)需求進(jìn)行調(diào)查
當(dāng)我們?cè)谡{(diào)查的時(shí)候,常常會(huì)發(fā)現(xiàn)新的部分之間的關(guān)聯(lián),這使我們不得不對(duì)這兩個(gè)部分的內(nèi)容進(jìn)行檢查,加的加,改的改,刪的刪。
3. 基于調(diào)查的結(jié)果進(jìn)行設(shè)計(jì)。這個(gè)時(shí)間,我們經(jīng)過對(duì)這些需求的分析、歸類,設(shè)計(jì)一個(gè)開發(fā)的模型以支持這些需求。設(shè)計(jì)時(shí)也免不了會(huì)發(fā)現(xiàn)需求不對(duì)的地方,對(duì)需求進(jìn)行加的加,改的改,刪的刪。
4. 基于設(shè)計(jì)的結(jié)果
項(xiàng)目經(jīng)理勝任力免費(fèi)測評(píng)PMQ上線啦!快來測測你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html