軟件項目之預(yù)算評估三把刀
發(fā)布時間:2022/4/13 10:05:00
一、使用完善的評估方法的重要性。
一般情況下,軟件項目會受到四種因素的控制,它們分別是時間、需求、資源(包括人員、硬件條件以及資金)和風險。這些因素的任何意料之外的變化都會對我們的項目產(chǎn)生影響。因此,做好時間和項目資源需求的評估是非常必要的。如果過低估計項目預(yù)算,會由于缺乏項目實施時間、資金、硬件條件或是沒有足夠的人來完成等原因?qū)е路浅乐氐暮蠊。但如果過高地估計項目需求預(yù)算,也會因為成本太高使企業(yè)付出很大的代價,最后這個項目可能會被擱淺,就算項目被批準實施,也會由于此項目占用大量的資源而使其它的項目由于得不到足夠的資源來呈現(xiàn)“饑餓”狀態(tài)。
從我的經(jīng)驗來看,對一個項目做時間和所需資源的預(yù)算評估通常對于大多數(shù)團隊和項目經(jīng)理是一個非常大的挑戰(zhàn)。形成挑戰(zhàn)的原因有很多,如它們對預(yù)算評估沒有足夠的經(jīng)驗、對評估技術(shù)或所涉及的商業(yè)領(lǐng)域缺乏了解,需求不清楚等。盡管負責項目預(yù)算評估的經(jīng)理已經(jīng)嘗試了使用最好的方法來處理需求及各方的關(guān)系問題,但由于以上的原因,不可避免地導至整個團隊由于評估失誤而超過預(yù)算,或是項目失敗。還有另外一種評估預(yù)算的方法,就是使用高度樂觀的方法進行評估,而忽略我們需要處理的具體項目。那么我們到底該怎么做呢?
二、實用的預(yù)算評估技術(shù)。
在我們開始研究預(yù)算評估之前,需要對我們能提供的預(yù)算評估類型有一個初步的認識。預(yù)算評估可以被簡單地分為下面三種類型:
1、宏觀預(yù)算評估:這種評估方式將根據(jù)項目的宏觀輪廓進行一個總體的估計。這種估計是非常粗略的。在理想狀態(tài)下,所評估出來的值應(yīng)該是實際值的兩倍至三倍。
2、粗略預(yù)算評估:用這種評估方式評估出來的數(shù)據(jù)已經(jīng)非常接近實際值了。在理想狀態(tài)下,評估出來的值應(yīng)該是實際值的50%至100%。
3、精確預(yù)算評估:這是一種非常好的預(yù)算評估主要。在理想狀態(tài)下,所評估出來的值應(yīng)該是實際值的25%至50%。
決定使用這三種不同預(yù)算評估類型中的哪一種是十分重要的。當我們對需要做的項目背景和業(yè)務(wù)非常熟悉,并且類似的項目已經(jīng)做過很多次的情況下,使用精確評估是可行的。當我們正在做系統(tǒng)維護工作時,所能遇到的問題是已知的,或是增加一個我們曾經(jīng)做過的功能時,這種預(yù)算評估是允許的。粗略評估是在我們對需求比較熟悉的,以及對相關(guān)領(lǐng)域和技術(shù)熟悉的情況下采用的。而在所有其他的情況下,最好的預(yù)算評估方法就是宏觀預(yù)算評估。也許有很多人固執(zhí)地認為宏觀預(yù)算評估的結(jié)果幾乎等于沒做任何評估!但這種評估的結(jié)果實際上是非常價值的,因為這些評估結(jié)果可以給企業(yè)和項目街頭團隊一些關(guān)于正在進行的項目需要些什么,其中包括時間、資源和資金。使用這種方法我們至少知道某個項目需要兩到六個月的時間來完成。如果不進行評估,也許我們根據(jù)就不知道項目需要多少時間來完成。根據(jù)評估結(jié)果,我們可以根據(jù)需要對某些重要的項目進行更細致的預(yù)算評估。例如,我們可以為我們需要的基礎(chǔ)構(gòu)架提供一個精略評估,而不僅僅是一個關(guān)于人員和時間的宏觀預(yù)算評估結(jié)果。
三、如何進行宏觀預(yù)算評估。
當我們開始個全新的項目時,所面對最多的就是這種預(yù)算評估方式。新的技術(shù)、對領(lǐng)域知識和技術(shù)不熟悉的團隊,或是對需求不清楚。而對付這些情況最好的預(yù)算評估方式就是宏觀預(yù)算評估。
1、打破項目是由許多不同需要的任務(wù)組成的束縛。嘗試著為項目盡可能地增加任務(wù)。典型的做法是按著設(shè)計和實現(xiàn)軟件的一般方法來提取出新任務(wù),如分析、設(shè)計、實現(xiàn)、演示、測試、bug核對、文檔、發(fā)布以及技術(shù)支持等,看看如果這些步驟在每個任務(wù)中都要求去做,那么就可以考慮將它們提出來做為一個新的任務(wù)。
2、使用兩個指標來評估每一個任務(wù):復雜度(分為高、中、低三個檔次)和工作量(分為大、中、小三個檔次)。一個并不復雜的任務(wù)仍然可能是一個工作量很大的任務(wù)。例如,將paper form上的信息保存在數(shù)據(jù)庫中可能需要數(shù)周的時間。一個非常復雜的的任務(wù)的工作量也可能不大,但仍然需要花很多時間來完成,例如對一個數(shù)據(jù)庫的性能優(yōu)化。對于復雜的任務(wù),一般當其非常大時,拆分成小的任務(wù)后分配到許多人或團隊時是非常困難的。而簡單的任務(wù)就很容易地被分拆和分配。
3、有效地評估任務(wù)所需的時間。對于最后形成的任務(wù),需要定義它們所需的時間和資源。例如,我們可以設(shè)置低復雜度和工作量少的任務(wù)需要最多需要一周的時間,而中等復雜度和小工作時的任務(wù)需要三周的時間等等。這些量化后的指標和基于團隊和項目的指標不同,這此指標和數(shù)據(jù)將在下一次評估時幫助我們獲得更好的效果。因此,應(yīng)該將所有的任務(wù)的宏觀評估值都加到一個表中,如下表所示:
表1 進行宏觀評估的任務(wù)表
四、如何進行粗略預(yù)算評估。
當我們對項目的任務(wù)有了一個好的想法,并知道如何去做的情況下,可以使用這種預(yù)算評估。
1、最好讓實際參與項目的人來進行這種評估工作。最后可以將這些參與評估的人的評估結(jié)果累加,從而得到最終的預(yù)算評估。
2、確保評估函數(shù)的自變量為:時間、人員和資源需求。
3、對分拆后的任務(wù)盡可能地考慮到它們的細節(jié)部分。在上面曾經(jīng)提到過。按著典型的軟件設(shè)計和實現(xiàn)軌跡,如分析、設(shè)計、實現(xiàn)、演示、測試、bug核對、文檔、發(fā)布以及技術(shù)支持,并考慮這些任務(wù)是否為每個任務(wù)都需要的,對做這項工作是非常必要的。我們應(yīng)保證每個時間單位為八十小時或更少的時間。
五、小結(jié)。
本文所討論的技術(shù)可以幫助我們更出色地完成預(yù)算評估工作。將評估所得出的數(shù)據(jù)和項目實際需求數(shù)據(jù)進行對比。鑒別什么是正確的,什么是錯誤的。將幫助我們改善下次評估的結(jié)果。隨著我們從事更多的預(yù)算評估工作,我們的經(jīng)驗將會有更顯著的增加!