您的位置:軟件測試 > 軟件項(xiàng)目管理 > 進(jìn)度管理 >
IT項(xiàng)目管理中的工作量估算
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/10/22 9:15:32 ] 推薦標(biāo)簽:

  很多項(xiàng)目經(jīng)理對于項(xiàng)目評估、管理、控制的能力基本上是來自于項(xiàng)目經(jīng)理本身的從業(yè)經(jīng)驗(yàn),由于各種各樣的原因,項(xiàng)目經(jīng)理更多的是一個(gè)全才,這是在當(dāng)前環(huán)境下,保證項(xiàng)目還能正常運(yùn)行的必然結(jié)果。在實(shí)際情況中,項(xiàng)目不但耗時(shí)長,而且成功率也很低,其中一個(gè)很重要的原因是對于需求的工作量評估沒有一個(gè)具體的依據(jù),很多時(shí)候都是想當(dāng)然的估算一個(gè)數(shù)字,當(dāng)項(xiàng)目開發(fā)過程中來自于需求變更后對新需求的工作量估計(jì)不足導(dǎo)致產(chǎn)生連鎖反應(yīng),后失去對項(xiàng)目的控制。

  本文的目的在于提出一種對項(xiàng)目總體工作量估算的模型,用于項(xiàng)目經(jīng)理在面對原始合同進(jìn)行概要設(shè)計(jì),項(xiàng)目進(jìn)行過程中面對需求變更時(shí)計(jì)算工作量的一種參考依據(jù)。這個(gè)模型的目的是要有效的減少工作量,這并不意味著會少做事,而是希望引導(dǎo)多做正確的事情。特別是這個(gè)模型也能為提高工作效率指明方向。

  要設(shè)計(jì)一個(gè)模型,首先要對日常工作進(jìn)行全面的分析,抽象出工作的每一個(gè)步驟,對每個(gè)步驟中所需要用到的知識進(jìn)行歸納,還需要對每個(gè)步驟中的復(fù)雜度進(jìn)行評估。

  在一個(gè)項(xiàng)目的開發(fā)過程中,在面對一個(gè)業(yè)務(wù)功能時(shí)首先做的是從需求中設(shè)計(jì)表結(jié)構(gòu),然后為表結(jié)構(gòu)定義各種各樣的關(guān)聯(lián),定義完關(guān)聯(lián)后基本上在大腦內(nèi)形成界面的大致樣子,然后開始寫代碼。

從上面的過程中,大致可以分成下面的兩個(gè)步驟:
1. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)階段

2. 根據(jù)數(shù)據(jù)結(jié)構(gòu)編寫代碼階段

接下來分析下每個(gè)步驟所用到的知識。

1. 在數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)階段所使用的知識分為以下幾個(gè)部分

1) 數(shù)據(jù)庫設(shè)計(jì)知識

2) 業(yè)務(wù)知識

2. 在根據(jù)數(shù)據(jù)結(jié)構(gòu)編寫代碼階段所使用的知識分為以下幾個(gè)部分

1) 數(shù)據(jù)庫操作知識

2) 后臺編程語言知識

3) 前臺編程語言知識

4) 業(yè)務(wù)知識

  通過以上的分析可以看到,在第一個(gè)階段所需知識單一,更多的源自于經(jīng)驗(yàn)。由于所使用知識比少,當(dāng)需求產(chǎn)生變化時(shí),為變化所花費(fèi)的時(shí)間也比較少。因此可以得出一個(gè)簡單的結(jié)論,當(dāng)某一個(gè)步驟所需知識比較單一時(shí),對該步驟的變更和編碼所需時(shí)間都比較少。

  那么可以看到在第二個(gè)階段,所用知識復(fù)雜,所以必須要對第二階段進(jìn)行細(xì)分

  在第二階段,通常的做法是,根據(jù)業(yè)務(wù)功能,首先編寫關(guān)于這個(gè)業(yè)務(wù)表的增刪改的代碼,再根據(jù)表之間的關(guān)系寫出數(shù)據(jù)關(guān)系代碼,后根據(jù)設(shè)計(jì)的界面樣式,編寫界面代碼

在這個(gè)階段也分成以下幾個(gè)步驟

1. 編寫單表的維護(hù)代碼

2. 編寫該表與其他表的業(yè)務(wù)關(guān)系代碼

3. 編寫界面代碼

同樣的,再來分析下每個(gè)步驟所使用的知識

1. 在編寫單表的維護(hù)代碼所使用的知識分為以下幾個(gè)部分

1) 數(shù)據(jù)庫單表操作知識

2) 后臺編程語言知識,僅需要知道如何操作數(shù)據(jù)庫

