建設工程教育網(wǎng) > 建筑文苑 > 工程管理 > 正文
2008-05-27 15:50 【大 中 小】【打印】【我要糾錯】
摘要:軟件項目的成本估算和成本控制一直是軟件項目管理研究的一大難題,本文提出在軟件項目成本估算中采用功能點(diǎn)方法,在軟件項目成本預算中實(shí)施工作結構分解和COCOMO方法結合的方法,在軟件項目結束后引入決算和審計機制,為軟件企業(yè)建立起一個(gè)基于估算、預算和決算的知識庫系統,來(lái)達到提高成本管理能力的目的。
關(guān)鍵字:軟件成本估算,功能點(diǎn),WBS,COCOMO,估算,預算,決算
引言
軟件成本超支是軟件項目中經(jīng)常遇到的問(wèn)題。很多軟件項目經(jīng)理都曾經(jīng)歷過(guò)這樣的情況,由于開(kāi)發(fā)成本的超支,軟件項目做完之后,不僅不能得到上級領(lǐng)導的表?yè)P,甚至連項目獎金都拿不到,而這一切都來(lái)源于當初對項目成本估算的不準。
隨著(zhù)軟件開(kāi)發(fā)技術(shù)的發(fā)展,軟件成本在計算機系統總成本中影響越來(lái)越大,它直接影響到投資者的決策和軟件項目的開(kāi)發(fā)。沒(méi)有合理而準確的軟件成本估算,就無(wú)法很好地進(jìn)行軟件項目的管理。
據國際數據公司的研究報告顯示,全球500 強企業(yè)中,信息技術(shù)投資超過(guò)生產(chǎn)設備投資的企業(yè)達65%.然而軟件項目的開(kāi)發(fā)情況卻不容樂(lè )觀(guān),1995 年,美國大概只有10%的軟件項目可以按時(shí)交付,而且費用也不超支,約30%的項目沒(méi)有完成就被取消了。
項目超支的原因是多方面的,其中一個(gè)主要原因是由于軟件開(kāi)發(fā)過(guò)程中,成本控制工作沒(méi)有做好,沒(méi)有對資源配置進(jìn)行優(yōu)化,因此造成了成本浪費。而更多的原因則來(lái)自對軟件項目成本的錯誤估算,用一個(gè)不可能的成本來(lái)實(shí)現一個(gè)比預算昂對得多的軟件,不管如何控制都將無(wú)法避免成本超支的噩運。
常用軟件成本估算模型介紹在軟件成本估算領(lǐng)域,有很多的估算模型,這些模型經(jīng)過(guò)了幾十年的發(fā)展,其中部分模型成為了目前軟件成本估算的常用模型,如功能點(diǎn)、DELPHI、SDC和COCOMO等。其中以功能點(diǎn)和COCOMO模型應用最廣。
功能點(diǎn)估算模型
功能點(diǎn)方法的本質(zhì)是站在客戶(hù)的角度度量系統,它認為系統的功能可以分為以下5 類(lèi):內部邏輯文件、外部接口文件、外部輸入、外部輸出和外部查詢(xún)。根據計算規則首先確定每個(gè)功能的分類(lèi)及其功能復雜度,從而可以得到每個(gè)功能的權值,全部功能的權值相加就得到“未調整的功能點(diǎn)數”。
功能點(diǎn)方法可以在早期度量軟件的規模,軟件的規模與它的工作量、進(jìn)度和成本關(guān)系緊密,早期準確的軟件規模度量有助于確定軟件價(jià)格和提高策劃過(guò)程中估算的能力。
軟件項目管理過(guò)程從項目計劃開(kāi)始,估算是項目計劃的第1個(gè)活動(dòng)。估算時(shí)需要考慮很多因素,其中最重要的就是要交付軟件的規模。在軟件開(kāi)發(fā)生命周期的早期階段,與用代碼行表示軟件規模相比,用功能點(diǎn)表示軟件規模作為估算的輸入要準確得多,Kemerer的研究顯示,采用功能點(diǎn)進(jìn)行估算的誤差是85%,而采用代碼行估算的誤差是601%.
由于軟件項目都是從需求分析開(kāi)始,需求分析的主要目的就是確定用戶(hù)的需求,也即系統要實(shí)現的功能,因此功能點(diǎn)方法能夠在需求分析階段引入,如果有比較豐富的經(jīng)驗積累,則可以進(jìn)行準確度很高的成本估算。
COCOMO模型
COCOMO(Constructive Cost Model)是Boehm利用加利福尼亞的一個(gè)咨詢(xún)公司的大量項目數據推導出的一個(gè)成本模型。該模型于1981 年首次發(fā) 項目管理者聯(lián)盟文章,深入探討。
為適應軟件工程領(lǐng)域的快速變化,COCOMO經(jīng)過(guò)多次的更新,如1987年的Ada版本,1994年發(fā)展演變?yōu)镃OCOMOII模型。
COCOMO模型按詳細程度可劃分為三級,即基本COCOMO模型,中間COCOMO模型和詳細COCOMO模型。
。1)基本COCOMO模型。它是靜態(tài)、單變量模型,不考慮任何成本驅動(dòng),僅以規模為基準進(jìn)行估算只適于粗略迅速估算。
。2)中間COCOMO模型。它是用15個(gè)成本驅動(dòng)改進(jìn)基本模型,這是對產(chǎn)品、硬件、工作人員、項目的特性等因素的主觀(guān)評估。成本驅動(dòng)的影響定為項目級的,在考慮任何進(jìn)度限制時(shí)進(jìn)一步調整工作量。
。3)詳細COCOMO模型。這是三種模型中最精確的模型。它是基于不同的成本驅動(dòng)對項目的分段有不同的影響,是用于考慮成本驅動(dòng)的階段性影響時(shí)進(jìn)一步改進(jìn)估算,這時(shí)的計算細化到子系統/模塊。它假定層次有三級:系統含有子系統,子系統含有模塊。
在COCOMO模型中,首先需要確定的是待開(kāi)發(fā)軟件的KLOC(千行代碼),因此COCOMO模型要進(jìn)行準確的成本估算需要等到詳細設計階段結束后,因為只有詳細設計完成后,才能根據詳細設計的結果對每個(gè)模塊和類(lèi)的代碼數量根據代碼功能的復雜程度進(jìn)行較準確的估算。
程序結構分解和工作結構分解
結構化分析和設計遵從自頂向下,逐層分解的設計原則。設計師在把握的大的框架之后,在此基礎上進(jìn)行逐步細化,最后才能完成一個(gè)復雜系統的設計工作。
在結構化設計方法中,先根據用戶(hù)的需求規格說(shuō)明書(shū),確定系統的邊界,繪制頂層數據流圖,然后對頂層圖中的加工進(jìn)行細化,一層一層的細化下去,一直到得到系統的所有基本功能。
面向對象的設計雖然與結構化設計有了很大的區別,但是對對象的設計過(guò)程同樣是一個(gè)細化的過(guò)程。在確定了對象后,需將其抽象成類(lèi),并要對類(lèi)的屬性,方法進(jìn)行設計,這也是一個(gè)分解的過(guò)程。
程序結構分解是軟件實(shí)現上的分解,在軟件項目中,還需要對整個(gè)軟件項目劃分若干任務(wù),并將這些任務(wù)分配給項目組中的所有成員。任務(wù)分解及分配的好壞也對項目的進(jìn)度和成本有著(zhù)很大的影響。
項目的工作結構分解即WBS是先把項目中實(shí)際需要完成的事項盡量分解成更具體的工作。具體做法是按照樹(shù)形結構先把整個(gè)項目分解為大的單元,再把各個(gè)大的單元分解為個(gè)小的單元。
需完成事項的細分之后,把各個(gè)單元中需要做的工作分配在樹(shù)形結構的最下層。各個(gè)單元中所需要做的一系列的工作被稱(chēng)為工作包。在WBS的各個(gè)工作包里配置工作人員之后,項目實(shí)行的結構圖就完成了。
工作結構分解是進(jìn)行項目成本計算的基礎,不同的工作結構分解將得到不同的項目成本,如果工作分配不恰當,如將簡(jiǎn)單任務(wù)分配給程序開(kāi)發(fā)高手,而將復雜任務(wù)分配給新手,將會(huì )造成工作效率低下,并增加項目的成本。真實(shí)的軟件項目成本不僅是軟件的復雜度,并且與本項目的管理和人員能力有著(zhù)直接的關(guān)系。
1、套用現成估算模型,誤差太大。
每個(gè)軟件企業(yè)的情況都不同,有著(zhù)不同的管理模式,不同的工作人員,不同的環(huán)境和背景,因此如果簡(jiǎn)單的進(jìn)行估算模型的套用,使用別人的計算系數的話(huà),得到的將是別人企業(yè)的成本,而不是自己的成本。這樣,當項目完成后,成本自然與估算數據相差很大。
不管是功能點(diǎn)模型還是COCOMO模型都是需要本企業(yè)的計算系數,如果提供不了正確的計算系數,則這兩個(gè)模型都無(wú)法正確使用,因此每個(gè)軟件企業(yè)都要對估算模型進(jìn)行一定的適應性調整,以適應自己企業(yè)的情況。
2、缺少成本管理體系
很多軟件企業(yè)都將成本估算用于項目投標使用,而沒(méi)有意識到需要為企業(yè)建立一個(gè)成本管理體系。如果不對軟件的成本進(jìn)行有效的管理,即使估算得很準確,最后項目結束后,成本可能大幅度的超過(guò)估算。這是因為沒(méi)有對項目的成本進(jìn)行管理,在項目建設過(guò)程中沒(méi)有合理搭配和利用資源,以至于造成了資源的浪費,這樣項目的成本自然增加,也就造成成本估算估不準了。
3、缺少成本總結和分析的方法
企業(yè)完成一個(gè)項目后,沒(méi)有對項目成本估算和成本管理方面進(jìn)行總結,這樣便無(wú)法將項目經(jīng)驗轉化成原始數據積累,不管做了多少項目,最后對成本還是測不準。沒(méi)有將項目完成后的經(jīng)驗對成本估算參數進(jìn)行校正,也此也造成企業(yè)管理水平的無(wú)法提高。
軟件項目引入估算、預算和決算的必要性
軟件估算在軟件項目前期進(jìn)行,在需求分析完成后,便能夠利用功能點(diǎn)模型進(jìn)行軟件項目成本的估算,得到項目成本估算值。對于剛剛引入該方法的企業(yè),成本估算值是不準確的,因此需要慢慢根據經(jīng)驗數據對它進(jìn)行修正。
在軟件的詳細設計完成后,便可以利用工作結構分解將對之后的所有工作進(jìn)行預算,預算的費用包括直接開(kāi)發(fā)費和間接費用,直接開(kāi)發(fā)費用為實(shí)現程序所有功能所花費的人力和物力,而間接費用包括管理費用和其他的輔助費用,間接費用可以根據本企業(yè)的特點(diǎn),在直接費用上取一定的百分比。
直接費用的計算采用COCOMO模型,由于詳細設計后已經(jīng)能夠較準確的對軟件的代碼行數進(jìn)行估計,因此,這個(gè)時(shí)候計算出來(lái)的預算成本也是比較準確的。當然,系數還是需要根據經(jīng)驗進(jìn)行修正。
在軟件項目結束后,對整個(gè)項目所花費的所有成本應當進(jìn)行決算。不要認為項目完成了,做這樣的事情就顯得多余。對項目成本進(jìn)行決算,可以將項目經(jīng)驗進(jìn)行總結,將項目的實(shí)際成本與估算和預算進(jìn)行比較,然后對比較結果進(jìn)行分析,找出誤差存在的原因,繼而對估算和預算系數進(jìn)行調整,經(jīng)過(guò)若干個(gè)項目經(jīng)驗的積累后,便能夠做到較準確的估算和預算。而成本經(jīng)驗的累積也讓企業(yè)得到了一個(gè)自己的成本知識庫。
在項目決算的過(guò)程中,可以引入審計機制,這樣不僅是準確估算軟件成本,而且可以發(fā)現軟件項目開(kāi)發(fā)過(guò)程中的各種問(wèn)題,根據審計發(fā)現的問(wèn)題繼而對企業(yè)的軟件過(guò)程進(jìn)行改進(jìn),以提高整個(gè)企業(yè)的核心競爭力。
總結
軟件項目成本估算需要豐富的經(jīng)驗累積,經(jīng)驗累積越多,則估算越準確,可以說(shuō)建立一個(gè)軟件成本估算的知識庫對于軟件企業(yè)的發(fā)展有著(zhù)重要的意義。不僅可以讓軟件企業(yè)在項目投標中準確的估計自己的項目成本,從而在投標中取得勝出。更重要的是,為企業(yè)的軟件過(guò)程改進(jìn)提供了很好的基礎資料。 1、凡本網(wǎng)注明“來(lái)源:建設工程教育網(wǎng)”的所有作品,版權均屬建設工程教育網(wǎng)所有,未經(jīng)本網(wǎng)授權不得轉載、鏈接、轉貼或以其他方式使用;已經(jīng)本網(wǎng)授權的,應在授權范圍內使用,且必須注明“來(lái)源:建設工程教育網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其法律責任。
2、本網(wǎng)部分資料為網(wǎng)上搜集轉載,均盡力標明作者和出處。對于本網(wǎng)刊載作品涉及版權等問(wèn)題的,請作者與本網(wǎng)站聯(lián)系,本網(wǎng)站核實(shí)確認后會(huì )盡快予以處理。
本網(wǎng)轉載之作品,并不意味著(zhù)認同該作品的觀(guān)點(diǎn)或真實(shí)性。如其他媒體、網(wǎng)站或個(gè)人轉載使用,請與著(zhù)作權人聯(lián)系,并自負法律責任。
3、本網(wǎng)站歡迎積極投稿。