軟件(敏捷)開發中工作量與工時評估模型


https://www.cnblogs.com/hunternet/p/9672680.html

 

前言#

    軟件開發中如何合理的預估項目的開發時間始終是一個難題。因為項目中不確定性的因素太多。這里我們根據日常項目中開發的規律總結出一種工作量預估的模型。該模型參考物理學中時間的計算方式:

(T)=(S)(V)時間(T)=距離(S)速度(V)


得到我們的軟件開發時間計算公式:

(T)=(S)(V)開發時間(T)=工作量(S)開發速度(V)

 

一、工作量的確定#

    工作量主要與三方面的因素有關系。任務的規模、任務的復雜度以及完成該任務的人員能力水平。這里我們先假設一個標准的人員水平(即:理想狀態下人員水平都是一定的標准工程師)。那么此時工作量主要與任務的規模與任務的復雜度有關系。

1.1 任務規模(S)#

關於任務的規模拆分出如下等級。(我們可以總結自己項目的規律來調整這個等級):

級別 描述
5 任務規模極其之大,甚至不能估計,可以拆分成很多小任務,甚至子工程。
4 任務規模較大,需要一周左右的時間來完成,可以拆分成很多小任務
3 中等規模的任務,需要三到五天左右的工作量
2 任務小,需要兩到三天左右的工作量
1 任務較小,需要一天左右的工作量
0.5 任務非常小,需要很少的工作量,需要幾個小時的工作

注意:這里的工作量只是完成任務本身所需的工作量,但軟件開發往往不只是完成任務本身,更多時候任務還會涉及到其它相關的任務、系統。也有些任務可能涉及到團隊技術的盲點,需要一定的時間研究分析等。因此,我們還需要結合任務的復雜度來進行工作量的評估。

1.2 任務復雜度(C)#

關於任務復雜度,同樣可以拆分出以下幾個等級。

級別 描述
5 極其復雜,更多依賴於其它任務、系統或子系統,含有團隊中缺乏的技術,或者一些重要的經驗,任務描述很不清晰,有許多未知因素,對外部任務、系統或子系統有很大的影響等
4 非常復雜,依賴於其它任務、系統或子系統,其中所涉及到的一些技術點、經驗在團隊中不是強項,任務描述不清晰,有些未知因素,需要極高的一些技術能力才能完成,對外部任務、系統或子系統有一定的影響等
3 中等程度復雜,有些依賴於其它任務、系統或子系統,完成任務很少或不需要研究,任務描述很清晰,未知因素基本沒有,只需要一般的技術能力就可以完成,對外部任務、系統或子系統很少的影響等
2 簡單,很少依賴於其它任務、系統或子系統,其中所涉及到的一些技術點、經驗在團隊中曾經有過,任務描述基本清晰,未知因素較少,只需要一般的技術能力就可以完成,對外部任務、系統或子系統基本沒有影響
1 較簡單,基本沒有未知因素,所涉及的技術、經驗都是團隊非常熟練的。只需要基本的編程能力就可以完成,任務影響力僅涉及自身。

1.3 工作量(E)#

 

(o)=SC單個任務工作量(o)=SC

 

 

(E)=i=1n(SC)i項目的總工作量(E)=∑i=1n(SC)i


這里,我們定義工作量的最小工作單位為sp,單位時間一天的工作量。1sp即:我們的標准工程師一天的工作量為1sp(即:我們的標准工程師理想中的開發速度為1sp);

 

二、開發速度的評估#

2.1 理想開發速度#

    我們的一個標准工程師理想中的開發速度就是一天可以完成1sp的工作量。前提是標准程序員,但顯然我們團隊中的程序員不可能都是標准工程師。因此理想中我們的團隊開發速度為:

(Vt)=(Vs)(R)團隊理想開發速度(Vt)=標准工程師開發速度(Vs)∗團隊人員個數(R)

 

2.2 開發速度的影響因子#

    項目開發速度是一個很復雜的概念,很難准確的對其進行定義。考慮到不同團隊成員的能力不同,則開發速度也不相同,即使是同一團隊,其開發速度也不是一成不變的,會受到各種因素的影響。理想開發速度僅僅是沒有受到任何阻力影響時的速度。但在項目過程中,總會遇到一些影響。其影響因素主要包括兩方面。確定性因素以及突發性因素,在項目開始前,項目經理對以下兩種因素預估的越准確,那么對開發時間的評估也越准確。

