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