軟件成本估算的基本過程是什么呢?
軟件成本估算的過程可分為:估算規(guī)模、估算工作量、估算工期和估算成本這4個過程,最終確定軟件成本。其中成本估算需要對直接人力成本、間接人力成本、間接非人力成本及直接非人力成本分別進(jìn)行估算。
通常情況下,軟件規(guī)模的估算是軟件成本估算過程的起點(diǎn)。估算規(guī)模是后續(xù)計算軟件項(xiàng)目的工作量、成本和進(jìn)度的主要依據(jù),是項(xiàng)目范圍管理的關(guān)鍵,因此,在條件允許的情況下,應(yīng)該進(jìn)行軟件項(xiàng)目規(guī)模估算。
規(guī)模估算時,要根據(jù)可行性研究報告或類似文檔明確項(xiàng)目需求及系統(tǒng)邊界。選擇估算方法時,要依據(jù)項(xiàng)目特點(diǎn)和需求詳細(xì)程度來決定。
若當(dāng)前項(xiàng)目的需求不確定,可跳過這一環(huán)節(jié),進(jìn)入下個一環(huán)節(jié)。
軟件項(xiàng)目工作量估算可采用方程法、類比法和類推法。
類推法:軟件項(xiàng)目需求極其模糊或不確定時,如果有高度相似的歷史項(xiàng)目,可采用此方法,利用歷史項(xiàng)目數(shù)據(jù)來粗略估算工作量。
類比法:軟件項(xiàng)目需求極其模糊或不確定時,如果有與本項(xiàng)目部分屬性類似的一組基準(zhǔn)數(shù)據(jù),可采用類比法,利用基準(zhǔn)數(shù)據(jù)來粗略估算工作量。
方程法:已經(jīng)開展了規(guī)模估算的項(xiàng)目,可以采用方程法,通過各項(xiàng)參數(shù)來確定待估算項(xiàng)目的工作量。
項(xiàng)目工作量估算都應(yīng)該采用兩種估算方法來對估算結(jié)果進(jìn)行交叉驗(yàn)證,以追求估算的準(zhǔn)確性。工作量的估算結(jié)果是一個范圍,不是單一的值。
軟件項(xiàng)目工期的估算同樣可以采用類推法、類比法和方程法。
類比法和類推法同樣適用于需求極期模糊或不確定時的成本估算。
成本估算結(jié)果通常為一個范圍。
]]>工信部行業(yè)標(biāo)準(zhǔn)《軟件研發(fā)成本度量規(guī)范》(SJ/T11463-2013)作為主要指導(dǎo)方法進(jìn)行軟件成本評估時,經(jīng)常會用到兩個重要的因子——軟件因素調(diào)整因子及開發(fā)/測試因素調(diào)整因子。那么,什么是軟件因素調(diào)整因子?什么是開發(fā)/測試因素調(diào)整因子呢?這兩個重要參數(shù)我們?nèi)绾潍@得?
所謂軟件因素調(diào)整因子,指由于軟件自身特點(diǎn)對生產(chǎn)率產(chǎn)生的影響所需考慮的因子(例如,要解決的問題復(fù)雜或?qū)|(zhì)量要求高的軟件通常產(chǎn)生率就無法低一些),通常包括業(yè)務(wù)領(lǐng)域、應(yīng)用類型、質(zhì)量要求等。即:與甲方要開發(fā)什么軟件及軟件本身的特性和質(zhì)量要求相關(guān)。
所謂開發(fā)因素調(diào)整因子,指對同一軟件,由于采用的技術(shù)或團(tuán)隊(duì)人員差異而導(dǎo)致的生產(chǎn)率變化所需考慮的因子(例如,跟先進(jìn)的開發(fā)技術(shù)或更有經(jīng)驗(yàn)的人員通常生產(chǎn)率無法更高),通常包括采用技術(shù)、過程、團(tuán)隊(duì)經(jīng)驗(yàn)、重用程度等。即:與開發(fā)組織(團(tuán)隊(duì))的技能、經(jīng)驗(yàn)以及使用的開發(fā)工具等相關(guān)。而測試因素調(diào)整因子則是指,由于測試軟件本身的實(shí)際情況以及甲方的特殊要求而導(dǎo)致生產(chǎn)率變化所需要考慮的因子。
在估算軟件研發(fā)工作量時,最主要的兩個決定因素是:軟件規(guī)模、生產(chǎn)率。不同的項(xiàng)目,由于面臨問題、團(tuán)隊(duì)能力等方面的差異,無法導(dǎo)致產(chǎn)生率有較大差異。需要根據(jù)軟件情況、開發(fā)情況對生產(chǎn)率進(jìn)行調(diào)整。
在估算軟件測試工作量時,軟件本身的復(fù)雜度與完整性是較為關(guān)鍵的因素,可依據(jù)軟件的實(shí)際情況進(jìn)行調(diào)整。其他如回歸測試、加急測試和現(xiàn)場測試等也無法對軟件測試的工作量產(chǎn)生影響。
具體調(diào)整因子的選擇和取值,可通過歷史數(shù)據(jù)進(jìn)行統(tǒng)計分析獲得,也可根據(jù)經(jīng)驗(yàn)確定。
]]>采用優(yōu)化后的功能點(diǎn)方法——快速功能點(diǎn)方法進(jìn)行規(guī)模估算或測量的基本過程或步驟如下:
確定計數(shù)類型→識別系統(tǒng)邊界→識別功能點(diǎn)計數(shù)項(xiàng)→計算未調(diào)整的功能點(diǎn)數(shù)→計算調(diào)整后的功能點(diǎn)數(shù)。
1、確定計數(shù)類型
根據(jù)需求或項(xiàng)目的類型確定計數(shù)類型。計數(shù)類型分為三種:新開發(fā)、延續(xù)開發(fā)及已有系統(tǒng)計數(shù)。
對于新開發(fā)需求或項(xiàng)目,對預(yù)計(或?qū)嶋H)投產(chǎn)的功能進(jìn)行計數(shù);
對于延續(xù)開發(fā)需求或項(xiàng)目,對預(yù)計(或?qū)嶋H)新增、修改及刪除的功能均進(jìn)行計數(shù);
對于已有系統(tǒng),對實(shí)際的功能進(jìn)行計數(shù)。
2、識別系統(tǒng)邊界
在識別系統(tǒng)邊界的時候應(yīng)注意:應(yīng)從用戶視角出發(fā),不受系統(tǒng)實(shí)現(xiàn)影響;主要是為了區(qū)分內(nèi)部邏輯文件(ILF)和外部接口文件(EIF);事務(wù)功能應(yīng)穿越識別的系統(tǒng)邊界。
3、識別功能點(diǎn)計數(shù)項(xiàng)
功能點(diǎn)計數(shù)項(xiàng)分為數(shù)據(jù)功能和交易功能兩類。數(shù)據(jù)功能包括內(nèi)部邏輯文件(ILF)、外部接口文件(EIF);交易功能包括外部輸入(EI)、外部輸出(EO)、外部查詢(EQ)。
數(shù)據(jù)功能是系統(tǒng)提供給用戶的滿足產(chǎn)品內(nèi)部和外部數(shù)據(jù)需求的功能,即本系統(tǒng)管理或使用那些業(yè)務(wù)數(shù)據(jù)(業(yè)務(wù)對象),如“客戶信息”“賬戶交易記錄”等。
內(nèi)部邏輯文件或外部接口文件所指的“文件”不是傳統(tǒng)數(shù)據(jù)處理意義上的文件,而是指一組客戶可識別的、邏輯上相互關(guān)聯(lián)的數(shù)據(jù)或者控制信息。因此,這些文件和物理上的數(shù)據(jù)集合(如數(shù)據(jù)庫表)沒有必然的對應(yīng)關(guān)系。
交易功能是系統(tǒng)提供給用戶的處理數(shù)據(jù)的功能,即本系統(tǒng)如何處理和使用那些業(yè)務(wù)數(shù)據(jù)(業(yè)務(wù)對象),如“轉(zhuǎn)賬”“修改黑名單生成規(guī)則”“查詢交易記錄”等。
交易功能又稱為基本過程,是用戶可識別的,業(yè)務(wù)上的一組原子操作,可能由多個處理邏輯構(gòu)成。例如,“添加柜員信息”這個基本過程可能包含“信息校驗(yàn)”“修改確認(rèn)”“修改結(jié)果反饋”等一系列處理邏輯。
4、計算未調(diào)整的功能點(diǎn)數(shù)
a、采用預(yù)估功能點(diǎn)進(jìn)行計數(shù),計算公式如下:
FP=35*ILF+15*EIF
——FP:未調(diào)整的功能點(diǎn)數(shù),單位為功能點(diǎn);
——ILF:內(nèi)部邏輯文件的數(shù)量;
——EIF:外部接口文件的數(shù)量。
b、采用估算功能點(diǎn)進(jìn)行計數(shù),計算公式如下:
FP=10*ILF+7*EIF+4*EI+5*EO+4*EQ
——FP:未調(diào)整的功能點(diǎn)數(shù),單位為功能點(diǎn);
——ILF:內(nèi)部邏輯文件的數(shù)量;
——EIF:外部接口文件的數(shù)量;
——EI:外部輸入的數(shù)量;
——EO:外部輸出的數(shù)量;
——EQ:外部查詢的數(shù)量。
5、計算調(diào)整后的功能點(diǎn)數(shù)
根據(jù)不同的規(guī)模測算階段,需要考慮隱含需求及需求變更對規(guī)模的影響,因此,需要根據(jù)規(guī)模計數(shù)時機(jī)進(jìn)行規(guī)模調(diào)整。調(diào)整后的功能點(diǎn)數(shù)(AFP),計算公式如下:
AFP=FP*CF
——AFP:調(diào)整后的功能點(diǎn)數(shù),單位為功能點(diǎn);
——FP:未調(diào)整的功能點(diǎn)數(shù),單位為功能點(diǎn);
——CF:規(guī)模變更調(diào)整因子,依據(jù)行業(yè)數(shù)據(jù),項(xiàng)目估算早期(如概預(yù)算階段)通常取值為1.5;項(xiàng)目估算中期(如招投評標(biāo)、項(xiàng)目立項(xiàng)、技術(shù)方案階段)通常取值為1.26;項(xiàng)目估算中后期(如需求分析完成及后評價)通常取值為1.0。
了解快速功能點(diǎn)方法度量的規(guī)則及過程,有助于提高使用快速功能點(diǎn)方法進(jìn)行軟件造價、軟件成本估算、軟件成本費(fèi)用測算時的工作效率。
]]>軟件研發(fā)成本包含直接成本和間接成本。依據(jù)軟件行業(yè)特點(diǎn),直接成本又分為直接人力成本和直接非人力成本,而間接成本分為間接人力成本和間接非人力成本。
所謂直接成本是指:項(xiàng)目存在則導(dǎo)致成本發(fā)生,項(xiàng)目取消則成本不再發(fā)生的成本。如項(xiàng)目成員的人力資源費(fèi)用(直接人力成本)、由于本項(xiàng)目需要所產(chǎn)生的差旅(直接非人力成本)、培訓(xùn)(直接非人力成本)等費(fèi)用。
而間接成本為:服務(wù)于本組織所有研發(fā)項(xiàng)目的聯(lián)合成本,即只要有研發(fā)活動成本就會產(chǎn)生,而所有研發(fā)活動都取消則成本不再發(fā)生。如研發(fā)管理人員的費(fèi)用分?jǐn)偅ㄩg接人力成本)、研發(fā)設(shè)備/場地的費(fèi)用分?jǐn)偅ㄩg接非人力成本)。
直接人力成本根據(jù)工作量估算結(jié)果(單位通常為人月)和平均人力成本費(fèi)率(即每人月多少錢)計算;間接成本通常根據(jù)項(xiàng)目組的人數(shù)和持續(xù)時間進(jìn)行分?jǐn)偅蚨才c工作量相關(guān);直接非人力成本通常在軟件項(xiàng)目中所占比例較小,該部分與工作量無關(guān),可參照《規(guī)范》中關(guān)于直接非人力成本的細(xì)項(xiàng)劃分(包括辦公費(fèi)、差旅費(fèi)、培訓(xùn)費(fèi)、業(yè)務(wù)費(fèi)、采購費(fèi)及其他等六項(xiàng))分項(xiàng)估算。
因此,對一個軟件項(xiàng)目進(jìn)行成本估算時,我們常用的軟件研發(fā)成本估算公式為:軟件研發(fā)成本=工作量×平均人力成本費(fèi)率(含直接人力成本、間接成本)+直接非人力成本。此公式基本包含了軟件研發(fā)成本估算的內(nèi)容和過程。
]]>答:這些表看上去很多都是從開發(fā)角度來計數(shù)ILF,很多表用戶不可識別,也無法維護(hù),不應(yīng)計ILF。ILF要從用戶視角來計數(shù),它是用戶的業(yè)務(wù)數(shù)據(jù)或規(guī)則,并且用戶可維護(hù)。計數(shù)ILF時,應(yīng)該要有相應(yīng)事務(wù)功能來維護(hù),如果沒有相應(yīng)的維護(hù)操作,不要計ILF。
在軟件造價評估中,消息提醒類的配置信息表通常不被識別為邏輯文件。這是因?yàn)檫壿嬑募ǔV傅氖前绦蜻壿嫷奈募?,如源代碼文件、腳本文件等,而消息提醒類的配置信息表主要包含的是一些配置信息,如時間、頻率、內(nèi)容等,并不包含程序邏輯。
此外,消息提醒類的配置信息表通常是一個獨(dú)立的文件或數(shù)據(jù)表,用于存儲和管理消息提醒的相關(guān)配置信息,而不是與程序邏輯緊密相關(guān)的文件。因此,在軟件造價評估中,消息提醒類的配置信息表通常不被視為邏輯文件。
]]>答:數(shù)據(jù)遷移、清洗都不能用功能點(diǎn)方法,如果沒有定制規(guī)則的話,只能基于經(jīng)驗(yàn)單獨(dú)估算。
在軟件造價評估中,數(shù)據(jù)遷移和清洗等工作通常無法使用功能點(diǎn)方法進(jìn)行估算。因?yàn)檫@些工作涉及到大量的手動操作和專業(yè)知識,而且具體的耗時和難度也與數(shù)據(jù)量、數(shù)據(jù)復(fù)雜度、數(shù)據(jù)處理難度等因素有關(guān)。
對于這種情況,可以考慮以下幾種方法進(jìn)行計價:
需要注意的是,無論采用哪種方法進(jìn)行計價,都需要考慮到數(shù)據(jù)遷移和清洗的具體情況,如數(shù)據(jù)量的大小、數(shù)據(jù)復(fù)雜度、數(shù)據(jù)處理難度等因素,以及公司的成本和利潤預(yù)期。同時,也需要與客戶進(jìn)行充分的溝通和協(xié)商,確保雙方對計價方式和價格達(dá)成一致。
問:您說的這個定制規(guī)則,是指什么規(guī)則呢?基于經(jīng)驗(yàn)的估算,那應(yīng)該就還是市場行為,只能依據(jù)市場定價?
答:就是基于歷史數(shù)據(jù),結(jié)合功能點(diǎn)方法所做的一些映射規(guī)則,比如在數(shù)據(jù)遷移的時候,將每個要遷移的表對應(yīng)到EI之類的。如果是經(jīng)驗(yàn)法,肯定要依據(jù)市場定價。
]]>如果沒有明示的要求,不用提煉,直接按照“沒有明示的完整性級別要求”取值即可(調(diào)整因子為1)。
軟件造價評估過程中的軟件完整性級別,可以理解為軟件系統(tǒng)的安全、穩(wěn)定、可靠性以及其技術(shù)復(fù)雜程度、開發(fā)難度等綜合性質(zhì)。在軟件造價評估過程中,需要考慮軟件系統(tǒng)的多個方面,如功能特性、性能特性、安全性、可維護(hù)性等。其中,軟件完整性級別是一個關(guān)鍵指標(biāo),可以幫助評估人員對軟件系統(tǒng)進(jìn)行全面、客觀的評估。
軟件完整性級別的定義可以參考以下步驟:
答:指評估師和需求提供方的溝通,以確認(rèn)評估師對需求的理解有沒有問題,還有就是確認(rèn)需求有沒有遺漏。
問:現(xiàn)在很多項(xiàng)目都牽扯各部門或者市級別、省部級數(shù)據(jù)傳輸,具體就是接口費(fèi)用。接口費(fèi)用這一塊如何評估呢?
答:正常數(shù)功能點(diǎn)就可以。如果是本系統(tǒng)對其他系統(tǒng)提供外部接口,識別事務(wù)功能;如果是本系統(tǒng)引用其他系統(tǒng)數(shù)據(jù),識別數(shù)據(jù)功能(EIF)。
]]>根據(jù)難度以及對成本分析的深入程度,軟件開發(fā)成本分析可以分為:
a)成本估算偏差:分析估計成本與實(shí)際成本的偏差及原因。
b)成本構(gòu)成:分析開發(fā)成本的構(gòu)成情況,可以參考以下方式對成本進(jìn)行分類:
——如分為直接成本和間接成本,其中直接及間接成本中再分為人力成本和非人力成本;
——根據(jù)生命周期分為需求、設(shè)計、編碼、測試、交付等階段成本;
——根據(jù)工作類型劃分為開發(fā)成本、項(xiàng)目管理成本、質(zhì)量保證成本等。
通過以上分類的統(tǒng)計并結(jié)合“成本估算偏差”的信息了解成本估算產(chǎn)生偏差的主要原因。
c)成本關(guān)鍵影響因素相關(guān)性分析:軟件開發(fā)過程中多種因素對成本產(chǎn)生不同的影響,這些因素對在各組織中的影響程度不盡相同,因此通過分析開發(fā)過程中各因素與成本間的關(guān)系可以讓管理者了解本組織成本控制的重點(diǎn)。
相關(guān)性分析通常使用的方法包括散點(diǎn)圖以及Pearson相關(guān)分析。
d)成本估算方程回歸分析:軟件開發(fā)活動的管理者除了希望了解成本關(guān)鍵影響因素的影響程度以外,還希望獲得成本與關(guān)鍵影響因素的量化關(guān)系,即關(guān)于成本與關(guān)鍵影響因素的估算方程。
項(xiàng)目結(jié)束后,成本及相關(guān)的數(shù)據(jù)對于組織而言具有很大的價值,應(yīng)該收集并進(jìn)行分析。分析的目的和角度包括:
a)項(xiàng)目評價:根據(jù)成本估算偏差及構(gòu)成評估項(xiàng)目組預(yù)算控制的能力以及流程執(zhí)行的效率。
b)建立或校正成本估算模型:如上文提到的成本估算方程回歸分析,項(xiàng)目結(jié)束后產(chǎn)生了新的成本及相關(guān)數(shù)據(jù),這些數(shù)據(jù)可以用于評價回歸方程的效果,并可以幫助不斷優(yōu)化回歸方程。
c)過程改進(jìn):通過分析成本分布占比和各類活動成本估算偏差率等數(shù)據(jù)了解開發(fā)過程的問題,將這些數(shù)據(jù)與經(jīng)驗(yàn)以及對組織的了解相結(jié)合,可以為管理者提供過程改進(jìn)的信息。
項(xiàng)目規(guī)模、工作量、工期、成本等估算及實(shí)際數(shù)據(jù)還應(yīng)該保存在組織內(nèi)部建立的基準(zhǔn)數(shù)據(jù)庫中,以供未來項(xiàng)目組以及組織使用,使用的實(shí)際包括:
a)提供同類項(xiàng)目估算時參考;
b)建立、評價及優(yōu)化成本估算模型;
c)對質(zhì)量問題進(jìn)行相關(guān)性分析;
d)計算單位規(guī)?;鶞?zhǔn)成本;
e)分析組織各活動成本占比等。
組織還可以將項(xiàng)目組的數(shù)據(jù)提交到行業(yè)基準(zhǔn)數(shù)據(jù)庫中,為行業(yè)基準(zhǔn)數(shù)據(jù)的不斷更新提供支持。
]]>1、在預(yù)算及招投標(biāo)中,軟件成本評估有助于制定合理的項(xiàng)目預(yù)算,規(guī)范招投標(biāo)行為。
一方面,甲方如果缺乏科學(xué)有效的方法,將無法準(zhǔn)確的估算項(xiàng)目成本和合理的投標(biāo)價格范圍。另一方面,部分參與競標(biāo)的乙方為了獲得項(xiàng)目,會惡意低價競標(biāo),這種不當(dāng)競爭會導(dǎo)致甲方無法在約定期限內(nèi)得到合格的產(chǎn)品與服務(wù),同時也會對優(yōu)秀軟件企業(yè)的利益造成損害。
在預(yù)算時,開展科學(xué)的軟件成本評估可以獲得更準(zhǔn)確的項(xiàng)目預(yù)算,從而減少資源浪費(fèi)或因費(fèi)用不足導(dǎo)致的項(xiàng)目失敗;在招投標(biāo)階段,則可以通過確定合理的成本范圍,幫助甲方選擇可靠的乙方,也有利于乙方根據(jù)自身能力競標(biāo),從而有效地規(guī)避項(xiàng)目風(fēng)險,促進(jìn)軟件產(chǎn)業(yè)健康發(fā)展。
2、在項(xiàng)目實(shí)施中,軟件成本評估有助于合理調(diào)配資源,有效控制項(xiàng)目范圍和質(zhì)量,是軟件項(xiàng)目成功的重要保障。
在項(xiàng)目實(shí)施中,因成本估算不準(zhǔn)確而造成的項(xiàng)目計劃不合理,可能導(dǎo)致項(xiàng)目資源投入不足,進(jìn)而影響項(xiàng)目進(jìn)度和造成質(zhì)量風(fēng)險,或因資源投入過多而造成浪費(fèi)。此外,項(xiàng)目需求模糊導(dǎo)致開發(fā)過程中產(chǎn)生大量的需求變更,而甲方往往不會支付因需求變更而產(chǎn)生的額外費(fèi)用,最終影響乙方的利潤及項(xiàng)目交付質(zhì)量。
采用科學(xué)的成本評估方法進(jìn)行規(guī)模、工作量、工期和成本估算,一方面為合理的資源分配及工期安排提供有效保障。另一方面,基于功能規(guī)模的估算過程會促使甲方盡早明確關(guān)鍵業(yè)務(wù)需求,減少需求變更對項(xiàng)目進(jìn)度及成本的影響;對于必要的需求變更,也可對其成本進(jìn)行有效的評估,為甲、乙雙方商務(wù)談判提供量化依據(jù),保證軟件企業(yè)合理的利潤。
3、在項(xiàng)目決算及后評價階段,軟件成本評估有助于項(xiàng)目交付、總結(jié)和評價,促進(jìn)軟件企業(yè)和行業(yè)健康發(fā)展。
項(xiàng)目決算時,甲、乙雙方經(jīng)常就項(xiàng)目的實(shí)際投入存在較大爭議,從而影響項(xiàng)目的最終交付,也難以對項(xiàng)目的績效進(jìn)行科學(xué)評價。
通過科學(xué)的軟件成本評估,首先,能夠了解項(xiàng)目的實(shí)際成本,為決算工作提供合理的依據(jù)。其次,通過對項(xiàng)目決算與預(yù)算的對比,考核投資控制的工作成效,總結(jié)經(jīng)驗(yàn)教訓(xùn),可以提高未來建設(shè)工程的效益。最后,可以利用眾多軟件企業(yè)的評估數(shù)據(jù),建立基準(zhǔn)數(shù)據(jù)庫,定量分析軟件企業(yè)或行業(yè)的當(dāng)前能力、問題及發(fā)展趨勢,為軟件企業(yè)的發(fā)展提供指導(dǎo),相關(guān)主管部門也可依此制定合理的政策引導(dǎo)軟件行業(yè)健康發(fā)展。
]]>