3) 業(yè)務(wù)知識

2. 在編寫該表與其他表的業(yè)務(wù)關(guān)系代碼所使用的知識分為以下幾個(gè)部分

1) 數(shù)據(jù)庫多表查詢知識

2) 后臺編程語言,這里是根據(jù)業(yè)務(wù)的復(fù)雜度來決定所使用的知識范圍。

3) 業(yè)務(wù)知識

3。在編寫界面代碼所使用的知識分為以下幾個(gè)部分

1) html知識

2) javascript知識

3) css知識

4) 后臺編程語言,僅使用到與前臺界面編寫相關(guān)的部分知識。

5) 業(yè)務(wù)知識

  通過以上分析可以看到,在編寫單表的維護(hù)代碼階段是使用知識少的一個(gè)步驟,同樣的當(dāng)業(yè)務(wù)產(chǎn)生變更時(shí),為該處的變化所用的編碼時(shí)間也比較少,而變化所花費(fèi)的時(shí)間與表結(jié)構(gòu)的調(diào)整所花費(fèi)的時(shí)間是正比關(guān)系。這個(gè)關(guān)系將在復(fù)雜度分析時(shí)進(jìn)一步說明。接下來看編寫該表與其他表的業(yè)務(wù)關(guān)系代碼和編寫界面代碼部分,這個(gè)2個(gè)階段所使用的知識繁多,并且涉及的知識面也很廣,是項(xiàng)目中花費(fèi)時(shí)間多的地方。但是在實(shí)際項(xiàng)目開發(fā)中并沒有再對這兩個(gè)步驟進(jìn)行更細(xì)的分解的過程。

  現(xiàn)在可以得出一個(gè)這樣的結(jié)論,工作量是與所使用的知識相關(guān)的。一個(gè)業(yè)務(wù)所使用的知識點(diǎn)越少,所涵蓋的知識面越少,那么所耗費(fèi)的工作量也會越少。由此,當(dāng)需要提高工作效率時(shí),盡量少的使用知識是一種有效的手段。但是在實(shí)際情況中,并不能有效的減少知識使用種類,只能在使用知識的熟練度上下工夫,一個(gè)開發(fā)者所掌握的知識熟練度越高,那么相對的工作量也會越少,一個(gè)知識點(diǎn)的入門門檻越低,那么工作量也會越少。因此,設(shè)置工作量為G,知識點(diǎn)入門門檻為B,B1為交給新手人員開發(fā)的知識點(diǎn),知識點(diǎn)總數(shù)為C,P1為高級開發(fā)人數(shù)的,P2為新手人數(shù),那么G = ( C - B )/P1 + ( B - B1 ) / P1 + B1 / P2 。

  對知識點(diǎn)分析完后,再對業(yè)務(wù)的復(fù)雜度進(jìn)行分析,知識點(diǎn)的應(yīng)用可以看作是開發(fā)中的橫切方向的話,那業(yè)務(wù)的復(fù)雜度是開發(fā)中的縱切方向,業(yè)務(wù)的復(fù)雜度貫穿了所有的開發(fā)步驟。

  在本文中,從數(shù)據(jù)的應(yīng)用著手,來分析業(yè)務(wù)的復(fù)雜度。

  在項(xiàng)目開發(fā)中,經(jīng)常要遇到"類型"這樣的業(yè)務(wù)點(diǎn),例如職務(wù)。對于這一類業(yè)務(wù),其主要開發(fā)時(shí)間花費(fèi)在"對于單表的增刪改查"上。另一種類型的業(yè)務(wù),其復(fù)雜度高一點(diǎn),主要應(yīng)用于該表需要與另一個(gè)表進(jìn)行組合,然后產(chǎn)生一種"所屬"的關(guān)系,例如權(quán)限,角色等,其主要開發(fā)時(shí)間花費(fèi)在"對于多個(gè)表的所屬關(guān)系的增刪改查"上。還有一種類型的業(yè)務(wù),主要是將多個(gè)表的數(shù)據(jù)進(jìn)行組合轉(zhuǎn)換后輸出,例如報(bào)表,CMS的模板解析等,其主要開發(fā)時(shí)間花費(fèi)在"對于多個(gè)表數(shù)據(jù)的監(jiān)測和重組上",后一種類型的業(yè)務(wù),主要是為數(shù)據(jù)附加上狀態(tài),例如工作流等,其主要開發(fā)時(shí)間花費(fèi)在"對于數(shù)據(jù)的不同狀態(tài)的處理上"。

  以上4點(diǎn)基本涵蓋了做項(xiàng)目時(shí)所面對的業(yè)務(wù)。接下來,我們?yōu)檫@4種業(yè)務(wù)定一個(gè)權(quán)值

