我們?yōu)槭裁匆M(jìn)行軟件規(guī)模度量呢?目的無(wú)非是:
1.作為報(bào)價(jià)或者決策的依據(jù)。
2.安排具體的項(xiàng)目進(jìn)度。
3.可以作為組織的生產(chǎn)力數(shù)據(jù),可以有很多用途,如:各項(xiàng)目間橫向比較,供以后項(xiàng)目參考等。
如果是為了投標(biāo)報(bào)價(jià),建議用Delphi法,功能點(diǎn)法、代碼行法太慢了,不能適應(yīng)商戰(zhàn)社會(huì),投標(biāo)經(jīng)常是沒(méi)有這么多時(shí)間讓你去折騰的。Delphi法的大致方法如下:
1.找?guī)酌Y深專(zhuān)家,一起對(duì)項(xiàng)目進(jìn)行WBS,把項(xiàng)目的工作分解為十幾條最多二三十條的工作項(xiàng)。
2.全部專(zhuān)家各自估計(jì)每條工作項(xiàng)的工作量,并向其他專(zhuān)家闡述自己的理由。
3.第一次各專(zhuān)家估出來(lái)的結(jié)果可能差異比較大,每位專(zhuān)家聽(tīng)取別人的意見(jiàn)后,重新估算。
4.按照上述辦法,各專(zhuān)家反復(fù)估算幾次,一般次數(shù)就是2-4次,各專(zhuān)家估計(jì)的工作量會(huì)越來(lái)越趨近,這個(gè)時(shí)候取全部專(zhuān)家的平均值。
如果是為了目標(biāo)2,安排具體的項(xiàng)目進(jìn)度,我建議用“傻瓜估算法”,而我們親愛(ài)的微軟,就是采用這樣的方法來(lái)估算規(guī)模的。這樣的辦法雖然原始,但有效,并且容易掌握。雖然這種辦法被扣上主觀(guān)成分大、項(xiàng)目間難以橫向?qū)Ρ鹊?、難以積累歷史數(shù)據(jù)等多種“罪狀”,但不好意思,用功能點(diǎn)法或者代碼行法就很準(zhǔn)嗎?我們親愛(ài)的軟件工程師們認(rèn)可功能點(diǎn)法或者代碼行法嗎?搞功能點(diǎn)法代碼行法等這些“虛”辦法,還不如老老實(shí)實(shí)地WBS,直接估算每個(gè)工作的工作量。
第一步:把公司內(nèi)部最有項(xiàng)目經(jīng)驗(yàn)最有估算經(jīng)驗(yàn)的工程們召集在一起,制訂組織級(jí)別的估算表框架。
軟件開(kāi)發(fā)活動(dòng),可以分類(lèi)以下幾類(lèi):
直接生產(chǎn)軟件的活動(dòng),如:需求開(kāi)發(fā)、設(shè)計(jì)、編碼、測(cè)試等工程類(lèi)活動(dòng)。
項(xiàng)目管理類(lèi)活動(dòng),如:編寫(xiě)項(xiàng)目計(jì)劃、計(jì)劃跟蹤、發(fā)布評(píng)審等活動(dòng)。
項(xiàng)目支持類(lèi)活動(dòng),如:配置管理、QA檢查等。
維護(hù)類(lèi)活動(dòng),項(xiàng)目驗(yàn)收后的數(shù)據(jù)整理、修改缺陷、系統(tǒng)維護(hù)等活動(dòng)。
根據(jù)公司的實(shí)際情況,列出各類(lèi)項(xiàng)目活動(dòng),可以根據(jù)不同的項(xiàng)目類(lèi)別而列出不同的活動(dòng),盡量把這些活動(dòng)種類(lèi)細(xì)化,如考慮設(shè)計(jì)時(shí),還需要考慮設(shè)計(jì)評(píng)審的時(shí)間,考慮編寫(xiě)計(jì)劃時(shí),需要考慮主計(jì)劃、子計(jì)劃的編寫(xiě)等等。
把這些框架定好,并設(shè)計(jì)出估算表模板,供項(xiàng)目組使用。
據(jù)我的經(jīng)驗(yàn),很多估算沒(méi)有做好的緣故,常常是忘記或者是沒(méi)有估算好管理類(lèi)、支持類(lèi)、維護(hù)類(lèi)的活動(dòng)。當(dāng)一個(gè)公司的估算精英聚集在一起的時(shí)候,大家要列出公司估算中常常遇到的問(wèn)題,全部考慮到估算表模板中,并寫(xiě)上足夠清晰的指導(dǎo)。當(dāng)項(xiàng)目組用這些模板的時(shí)候,相當(dāng)于用了估算精英們的腦袋來(lái)思考本項(xiàng)目的估算了。
第二步:項(xiàng)目組選用合適的估算表模板,進(jìn)行由底而上的估算。
項(xiàng)目組根據(jù)自己項(xiàng)目的特點(diǎn),選用合適的估算表模板,然后項(xiàng)目組成員一起在這個(gè)模板的基礎(chǔ)上,繼續(xù)細(xì)化,進(jìn)行詳細(xì)的WBS,列出要完成這個(gè)項(xiàng)目所需要的全部工作,并且把這些工作落實(shí)到具體的項(xiàng)目組成員身上,由負(fù)責(zé)該任務(wù)的人來(lái)估算自己完成這個(gè)任務(wù)需要多少時(shí)間,而不是由項(xiàng)目經(jīng)理分配一個(gè)完成時(shí)間。這就是由底而上的估算辦法,這是微軟MSF中的估算辦法,這個(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)地跟蹤好自己的工作。
第三步:持續(xù)完善模板,持續(xù)改進(jìn)。
每個(gè)項(xiàng)目使用模板進(jìn)行估算后,都可以對(duì)模板提出改進(jìn)建議,把本項(xiàng)目的成功經(jīng)驗(yàn)融入到模板中,讓后面的項(xiàng)目收益。
“傻瓜估算法”非常直接有效,能很準(zhǔn)確地估算出項(xiàng)目的工作量。學(xué)院派的人士會(huì)認(rèn)為應(yīng)該先估算出規(guī)模,然后再由規(guī)模估算出工作量,但我想說(shuō)的是,估算規(guī)模的目的還不是為了估算工作量,如果有辦法直接準(zhǔn)確地估算工作量,干嘛還要去估算規(guī)模,干嘛還要去想功能點(diǎn)法好還是代碼行法好?當(dāng)時(shí)我們主任評(píng)估師也認(rèn)可這樣的做法,他也認(rèn)為某些情況下工作量可以直接代表項(xiàng)目規(guī)模。CMMI也沒(méi)有規(guī)定非要用什么功能點(diǎn)法代碼行法來(lái)度量軟件規(guī)模。
軟件的工作量估算是很重要的一項(xiàng)工作,是整個(gè)項(xiàng)目成功的基礎(chǔ),用“土方法”也可以把工作量估好估準(zhǔn)!
如果要滿(mǎn)足目標(biāo)3,即作為組織的生產(chǎn)力數(shù)據(jù),應(yīng)該如何度量呢?
滿(mǎn)足目標(biāo)3之前,我們應(yīng)該保證我們能滿(mǎn)足目標(biāo)1和目標(biāo)2,如果目標(biāo)1和目標(biāo)2都沒(méi)滿(mǎn)足的情況下,我們就去追求目標(biāo)3,是有點(diǎn)“超前”,這種“超前”對(duì)公司來(lái)說(shuō)可能是“拔苗助長(zhǎng)”。當(dāng)然我們希望有一種方法能同時(shí)滿(mǎn)足這三個(gè)目標(biāo)的,但到目前為止,我還沒(méi)有見(jiàn)到過(guò)這樣的成功案例。軟件規(guī)模度量還是要一步一步來(lái),不要一開(kāi)始就期望吃成個(gè)“胖子”了。
如果在“傻瓜估算法”的基礎(chǔ)上多做一步,我們是可以滿(mǎn)足目標(biāo)三的。在第二步進(jìn)行WBS進(jìn)行由底而上的估算時(shí),這些WBS其實(shí)是可以分解成功能點(diǎn)或者是代碼行數(shù)。我們可以利用這些WBS得到兩個(gè)輸出,一個(gè)是工作量,一個(gè)是功能點(diǎn)或者是代碼行數(shù)。如果積累了一定的數(shù)據(jù),就可以建立功能點(diǎn)或者代碼行數(shù)與工作量的對(duì)應(yīng)關(guān)系,這樣不僅可以用來(lái)衡量公司的生產(chǎn)力,也可以利用這些經(jīng)驗(yàn)數(shù)據(jù)來(lái)估算以后的項(xiàng)目。
項(xiàng)目跟蹤的利器——進(jìn)度度量、成本度量
軟件開(kāi)發(fā)人員加班是家常便飯的事情,最近才剛聽(tīng)說(shuō)了一個(gè)朋友近一個(gè)月連續(xù)加班,日夜顛倒,沒(méi)有周末,過(guò)著“暗無(wú)天日”的生活。我曾經(jīng)問(wèn)過(guò)另一個(gè)朋友他所在公司如何控制項(xiàng)目的進(jìn)度成本的,他們公司非常“黑”,每隔一段時(shí)間公布一次加班龍虎榜,看誰(shuí)加班最少,搞到他們不好意思不加班。通過(guò)不斷的加班來(lái)保證進(jìn)度了,通過(guò)加班不給加班費(fèi)來(lái)控制成本,軟件開(kāi)發(fā)變成了“人間煎熬”。
如何才能有效地度量項(xiàng)目的進(jìn)度與成本呢?如何少加班最好不加班,就能按期并在預(yù)算內(nèi)完成項(xiàng)目呢?
我們先要回答這個(gè)問(wèn)題:為什么要度量項(xiàng)目的進(jìn)度與成本?
我們的目的是:掌握項(xiàng)目的狀況,采取必要的措施使項(xiàng)目的進(jìn)度和成本在控制范圍內(nèi)。要實(shí)現(xiàn)這個(gè)目的,我們必須先定義項(xiàng)目的度量比較基準(zhǔn),也就是需要先做好估算以及進(jìn)度計(jì)劃,每次的對(duì)進(jìn)度和成本的度量結(jié)果,都必須與之前的估算與計(jì)劃進(jìn)行比較,判斷項(xiàng)目是否在控制范圍內(nèi)。
項(xiàng)目規(guī)模的度量上文已經(jīng)闡述,這里介紹一下如何制定進(jìn)度計(jì)劃,這個(gè)進(jìn)度計(jì)劃就是我們度量進(jìn)度狀況的一把尺子。
有個(gè)朋友曾負(fù)責(zé)過(guò)一個(gè)項(xiàng)目,領(lǐng)導(dǎo)要求他把這個(gè)項(xiàng)目周期的全部活動(dòng)詳細(xì)計(jì)劃下來(lái)。他傻了眼了,他最多只能細(xì)化近兩周的工作,越到后面,越不能細(xì)化,只能定一些關(guān)鍵的結(jié)點(diǎn)。他覺(jué)得這個(gè)要求不合理,他非常冤枉地被領(lǐng)導(dǎo)認(rèn)為是無(wú)信心完成整個(gè)項(xiàng)目。
需求未細(xì)化,設(shè)計(jì)未確定,軟件開(kāi)發(fā)是充滿(mǎn)挑戰(zhàn)和具備不確定因素的智力活動(dòng),要求一下子就制定全過(guò)程的詳細(xì)計(jì)劃是不合理的。那是不是就不需要制定計(jì)劃呢?計(jì)劃趕不上變化,這是很多開(kāi)發(fā)人員的口頭禪,但我們必須清楚認(rèn)識(shí)到,計(jì)劃是控制變化的最佳辦法!
制定進(jìn)度計(jì)劃合適的辦法是:
1.近期的工作一定要細(xì)化,遠(yuǎn)期的工作需定出關(guān)鍵節(jié)點(diǎn)的完成時(shí)間,如版本發(fā)布時(shí)間、驗(yàn)收時(shí)間等。
2.進(jìn)度計(jì)劃必須持續(xù)細(xì)化,盡可能搞清楚不明的因素,盡快細(xì)化即將到來(lái)的工作。
3.進(jìn)度計(jì)劃的關(guān)鍵節(jié)點(diǎn)完成時(shí)間,必須保證公司的商業(yè)要求,如要滿(mǎn)足合同的進(jìn)度要求。
4.對(duì)于已經(jīng)細(xì)化部分的進(jìn)度計(jì)劃要設(shè)定一些小間隔的里程碑,如保證每?jī)芍芫陀幸粋€(gè)里程碑,這些里程碑就是我們的度量點(diǎn)。
其實(shí)進(jìn)度度量的關(guān)鍵是把度量用的“尺子”做好,每次用實(shí)際情況來(lái)對(duì)照。如果按照以上原則把“尺子”做好了,進(jìn)度度量辦法就非常簡(jiǎn)單,就是檢查這些里程碑點(diǎn)的完成情況了。
另外有不少公司采用進(jìn)度報(bào)告的方式,進(jìn)度報(bào)告不要只報(bào)告當(dāng)前情況,進(jìn)度報(bào)告必須與計(jì)劃情況對(duì)照,這樣的度量才有價(jià)值。很多公司沒(méi)有把進(jìn)度計(jì)劃做好,也就是沒(méi)有把度量用的“尺子”做好,沒(méi)有參照物,就難以判斷是否在控制范圍內(nèi),是否需要采取糾正措施了。
如何進(jìn)行成本度量呢?
成本分為人工成本及非人工成本,非人工成本可能包括采購(gòu)、差旅等費(fèi)用,這里我們先說(shuō)人工成本的度量。
首先我們要把人工成本的“尺子”做好 。如果用項(xiàng)目掙值管理辦法,我們是很容易度量項(xiàng)目的成本與進(jìn)度的,但要做好項(xiàng)目掙值管理并不容易。這里介紹一些簡(jiǎn)單易行的“土辦法”。很簡(jiǎn)單,就是先列出你的計(jì)劃加班時(shí)間,不需要加班完成,還是需要加一點(diǎn)班完成?度量辦法就是看實(shí)際加班情況與計(jì)劃加班情況進(jìn)行比較。
至于差旅成本,度量辦法很簡(jiǎn)單,每個(gè)公司都需要報(bào)銷(xiāo)的,這些數(shù)字很容易得到。問(wèn)題是我們?nèi)绾慰刂坪貌盥玫某杀?降低出差人員的住房標(biāo)準(zhǔn)?減少補(bǔ)貼?當(dāng)然不是這樣了,控制差旅成本的關(guān)鍵是要保證每次出差的工作質(zhì)量,讓每次出差都達(dá)到一定的目的,減少出差的次數(shù)。差旅成本上漲,通常是因?yàn)轵?yàn)收工作一拖再拖。把實(shí)施工作的計(jì)劃做好并跟蹤好,和客戶(hù)保持良好的溝通,必要時(shí)讓公司的高層與客戶(hù)的高層接觸來(lái)推動(dòng)驗(yàn)收,這些才是控制差旅成本的重要辦法。
被吹得最多的六西格瑪管理
六西格瑪被網(wǎng)絡(luò)炒作得太厲害了,我一直沒(méi)有能找到一篇能通俗說(shuō)明六西格瑪基本原理的文章。我們公司通過(guò)了CMMI5級(jí)了,但我還不時(shí)會(huì)遇到推銷(xiāo)六西格瑪培訓(xùn)的事情,這些推銷(xiāo)者可能不知道要過(guò)CMMI4級(jí),不精通六西格瑪是不行的。
什么是六西格瑪?
我第一次聽(tīng)說(shuō)的時(shí)候,我以為六西格瑪會(huì)包含六個(gè)方面,現(xiàn)在看來(lái)真是貽笑大方了。西格瑪是統(tǒng)計(jì)學(xué)里面的一個(gè)概念,六西格瑪,就表示六個(gè)西格瑪。我們暫時(shí)不去研究這些深?yuàn)W的統(tǒng)計(jì)學(xué)的東西,簡(jiǎn)單地說(shuō)六西格瑪管理就是一個(gè)穩(wěn)定地輸出高質(zhì)量的產(chǎn)品(或者是服務(wù))的管理辦法,在這個(gè)過(guò)程中利用統(tǒng)計(jì)學(xué)的原理對(duì)數(shù)據(jù)進(jìn)行分析,找出改進(jìn)點(diǎn),并通過(guò)再次度量數(shù)據(jù),來(lái)驗(yàn)證改進(jìn)的效果。
什么是穩(wěn)定的過(guò)程?什么是不穩(wěn)定的過(guò)程?
大家都試過(guò)野炊吧?小時(shí)候一般同學(xué)去郊外野炊,大家煮出來(lái)的飯是不是有的糊有的焦,沒(méi)有幾個(gè)煮得出好飯的?這個(gè)野炊煮飯的過(guò)程,我們可以認(rèn)為是一個(gè)不穩(wěn)定的過(guò)程,因?yàn)檩敵龅慕Y(jié)果都是難以預(yù)測(cè),差異很大的。不知道大家做項(xiàng)目的情況是不是跟野炊的情況類(lèi)似?有些項(xiàng)目做得好,有些項(xiàng)目做得差?
為什么用野炊的方式煮飯,結(jié)果會(huì)這樣呢?如果仔細(xì)分析,我們會(huì)發(fā)現(xiàn)影響煮飯結(jié)果的因素很多都不受控制,如米的質(zhì)量、放水的多少、火候的控制等等。這樣結(jié)果自然就難以控制了。同樣道理,我們做項(xiàng)目影響項(xiàng)目結(jié)果的因素也很多,如果這些因素不控制好,項(xiàng)目的結(jié)果也是很難估計(jì)了。
如果我們用電飯煲來(lái)煮飯呢?用電飯煲煮飯的時(shí)候,我們只需要保證米的質(zhì)量,并且放好水,剩下的事情就是按一下開(kāi)關(guān)就可以了,而且現(xiàn)在的飯煲都有放水的刻度,想放錯(cuò)水還比較難呢!我想沒(méi)有誰(shuí)曾經(jīng)用電飯煲來(lái)煮飯出現(xiàn)過(guò)失手的情況吧?
為什么用電飯煲煮飯,能保證持續(xù)穩(wěn)定地煮出高質(zhì)量的飯呢?因?yàn)殡婏堨乙呀?jīng)把很多不可控制的因素,用電飯煲控制好了,我們只需要控制的東西很少,而且也很容易控制。同樣道理,我們看看我們做項(xiàng)目的情況,如果項(xiàng)目沒(méi)有過(guò)程,很多東西是很難控制的,如果項(xiàng)目不用一定的技術(shù)來(lái)改進(jìn),很多東西也是很難控制的。一個(gè)成熟度高的公司,他們的項(xiàng)目一定是通過(guò)一些過(guò)程及相關(guān)的技術(shù)進(jìn)行控制的,這樣即使是不同的人來(lái)做項(xiàng)目,最終出來(lái)的結(jié)果都是可接受的,偏差不大的。
所謂六西格瑪管理來(lái)改進(jìn)項(xiàng)目,核心思想是要找出影響項(xiàng)目的關(guān)鍵因素,想辦法加以改進(jìn),當(dāng)然做項(xiàng)目的過(guò)程比煮飯要復(fù)雜很多,要做好這個(gè)改進(jìn)工作一點(diǎn)都不容易。
如果一個(gè)公司沒(méi)有什么軟件過(guò)程,是不能馬上進(jìn)行六西格瑪管理的。就好像如果要過(guò)CMMI4級(jí),如果沒(méi)有做好CMMI2、3級(jí)是根本不可能的。如果你們的公司剛好是這樣的情況,千萬(wàn)不要上六西格瑪管理,你們可能會(huì)把一般六西格瑪?shù)睦碚摷业臄?shù)字游戲所蒙蔽,這個(gè)時(shí)候做的很多度量工作很可能是徒勞的,只會(huì)增加大家的負(fù)擔(dān)并沒(méi)有什么效果。如果想改進(jìn)生產(chǎn)力的話(huà),參考CMMI2、3級(jí)的要求,選擇部分合適的PA來(lái)持續(xù)改進(jìn),這才是正路。
如果公司達(dá)到了CMMI3級(jí)水平,是不是就可以考慮進(jìn)行六西格瑪管理呢?
不盡然!六西格瑪管理有一大弊病,就是要基于數(shù)字來(lái)說(shuō)話(huà),而且要有一定的經(jīng)驗(yàn)數(shù)據(jù)為基礎(chǔ)。軟件開(kāi)發(fā)行業(yè),經(jīng)常面對(duì)新的挑戰(zhàn),很難想象一個(gè)軟件公司會(huì)幾年如一日都在用類(lèi)似的辦法生產(chǎn)類(lèi)似的軟件。也就是說(shuō),我們辛辛苦苦分析了幾個(gè)月的數(shù)據(jù),找出了一些問(wèn)題的根源,很有可能因?yàn)楣镜臉I(yè)務(wù)變化,而讓這些分析結(jié)果價(jià)值不大,也更加不要指望利用之前的歷史數(shù)據(jù)分析出來(lái)的指標(biāo)來(lái)管理今后的項(xiàng)目。
六西格瑪管理從開(kāi)始是從制造業(yè)開(kāi)始應(yīng)用的,而軟件企業(yè)的特點(diǎn)是智力的競(jìng)爭(zhēng),知識(shí)更新非常快!如果公司不是長(zhǎng)期穩(wěn)定做某類(lèi)業(yè)務(wù)的,是不適合上全套的六西格瑪管理,當(dāng)然六西格瑪?shù)暮诵乃枷胧强梢岳玫摹?/p>
這里只是對(duì)六西格瑪進(jìn)行了簡(jiǎn)單的介紹,我將另外寫(xiě)一文詳細(xì)介紹六西格瑪管理的基本原理。
量體裁衣、身體力行
軟件度量可以是很復(fù)雜的事情,也可以是很簡(jiǎn)單的事情,大家不必被一些復(fù)雜的度量辦法、高價(jià)的度量工具、還有深?yuàn)W的六西格瑪給嚇怕了。度量工作本身并不會(huì)有任何好處,產(chǎn)生好處的是對(duì)度量結(jié)果的分析及相應(yīng)的改進(jìn)工作。
做度量之前,要先思考當(dāng)前公司存在一些什么大問(wèn)題,有什么簡(jiǎn)單的度量辦法,能讓你更加清楚地了解問(wèn)題,并更容易分析出原因。如果你要進(jìn)行一系列的改進(jìn)工作,你也需要思考,有什么簡(jiǎn)單的度量辦法,能讓你很容易地跟蹤改進(jìn)的情況,并能很容易地分析出原因及采取糾正措施。
目標(biāo)驅(qū)動(dòng)度量,而不是為了度量而度量,簡(jiǎn)單就是最好的!
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛(ài)好者、大學(xué)生提供專(zhuān)業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書(shū)、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專(zhuān)業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過(guò)深研歷年考試出題規(guī)律與考試大綱,深挖核心知識(shí)與高頻考點(diǎn),為學(xué)員考試保駕護(hù)航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿(mǎn)足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。
發(fā)表評(píng)論 查看完整評(píng)論 | |