論文摘要:軟件開發(fā)是一個極其復(fù)雜的過程,各種不可預(yù)知的因素都會對成本產(chǎn)生影響,人為因素又在其中占有極大的比重,難免會造成不少波動.每種估算模型都有其特長與不足,勢必在某些領(lǐng)域碰到難以解釋、分析的問題成本佑算是軟件項目管理的主要內(nèi)容之一,文中分析了目前軟件項目成本估算的主要方法和存在的問題并詳細討論了中級COCOMO模型算法,根據(jù)各種算法的優(yōu)缺點設(shè)計出權(quán)重合成的軟件項目成本估算方法.本文選自《網(wǎng)絡(luò)新媒體技術(shù)》。《網(wǎng)絡(luò)新媒體技術(shù)》期刊雜志簡介:由中國科學(xué)院聲學(xué)研究所主辦的公開發(fā)行的科技刊物,創(chuàng)刊于1980年,系月刊。現(xiàn)為中國科技論文統(tǒng)計源期刊(中國科技核心期刊)、中國期刊全文數(shù)據(jù)庫收錄期刊、中國學(xué)術(shù)期刊綜合評價數(shù)據(jù)庫統(tǒng)計源期刊、中國核心期刊(遴選)數(shù)據(jù)庫收錄期刊。其辦刊宗旨是發(fā)展信息科學(xué),報道計算機應(yīng)用在知識創(chuàng)新工程中所取得的最新成果,促進計算機科學(xué)領(lǐng)域的技術(shù)交流與合作,為我國的信息化建設(shè)服務(wù)。
關(guān)鍵詞:軟件項目管理, 成本佑算 ,COCOMO模型,網(wǎng)絡(luò)新媒體技術(shù)
引言
軟件因其復(fù)雜性和難以度量,使軟件項目管理較之其他項目管理而言有其特殊性.軟件研發(fā)項目管理最早源自于20世紀年代中期.當時美國國防部曾立題專門研究軟件項目做不好的原因,發(fā)現(xiàn)的項目是因為管理不善引起的,而并不是因為技術(shù)實力不夠,進而得出一個結(jié)論,即管理是影響軟件研發(fā)項目全局的因素,而技術(shù)只影響局部.軟件項目管理是為了使軟件項目能夠按照預(yù)定的成本、進度、質(zhì)量順利完成,而對成本、人員、進度、質(zhì)量、風險等進行分析和管理的活動.據(jù)美國軟件工程實施現(xiàn)狀的調(diào)查,軟件研發(fā)的情況很難預(yù)測,大約只有10%的項目能夠在預(yù)定的費用和進度下交付.軟件成本估算技術(shù)為好的軟件管理提供了必要的基礎(chǔ).沒有合理而準確的成本估算能力,軟件項目往往會出現(xiàn)以下問題:①對軟件開發(fā)做出過分樂觀的估計,在競爭性的軟件合同投標中虛報低價,最終導(dǎo)致超出限度及性能的損害;②軟件分析員沒有可靠的數(shù)據(jù),在分析設(shè)計階段做出不合理的硬件一軟件權(quán)衡分析,使軟件的成本大大升高;③項目經(jīng)理不能合理確定各個軟件階段的時間和工作量的分配,導(dǎo)致軟件項目無法按進度進行.
1常用的軟件成本估算方法
常用的軟件成本估算方法可以分為以下幾種:
(1)算法模型.提供一個或多個數(shù)學(xué)算法,這些算法產(chǎn)生的軟件成本估算為一系列變量的函數(shù),變量稱為主要成本驅(qū)動因子.典型的有算法模線性模型、乘法模型、分析模型和COCOMO模型等.
(2)專家判斷、依靠該領(lǐng)域?qū)<业慕?jīng)驗、直覺以及對所測算軟件項目的理解給出成本測算值的測算方法、典型的專家判斷法有Delphi法、寬帶Delphi法等、Delphi法是1948年由美國Rand公司推出的一種專家意見定性預(yù)測方法,它通過給專家發(fā)判定表,無記名填表、統(tǒng)計綜合,向?qū)<曳答伣Y(jié)果并進行下一輪填表等步驟的多次反復(fù),逐步使專家的結(jié)論趨于一致而作為測算結(jié)果.Delphi法的主要優(yōu)點是能夠充分利用專家的經(jīng)驗并能處理一些特定的環(huán)境影響,不足是對專家可能具有的偏見無法處理,同時該方法非常費時.
(3)類比估算法、類比法是將新的軟件項目與已完成的相似的項目進行類比,用已完成項目的實際成本經(jīng)適當調(diào)整作為新項目的成本測算值,具體測算時可由個別專家單獨做出,也可由多位專家共同討論做出.類比法的主要優(yōu)點是充分利用了以往的經(jīng)驗,測算快速且廉價,其缺點是誤差較大,通常只能為數(shù)量級一級的測算提供初步的近似值、
(4)任務(wù)分解法.按分解先后時序可分為“自下向上”和“自上向下”兩種方法.前者把整個系統(tǒng)分成許多基本的模塊和相應(yīng)的任務(wù),分別測算其成本,然后累計得出整個系統(tǒng)的成本.后者則先從系統(tǒng)的總體特征中推算開發(fā)成本,例如在系統(tǒng)開發(fā)初期,通過初步調(diào)研和用戶需求分析,大致確定系統(tǒng)的結(jié)構(gòu),給出系統(tǒng)規(guī)模、邊界和基本功能要求,再利用經(jīng)驗或類比法測算出總成本的估計值,然后將總成本在各子系統(tǒng)或模塊中分配.“自下向上”測算可由有關(guān)的開發(fā)人員直接參加,由于他們對模塊的理解較詳細,故測算結(jié)果誤差較小,往往在10%左右、“自下向上”方法的主要缺陷是測算本身的成本較高,并且對于系統(tǒng)級(例如系統(tǒng)聯(lián)調(diào)、項目管理等)成本,往往容易忽視或不易測算準確.由于“自上向下”與“自下向上”方法的互補性,所以“自上向下”測算方法的優(yōu)、缺點與“自下向上”方法相反、
2主要算法模型和COCOMO模型
算法模型是提供了一個或多個數(shù)學(xué)函數(shù),這些算法產(chǎn)生的軟件成本估算是一系列被認為是主要成本驅(qū)動因子變量的函數(shù).用于軟件成本估算的主要算法形式有問:
2.1線形模型
線形模型具有以下形式:
工作量=ao+a,x,+’二+arrn
這里x,,"",x。是成本驅(qū)動因子變量ao",a。是一組最匹配觀察數(shù)據(jù)點集的系數(shù).
2.2乘法模型
這里。還是成本驅(qū)動因子變量;嘶.。是一組最匹配觀察數(shù)據(jù)點集的系數(shù).以上2種算法模型的主要優(yōu)點是能較好利用以前的經(jīng)驗,測算效率高,受測算人員的主觀影響比較小,便于靈敏度分析和風險分析.主要缺點是模型軟件規(guī)模的估計值以及一些成本影響因子的值判斷較難,自變量的精確性很大程度決定了測算結(jié)果的準確度.
2.3COCOMO模型
COCOMO模型是世界上應(yīng)用最廣泛的一個軟件成本測算模型,其原意是“結(jié)構(gòu)化成本模型"(Con-structiveCostModel).COCOMO模型是一個“自下而上”進行測算的杰出典范,而其基本思想是以一系列輸入量為基礎(chǔ)(如與軟件的規(guī)模相聯(lián)系或影響生產(chǎn)率的其它一些成本驅(qū)動因素),來導(dǎo)出軟件開發(fā)所需的人力費用.其子模型有3個:基本模型(theBasicModel)、中級模型(theIntermediateModel)、以及詳細模型(theDetailedModel),分別對應(yīng)著不同的精確度.
同時出于對環(huán)境因素的考慮,COCOMO模型將軟件的開發(fā)方式也劃分為有機整體型(OrganicMode),嵌入型(EmbeddedMode)和半獨立型(SemidetachedMode)3種實際應(yīng)用中,中級模型具有較好的可操作性以下詳細討論中級模型.
2.4中級模型
(1)名義費用公式.中級模型的標稱工作量公式為:
有機整體型:MM=3.2(KLOC)'0};半獨立型:MM二3.0(KLOC)'''z
嵌入型:MM二2.8(KLOC)'w
其中MM是以人月為單位的人力費用(這里一個“人月”包含巧2個工時,它是按每位軟件開發(fā)人員每天工作Sh,每月有效工作天數(shù)19d計的),KLOC是以千源程序行為單位表示的程序量.上述公式中各系數(shù)及指數(shù)值是通過對一定容量的樣本進行統(tǒng)計而確定的,所以從某種意義上說它們只是經(jīng)驗值.隨時間的變化,這些值具體的數(shù)值在今天已沒有意義.筆者之所以要介紹此模型,一方面是因為COCOMO系列模型的確是當今最流行的評估模型,更為重要的是,波姆對軟件成本驅(qū)動因素的歸類、分析對我們非常有啟發(fā)作用.
(2)成本驅(qū)動因素.中級模型采用了成本驅(qū)動因素(CostDrivers)來反映項目環(huán)境對開發(fā)費用的影響.通過對上百個影響開發(fā)費用的因素進行廣泛的統(tǒng)計分析,波姆保留了其中15個(見表1),并將其分為4類.
第1類,產(chǎn)品屬性(ProductAttributes).包括:①軟件可靠性(RequiredSoftwareReliability,簡作RELY)軟件產(chǎn)品所必須在一段時期內(nèi)滿足用戶需求的程度.②數(shù)據(jù)庫規(guī)模((DataBaseSize,簡作DATA)與程序相關(guān)的數(shù)據(jù)庫的規(guī)模大小.③軟件產(chǎn)品復(fù)雜性(So$wareProductComplexity,簡作CPLX)軟件的組合復(fù)雜性程度.
第2類,計算機屬性(ComputerAttributes).包括:①執(zhí)行時17約束(ExecutionTimeConstraint,簡作TIME)賦予軟件產(chǎn)品的執(zhí)行限制性程度.②主存儲器約束(MainStorageConstraint,簡作STOR)賦予軟件產(chǎn)品的主存限制性程度.③虛擬機易變性(VirtualMachineVolatility,簡作VIRT)在軟件開發(fā)期間,開發(fā)程序的機器所做出變動的程度.④計算機執(zhí)行時間(ComputerTurnaroundTime,簡作TURN)計算機對程序員的響應(yīng)時間評價.
第3類,人員屬性(PersonnelAttributes).包括:①分析員能力(AnalystCapacity,簡作ACAP)從事本軟件開發(fā)的系統(tǒng)分析員小組的能力評價.②應(yīng)用經(jīng)驗(ApplicationsExperience,簡作AEXP)項目組對類似項目的應(yīng)用經(jīng)驗豐富與否.③程序員的能力(ProgrammerCapability,簡作PCAP)與ACAP級別相似,這里主要指程序員們的自身能力.④虛擬機經(jīng)驗(VirtualMachineExperience,簡作VEXP)與VIRT級別相似.指編程組對宿主機經(jīng)驗豐富與否.⑤編程語言經(jīng)驗(ProgrammingLanguageExperience,簡作LEXP)開發(fā)項目的小組對特定編程語言的熟悉程度.
第4類,項目屬性(ProjectAttributes).包括:①現(xiàn)代編程實踐(UseofModernProgrammingPractices,簡作MODP)某小組所使用之現(xiàn)代編程實踐對開發(fā)費用產(chǎn)生的影響②軟件工具使用(UseofSoftwareTools,簡作TOOL)用以刻畫項目開發(fā)過程中軟件工具(從基本的到專業(yè)的)的應(yīng)用程度.③進度表約束(ScheduleCon-straint,簡作SCED)如上所述,名義開發(fā)時間是以最少人力所耗費的進度表確定,任何加快或延續(xù)均需要更多的人力.
上述的15個成本驅(qū)動因素或者也可稱為費用乘數(shù)(EffortMultiplier).對于任何一個軟件開發(fā)項目,我們都可以具體確定出這15個費用乘數(shù)的相應(yīng)取值,然后將它們連乘,就得到了一個費用調(diào)整因子(EffortAdjustmentFactor,簡作EAF)波姆由統(tǒng)計方法得出了這15個費用乘數(shù)取值的大致范圍,表1為15個成本驅(qū)動因子的取值范圍.調(diào)整因子為:
最終的標稱工作量公式可以寫為:MM二15EAF=nf二1C*(KGOC)"*EAF
3改進的軟件成本估算模型
軟件開發(fā)是一個極其復(fù)雜的過程,各種不可預(yù)知的因素都會對成本產(chǎn)生影響,人為因素又在其中占有極大的比重,難免會造成不少波動.每種估算模型都有其特長與不足,勢必在某些領(lǐng)域碰到難以解釋、分析的問題.例如,當一個軟件僅有少數(shù)幾個人在開發(fā),這時,個人的能力因素就占到了首要地位,個人的技術(shù)、工作表現(xiàn)會對整個軟件的開發(fā)產(chǎn)生極大的影響.
分析已有的各種軟件成本估算方法的優(yōu)缺點,選取COCOMO算法、Delphi法、類比估算法,將各方法結(jié)合起來,互相取長補短.把以往的軟件開發(fā)成本與用各種模型所取得的各種數(shù)值作為參考數(shù)據(jù),由層次分析法、經(jīng)驗法或?qū)<遗袛喾ǖ玫礁鞣N估算法的權(quán)重,再由權(quán)重合成法得到估算成本.以此提高軟件成本估算的精確度.
定義設(shè)MM,,MMZ,MMm為m個不同模型所得的估算值,w;(1=1,Z,w,m)為第1個模型的權(quán)重,則MM=藝w;*MM;且藝、=即為組合估算模型.
例如:COCOMO模型估算成本為MM,,用Delphi技術(shù)估算成本為MMZ,用類比估算法估算成本為MM3,則由權(quán)重組合估算可得:
MM=w,*MM,+w2*MMZ+w3*MM3
其中,、權(quán)重的選取可以根據(jù)歷史數(shù)據(jù)中各軟件成本估算方法在估算中最接近實際成本的統(tǒng)計平均值.例如選取100個已完成軟件項目,采用COCOMO算法、Delphi法、類比估算法3種不同估算方法,其中最為接近實際成本的統(tǒng)計值分別為t,,tZ,t3,則組合算法的權(quán)重為:了100/t了100/t了100.
根據(jù)不同的軟件項目可以選取不同的成本估算方法進行權(quán)重組合來進行軟件項目成本估算.
論文指導(dǎo) >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >