打開博客,發(fā)現(xiàn)最新的一篇博文仍是1月15日發(fā)表的。1月16日本是我發(fā)表博文的,但因家里有事(外婆去世,1月16日提前離?;丶遥?,沒有更新博客。今天補(bǔ)發(fā)一篇,亦更新一下博客。文章的主題是:軟件開發(fā)工作量估算,主要是將自己過去對(duì)軟件規(guī)模(工作量)估算方法的研究做一個(gè)初步小結(jié),給大家提供參考。原創(chuàng)作品,如有錯(cuò)誤,敬請(qǐng)指出,歡迎交流。
在詳細(xì)討論軟件開發(fā)工作量估算方法前,先回答幾個(gè)問題:
1、什么是工作量估算?工作量估算和規(guī)模估算的區(qū)別?
有書上定義(Swapna Kishore, Rajesh Naik 著. 軟件需求與估算. 機(jī)械工業(yè)出版社):“工作量估算,這是對(duì)開發(fā)軟件產(chǎn)品所需的人力的估算。這是任何軟件項(xiàng)目所共有的主要成本。它和進(jìn)度估算一起決定了開發(fā)團(tuán)隊(duì)的規(guī)模和構(gòu)建。通常以人天、人月、人年的形式來衡量,并且有轉(zhuǎn)換系數(shù)在不同單位之間進(jìn)行轉(zhuǎn)換。工作量估算是由規(guī)模和與項(xiàng)目有關(guān)的因素所驅(qū)動(dòng)的,如團(tuán)隊(duì)的技術(shù)和能力、所使用的語言和平臺(tái)、平臺(tái)的可用性與適用性、團(tuán)隊(duì)的穩(wěn)定性、項(xiàng)目中的自動(dòng)化程度等等。” 當(dāng)然,這個(gè)定義可能不是最權(quán)威的定義。我理解的工作量估算,就是估算軟件項(xiàng)目所耗費(fèi)的資源數(shù),這個(gè)資源包含人力和時(shí)間,一般用人天、人月的形式來衡量。(而軟件的成本=耗費(fèi)的資源*資源的單價(jià))。
軟件規(guī)模是軟件的大小。有的書上把工作量估算等同于規(guī)模估算,認(rèn)為人天和規(guī)模估算的單位(如功能點(diǎn)、代碼行)是等效的,都是度量了軟件的大小。我認(rèn)為這個(gè)是不妥的。軟件的大小應(yīng)該是固定不變的,不會(huì)因?yàn)椴煌鹃_發(fā)大小不同,它只跟需求有關(guān);而工作量會(huì)因?yàn)殚_發(fā)公司的不同而不同。生產(chǎn)率低的公司,開發(fā)同一個(gè)軟件所需的人天數(shù)一般也會(huì)多。因此,我個(gè)人比較同意上段的定義“工作量估算是由規(guī)模和與項(xiàng)目有關(guān)的因素所驅(qū)動(dòng)的”。
有一張圖片,說明了規(guī)模估算、工作量估算、成本估算等的關(guān)系,但我現(xiàn)在暫時(shí)傳不了。(這副圖我曾經(jīng)在交流會(huì)上展示過)圖片大致是說:由軟件需求估算出軟件的規(guī)模,再考慮一些項(xiàng)目的因素,即可估算得到軟件的工作量,而軟件的成本就由軟件工作量來決定。也就是說,存在下述鏈條關(guān)系:需求——規(guī)模估算——工作量估算——成本估算。
但我覺得,其實(shí)是可以直接從軟件的規(guī)模得到軟件的成本。也就是說,存在兩個(gè)鏈條:1)需求——規(guī)模估算——工作量估算——成本估算。2)需求——規(guī)模估算——成本估算。 由兩種公式計(jì)算軟件成本:1)軟件成本=工作量(人天)*人工費(fèi)率(元/人天);2)軟件成本=規(guī)模(功能點(diǎn)、代碼行)*單位規(guī)模成本(元/功能點(diǎn)、元/代碼行) (PS:這兩個(gè)公式很像,也許正是因?yàn)檫@個(gè)想象的公式,所以有人就把工作量估算和規(guī)模估算等效了)
2、為什么要做工作量估算?
做軟件估算,最重要的是要得到軟件的成本估算,為軟件投資提供依據(jù)。上面講了規(guī)模估算、工作量估算、成本估算等的關(guān)系。也許有人會(huì)問,既然可以直接從規(guī)模得到軟件的成本,又為什么要繞個(gè)圈,做工作量估算呢。我想原因可能有:1)大部分企業(yè)/開發(fā)商沒有歷史數(shù)據(jù)的積累,單位規(guī)模成本(元/功能點(diǎn)、元/代碼行..)不確定;2)以前企業(yè)都是用工作量(人天)*人工費(fèi)率(元/人天)來估算成本的,由于歷史合作談判的積累,企業(yè)對(duì)于開發(fā)商的人天單價(jià)定價(jià)基本是確定的(或有小小的浮動(dòng)范圍),所以用工作量估算成本還是比較方便的,會(huì)省一些談判成本吧。也就是說,對(duì)現(xiàn)階段的大部分企業(yè)來說,可能用軟件成本=工作量*人工費(fèi)率這個(gè)公式估算成本還是比較好的,即便有些公司開始推行功能點(diǎn)法,但過渡時(shí)期還是要先轉(zhuǎn)換工作量再估算。除非企業(yè)愿意花談判成本去和開發(fā)商討論出一個(gè)彼此都接受的單位規(guī)模成本。
好了,下面步入