本文主要講團隊長階段工作量估算(一般在一個月以上),它和很多因素有很密切的關系,我通常將它劃分為以前幾點:
1、所采用的過程。
在瀑布式過程下,風險會不斷積累,應對變化的能力較弱,往往按計劃發布了第一個版本,但是之后又由于需求或設計變更的幅度出現了大量工作量。相當多的團隊在這時失去了對工作量的控制。
在迭代式過程下,風險會較早的暴露以便針對性的解決,應對變化的能力較強,工作量投入相對比較平均,根據需求或設計變更的情況需要考慮部分甚至整體重構的工作量。
需求或設計變更幅度越大,則瀑布式比迭代式耗費的工作量越多。
需求或設計變更的幅度越小, 則瀑布式比迭代式耗費的工作量越少。
2、團隊成員的個人能力。
將代碼完善、測試的因素、可維護性等一并考慮在內,則一個的開發人員的工作效率很可能是一個一般性的開發人員的工作效率的十倍。
3、項目的計劃以及任務的分配在團隊成員保持穩定的前提下,合理的人員結構、有節奏的計劃、合理的任務分配將大大提升單位時間內的有效工作量,從而加快項目進度。
4、有效工作比率。
即在單位時間內的有效工作量,和人員士氣、任務安排、工作的復雜度和難度等密切相關。
好的團隊的有效工作量可以達到60-70%甚至再多一些,但是根據一個項目管理培訓老師的說法,如果一個團隊的有效工作量長期超過80%,那要小心了。
5、風險預防。
包括需求變更、設計變更、人員變更等都會影響到實際的工作量,尤其是人員變更,往往無法由團隊本身加以控制。
工作量估算模型:該模型本質上是一個經驗模型,主要針對業務復雜型且已有較成熟框架的項目,不知道是否適用于技術復雜型或者協調復雜型。
基于如下假設:
1、宏觀上以迭代式(或階段式)為主,每個迭代(或階段)包含一個比較完整的需求、設計、開發、測試、發布的流程,各個迭代(或階段)之間有交叉。總的來說是類似于rup的一個過程。
2、項目團隊的結構、個人能力、參與度是一個典型的業務復雜型團隊。其人員呈較為合理的紡錘型結構,允許部分人員較為薄弱。
項目管理:需求分析:設計:開發:測試:實施支持=0.5:1:1:2:1:0.5注意:以上比例僅代表工作量比例,不代表團隊成員比例,團隊成員可以兼不同角色。
3、在每個階段中,又分為以下幾類工作:
1)初始細化。其主要目的是針對性的解決或預防風險,也包括技術架構甚至部分公共模塊的開發。該部分工作量取決于風險的高低,通常占一個階段的10-30%.
2)構造開發。以功能模塊(或功能點)為基準單位,按比例分配需求、設計、開發、測試的工作量,參考比例為1:1:2:1.如果該模塊包括數據遷移,則額外增加1份工作量。
3)實施支持培訓。占一個階段的5-10% 4)管理溝通協調成本,占一個階段的10%左右。
4、功能模塊(或功能點)工作量估算。
1個基準功能模塊通常包含1-2個業務對象,每個業務對象中帶業務邏輯的屬性大約10個不到,包括該業務對象的簡單行為:增、刪、改、查。但不包括該業務對象的復雜行為。
在采用成熟框架的情況下下,該基準模塊的工作量估算為15人天(取有一定經驗的人員),包含初次開發及后續完善的工作量。此時有效工作比率為60%.復雜行為視為簡單行為的4倍。
特別復雜的功能點(包含有特定算法的)需要單獨估算,在早期以5-10倍估算。
5、風險預防。此部分完全取決于對項目的評估,并綜合各方面因素由各估算成員憑借經驗得出。(德爾塔法)
其模型如下:T=[(N×P)/S]×(1+X)
T:總工作量,單位為人天N:基準功能模塊數目,根據需求按經驗評估,可按功能模塊細化估算。
P:基準功能模塊的工作量,通常取15人天。
S:構造開發工作量占整個階段的百分比,在50%-75%之間X:項目風險預防,根據經驗取值,低的為10%,高的可以超過注意:此工作量和進度并沒有必然的聯系,破壞項目結構的人員追加并不能帶來進度上的利益。
備注:開發技術穩定以及人員穩定的情況下,估個大概,還是有可能的,但實際情況很難。
在前期制定項目時間表,我們不得不評估時間,這是一個基礎。
另外常常出現的問題,是我們對風險的估計不足,不知如何給風險留出合適的時間。風險如何控制也是對風險有效評估的前提。
在這其中所使用的評估公式,經常要在項目過程中不斷修正,因為這個公式畢竟是個經驗公式,你經驗積累的過程,也是個校正的過程。
常常遇到的情況,是在項目開始的時候估一下之后,對工作的估算的原理和模型不管不顧了,而是陷入解決項目的細節問題當中。