https://www.cnblogs.com/hunternet/p/9672680.html
前言#
軟件開發中如何合理的預估項目的開發時間始終是一個難題。因為項目中不確定性的因素太多。這里我們根據日常項目中開發的規律總結出一種工作量預估的模型。該模型參考物理學中時間的計算方式:
得到我們的軟件開發時間計算公式:
一、工作量的確定#
工作量主要與三方面的因素有關系。任務的規模、任務的復雜度以及完成該任務的人員能力水平。這里我們先假設一個標准的人員水平(即:理想狀態下人員水平都是一定的標准工程師)。那么此時工作量主要與任務的規模與任務的復雜度有關系。
1.1 任務規模(S)#
關於任務的規模拆分出如下等級。(我們可以總結自己項目的規律來調整這個等級):
級別 | 描述 |
---|---|
5 | 任務規模極其之大,甚至不能估計,可以拆分成很多小任務,甚至子工程。 |
4 | 任務規模較大,需要一周左右的時間來完成,可以拆分成很多小任務 |
3 | 中等規模的任務,需要三到五天左右的工作量 |
2 | 任務小,需要兩到三天左右的工作量 |
1 | 任務較小,需要一天左右的工作量 |
0.5 | 任務非常小,需要很少的工作量,需要幾個小時的工作 |
注意:這里的工作量只是完成任務本身所需的工作量,但軟件開發往往不只是完成任務本身,更多時候任務還會涉及到其它相關的任務、系統。也有些任務可能涉及到團隊技術的盲點,需要一定的時間研究分析等。因此,我們還需要結合任務的復雜度來進行工作量的評估。
1.2 任務復雜度(C)#
關於任務復雜度,同樣可以拆分出以下幾個等級。
級別 | 描述 |
---|---|
5 | 極其復雜,更多依賴於其它任務、系統或子系統,含有團隊中缺乏的技術,或者一些重要的經驗,任務描述很不清晰,有許多未知因素,對外部任務、系統或子系統有很大的影響等 |
4 | 非常復雜,依賴於其它任務、系統或子系統,其中所涉及到的一些技術點、經驗在團隊中不是強項,任務描述不清晰,有些未知因素,需要極高的一些技術能力才能完成,對外部任務、系統或子系統有一定的影響等 |
3 | 中等程度復雜,有些依賴於其它任務、系統或子系統,完成任務很少或不需要研究,任務描述很清晰,未知因素基本沒有,只需要一般的技術能力就可以完成,對外部任務、系統或子系統很少的影響等 |
2 | 簡單,很少依賴於其它任務、系統或子系統,其中所涉及到的一些技術點、經驗在團隊中曾經有過,任務描述基本清晰,未知因素較少,只需要一般的技術能力就可以完成,對外部任務、系統或子系統基本沒有影響 |
1 | 較簡單,基本沒有未知因素,所涉及的技術、經驗都是團隊非常熟練的。只需要基本的編程能力就可以完成,任務影響力僅涉及自身。 |
1.3 工作量(E)#
這里,我們定義工作量的最小工作單位為sp,單位時間一天的工作量。1sp即:我們的標准工程師一天的工作量為1sp(即:我們的標准工程師理想中的開發速度為1sp);
二、開發速度的評估#
2.1 理想開發速度#
我們的一個標准工程師理想中的開發速度就是一天可以完成1sp的工作量。前提是標准程序員,但顯然我們團隊中的程序員不可能都是標准工程師。因此理想中我們的團隊開發速度為:
2.2 開發速度的影響因子#
項目開發速度是一個很復雜的概念,很難准確的對其進行定義。考慮到不同團隊成員的能力不同,則開發速度也不相同,即使是同一團隊,其開發速度也不是一成不變的,會受到各種因素的影響。理想開發速度僅僅是沒有受到任何阻力影響時的速度。但在項目過程中,總會遇到一些影響。其影響因素主要包括兩方面。確定性因素以及突發性因素,在項目開始前,項目經理對以下兩種因素預估的越准確,那么對開發時間的評估也越准確。
確定性因素一般是項目客觀存在的,容易在開始前預測的。關於確定性因素大致參考如下:
影響因子 | 影響因子分數(以下為示例分數,具體分數可根據情況自定義i>0,若穩定則為1) |
---|---|
團隊組成 | 0.95 |
開發過程 | 1 |
需求清晰完整度 | 0.96 |
技術因素 | 0.97 |
團隊配合 | 1.05 |
其它因素 | 0.98 |
團隊組成:考慮到團隊成員不可能為標准工程師。因此團隊人員的能力是影響團隊開發速度的一個很大因素。我們可以在團隊中找一個接近於標准工程師的人,得到他的能力系數(SF)為1sp(一天可以完成1sp的工作量),則以他為基准可以得到團隊所有人的能力系數。則團隊組成的影響因子分數(TF)計算公式為:
開發過程:考慮到改進開發過程(采用敏捷,優化測試方法等)會對開發速度有影響,因此開發過程是影響因素之一。其值可大於1也可以小於1,若穩定不變則為1
需求清晰完成度:需求是否足夠清晰、完整也會對開發速度有影響。
技術因素:若完成該項目涉及到團隊中未知、不具備的技術知識也是風險之一。當然也可能為正面因素。
團隊配合:一個配合好的團隊和配合差的團隊其開發速度也是明顯不同的。
說明:以上因素具體項目團隊可自行調整。
確定性因素(FF)的綜合影響(FR)計算公式為:
突發性因素往往是項目開始前哪一預測的。關於突發性因素大致參考如下
突發性因素\影響因子分數 | 高(+) | 中(+) | 低(+) | 穩定 | 低(-) | 中(-) | 高(-) |
---|---|---|---|---|---|---|---|
團隊變化 | 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)計算公式為:
2.3 實際開發速度#
實際開發速度需要在理想開發速度的基礎上增加各種影響因子。其公式如下:
如上圖,由下往上分別為3-8人的開發團隊開發速度與綜合影響因子分數的函數圖像(影響因子在0.8-1.2之間)。
2.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天
結束語#
以上僅個人針對我們公司項目所制定的一種工作量評估模型。其具體實用程度,使用中存在的問題等,還有待時間與大量數據的支撐。也希望道友們能提供一些寶貴的意見。你們的團隊是如何進行工時與工作量的評估的。