qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          項(xiàng)目估算與計(jì)劃不是一般的難(中)

          估算如何做出來(lái)?

            這里開(kāi)始所說(shuō)的估算,全部都是指項(xiàng)目組對(duì)項(xiàng)目的估算,這個(gè)估算的目的是用來(lái)指導(dǎo)項(xiàng)目的具體工作

            有很多種估算辦法,大致可以分為兩類:

            1、先得到軟件規(guī)模,然后根據(jù)公司實(shí)際的生產(chǎn)率由軟件規(guī)模導(dǎo)出工作量。

            2、直接得到工作量。

            第一類的常見(jiàn)方法有:功能點(diǎn)法、代碼行法,第二類的常見(jiàn)方法有Delphi估算法、微軟的由底而上估算法。

            什么是軟件規(guī)模?我們先看看一個(gè)搬磚頭的估算。

            假設(shè)有1000塊磚頭,它們的大小和重量一樣,每名工人每天能搬100塊磚頭,于是我們可以估算到需要10人日來(lái)搬完。10人日的意思是1名工人需要10天完成,而10名工人只需要1天就搞定了。

            這個(gè)1000塊代表了工作的規(guī)模,而生產(chǎn)率就是100塊/日,這樣就可以推算出工作量為10人日。建筑工程可以得到土石方量、混凝土量、鋼筋量等代表工作規(guī)模的數(shù)據(jù),這樣就比較容易推算出完成這些工作需要的工作量。

            而軟件工程估算也希望能做到類似的效果,但用什么來(lái)代表軟件項(xiàng)目的工作規(guī)模呢?功能點(diǎn)和代碼行是常見(jiàn)的兩種軟件規(guī)模表示方式。

            軟件規(guī)模是與軟件具體生產(chǎn)技術(shù)、項(xiàng)目管理辦法、項(xiàng)目組人員水平等無(wú)關(guān)的東西,軟件規(guī)模只和軟件項(xiàng)目本身的性質(zhì)相關(guān),如果我們能找到合適的統(tǒng)一的標(biāo)準(zhǔn)來(lái)度量每個(gè)項(xiàng)目的規(guī)模,這樣每個(gè)軟件項(xiàng)目之間就可以進(jìn)行橫向比較了。功能點(diǎn)法和代碼行法都希望能達(dá)致這樣的效果。

            功能點(diǎn)法的基本思路是將復(fù)雜的軟件分解為一個(gè)一個(gè)獨(dú)立的粒度一致的功能點(diǎn),附加一些調(diào)整系數(shù),得到軟件規(guī)模。

            我們的項(xiàng)目大部分是數(shù)據(jù)庫(kù)四輪馬車的操作(查詢、增加、修改、刪除),功能點(diǎn)法從比較高的層次對(duì)這些工作進(jìn)行抽象,有一套嚴(yán)密的規(guī)則可以讓你將需求分解成一個(gè)一個(gè)的功能點(diǎn)。代碼行法思路也類似,不過(guò)分解的結(jié)果是代碼行而已。但一般來(lái)說(shuō)代碼行與軟件的實(shí)現(xiàn)技術(shù)相關(guān)度太大,大家會(huì)更加偏愛(ài)功能點(diǎn)法。

            功能點(diǎn)法和代碼行法有比較長(zhǎng)的歷史,也有很多詳細(xì)資料,大家可以去查閱一下。這方法理論上很理想,但實(shí)踐效果很差,我還沒(méi)有見(jiàn)到一家能成熟應(yīng)用并且取得比較好效果的公司。功能點(diǎn)法和代碼行法有這樣的一些難以解決的問(wèn)題:

            1、只適用于數(shù)據(jù)庫(kù)四輪馬車的操作的項(xiàng)目,高技術(shù)含量、創(chuàng)造性高的軟件不適用,如游戲軟件、計(jì)算機(jī)負(fù)責(zé)計(jì)算與決策軟件等。

            2、我們絕大部分項(xiàng)目是需求不明確、設(shè)計(jì)不明確,并且工期很趕的,這兩個(gè)方法都無(wú)法適應(yīng)這樣的現(xiàn)實(shí)條件。需求不明確基本上無(wú)法得到軟件規(guī)模,建筑工程為什么能做到,是因?yàn)樾枨蠛驮O(shè)計(jì)都十分明確了。

            3、兩個(gè)方法的規(guī)則都很詳細(xì),要花大量時(shí)間學(xué)習(xí)和實(shí)戰(zhàn)才能掌握。

            4、由工作規(guī)模導(dǎo)出工作量這樣的思考方式,難以適用于軟件項(xiàng)目。項(xiàng)目組還是習(xí)慣列出具體的任務(wù),逐條任務(wù)估計(jì)時(shí)間,而且只有這樣的工作方式才能讓項(xiàng)目組感覺(jué)更加踏實(shí)。

            Dephi估算法是比較符合大家實(shí)際工作習(xí)慣,也是比較容易掌握的估算辦法。

            Delphi法的大致方法如下:

            1、找?guī)酌Y深專家,一起對(duì)項(xiàng)目進(jìn)行WBS,把項(xiàng)目的工作分解為十幾條最多二三十條的工作項(xiàng)。

            2、全部專家各自估計(jì)每條工作項(xiàng)的工作量,并向其他專家闡述自己的理由。

            3、第一次各專家估出來(lái)的結(jié)果可能差異比較大,每位專家聽(tīng)取別人的意見(jiàn)后,重新估算。

            4、按照上述辦法,各專家反復(fù)估算幾次,一般次數(shù)就是2-4次,各專家估計(jì)的工作量會(huì)越來(lái)越趨近,這個(gè)時(shí)候取全部專家的平均值。

            普遍認(rèn)為各專家的經(jīng)驗(yàn)與知識(shí)水平會(huì)嚴(yán)重影響結(jié)果的準(zhǔn)確性,而我的實(shí)踐經(jīng)驗(yàn)是:應(yīng)該讓項(xiàng)目組每個(gè)人自己來(lái)估算,也就是讓大家來(lái)當(dāng)專家,在這個(gè)基礎(chǔ)上可以再增加一兩名來(lái)自項(xiàng)目組外部的專家。

            有時(shí)候覺(jué)得估算這個(gè)問(wèn)題搞得太復(fù)雜了,各式各樣的方法是不是太夸張了?其實(shí)最簡(jiǎn)單的方法就是讓負(fù)責(zé)該項(xiàng)工作的人自己來(lái)估計(jì)工作量,微軟的由底而上的估算方法就是這樣做的,可謂返璞歸真啊!

          微軟由底而上的估算方法大致是這樣的:對(duì)項(xiàng)目各項(xiàng)工作進(jìn)行分解后(即俗稱的wbs:work breakdown structure,工作分解結(jié)構(gòu)),每個(gè)任務(wù)落實(shí)負(fù)責(zé)人,由負(fù)責(zé)人對(duì)自己的任務(wù)進(jìn)行估計(jì)。這個(gè)辦法有以下好處:

            1、最終該任務(wù)是由這個(gè)人來(lái)完成的,他估計(jì)多少時(shí)間才能做完,這個(gè)時(shí)間才是最接近實(shí)際的。

            2、負(fù)責(zé)該任務(wù)的人進(jìn)行估算的時(shí)候,肯定需要認(rèn)真思考這個(gè)任務(wù)的風(fēng)險(xiǎn),需要做哪些具體的工作,這樣更容易在未開(kāi)始工作之前就發(fā)現(xiàn)更多的潛在問(wèn)題。相反如果由項(xiàng)目經(jīng)理來(lái)分配時(shí)間,這個(gè)人就可能不會(huì)去思考這個(gè)任務(wù)了。

            3、做這個(gè)任務(wù)的人會(huì)有被重視和尊重的感覺(jué),他會(huì)很重視自己承諾的完成時(shí)間,并且想法設(shè)法按時(shí)間完成。這樣會(huì)減少很多項(xiàng)目管理時(shí)間,因?yàn)槊總€(gè)任務(wù)負(fù)責(zé)人都會(huì)主動(dòng)地跟蹤好自己的工作。

            其實(shí)微軟這個(gè)方法根本就沒(méi)有什么特別,所有正常人都可以想到這個(gè)方法,但仍然有很多人去追求那些不太靠譜的估算方法。

            這個(gè)方法還是有這樣的一些問(wèn)題的:

            1、有人會(huì)估算偏小,比方他說(shuō)需要5天,但往往10天還完不成。

            2、有人估算過(guò)于保守。

            3、項(xiàng)目的進(jìn)度要求就是很緊,基本上你必須在指定時(shí)間內(nèi)完成,估算顯得毫無(wú)價(jià)值。

            第一個(gè)問(wèn)題是比較常見(jiàn)的,但我們要這樣想:估不準(zhǔn)也比不估算好,估算偏差哪怕超過(guò)100%,也比不估算好,至少有個(gè)譜。

            大家是會(huì)進(jìn)步的,估不準(zhǔn)往往是對(duì)任務(wù)和自己能力認(rèn)識(shí)不到位,要讓大家不害怕估算,只要敢于估算,問(wèn)題才會(huì)暴露出來(lái),才能持續(xù)進(jìn)步。

            第二個(gè)問(wèn)題分兩種情況,有些人是確實(shí)是過(guò)分保守的對(duì)自己信心不太足,項(xiàng)目經(jīng)理可以多多來(lái)指導(dǎo)他的工作,看看他具體的進(jìn)展,讓他更加充分地了解任務(wù),更加充分了解自己的能力,增強(qiáng)他的信心,這樣他就能持續(xù)進(jìn)步了。而另外一種情況就比較惡劣,少數(shù)人會(huì)故意增大時(shí)間,這樣他平時(shí)工作不必全力以赴,可以比較悠閑,甚至可以利用工作時(shí)間干私事。如果發(fā)現(xiàn)這樣的情況,就應(yīng)該嚴(yán)肅處理了,不要做爛好人,這樣的人在團(tuán)隊(duì)中存在是對(duì)團(tuán)隊(duì)的極大傷害。

            第三個(gè)問(wèn)題往往是各項(xiàng)目經(jīng)理心中的痛楚,他們會(huì)覺(jué)得:實(shí)在無(wú)奈啊!做項(xiàng)目就是在有限時(shí)間有限資源內(nèi)做不可能完成的任務(wù),在這樣的情況下,你就不要跟我扯估算了!

            我們的項(xiàng)目大部分情況都是非常大壓力的,應(yīng)對(duì)這樣大的壓力越需要冷靜。實(shí)際上大部分項(xiàng)目盡管是有壓力,但只要發(fā)揮團(tuán)隊(duì)的聰明才智,還是可以高效地做好工作的,不需要加班或者少加班。本文稍后會(huì)介紹這個(gè)問(wèn)題的應(yīng)對(duì)辦法。

            介紹了這么多種估算方法,每種都有很多問(wèn)題,那到底怎樣才能做好項(xiàng)目估算呢?

            軟件項(xiàng)目的特點(diǎn)就是項(xiàng)目簽訂時(shí),價(jià)錢是死的,工期是死的,而需求和設(shè)計(jì)是不明確的。

            我的經(jīng)驗(yàn)告訴我,功能點(diǎn)法、代碼行法這些方法基本上是不靠譜的,我在實(shí)際項(xiàng)目中會(huì)綜合使用Dephi法和由底而上的估算方法,并予以改良,下面介紹一下我的一些心得體會(huì)。

            1、項(xiàng)目估算與其說(shuō)是估出來(lái),還不如說(shuō)是做出來(lái)的。

            假設(shè)某項(xiàng)目是這樣的情況:

            1)合同簽署的金額是100萬(wàn),工期是3個(gè)月。

            2)需求只是大致寫(xiě)了,并不明確。

            3)老板要賺50萬(wàn),給你的預(yù)算只有50萬(wàn)。

            我們很多項(xiàng)目都是這樣的情況,不是等你估算出比較靠譜的數(shù)字,然后才去報(bào)價(jià)簽合同的,我們經(jīng)常要在老板指定的預(yù)算下完成項(xiàng)目。

            你現(xiàn)在要負(fù)責(zé)這個(gè)項(xiàng)目,你會(huì)如何做估算呢?

          你需要做好兩個(gè)事情,才能保證項(xiàng)目實(shí)際成本控制在預(yù)算內(nèi)。

            第一個(gè)事情,控制好需求。需求不明確,這既是不利因素也是有利因素,應(yīng)盡量往有利的方向控制。不明確的好處就是你有控制需求的空間,抓住客戶的關(guān)鍵需求,簡(jiǎn)化不必要的花銷的需求,能極大地降低項(xiàng)目工作量。

            第二個(gè)事情:想盡辦法降低開(kāi)發(fā)工作量。不要因?yàn)檫M(jìn)度緊就不認(rèn)真思考軟件的設(shè)計(jì),應(yīng)盡量采用簡(jiǎn)單的成熟的設(shè)計(jì)方案,簡(jiǎn)化工作。

            2、估算應(yīng)該持續(xù)進(jìn)行,持續(xù)細(xì)化。

            項(xiàng)目初期很難對(duì)項(xiàng)目做完整估算,但能估計(jì)的部分應(yīng)先估計(jì)出來(lái),并且針對(duì)不明確的部分安排計(jì)劃去搞清楚。

            3、估算是項(xiàng)目各種工作估算的總和。

            估算并不是只是得到一個(gè)項(xiàng)目估算的總體數(shù)字,項(xiàng)目的估算總數(shù)其實(shí)是由項(xiàng)目各種工作的估算組成的。

            前文介紹了項(xiàng)目的各種工作,每一種工作都需要認(rèn)真估算。如果估算發(fā)生偏差,要能定位到具體是哪部分的估算出問(wèn)題了,否則估算沒(méi)有指導(dǎo)項(xiàng)目工作的價(jià)值。功能點(diǎn)法、代碼行法的估算辦法,只能得到一個(gè)項(xiàng)目估算的總數(shù),而不能定位到具體的哪一部分工作,這樣得到的估算結(jié)果難以用來(lái)指導(dǎo)項(xiàng)目工作。

            4、估算依賴項(xiàng)目組的整體實(shí)力。

            如果你沒(méi)有軟件開(kāi)發(fā)相關(guān)經(jīng)驗(yàn),只懂理論上的估算,你是不可能做好估算工作的。

            項(xiàng)目組由項(xiàng)目管理、軟件設(shè)計(jì)、編碼、測(cè)試、實(shí)施等各類專業(yè)人才組成,每個(gè)人在自己方面都是專家,每個(gè)人都是整個(gè)項(xiàng)目組中最有資格對(duì)自己專業(yè)方面的工作進(jìn)行估算。前文列出了的項(xiàng)目各方面的工作,應(yīng)該由相應(yīng)的項(xiàng)目成員為主進(jìn)行估算。

            5、項(xiàng)目組應(yīng)該不斷學(xué)習(xí)、總結(jié)、進(jìn)步,提高整體水平。

            需求不明確、設(shè)計(jì)不確定這是項(xiàng)目的特點(diǎn),我們需要不斷地學(xué)習(xí)來(lái)提高水平,將這些不明確的因素逐步明確。

            沒(méi)有什么妙方能解決這些不明確的因素,靠的還是我們的知識(shí)和能力。項(xiàng)目組每個(gè)人都應(yīng)該通過(guò)持續(xù)估算來(lái)發(fā)現(xiàn)自己的不足并提高水平。

            6、公司應(yīng)該定期組織項(xiàng)目資深人士制定估算指南并持續(xù)更新。

            我們公司有一份估算模板,里面匯集了以前的估算經(jīng)驗(yàn),列出了所有需要考慮的估算內(nèi)容以及詳細(xì)的說(shuō)明。

            我們以前沒(méi)有估算模板時(shí),估算偏差會(huì)達(dá)到50%以上,總結(jié)經(jīng)驗(yàn)發(fā)現(xiàn)偏差的主要原因是估漏!使用估算模板會(huì)幫助我們發(fā)現(xiàn)遺漏,后來(lái)我們的估算偏差基本可以控制在20%以內(nèi)。

            前文的“估算要估啥”小節(jié),我列出了項(xiàng)目通常要考慮的各種工作,也列出了容易估漏和估計(jì)不足的地方,大家可在此基礎(chǔ)上根據(jù)自己公司實(shí)際情況,修改和擴(kuò)充這些內(nèi)容,寫(xiě)出自己公司的估算模板或估算指南。

            先得到項(xiàng)目規(guī)模,再由規(guī)模導(dǎo)出工作量,這是一個(gè)很美好的想法,問(wèn)題就是和我們的實(shí)際情況相去甚遠(yuǎn)了。

            將工作分解,直到分解到可以估計(jì)工作量的程度,這個(gè)可能是最土最有效的方法了。但你可能會(huì)問(wèn),這樣的估算方法,項(xiàng)目之間就無(wú)法橫向比較了?

            項(xiàng)目估算第一目標(biāo)是用來(lái)指導(dǎo)項(xiàng)目工作,如果這個(gè)目標(biāo)都達(dá)不到,那么就不需要考慮項(xiàng)目之間的橫向比較了。

            另外我要反問(wèn):為什么非要用這樣的方式來(lái)作項(xiàng)目之間的橫向比較?有什么好處?國(guó)外優(yōu)秀的軟件開(kāi)發(fā)工作室就不會(huì)做這樣無(wú)聊的事情,軟件開(kāi)發(fā)可能是人類最厲害的智力活動(dòng),你覺(jué)得一定能量化度量嗎?

            要從本質(zhì)上提升估算水平,你不太可能用幾天時(shí)間去突擊學(xué)習(xí)某種估算辦法就能勝任項(xiàng)目實(shí)際的估算工作。

            提高估算能力靠你長(zhǎng)期的積累,你的實(shí)力、你的項(xiàng)目團(tuán)隊(duì)的綜合實(shí)力,還有你們公司的綜合實(shí)力,決定了估算的水平!

            估算是為項(xiàng)目服務(wù)的,后文你會(huì)看到如何利用估算來(lái)管理項(xiàng)目,又如何因應(yīng)項(xiàng)目實(shí)際情況來(lái)更新估算。

            下面開(kāi)始,我們將講述估算與計(jì)劃的關(guān)系、計(jì)劃及計(jì)劃跟蹤。 計(jì)劃有什么內(nèi)容?

            關(guān)于項(xiàng)目計(jì)劃,我們要先討論什么是正確的事情,然后再討論如何做正確的事情,我們先來(lái)看看項(xiàng)目計(jì)劃應(yīng)該有什么內(nèi)容?

            讓大家做項(xiàng)目計(jì)劃,很多人以為用Project做一份開(kāi)發(fā)進(jìn)度計(jì)劃就完事了。而項(xiàng)目的開(kāi)發(fā)工作只是占了項(xiàng)目工作的其中一部分而已,跟項(xiàng)目所有相關(guān)的工作,我們都需要計(jì)劃。諸如開(kāi)發(fā)計(jì)劃、測(cè)試計(jì)劃、培訓(xùn)計(jì)劃、溝通計(jì)劃、采購(gòu)計(jì)劃等等,這些計(jì)劃的集合,我們稱之為項(xiàng)目計(jì)劃。

            項(xiàng)目計(jì)劃應(yīng)該包含以下內(nèi)容:

            1、項(xiàng)目背景、目標(biāo)、概述等。

            2、項(xiàng)目需要提交的工作產(chǎn)品,包括內(nèi)部工作產(chǎn)品和最終工作產(chǎn)品。

            3、風(fēng)險(xiǎn)分析及應(yīng)對(duì)措施。

            4、項(xiàng)目估算。

            5、項(xiàng)目在成本、進(jìn)度、質(zhì)量方面的管理目標(biāo)。

            6、項(xiàng)目人員職責(zé)。

            7、對(duì)項(xiàng)目各項(xiàng)工作的安排,包括但不限于前文介紹的11種工作,如下:

              1)項(xiàng)目前期工作
              2)商務(wù)方面的工作
              3)需求調(diào)研方面的工作
              4)軟件設(shè)計(jì)方面的工作
              5)編碼方面的工作
              6)測(cè)試方面的工作
              7)實(shí)施方面的工作
              8)維護(hù)方面的工作
              9)項(xiàng)目管理方面的工作
              10)配置管理方面的工作
              11)質(zhì)量保證方面的工作

            8、需客戶或第三方協(xié)調(diào)的工作計(jì)劃。

            9、采購(gòu)計(jì)劃。

            10、項(xiàng)目所需的各種硬件資源,包括開(kāi)發(fā)環(huán)境、運(yùn)行環(huán)境、測(cè)試環(huán)境等。

            一般來(lái)說(shuō)項(xiàng)目計(jì)劃有一個(gè)主計(jì)劃,多個(gè)子計(jì)劃。主計(jì)劃總體描述項(xiàng)目的背景、管理目標(biāo)、任務(wù)概述等總體信息,而子計(jì)劃則有測(cè)試計(jì)劃、實(shí)施計(jì)劃、培訓(xùn)計(jì)劃、配置管理計(jì)劃等。

            下圖是主計(jì)劃目錄示例:





          下面是進(jìn)度計(jì)劃示例:

            該進(jìn)度計(jì)劃按版本來(lái)組織任務(wù),而每個(gè)版本則按照項(xiàng)目管理、需求、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、發(fā)布、實(shí)施來(lái)組織任務(wù)。

            也會(huì)有些公司會(huì)將所有計(jì)劃集成一個(gè)大計(jì)劃,計(jì)劃的組織和表達(dá)方式并沒(méi)有固定方式,上述示例圖也只是僅供參考。

            上面講了很多項(xiàng)目計(jì)劃的內(nèi)容,其實(shí)我們只是需要想清楚為什么要做計(jì)劃,你就會(huì)知道項(xiàng)目計(jì)劃應(yīng)該有什么內(nèi)容。

            項(xiàng)目計(jì)劃的幾個(gè)重要目的:

            1、明確項(xiàng)目人員、各人職責(zé)。(當(dāng)然這可能會(huì)在立項(xiàng)通知書(shū)中明確。)

            2、明確完成項(xiàng)目所需要的各種資源。

            3、確定項(xiàng)目在成本、進(jìn)度、質(zhì)量方面的管理目標(biāo)。

            4、明確項(xiàng)目的各種工作產(chǎn)品。

            5、落實(shí)各項(xiàng)工作安排,保證項(xiàng)目成功。





          posted on 2011-11-23 17:41 順其自然EVO 閱讀(138) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 淮滨县| 九台市| 南康市| 丹棱县| 介休市| 定州市| 隆昌县| 七台河市| 柘荣县| 启东市| 科技| 专栏| 乌什县| 星座| 黄浦区| 绵阳市| 永平县| 辛集市| 台北市| 满洲里市| 湾仔区| 白银市| 晋州市| 开阳县| 舞阳县| 普宁市| 宁陵县| 历史| 南安市| 伊宁县| 泰宁县| 西昌市| 留坝县| 开封县| 洪雅县| 建水县| 隆尧县| 巴林左旗| 临海市| 邻水| 鹤壁市|