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

文章導航-readme

軟件開發中工做量與工時評估模型

前言

    軟件開發中如何合理的預估項目的開發時間始終是一個難題。由於項目中不肯定性的因素太多。這裏咱們根據平常項目中開發的規律總結出一種工做量預估的模型。該模型參考物理學中時間的計算方式:
\[ 時間(T)=\frac {距離(S)}{速度(V)} \]
獲得咱們的軟件開發時間計算公式:
\[ 開發時間(T)=\frac {工做量(S)}{開發速度(V)} \]html

1、工做量的肯定

    工做量主要與三方面的因素有關係。任務的規模、任務的複雜度以及完成該任務的人員能力水平。這裏咱們先假設一個標準的人員水平(即:理想狀態下人員水平都是必定的標準工程師)。那麼此時工做量主要與任務的規模與任務的複雜度有關係。程序員

1.1 任務規模(S)

關於任務的規模拆分出以下等級。(咱們能夠總結本身項目的規律來調整這個等級):編程

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

注意:這裏的工做量只是完成任務自己所需的工做量,但軟件開發每每不僅是完成任務自己,更多時候任務還會涉及到其它相關的任務、系統。也有些任務可能涉及到團隊技術的盲點,須要必定的時間研究分析等。所以,咱們還須要結合任務的複雜度來進行工做量的評估。函數

1.2 任務複雜度(C)

關於任務複雜度,一樣能夠拆分出如下幾個等級。測試

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

1.3 工做量(E)

\[ 單個任務工做量(o)=SC \]優化

\[ 項目的總工做量(E)=\sum_{i=1}^n{(SC)}_i \]
這裏,咱們定義工做量的最小工做單位爲sp,單位時間一天的工做量。1sp即:咱們的標準工程師一天的工做量爲1sp(即:咱們的標準工程師理想中的開發速度爲1sp);spa

2、開發速度的評估

2.1 理想開發速度

    咱們的一個標準工程師理想中的開發速度就是一天能夠完成1sp的工做量。前提是標準程序員,但顯然咱們團隊中的程序員不可能都是標準工程師。所以理想中咱們的團隊開發速度爲:
\[ 團隊理想開發速度(V_t)=標準工程師開發速度(V_s)*團隊人員個數(R) \]htm

2.2 開發速度的影響因子

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

肯定性因素通常是項目客觀存在的,容易在開始前預測的。關於肯定性因素大體參考以下:開發

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

團隊組成:考慮到團隊成員不可能爲標準工程師。所以團隊人員的能力是影響團隊開發速度的一個很大因素。咱們能夠在團隊中找一個接近於標準工程師的人,獲得他的能力系數(SF)爲1sp(一天能夠完成1sp的工做量),則以他爲基準能夠獲得團隊全部人的能力系數。則團隊組成的影響因子分數(TF)計算公式爲:
\[ TF=\frac{\sum_{i=1}^N{(SF)}_i} {N} \]
開發過程:考慮到改進開發過程(採用敏捷,優化測試方法等)會對開發速度有影響,所以開發過程是影響因素之一。其值可大於1也能夠小於1,若穩定不變則爲1

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

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

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

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

肯定性因素(FF)的綜合影響(FR)計算公式爲:
\[ FR=\prod_{i=0}^n(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=\prod_{i=0}^n(VF)_i \]

2.3 實際開發速度

    實際開發速度須要在理想開發速度的基礎上增長各類影響因子。其公式以下:
\[ V=V_t^{FR\times DF} \]

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

2.3 開發時間評估

    開發時間計算公式以下:
\[ T=\frac {E}{V}=\frac {\sum_{i=1}^n{(SC)}_i}{V_t^{FR\times DF}}(Days) \]

3、模型舉例

輸入:

  • 任務數: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天

結束語

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

相關文章
相關標籤/搜索