摘要:軟件成本估算是對將要開發的或正在開發的軟件項目所需要的工作量和工作進度作出預測,從而產生出一組在可接受誤差范圍內的近似規劃。該文著重論述了軟件成本估算的內容,以及軟件成本估算的方法。
關鍵詞:軟件成本估算;工作量
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)35-2194-02
Reasearch in software Cost Estimation
WU Yan-yan1, XU Fu-tian2
(1.School of Information Science Engineering, Shandong Normal University, Ji’nan 250014, China; 2.The Information Center of Shandong Local Taxation Bureau, Ji’nan 250014, China)
Abstracts: Software cost estimation is to estimate the workload and schedule of the developed or in course of development software project ,in order to produce out a group of the similar plan within may accept error range.The main idea of this paper is having discussed the content and the methods of software cost estimate.
Key words: software cost estimation; workload
1 引言
我們需要明確為什么要做軟件項目預算。首先隨著軟件技術的快速改進,軟件系統規模也不斷擴大,其復雜程度也相應地日趨加大,大量的軟件項目進度延期、預算超支和質量缺陷成為典型的軟件危機。軟件項目是不同于一般工程項目的項目類型。受用戶需求,開發方式的影響很大。沒有明確的預算,會導致軟件開支的不可控制,隨著項目的進行,開發放要承擔的風險也會增加。另外如果沒有預算,更不可能與客戶達成開發協議。沒有人會委托別人做一個自己都不知道要花多少錢才能完成的項目。
2 軟件成本估算的內容
軟件項目的生命周期包括需求分析、概要設計、詳細設計、編碼、軟件測試、軟硬件安裝調試、軟件培訓和軟件運行維護等階段。軟件項目的成本估算以整個周期的花費為依據,所以軟件項目成本估算主要包括軟件開發成本估算和軟件維護成本估算兩部分內容。
2.1 軟件開發成本
項目屬性是軟件開發成本估算中的重要信息,而且包含許多因素。主要是估算所需投入的經費開支,包括建立開發環境所需的軟件和硬件成本以及支付項目參與者的工資
1) 硬件的購置費
如服務器、PC 機、網絡交換機等。
2) 軟件的購置費
軟件購入費用即購入作為基本構造的軟件開發支援工具時的通用模塊,以及同其他軟件共享所付出的費用,均屬于軟件購入費用。如操作系統軟件、數據庫系統軟件、開發工具軟件等。
3) 人工成本
直接人工費用包括系統分析員、程序員、系統工程師等,他們承擔系統實施的具體技術工作,是軟件工作量的主要構成部分主要是項目組成員所花費的工作量及企業正常發展的必要支出。如軟件的分析/ 設計費(含系統調研、需求分析、系統設計)、實施費(含編程/測試、硬件購買與安裝、系統軟件購置、數據收集);稅務、質量成本等。
4) 專有技術購置費
5) 商務費用
這些費用包含項目的管理人員、勤務人員等費用支出,這部分費用可根據投入的人數、及人員平均工資計算,也可根據經驗系數由直接費用計算得出,另外也可包括其他應分攤在該項目上的費用如辦公費、差旅費、會議費、交通費、培訓費等。
6) 其它不可預見費用
這些費用都是在項目確定后,根據具體情況和以往經驗而確定的直接消耗在該項目上的費用,一般與軟件的開發工作量無關或關系不密切如咨詢費、工期延誤費等。
另外,從項目整體來看,好的項目預算應該包括團體預算與小組或個人預算兩部分,好的項目經理應該了解自己的團隊,對突發事件等的考慮應該放在項目預算之中,然后將項目的開支細化到小組乃至個人,這一點看似多余,但是卻很有必要。比如在實際的開發過程中,由于為了縮短工期而招收新的程序員,這就需要對新程序員進行培訓。新程序員消耗的團隊成本是要考慮在內的。這也就是傳統意義上的peron-monthes所不能完全表達的部分。
2.2 軟件維護成本
由運行費、管理服務費及維護費(糾錯性維護費和適應性維護費)構成。
軟件成本估算是對將要開發的軟件項目所需的工作量和工作進度做出預測,不是僅僅停留在資金上。在軟件開發項目中,除固定資產投資外,人的智力因素是主要部分;軟件成本在很大程度上是支付給開發人員腦力勞動的費用,而這部分成本因開發進度不同存在相當大的差別。
3 軟件成本估算常用的方法
最早的軟件成本估算可以追溯到20世紀60年代,到現在已歷經了40多年的發展,各個方面的研究都已經比較深入,產生了很多種估算方法,目前普遍應用的有以下幾種方法:
3.1 專家估算法
專家判定技術,包括從毫無輔助的直覺到有歷史數據、過程指引、清單等支持的專家判斷,是根據已有的類似項目經驗以及該領域的專家經驗知識進行估算,由多位專家進行估算后取平均值,估算的結果比較準確,目前應用得最為廣泛。常用的專家判定技術有Delphi技術和作業分解結構技術(Work Breakdown Structure,簡稱WBS)。專家估算法的優點是簡便,缺點是對專家水平太過依賴,易造成較大誤差。專家判斷是一個非常普遍的方法,其主要判斷標準是,估算工作由一個被認為是該任務專家的人來控制,并且估算過程的很大一部分是基于不清晰、不可重復的推理過程。
3.2 算法模型法
基于模型估算技術大多數是采用經驗公式來預測軟件項目計劃所需的成本、工作量和進度。直接利用經驗模型(如Putnam、COCOMO)預測工作量、進度數據和成本。但目前沒有一種估算模型能夠適用于所有的軟件類型和開發環境,這些模型對每個不同的環境都需要進行校正,而且即使校驗后,還存有大量的可變精度級別因此最好慎用此法的估算結果。
3.3 類比估算法
類比方法通過對一個或多個已完成的項目與新的類似項目的對比來預測當前項目的成本與進度。通過將項目與已完成的類似項目進行比較,找到對應處的差別,并估算各個差別造成的影響,從而導出開發項目的總成本。該方法的優點是可以提高估算的準確度,缺點是差別難以界定。
3.4 自頂向下估算法
估算人員參照經驗估算要開發的軟件的總成本,然后按步驟和工作單元將之進行分配,稱為自頂向下估算方法。它的優點是估算量小,速度快;缺點是估算成本準確性不高,易造成遺漏。
3.5 自底向上估算法
切分開發任務,估算每一個子任務所需花費,然后相加算出總數。估算結果往往偏低。
3.6 動態分析方法
不同于其它估算技術,它認為軟件項目工作量和成本因子在軟件開發過程中不是靜態的而是動態變化的,它主要應用于一些軟件工程的成本估算模型中
4 結束語
由于軟件成本估算中諸多因素相互影響,對成本作用的機理和定量關系上無法給出的問題,因此對于成本的估計準確性不定。尤其是我國軟件業仍處于發展的相對初級階段,影響因素更為復雜。另一方面,作為一個軟件項目不但要考慮其成本,還要考慮其收益,而目前關于軟件收益分析方面的研究較少。軟件成本收益(投資回報率)分析的研究已開始逐漸引起軟件研究人員和商業分析研究人員的重視,這不僅有助于進一步提高成本估算和效益分析的準確性,而且有助于進一步提高軟件項目管理的效率。因此,軟件開發成本估算與軟件收益分析技術以及軟件能力成熟度模型CMM 研究的結合成為軟件估算技術的發展方向之一。
參考文獻:
[1] Kishore S,Naik R.軟件需求與估算[M].姜路,丁一夫,柳劍,譯.北京:機械工業出版社,2004.
[2] Wittig G E,Finnie G R.Using Artificial Neural Networksand Function Point s to Estimate 4GL Software Develop2ment Effort [J].Aust ralian Journal of Information Systems,1994,1(2):87294.
[3] 石柱.軟件工程標準手冊[S].北京:中國標準出版社,2004.
[4] 張海藩.軟件工程導論[M].4版.北京:清華大學出版社,2003.
[5] Forrester J W.Indust rial Dynamics[M].Cambridge,MA:MIT Press,1961.
[6] 王強軍.基于類比方法的軟件成本估算[J].中國科技信息,2008(5).
[7] 甘早斌.軟件開發成本估算技術綜述[J].計算機工程與科學,2005(6).
[8] 周健.中小型軟件項目成本測算的實踐[J].中國冶金,2005(11).