軟件研發(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ā)活動(dòng)成本就會(huì)產(chǎn)生,而所有研發(fā)活動(dòng)都取消則成本不再發(fā)生。如研發(fā)管理人員的費(fèi)用分?jǐn)偅ㄩg接人力成本)、研發(fā)設(shè)備/場(chǎng)地的費(fèi)用分?jǐn)偅ㄩg接非人力成本)。
直接人力成本根據(jù)工作量估算結(jié)果(單位通常為人月)和平均人力成本費(fèi)率(即每人月多少錢(qián))計(jì)算;間接成本通常根據(jù)項(xiàng)目組的人數(shù)和持續(xù)時(shí)間進(jìn)行分?jǐn)偅蚨才c工作量相關(guān);直接非人力成本通常在軟件項(xiàng)目中所占比例較小,該部分與工作量無(wú)關(guān),可參照《規(guī)范》中關(guān)于直接非人力成本的細(xì)項(xiàng)劃分(包括辦公費(fèi)、差旅費(fèi)、培訓(xùn)費(fèi)、業(yè)務(wù)費(fèi)、采購(gòu)費(fèi)及其他等六項(xiàng))分項(xiàng)估算。
因此,對(duì)一個(gè)軟件項(xiàng)目進(jìn)行成本估算時(shí),我們常用的軟件研發(fā)成本估算公式為:軟件研發(fā)成本=工作量×平均人力成本費(fèi)率(含直接人力成本、間接成本)+直接非人力成本。此公式基本包含了軟件研發(fā)成本估算的內(nèi)容和過(guò)程。
]]>SNAP方法參考了IFPUG方法中對(duì)事務(wù)功能和數(shù)據(jù)功能的判定規(guī)則形式,簡(jiǎn)單易懂。
SNAP模型包括4個(gè)類和14子類。SNAP中的確定類和子類的過(guò)程相當(dāng)于功能點(diǎn)分析方法中確定系統(tǒng)邊界的過(guò)程。通過(guò)一組基準(zhǔn),根據(jù)每個(gè)子類的類型和復(fù)雜性程度的不同來(lái)度量子類的規(guī)模大小,整個(gè)非功能需求規(guī)模就是這些子類規(guī)模之和。
我們?cè)谑褂肧NAP方法進(jìn)行軟件非功能需求評(píng)估時(shí)其基本過(guò)程如下:
1、確定評(píng)估的目的、范圍、邊界和分區(qū)。
2、關(guān)聯(lián)非功能需求中的類和子類。
3、識(shí)別SNAP計(jì)數(shù)單元(SNAP Counting Units,SCU)。一個(gè)SCU就是一個(gè)組件、過(guò)程或活動(dòng)。
4、確定每個(gè)SCU的復(fù)雜性。
5、確定每個(gè)SCU中的SNAP Points(SP)。計(jì)算SNAP Points是在邊界層執(zhí)行的,SP是所有的SCU規(guī)模之和。
6、計(jì)算非功能需求規(guī)模。
SP是需要計(jì)算的最后一個(gè)非功能需求規(guī)模值。確定了所有子類后,通過(guò)結(jié)合軟件產(chǎn)品的應(yīng)用邊界,確定整個(gè)非功能需求規(guī)模。
新開(kāi)發(fā)項(xiàng)目的非功能需求規(guī)模的計(jì)算公式為
DSP=ADD
其中,ADD為所有子類的SP之和;
DSP是新開(kāi)發(fā)類型項(xiàng)目的非功能需求規(guī)模。
增強(qiáng)開(kāi)發(fā)項(xiàng)目的非功能需求規(guī)模的計(jì)算公式為
ESP=ADD+CHG+DEL
其中,ESP為增強(qiáng)開(kāi)發(fā)項(xiàng)目的非功能需求規(guī)模;
ADD為新增的功能需求規(guī)模;
CHG為變更的功能需求規(guī)模;
DEL為刪除的功能需求規(guī)模。
計(jì)算原則:
1、不能更改原項(xiàng)目已定的邊界和分區(qū)。
2、評(píng)估包括新增、修改、刪除。
答:沒(méi)有標(biāo)準(zhǔn),不同開(kāi)發(fā)語(yǔ)言差別也很大,如果是C++/Java這樣的語(yǔ)言,全生命周期算大概一人天30-50行(包括需求分析,設(shè)計(jì),編碼,測(cè)試等),如果只是說(shuō)程序員,而且只寫(xiě)不改,一天寫(xiě)幾百甚至上千行代碼也是可以的。
那軟件代碼的復(fù)用的問(wèn)題,有沒(méi)有什么處理辦法?比如在軟件造價(jià)評(píng)估中發(fā)現(xiàn)大量采用開(kāi)源代碼,或者類似利用Java的開(kāi)源代碼?
答:使用開(kāi)源代碼倒沒(méi)也什么,但是甲方要關(guān)注法律風(fēng)險(xiǎn)(很多開(kāi)源軟件并不是無(wú)條件開(kāi)源,比如有些是不可以用于商業(yè)用途的,或者用于商業(yè)用途要支付額外的費(fèi)用以獲得授權(quán)。管理嚴(yán)格的甲方會(huì)要求供應(yīng)商給出所有用到的開(kāi)源軟件或代碼的清單,同時(shí)附上相關(guān)版權(quán)聲明)。對(duì)于成本評(píng)估,復(fù)用度/吻合度的評(píng)判通常還是從業(yè)務(wù)視角看,當(dāng)然也會(huì)考慮行業(yè)慣例。例如新版本和舊版本中類似的功能,同一版本中相近的功能,無(wú)論代碼是否重用,都會(huì)調(diào)整復(fù)用度/吻合度。
另外就是評(píng)估一些常見(jiàn)系統(tǒng)、常見(jiàn)功能時(shí)(例如門(mén)戶網(wǎng)站、普通的系統(tǒng)管理功能等),會(huì)考慮行業(yè)通常情況對(duì)復(fù)用度/吻合度酌情調(diào)整。
開(kāi)源代碼的資產(chǎn)評(píng)估通常需要考慮以下幾個(gè)方面:
在評(píng)估開(kāi)源代碼的資產(chǎn)價(jià)值時(shí),需要綜合考慮以上因素,并使用一些評(píng)估方法,如成本法、市場(chǎng)法、收益法等來(lái)得出評(píng)估結(jié)果。
]]>答:定制開(kāi)發(fā)可以按國(guó)標(biāo)方法來(lái)評(píng)估費(fèi)用,成品軟件的費(fèi)用評(píng)估通常詢價(jià)等方式。
成品軟件和定制開(kāi)發(fā)的軟件在造價(jià)評(píng)估過(guò)程中存在一定差異。
對(duì)于成品軟件,其價(jià)格通常由市場(chǎng)決定,取決于軟件的市場(chǎng)地位、可替代性等。在進(jìn)行造價(jià)評(píng)估時(shí),需要對(duì)軟件的功能、性能、用戶數(shù)等方面進(jìn)行評(píng)估,并參考市場(chǎng)價(jià)格進(jìn)行定價(jià)。
對(duì)于定制開(kāi)發(fā)的軟件,需要進(jìn)行更為復(fù)雜的開(kāi)發(fā)過(guò)程,包括需求整理、產(chǎn)品設(shè)計(jì)、開(kāi)發(fā)、測(cè)試驗(yàn)收等環(huán)節(jié)。在造價(jià)評(píng)估過(guò)程中,需要考慮軟件開(kāi)發(fā)的全過(guò)程,包括人力成本、開(kāi)發(fā)周期、軟硬件投入等多個(gè)方面。此外,還需要考慮到定制開(kāi)發(fā)軟件的特殊性質(zhì),如定制化程度、技術(shù)難度等,以及客戶對(duì)軟件功能和性能的具體需求等因素。
總之,成品軟件和定制開(kāi)發(fā)的軟件在造價(jià)評(píng)估過(guò)程中存在差異,需要根據(jù)具體情況進(jìn)行評(píng)估。
問(wèn):成品軟件如果也涉及部分個(gè)性化修改的呢?
答:成品軟件的價(jià)格是市場(chǎng)行為,取決于軟件的市場(chǎng)地位,可替代性;基于成品軟件的二次開(kāi)發(fā)或者個(gè)性化定制可以采用國(guó)標(biāo)方法評(píng)估。
問(wèn):基于成品軟件的二次開(kāi)發(fā)評(píng)估,是否應(yīng)只評(píng)估二次開(kāi)發(fā)或者個(gè)性化定制的工作量,或者存在可由成品軟件廠商增值服務(wù)的可能?
答:二次開(kāi)發(fā)的工作量或費(fèi)用直接按國(guó)標(biāo)方法評(píng)估,成品軟件本身的價(jià)格通過(guò)市場(chǎng)詢價(jià)比價(jià)等方式評(píng)估。成品軟件廠商的增值服務(wù)包括二次開(kāi)發(fā),一般要單獨(dú)收費(fèi)的,不知道你指的是這部分二次開(kāi)發(fā)費(fèi)用嗎?二次開(kāi)發(fā)可以按增強(qiáng)開(kāi)發(fā)來(lái)評(píng)估,只識(shí)別發(fā)生變化的數(shù)據(jù)和事務(wù)功能。
]]>答:系統(tǒng)對(duì)接,要具體看每個(gè)系統(tǒng)都需要做哪些改造,即要對(duì)系統(tǒng)原有的數(shù)據(jù)功能和事務(wù)功能做哪些修改,或者新增什么數(shù)據(jù)/事務(wù)功能。
計(jì)數(shù)時(shí)注意:
1)本系統(tǒng)只有對(duì)外提供服務(wù)的接口才計(jì)為獨(dú)立的基本過(guò)程,本系統(tǒng)調(diào)用某個(gè)接口(包括其他系統(tǒng)的接口)往往只是基本過(guò)程的步驟;
2)本系統(tǒng)新獲取的外部系統(tǒng)的業(yè)務(wù)數(shù)據(jù)/規(guī)則,如果本系統(tǒng)僅引用不維護(hù),計(jì)EIF;如果既引用又維護(hù),計(jì)ILF。
在軟件造價(jià)評(píng)估中,系統(tǒng)對(duì)接整合工作量的拆分可以根據(jù)具體情況進(jìn)行。以下是一些可能的拆分方式:
無(wú)論采用哪種拆分方式,都需要考慮到對(duì)接整合工作量的復(fù)雜性、技術(shù)難度、工作量大小等因素,并確保拆分后的工作量能夠合理地分配給相應(yīng)的開(kāi)發(fā)人員或團(tuán)隊(duì)。同時(shí),也需要注意對(duì)接整合工作的協(xié)調(diào)和管理,確保各個(gè)部分之間的接口和數(shù)據(jù)交換能夠順利進(jìn)行。
]]>