軟件項(xiàng)目的規(guī)模估算歷來(lái)是比較復(fù)雜的事,因?yàn)檐浖旧淼膹?fù)雜性、歷史經(jīng)驗(yàn)的缺乏、估算工具缺乏以及一些人為錯(cuò)誤,導(dǎo)致軟件項(xiàng)目的規(guī)模估算往往和實(shí)際情況相差甚遠(yuǎn)。 因此,估算錯(cuò)誤已被列入軟件項(xiàng)目失敗的四大原因之一。
軟件工程師經(jīng)常會(huì)被問(wèn)到,編一個(gè)什么什么樣的軟件需要多長(zhǎng)時(shí)間、多少錢。面對(duì)這個(gè)問(wèn)題,有不少人很犯難,因?yàn)?,第一用戶的需求太不具體,第二,自己缺乏一個(gè)科學(xué)的估計(jì)方法。這里向大家介紹幾種軟件項(xiàng)目規(guī)模的估計(jì)方法。
概念介紹
先介紹一個(gè)衡量軟件項(xiàng)目規(guī)模最常用的概念--LOC(Line of Code),LOC指所有的可執(zhí)行的源代碼行數(shù),包括可交付的工作控制語(yǔ)言(JCL:Job Control Language)語(yǔ)句、數(shù)據(jù)定義、數(shù)據(jù)類型聲明、等價(jià)聲明、輸入/輸出格式聲明等。一代碼行(1LOC)的價(jià)值和人月均代碼行數(shù)可以體現(xiàn)一個(gè)軟件生產(chǎn)組織的生產(chǎn)能力。組織可以根據(jù)對(duì)歷史項(xiàng)目的審計(jì)來(lái)核算組織的單行代碼價(jià)值。
例如,某軟件公司統(tǒng)計(jì)發(fā)現(xiàn)該公司每一萬(wàn)行C語(yǔ)言源代碼形成的源文件(.c和.h文件)約為250K。某項(xiàng)目的源文件大小為3.75M,則可估計(jì)該項(xiàng)目源代碼大約為15萬(wàn)行,該項(xiàng)目累計(jì)投入工作量為240人月,每人月費(fèi)用為10000元(包括人均工資、福利、辦公費(fèi)用公灘等),則該項(xiàng)目中1LOC的價(jià)值為:
(240×10000)/150000=16元/LOC
改項(xiàng)目的人月均代碼行數(shù)為:
150000/240=625LOC/人月
方法一、Delphi 法
Delphi法是最流行的專家評(píng)估技術(shù),在沒有歷史數(shù)據(jù)的情況下,這種方式適用于評(píng)定過(guò)去與將來(lái),新技術(shù)與特定程序之間的差別,但專家"專"的程度及對(duì)項(xiàng)目的理解程度是工作中的難點(diǎn),盡管Delphi技術(shù)可以減輕這種偏差,專家評(píng)估技術(shù)在評(píng)定一個(gè)新軟件實(shí)際成本時(shí)通常用得不多,但是,這種方式對(duì)決定其它模型的輸入時(shí)特別有用。Delphi法鼓勵(lì)參加者就問(wèn)題相互討論。這個(gè)技術(shù),要求有多種軟件相關(guān)經(jīng)驗(yàn)人的參與,互相說(shuō)服對(duì)方。
Delphi法的步驟是:
1、協(xié)調(diào)人向各專家提供項(xiàng)目規(guī)格和估計(jì)表格;
2、協(xié)調(diào)人召集小組會(huì)各專家討論與規(guī)模相關(guān)的因素;
3、各專家匿名填寫迭代表格;
4、協(xié)調(diào)人整理出一個(gè)估計(jì)總結(jié),以迭代表的形式返回專家;
5、協(xié)調(diào)人召集小組會(huì),討論較大的估計(jì)差異;
6、專家復(fù)查估計(jì)總結(jié)并在迭代表上提交另一個(gè)匿名估計(jì);
7、重復(fù)4-6, 直到達(dá)到一個(gè)最低和最高估計(jì)的一致。
方法二、 類比法
類比法適合評(píng)估一些與歷史項(xiàng)目在應(yīng)用領(lǐng)域、環(huán)境和復(fù)雜度的相似的項(xiàng)目,通過(guò)新項(xiàng)目與歷史項(xiàng)目的比較得到規(guī)模估計(jì)。類比法估計(jì)結(jié)果的精確度取決于歷史項(xiàng)目數(shù)據(jù)的完整性和準(zhǔn)確度,因此,用好類比法的前提條件之一是組織建立起較好的項(xiàng)目后評(píng)價(jià)與分析機(jī)制,對(duì)歷史項(xiàng)目的數(shù)據(jù)分析是可信賴的。
其基本步驟是:
1、整理出項(xiàng)目功能列表和實(shí)現(xiàn)每個(gè)功能的代碼行;
2、標(biāo)識(shí)出每個(gè)功能列表與歷史項(xiàng)目的相同點(diǎn)和不同點(diǎn),特別要注意歷史項(xiàng)目做得不夠的地方;
3、通過(guò)步驟1和2得出各個(gè)功能的估計(jì)值;
4、產(chǎn)生規(guī)模估計(jì)。
軟件項(xiàng)目中用類比法,往往還要解決可重用代碼的估算問(wèn)題。估計(jì)可重用代碼量的最好辦法就是由程序員或系統(tǒng)分析員詳細(xì)地考查已存在的代碼,估算出新項(xiàng)目可重用的代碼中需重新設(shè)計(jì)的代碼百分比、需重新編碼或修改的代碼百分比以及需重新測(cè)試的代碼百分比。根據(jù)這三個(gè)百分比,可用下面的計(jì)算公式計(jì)算等價(jià)新代