一般說來,人們投資于一項事業的目的是為了在將來得到更大的好處。開發一個軟件系統也是一種投資,期望將來獲得更大的經濟效益,經濟效益通常表現為減少運行費用或增加收入。但是,投資開發新系統往往需要冒一定的風險。系統的開發成本可能比預計的高,效益可能比預期低。把錢存到銀行或貸給其他企業也有明顯的經濟效益(利息),而且風險很低。那么,在什么情況下投資開發新系統更劃算呢?
成本/效益分析的目的正是要從經濟角度分析開發一個特定的新系統是否劃算,從而幫助客戶組織的負責人正確低作出是否投資于這項開發工程的決定。
為了對比成本和效益,首先需要估計它們的數量
成本估計
軟件開發成本主要表現為人力消耗(乘以平均工資則得到開發費用)。成本估計不是精確的科學,因此應該使用幾種不同的估計技術以便相互校驗。
1,代碼行技術
代碼行技術是比較簡單的定量估算方法,它把開發每個軟件功能的成本和實現這個功能需要用的源代碼行數聯系起來。通常根據經驗和歷史數據估計實現一個功能需要的源程序行數。當有以往開發類似工程的歷史數據可供參考時,這個方法是非常有效的。
一旦估計出源代碼行數后,用每行代碼的平均成本乘以行數就可以確定軟件的成本。每行代碼的平均成本主要取決于軟件的復雜程度和工資水平
2,任務分解技術
這種方法首先把軟件開發工程分解為若干個相對獨立的任務。在分別估計每個單獨的開發任務的成本,最后累加起來得出軟件開發過程的總成本。估計每個任務的成本時,通常先估計完成該項目需要的人力,再乘以每人每月的平均工資而得出每個任務的成本。
最常用的辦法是按開發階段劃分任務。如果軟件系統很復雜,由若干個子系統組成,則可以把每個子系統再按開發階段進一步劃分成更小的任務。
典型環境下各個開發階段需要使用的人力的百分比大致如下表。當然,應該針對每個開發工程的具體特點,并且參照以往的經驗盡可能準確估計每個階段實際需要使用的人力(包括書寫文檔需要的人力)。
任務 | 人力(%) |
可行性研究 | 5 |
需求分析 | 10 |
設計 | 25 |
編碼和單元測試 | 20 |
綜合分析 | 40 |
總計 | 100 |
3,自動估計成本技術
采用自動估計成本技術可以減輕人的勞動,并且使得估計的結果更客觀。但是采用這種技術必須有長期搜集的大量歷史數據為基礎,并且需要有良好的數據庫系統支持。
成本/效益分析的方法
成本/效益分析的第一步是估計開發成本、運行費用和新系統將帶來的經濟效益。上面已經簡單介紹了估計開發成本的基本方法,運行費用取決于系統的操作費用<操作員人數,工作時間,消耗的物資等)和維護費用。系統的經濟效益等于因使用新系統而增加的收入加上使用新系統可以節省的運行費用。因為運行費用和經濟效益兩者在軟件的整個生命周期內都存在,總的效益和生命周期的長度有關,所以應該合理地估計軟件的壽命。雖然許多系統在開發時預期生命周期長達10年以上,但是時間越長,系統被廢棄的可能性也越大,為了保險起見,以后在進行成本/效益分析時一律假設生命周期為5年。
應該比較新系統的開發成本和經濟效益,以便從經濟角度判斷這個系統是否值得投資,但是,投資是現在進行的,效益是將來獲得的,不能簡單地比較成本和效益,應該考慮貨幣的時間價值。
1.貨幣的時間價值
通常用利率的形式表示貨幣的時間價值。假設年利率為i,如果現在存人P元,則n年后可以得到的錢數為:F=P(1+i)"
這也就是P元錢在n年后的價值。反之,如果n年后能收入F元錢,那么這些錢的現在價值是:P= F/(1 + i)"
例如,修改一個包有的庫存清單系統, 使它能在每天送給采購員一份訂貨報表。修改已有的庫存清單程序并且編寫產生報表的程序,估計共需5000元;系統修改后能及時訂貨,這將消除零件短缺問題,估計因此每年可以節省2500元,5年共可節省12500元。但是,不能簡單地把5000元和12 500元相比較,因為前者是現在投資的錢,后者是若干年以后節省的錢。
假定年利率為12%,利用上面計算貨幣現在價值的公式可以算出修改庫存清單系統后每年預計節省的錢的現在價值,如表所示。
年 | 將來值(元) | (1+i)" | 現在值(元) | 累計的現在值(元) |
1 | 2500 | 1.12 | 2232.14 | 2232.14 |
2 | 2500 | 1.25 | 1992.98 | 4225.12 |
3 | 2500 | 1.40 | 1779.45 | 6004.57 |
4 | 2500 | 1.57 | 1588.80 | 7593.37 |
5 | 2500 | 1.76 | 1418.57 | 9011.94 |
?
2.投資回收期
通常用投資回收期衡量一項開發 工程的價值。所謂投資回收期就是使累計的經濟效益等于最如投資所需要的時間。顯然投資回收期越短就能越快獲得利潤,因此這項工程也就越值得投資。
例如,修改庫存清單系統兩年以后可以節省4225.12元,比最初的投資(5000元)還少774. 88元,第三年以后將再節省1779.45元。774. 88/1 779.45=0.4,因此,投資回收期是2.44年。
投資回收期僅僅是一項經濟指標 ,為了衡量- 項開發工程的價值,還應該考慮其他經濟指標。
3.純收入
衡量工程價值的另一項經濟 指標是工程的純收人,也就是在整個生命周期之內系統的累計經濟效益(折合成現在值)與投資之差。這相當于比較投資開發一個軟件 系統和把錢存在銀行中(或貸給其他企業)這兩種方案的優劣。如果純收人為零,則工程的預期效益和在銀行存款一樣,但是開發一個系統要冒風險,因此從經濟觀點看這項工程可能是不值得投資的。如果純收人小于零,那么這項工程顯然不值得投資。
例如,上述修改庫存清單系統,工程的純收人預計是
9011. 94-5 000=4011. 94(元)
4.投資回收率
把資金存人銀行或貸給其他企業能夠獲得利息,通常用年利率衡量利息多少。類似地也可以計算投資回收率,用它衡量投資效益的大小,并且可以把它和年利率相比較,在衡量工程的經濟效益時,它是最重要的參考數據。
已知現在的投資額,并a已經估計出將來每年可以獲得的經濟效益,那么,給定軟件的使用壽命之后,怎樣計算投資回收率呢?設想把數量等于投資額的資金存人銀行,每年年底從銀行取回的錢等于系統每年預期可以獲得的效益,在時間等于系統壽命時,正好把在銀行中的存款全部取光,那么,年利率等于多少呢?這個假想的年利率就等于投資回收率。根據上述條件不難列出下面的方程式:
P=F/(1+j)+F2/(1+j)*+.+F./(1+j)”
其中,P是現在的投資額;F:是第i年年底的效益(i=1,2.,n);n是系統的使用壽命;j是投資回收率。
解出這個高階代數方程即可求出投資回收率(假設系統壽命n=5)。
例如,上述修改庫存清單系統,工程的投資回收率是41%~42%。