軟件開發價格與工作量、商務成本、國家稅收和企業利潤等項有關。為了便於計算,給出一個計算公式:
軟件開發價格 = 開發工作量 × 開發費用/人·月
1.1開發工作量 軟件開發工作量與估算工作量經驗值、風險系數和復用系數等項有關:
軟件開發工作量 = 估算工作量經驗值 × 風險系數 × 復用系數
1.1.1估算工作量經驗值(以A來表示) 軟什開發工作量的計算,曾有人提出以源代碼行或功能點來計算,這些方法實施起來均有不少難度。目前國際上仍舊按以往經驗的方式加以計算,國內各軟件企業也是采用經驗的方式加以估算工作量。 為了更好地規范估算方法,建議可按照國家標准“GB/T 8566-2001軟件生存周期過程”所規定的軟件開發過程的各項活動來計算工作量。 工作量的計算是按一個開發工作人員在一個月內(日歷中的月,即包括國家規定的節假日)能完成的工作量為單位,也就是通常所講的“人·月”。 特別要提醒的是軟件開發過程中既包括了通常所講的軟件開發,也應包括各類軟件測試的活動。
1.1.2風險系數(以σ來表示) 估算工作量經驗值亦會存在較大風險,造成軟件危機的因素很多,這也是一個方面的因素。特別當軟件企業對該信息工程項目的業務領域不熟悉或不太熟悉,而且用戶又無法或不能完整明白地表達他們的真實的需求,從而造成軟件企業需要不斷地完善需求獲取,修改設計等各項工作。因此:
l ≤ 風險系數 ≤ 1.5
根據我們對軟件企業的了解,超過估算工作量經驗值的一半,已是不可接受,所以我們確定“1.5”為極限值。當然這既要看企業的能力,也要看用戶能接受的程度。
1.1.3復用系數(以τ來表示) 估算工作量經驗值是軟件企業承擔一般項目來估算的,但如果軟件企業已經采用“基於構件的開發方法” ,並己建立起能夠復用的構件庫(核心資產庫),或者已有一些軟件產品,僅作二次開發,從而使軟件開發工作量減少。因此:
0.25 ≤ 復用系數 ≤ 1
根據國內外軟件企業在實施基於構件開發方法(軟件產品線)的經驗數據,提高工作效率達到25%(最高值)。
1.2開發費用/人·月 軟件企業的商務成本、國家稅收、企業利潤、管理成本和質量成本。均可攤分到各個軟件開發人員頭上。
開發費用/人·月 =(P+Q+R)× S× τ
1.2.1P(人頭費) 人頭費主要是員工的工資、獎金和國家規定的各項按人計算的費用。其總量在軟件企業中的商務成本占70%-80%。
P = B × 1.476
國家規定的公積金 7%,醫療保險金12%,養老金22%,失業金 2%(即通常所說的四金),另外還有按工資總額計征的工傷保證金0.5%,生育保證金0.5%,殘疾基金1.6%,工會基金2%,累計為47.6%。 B為平均工資,即企業支付給員工的工資、獎金、物質獎勵等多項總和,除以企業員工數,分攤到每個月。
1.2.2 Q(辦公費) 辦公費包括企業辦公房屋租賃費和物業管理費、通信費、辦公消耗品、水電空調費、設備折舊、差旅費,另外也包括企業對員工的在職培訓所支付的費用,其總量在軟件企業中的商務成本占20%-30%。
Q = B/3
此處辦公費用按商務成本的25%計算。
1.2.3 R(國家稅收和企業利潤) 由於國家實施發展軟件產業的優惠政策,故不單獨列出計算,但軟件企業仍需承擔繳納國家稅收的義務,可一並與企業利潤一起考慮。 另外,軟件企業的員工不可能全年滿負荷地工作,即使一年十二個月都安排工作,但也需抽出時間進行在職培訓和提職的崗前培訓。據我們的了解,軟件企業的員工一年能有10個月到 11個月的工作也是正常的。
R = B/3
此處為我們的建議方案,各軟件企業可視情況加以變更。 1.2.4 S(管理系數) 通常每個機構的管理人員都會有一定的比例,參考一些機構的做法,按每十個軟件人員配備兩個管理人員即管理成本:
1 ≤ S ≤ 1.2
1.2.4T(優質系數) 提高軟件質量,必然有所開支,即質量成本,對於不同的軟件企業來說,其質量成本不盡相同。 軟件企業與其他企業一樣,也有誠信和品牌等諸多因素,從而增加企業的開支。 目前我們可以按通過 ISO9000質量體系認證和CMM或CMMI的認證來確定,分別取值1.05、1.1、1.15、1.2。 今后建議可對軟件企業的資質分為四級。由軟件行業協會根據CMMI的認證、品牌、誠信程度等各種因素加以確定。此體系建設還有待進一步探索。 據此,我們綜合上述各點: 開發費用/人·月 =(B × 1.476 + B/3 + B/3)× l.2 × T = B ×(1.476 + 2/3)× 1.2 × T = B × 2 .575 × T = B × λ 當T=1.05時,λ=2.7 當T=1.2時,λ=3.09 因此,2.7 ≤ λ ≤ 3.09 對於承接國外軟件外包業務,一方面員工的工資較高,另外工作的安排也較難滿負荷工作,用此建議R=B/2。因此 開發費用/人·月 = B(1.476 + 1/3 + 1/2)× 1.2 × T = B × 2.767 × T = B × λ 當T=1.05時,λ=2.906 當T=1.2時,λ=3.32 因此,2.9 ≤ λ ≤ 3.32 結論: 軟件開發價格 = A × σ ×τ × B × λ A:估算工作量經驗值 B:軟件企業的平均工資/人·月 Q:風險系數l ≤ Q ≤ 1.5 T:復用系數0.25 ≤ τ ≤ 1 λ:綜合系數2.7 ≤ λ ≤ 3.09
工作量評估
工作量是指在軟件項目建設過程中需要投入的人力和時間,一般用人月數進行度量。項目的建設分為開發階段,實施階段,運行維護階段。故工作量需要分階段進行估算。
工作量=開發工作量+實施工作量+維護工作量
開發階段工作量估算:
兩種估算方式:功能點估算法和任務估算法
功能點估算法:該方法是依據軟件項目的功能需求來評估開發工作量。通過分析系統需求計算項目規模(功能點數),再乘以各階段完成每個功能點所需要投入的人工時(開發成本系數),就可以計算出完成項目所需要的人月數。適用於立項階段需求分析比較詳細的項目或者用於項目完成階段的最終工作量估算
開發工作量D(人月)=(項目功能點FP*開發成本系數 k/H/W)
其中,H是指國家規定的一天工作時數,W指一個月工作天數。
開發成本系數k主要考慮項目的非技術難度,如開發周期,協調難度,業務的復雜度,需求的不確定性。
k的取指范圍一般為:
功能點數(FP) 開發成本系數(人工時/FP)
<3000 3.5-4.0
(3000,8000) 4.0-4.5
>8000 4.5-5.0
任務估算法:任務估算法是把軟件項目功能分解為若干個相對獨立的任務,再分別估計完成每個任務需要的人員搭配比例及投入時間,每個人員的工作量之和就是該任務的工作量。最后將各個任務的工作量累加起來就得出軟件項目的總工作量。該方法適用於立項階段的工作量估算
軟件開發工作可分為:設計、編碼、測試。 設計各個崗位人員工作量可基於以下標准計算:
(1)以程序員的工作量為標准;
(2)高級程序員的工作量為標准工作量的1.5倍;
(3)系統分析員的工作量為標准工作量的2.5倍;
(4)測試工程師的工作量為標准工作量;
(5)高級測試工程師的工作量為標准工作量的1.5倍;
(6)項目管理人員的工作量為標准工作量的3倍;
(7)市場營銷人員的工作量為標准工作量;
(8)技術支持工程師的工作量為標准工作量;
(9)文秘的工作量為標准工作量的0.5倍;