1.對于單表的增刪改查"權(quán)值為1

2.對于多個(gè)表的所屬關(guān)系的增刪改查"權(quán)值為4

3.對于多個(gè)表數(shù)據(jù)的監(jiān)測和重組上"權(quán)值為8

4.對于數(shù)據(jù)的不同狀態(tài)的處理上"權(quán)值為16

  這個(gè)權(quán)值的比值基本來自于數(shù)據(jù)的維度,1類業(yè)務(wù)是單一緯度。2類業(yè)務(wù)除了要處理多個(gè)1類業(yè)務(wù)外,還需要處理多個(gè)1類業(yè)務(wù)之間的關(guān)系。3類業(yè)務(wù)除了要處理2類業(yè)務(wù)中包含的,還需要對數(shù)據(jù)本身進(jìn)行轉(zhuǎn)換處理,4類業(yè)務(wù)除了要處理3類業(yè)務(wù)的,還需要處理數(shù)據(jù)的狀態(tài)。后一種業(yè)務(wù)要比前一種業(yè)務(wù)多處理一種邏輯結(jié)構(gòu)。

  根據(jù)這個(gè)權(quán)值,來看看在項(xiàng)目中經(jīng)常遇到的情況,以職務(wù)為例,開始的需求是1類業(yè)務(wù),這個(gè)時(shí)候客戶的需求變更可能如果制在1類業(yè)務(wù)的需求范圍內(nèi),那么如果完成職務(wù)的業(yè)務(wù)開發(fā)時(shí)間為1的話,那么修改的時(shí)間應(yīng)該在<=1的開發(fā)時(shí)間內(nèi)。但是,這個(gè)時(shí)候客戶提出一種需求變更,他要求,職務(wù)是有從屬關(guān)系的,例如A部門有屬于A部門的職務(wù),B部門有屬于B部門的職務(wù),當(dāng)這類需求出現(xiàn)時(shí),那么開發(fā)完成的時(shí)間必須提高到4了,從這一種變化可以看出,當(dāng)需求變更在某一個(gè)級別的分類業(yè)務(wù)內(nèi)進(jìn)行變化時(shí),其所完成的單位時(shí)間是與權(quán)值成正比關(guān)系。但是如果需求變更導(dǎo)致該業(yè)務(wù)的分類級別被提升,那么修改所花費(fèi)的時(shí)間將直接提高到對應(yīng)業(yè)務(wù)分類的權(quán)值所對應(yīng)的時(shí)間比。

  假設(shè)工作量為G,權(quán)值為D那么G=D(D=1,4,8,16)。再結(jié)合前面關(guān)于知識點(diǎn)的分析結(jié)果,G = D_*( ( C - B )/P1 + ( B - B1 ) / P1 + B1 / P2 ) ( D = 1 , 4 , 8 , 16 )

公式的完全說明如下:

G = D_*( ( C - B )/P1 + ( B - B1 ) / P1 + B1 / P2 ) ( D = 1 , 4 , 8 , 16 )

G : 工作量

D : 業(yè)務(wù)復(fù)雜度( D = 1 , 4 , 8 , 16 )

C : 知識點(diǎn)總量

B : 入門知識點(diǎn)總量

B1 : 交給新手人員做的入門知識點(diǎn)總量

P1 : 高級開發(fā)人員數(shù)量

P2 : 新手開發(fā)人員數(shù)量

( C - B ) / P1 : 意思是只能由高級開發(fā)人員做的事情

( B - B1 ) / P1 : 意思是由高級開發(fā)人員做的只需要入門門檻知識能做的事情

B1 / P2 : 意思是由新手人員做的需要入門門檻知識做的事情

  從這個(gè)公式可以看出D值越小,C值越小,B值趨向于C值,B1值趨向于B值時(shí),工作量是小的。要想D值小,那么在做需求和需求變更時(shí)要引導(dǎo)客戶避免高權(quán)值的需求產(chǎn)生。要想C值小,讓開發(fā)者只面對少量知識點(diǎn),是分層開發(fā),每一層的知識點(diǎn)將足夠的小。要想B值趨向于C值,必須使用框架來進(jìn)行開發(fā),要想B1趨向于B值,應(yīng)該避免讓僅需入門門檻知識能應(yīng)付的需求讓高級開發(fā)人員來做。

  希望這個(gè)模型能為項(xiàng)目經(jīng)理在面對需求和需求變更時(shí)提供指導(dǎo)意義,使得在對工作量估算時(shí)有據(jù)可循。

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