確定性因素一般是項目客觀存在的,容易在開始前預測的。關於確定性因素大致參考如下:

影響因子 影響因子分數(以下為示例分數,具體分數可根據情況自定義i>0,若穩定則為1)
團隊組成 0.95
開發過程 1
需求清晰完整度 0.96
技術因素 0.97
團隊配合 1.05
其它因素 0.98

團隊組成:考慮到團隊成員不可能為標准工程師。因此團隊人員的能力是影響團隊開發速度的一個很大因素。我們可以在團隊中找一個接近於標准工程師的人,得到他的能力系數(SF)為1sp(一天可以完成1sp的工作量),則以他為基准可以得到團隊所有人的能力系數。則團隊組成的影響因子分數(TF)計算公式為:

TF=Ni=1(SF)iNTF=∑i=1N(SF)iN


開發過程:考慮到改進開發過程(采用敏捷,優化測試方法等)會對開發速度有影響,因此開發過程是影響因素之一。其值可大於1也可以小於1,若穩定不變則為1

 

需求清晰完成度:需求是否足夠清晰、完整也會對開發速度有影響。

技術因素:若完成該項目涉及到團隊中未知、不具備的技術知識也是風險之一。當然也可能為正面因素。

團隊配合:一個配合好的團隊和配合差的團隊其開發速度也是明顯不同的。

說明:以上因素具體項目團隊可自行調整。

確定性因素(FF)的綜合影響(FR)計算公式為:

FR=i=0n(FF)iFR=∏i=0n(FF)i


突發性因素往往是項目開始前哪一預測的。關於突發性因素大致參考如下

 

突發性因素\影響因子分數 高(+) 中(+) 低(+) 穩定 低(-) 中(-) 高(-)
團隊變化 1.1 1.05 1.02 1 0.98 0.95 0.91
需求變化 - - - 1 0.99 0.98 0.97
團隊成員兼職 - - - 1 0.98 0.96 0.94
業務方失誤 - - - 1 0.97 0.95 0.92
開發環境變化 1.1 1.05 1.02 1 0.98 0.95 0.92
臨時增加減少任務 1.1 1.05 1.02 1 0.97 0.95 0.91
其它 1.1 1.05 1.02 1 0.99 0.97 0.96

團隊變化:團隊人員離職,新增成員等

需求變化:開發過程中需求的變更

團隊成員兼職:團隊成員身兼數職,在其他團隊也有工作。

業務方失誤:業務方提出錯誤的要求等

開發環境變化:項目開發過程中開發環境發生變化

臨時增加減少任務:項目過程中臨時性的新增或減少需求。

說明:以上因素具體項目團隊可自行調整。

突發性因素(VF)的綜合影響(DF)計算公式為:

DF=i=0n(VF)iDF=∏i=0n(VF)i

 

2.3 實際開發速度#

    實際開發速度需要在理想開發速度的基礎上增加各種影響因子。其公式如下:

V=VFR×DFtV=VtFR×DF


 

如上圖,由下往上分別為3-8人的開發團隊開發速度與綜合影響因子分數的函數圖像(影響因子在0.8-1.2之間)。

2.3 開發時間評估

    開發時間計算公式如下:

T=EV=ni=1(SC)iVFR×DFt(Days)T=EV=∑i=1n(SC)iVtFR×DF(Days)

 

三、模型舉例#

輸入:

  • 任務數:50
  • 團隊人數:7
  • 固定性因素影響值:
    • 團隊組成 0.97
    • 開發過程 1
    • 需求清晰完整度 0.95
    • 技術因素 0.96
    • 團隊配合 1.02
    • 其它因素 0.96
  • 突發性因素影響值:
    • 團隊變化 0.95
    • 需求變化 0.98
    • 團隊成員兼職 0.99
    • 業務方失誤 1
    • 開發環境變化 1
    • 臨時增加減少任務 1
    • 其它 0.99

輸出:

  • 總工作量: 150

  • 理想開發速度: 7

  • 理想開發時間: 21.4天

  • 固定性因素影響綜合值: 0.87

  • 突發性因素影響值: 0.91

  • 實際開發速度: 4.65

  • 實際開發時間: 32.2天

結束語#

    以上僅個人針對我們公司項目所制定的一種工作量評估模型。其具體實用程度,使用中存在的問題等,還有待時間與大量數據的支撐。也希望道友們能提供一些寶貴的意見。你們的團隊是如何進行工時與工作量的評估的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM