殷 茗,成麗媛,鄧國林,姜繼嬌
1(西北工業(yè)大學(xué) 軟件與微電子學(xué)院,西安 710072)
2(西北工業(yè)大學(xué) 管理學(xué)院,西安 710072)
異地分布式敏捷軟件開發(fā)相對于傳統(tǒng)的軟件開發(fā)模式,更具有靈活性,能節(jié)約成本和縮短軟件項目開發(fā)周期.隨著一些企業(yè)或公司采用異地分布式敏捷軟件開發(fā),其所面臨的挑戰(zhàn)也迎面而至.成本節(jié)約與周期的縮短,需要考慮多方面的因素.實施異地分布式敏捷開發(fā)需要考慮項目的工期和效率.從項目管理的三個約束條件來說,時間是最重要的,它將決定工期、成本及質(zhì)量.因此,本文主要考慮影響時間與成本的因素,研究異地分布式敏捷軟件開發(fā)項目的時間成本估算方法.
本文的研究借鑒國外現(xiàn)有的研究成果,進行異地分布式敏捷開發(fā)工期與效率影響因素的解析.通過文獻[1]研究得到7個因素,包括遠距離溝通、實際距離、站點間的相互依存關(guān)系、文化的適應(yīng)性、體系結(jié)構(gòu)的適當性、項目創(chuàng)新和項目周轉(zhuǎn),這些因素能夠很好地反映異地分布式敏捷開發(fā)的特點,考慮這些因素,使用一些合適的方法評估軟件開發(fā),從而制定出比較好的項目計劃.本文使用COCOMOII模型進行項目的估算,按照COCOMOII模型,度量項目開發(fā)工作量和開發(fā)時間最重要的是成本驅(qū)動因子.針對異地分布式敏捷軟件開發(fā),本文參考了前人研究的成本驅(qū)動因子以及參考取值,對這些因子進行解析分析,考慮異地分布式敏捷軟件開發(fā)的實際情況,對成本因子作了部分增加、增強或取消,改進了COCOMOII模型,使其能夠合理估算異地分布式敏捷開發(fā)的成本與時間.
早期的COCOMO模型[2]由Boehm提出,主要用于軟件的成本和開發(fā)時間估算.COCOMO模型能夠很好地分析項目的可行性并有效管理軟件開發(fā)過程[3],為軟件開發(fā)提供重要的估算依據(jù),并被廣泛地接受和使用[4].然而由于軟件復(fù)雜度的提升,COCOMO模型對現(xiàn)在的軟件開發(fā)的成本和時間估算已不再適用,Boehm對原模型進行了改進,提出了COCOMOII模型[5]來估算工作量、規(guī)模、開發(fā)進度和人員安排,有利于合理地制定軟件開發(fā)計劃,對軟件開發(fā)起到至關(guān)重要的作用.
COCOMOII有粗略估算的早期設(shè)計模型、基于對象點的應(yīng)用組合模型和根據(jù)軟件體系結(jié)構(gòu)估算的后體系結(jié)構(gòu)模型[6].本文采用的是后體系結(jié)構(gòu)模型,它要求了解軟件體系結(jié)構(gòu)功能,并使用規(guī)模度量因子和成本驅(qū)動因子來進行估算,具有估算效率高、基本不受人員主觀因素影響、能夠綜合考慮成本驅(qū)動因子的特點.但是對于特定領(lǐng)域的時間和成本估算的因素考慮不足,模型計算時需要輸入規(guī)模的估算值,并且受一些成本因子的影響,導(dǎo)致估算不準.
在COCOMOII中,最重要的估算就是對工作量和開發(fā)進度的估算,其中開發(fā)進度即開發(fā)時間,工作量一般用PM表示,是指一個人在一個月內(nèi)進行軟件開發(fā)的時間數(shù),單位是人月.根據(jù)項目的不同情況,工作量可以有標稱進度NS或者調(diào)整進度AS,同時標稱進度的工作量估算不含開發(fā)進度SCED,SCED 反映了軟件面臨的進度壓力.開發(fā)時間根據(jù)工作量的大小來計算,一般單位是月.
標稱工作量的計算公式為:
式中,P MNS—人月/PM;A—常數(shù),取2.94;S ize—估算的規(guī)模/KSLOC;E Mi—工作量因子;E—規(guī)模指數(shù);B—常數(shù),取0.91;S Fj—比例因子.
對于開發(fā)成本的計算,通常是由工作量與單位勞動時間成本相乘得到.
指數(shù)E是比例因子作用的體現(xiàn),E>0,表示軟件項目在總體規(guī)模上表現(xiàn)為非經(jīng)濟性,一般是由于人員交流及大型系統(tǒng)集成的成本的影響;若E<0,表示軟件項目在總體規(guī)模上表現(xiàn)為經(jīng)濟性,這樣工作量不會因為軟件項目規(guī)模的增加而發(fā)生變化;若E=0,表示軟件項目在總體規(guī)模上表現(xiàn)為經(jīng)濟性和非經(jīng)濟性的平衡,適用于小型項目的成本估算.指數(shù)E中的每個比例因子SF從低到高都有一個權(quán)重,這5個比例因子分別是先例性(PREC)、團隊凝聚力(FLEX)、體系結(jié)構(gòu)/風(fēng)險化解(RESL)、開發(fā)靈活性(TEAM)、過程成熟度(PMAT).Boehm整理這5個比例因子并給出了其參考值.
EM是工作量因子,在COCOMOII模型中有17個成本驅(qū)動因子,用來表示對項目開發(fā)工作量的影響程度.若EM>1.0,表示該驅(qū)動因子將會產(chǎn)生較多的工作量,若EM<1.0,表示該驅(qū)動因子將會減少工作量.Boehm[3]提出的成本驅(qū)動因子包括產(chǎn)品屬性(REPL軟件可靠性、DATA 數(shù)據(jù)規(guī)模、CPLX 產(chǎn)品復(fù)雜度、RUSE 可復(fù)用開發(fā)、DOCU文檔要求),平臺屬性(TIME 執(zhí)行時間約束、STOR 主存儲約束、PVOL平臺易變性),人員屬性(ACAP 分析員能力、PCAP 程序員能力、PCON 人員連續(xù)性、APEX 應(yīng)用經(jīng)驗、PEXP平臺經(jīng)驗、LETX語言和工具經(jīng)驗),項目屬性(TOOL軟件工具的使用、SITE多點開發(fā)、SCED 要求的開發(fā)進度).Sharma[7]通過對大量的項目研究,得到了成本驅(qū)動因子取值.
標準開發(fā)進度(項目開發(fā)時間)估算公式為:
式中—標稱開發(fā)進度;C—常數(shù),一般取3.67;F—指數(shù);D—工作量因子.
在COCOMOII中針對不同的項目,有兩種方法計算軟件規(guī)模的大小,最后都換算為源代碼行來計算.這兩種方法分別是直接估算軟件的源代碼數(shù)和估算軟件未調(diào)整功能點、然后轉(zhuǎn)化為源代碼行.
基于COCOMOII模型的開發(fā)時間估算與成本估算如果有一些項目的歷史數(shù)據(jù),可以根據(jù)歷史數(shù)據(jù)來調(diào)整驅(qū)動因子的值和常數(shù)A、B、C、D的值.具體項目開發(fā)時間估算流程如下:
步驟1.首先檢查是否有歷史數(shù)據(jù),若有,根據(jù)歷史數(shù)據(jù)調(diào)整因子和指數(shù),否則采用標準值.
步驟2.輸入功能點,通過確定的未調(diào)整功能點數(shù),將其轉(zhuǎn)換為源代碼行數(shù).
步驟3.估算工作量和成本,使用COCOMOII模型的估算公式(1),計算工作量并計算成本.
步驟4.估算開發(fā)時間,使用COCOMOII模型的估算式(3),計算項目的開發(fā)時間,結(jié)束.
由于COCOMOII模型的17個驅(qū)動因子沒有綜合考慮影響異地分布式敏捷軟件開發(fā)的全部因素,本文對其做了調(diào)整,通過合理規(guī)劃成本驅(qū)動因子來完成成本和工期的估算,為異地分布式敏捷軟件開發(fā)的成本和工期做出一個度量性的探究.
為了適應(yīng)異地分布式敏捷軟件開發(fā)環(huán)境,需要適當?shù)卣{(diào)整成本估算因子.對COCOMOII模型的相關(guān)成本驅(qū)動因子的調(diào)整,可以通過項目統(tǒng)計或者專家評估,依據(jù)一定的經(jīng)驗來進行[8].調(diào)整應(yīng)遵循以下3個原則[9]:全局優(yōu)先性原則、獨立性原則、簡單性原則.根據(jù)異地分布式敏捷軟件開發(fā)的實際情況,本文對模型的成本驅(qū)動因子進行分析、篩選和新增.
本文保留比例因子,因為這5個因子是普遍軟件都適用的規(guī)模經(jīng)濟型因子.確定成本驅(qū)動因子主要是為了體現(xiàn)項目的特點及項目的組織差異性[10].因此本文對COCOMOII的改進主要是研究成本驅(qū)動因子然后進行工期估算.對成本驅(qū)動因子的改進主要體現(xiàn)在增強驅(qū)動因子的作用和新增驅(qū)動因子上.
異地分布式敏捷開發(fā)是將敏捷開發(fā)過程應(yīng)用于異地分布式開發(fā)中,加強在本地團隊中的項目管理和協(xié)調(diào),敏捷過程的原則是個體與互動高于流程與工具,可用軟件高于詳盡文檔.根據(jù)異地分布式敏捷開發(fā)的這些特征,對影響其時間與效率的因素進行解析研究,改進了COCOMOII模型,使得改進后的COCOMOII模型能夠更好的估算異地分布式敏捷項目的開發(fā)時間與成本.
1) 增強的驅(qū)動因子
根據(jù)篩選因子應(yīng)遵循的原則,確定需要增強的驅(qū)動因子如下:
數(shù)據(jù)規(guī)模(DATA),表示大量的測試數(shù)據(jù)對工作量的影響.增強原因是考慮到軟件測試時間的約束,由于開發(fā)時間短,需要測試的工作量相對較大對項目的工作量有重要影響.其取值如表1所示.
表1 DATA驅(qū)動因子取值
分析員能力(ACAP),表示設(shè)計和分析項目的水平.敏捷過程注重人的因素,設(shè)計員需要了解體系結(jié)構(gòu),創(chuàng)建容易分布在團隊的體系結(jié)構(gòu)導(dǎo)致在設(shè)計階段使用更多的時間.其取值如表2所示.
表2 ACAP驅(qū)動因子取值
人員連續(xù)性(PCON)體現(xiàn)了敏捷軟件開發(fā)的靈活性特征,表示每年項目組人員的靈活變動情況.異地分布式敏捷情境下需要多次頻繁選擇合格、可用的工程師,人員流動性大.其取值如表3所示.
表3 PCON驅(qū)動因子取值
多站點開發(fā)(SITE),由于實現(xiàn)多站點開發(fā),將會導(dǎo)致項目組成員地理位置分布問題和交流問題.增強原因是由于實際距離、遠距離溝通造成的項目成本上升.其取值如表4所示.
表4 SITE驅(qū)動因子取值
2) 保留的驅(qū)動因子
部分軟件開發(fā)項目的成本驅(qū)動因子,要根據(jù)軟件開發(fā)項目的實際情況來定,所以要保留其驅(qū)動因子,保留的驅(qū)動因子研究如下:
產(chǎn)品復(fù)雜性(CPLX),表示由于產(chǎn)品本身實現(xiàn)的復(fù)雜程度對工作量的影響.在原模型中明確說明了該因子是不受國情或者環(huán)境影響的,因此可以保留取標稱值.
軟件可靠性(REPL),表示可靠性對項目的影響,主要由程序員本身的水平?jīng)Q定,主要針對商業(yè)性質(zhì)的軟件,一般商業(yè)軟件主要面向普通用戶,可靠性要求不高,因此作保留取標稱值.
沈老七的三房太太都讓日本人給輪奸了。直到最后一個日本兵下樓來,他們才放火燒了那木質(zhì)結(jié)構(gòu)的沈家大院。這時天已經(jīng)黑定,沈家大院燃起的火光一直照著那群日本兵行至上河的蘆葦蕩里。
可復(fù)用性(RUSE),表示在現(xiàn)在或?qū)砣?gòu)造復(fù)用的組件所需要的工作量,由于分布式敏捷軟件,人員流動性大,軟件代碼庫的設(shè)立比較難,一般也只能滿足一個項目的使用,保留為標稱即可.
平臺經(jīng)驗(PEXP)、應(yīng)用經(jīng)驗(APEX)以及語言與工具(LTEX)對于開發(fā)人員來說,可能都要具備才能勝任軟件開發(fā)的工作,將其合并為經(jīng)驗因子(EXP),取3個的乘積.其取值如表5所示.
表5 EXP驅(qū)動因子的值
程序員(PCAP),表示編程水平高低直接影響項目的工作量.這個因子在COCOMOII有詳細的介紹,對于分布式敏捷軟件開發(fā)也適用,因此作保留取標稱值.
軟件工具使用(TOOL),表示在軟件開發(fā)生命周期中對管理工具的使用熟練程度.軟件管理工具的應(yīng)用熟練度差異較大,敏捷開發(fā)不需考慮軟件生命周期的全過程,因此按實際估算取標稱值即可.
平臺易變性(PVOL),表示不同的開發(fā)項目需要不同的軟硬件平臺.根據(jù)實際情況確定其具體值.
要求的開發(fā)進度(SCED),傳統(tǒng)方法對開發(fā)進度的度量一般取決于實際經(jīng)驗,較少采用軟件工具,異地分布式敏捷開發(fā)過程涉及多次快速迭代,對開發(fā)進度要求更高,因此保留作為驅(qū)動因子.
3) 取消的驅(qū)動因子
由于原模型中的部分成本驅(qū)動因子不太符合異地分布式敏捷軟件開發(fā)的情況,考慮這些成本驅(qū)動因子的作用有限,故取消一些成本驅(qū)動因子.取消的驅(qū)動因子研究如下:
匹配生命周期的文檔編制(DOCU),表示在軟件開發(fā)項目執(zhí)行過程中相關(guān)文檔齊全.由于分布式敏捷軟件開發(fā)中,團隊成員相互熟悉工作內(nèi)容,充分了解項目進度,要完成的文檔極少,故取消.
執(zhí)行時間的約束(TIME),表示軟件在系統(tǒng)上的執(zhí)行時間大小,目前由于處理器系統(tǒng)和計算機性能的提高,處理速度明顯提高,因此對執(zhí)行時間的約束可取消.
主存儲時間約束(STOR),表示使用主存空間大小對項目的影響,由于實際情況對主存空間大小的影響很小,因此主存儲時間約束可取消.
4) 考慮異地分布式敏捷開發(fā)工期與效率因素后新增的成本驅(qū)動因子
考慮影響異地分布式敏捷開發(fā)工期與效率的因素,作為新增的成本驅(qū)動因子,并根據(jù)影響的大小,使用PERT方法評估具體值.考慮的影響范圍在0到2之間,使用PERT評估出最佳值(a)、可能值(m)和悲觀值(b)進行加權(quán)求平均值來計算.PERT評估計算公式為:
團隊協(xié)作性(TC):異地分布式團隊成員之間相互協(xié)作,考慮團隊成員的實際距離和團隊之間合作的關(guān)系,主要是交流和文化適應(yīng)度影響.其取值如表6所示.
表6 TC驅(qū)動因子的值
項目周轉(zhuǎn)(PT):異地分布式敏捷軟件開發(fā)有更高的周轉(zhuǎn)迭代,相對于傳統(tǒng)集中式開發(fā),需要更多地運用知識遷移保證交流.其取值如表7所示.
表7 PT驅(qū)動因子的值
項目負責(zé)人經(jīng)驗(PME):項目負責(zé)人是否具有管理分布式敏捷軟件開發(fā)的經(jīng)驗,他/她對項目交流、協(xié)作和控制團隊活動、并制定開發(fā)計劃具有重要的影響力.其取值如表8所示.
表8 PME驅(qū)動因子值
由改進模型的驅(qū)動因子,可以確定對異地分布式敏捷軟件開發(fā)項目進行估算的有效驅(qū)動因子為10個,由于異地分布式開發(fā)中,過程成熟度很低,取值為7.8,可得到調(diào)整后的工作量估算公式為:
開發(fā)時間的計算公式如下:
改進COCOMOII模型未給出A、B、C、D具體的值,只給出了基于異地分布式敏捷軟件開發(fā)的計算公式和驅(qū)動因子的評估值.判斷模型的有效性,可根據(jù)大量的異地分布式敏捷軟件開發(fā)項目歷史數(shù)據(jù)來驗證,對該模型中相應(yīng)參數(shù)的校正也要根據(jù)具體的相關(guān)歷史數(shù)據(jù)才能完全確定.只要堅持統(tǒng)計具體歷史數(shù)據(jù),不斷的進行估算,隨著歷史數(shù)據(jù)的不斷積累,模型將越來越有效,估算也越來越準確.
根據(jù)改進COCOMOII模型的研究,設(shè)計了基于COCOMOII的項目開發(fā)時間與成本估算方法.在實際項目“藍劍計劃聯(lián)盟項目”中進行了實現(xiàn)驗證.其實現(xiàn)流程如圖1所示,估算開始,判斷是否有歷史數(shù)據(jù),若是,則根據(jù)歷史數(shù)據(jù)調(diào)整因子和指數(shù),若否,根據(jù)改進模型中增強的驅(qū)動因子、保留的驅(qū)動因子和增加的驅(qū)動因子進行參數(shù)設(shè)置,界面如圖2所示.然后進行規(guī)模估算,可以采用直接估算軟件的源代碼數(shù)或先估算軟件未調(diào)整功能點再轉(zhuǎn)換為源代碼數(shù).根據(jù)公式(6)計算工作量,根據(jù)公式(8)計算開發(fā)時間.最后顯示結(jié)果,如圖3所示.項目負責(zé)人根據(jù)項目估算結(jié)果,制定項目計劃.
圖1 改進COCOMOII模型的開發(fā)時間估算的實現(xiàn)流程
圖2 改進COCOMOII模型估算的參數(shù)設(shè)置
圖3 輸出項目的開發(fā)時間
改進模型的開發(fā)時間估算的核心代碼如圖4所示.
圖4 改進COCOMOII模型的開發(fā)時間估算的核心代碼
本文主要解析了影響異地分布式敏捷軟件開發(fā)的因素,研究了COCOMOII模型估算項目開發(fā)進度與成本估算的方法,針對傳統(tǒng)的COCOMOII模型中開發(fā)時間與成本估算沒有完全考慮異地分布式敏捷軟件開發(fā)的重要因素的問題,綜合考慮影響異地分布式開發(fā)的影響因子,根據(jù)異地分布式敏捷軟件開發(fā)的實際情況,對模型的成本驅(qū)動因子進行分析,篩選和新增,并改進COCOMOII模型,使得改進后的COCOMOII模型能夠合理地進行異地分布式敏捷軟件開發(fā)的開發(fā)時間和成本估算.
1 Carmel E.Global Software Teams:Collaborating Across Borders and Time Zones.Upper Saddle River:Prentice Hall PTR,1999:80-81.
2 Boehm BW.Software engineering economics.In:Broy M,Denert E,eds.Pioneers and Their Contributions to Software Engineering.Berlin,Heidelberg:Springer,2001.
3 Huang XS,Ho D,Ren J,et al.Improving the COCOMO model using a neuro-fuzzy approach.Applied Soft Computing,2007,7(1):29-40.[doi:10.1016/j.asoc.2005.06.007]
4 In HP,Baik J,Kim S,et al.A quality-based cost estimation model for the product line life cycle.Communications of the ACM,2006,49(12):85-88.[doi:10.1145/1183236.1183273]
5 Boehm BW,Abts C,Brown AW,et al.Software Cost Estimation with COCOMO II.Upper Saddle River:Prentice Hall PTR,2001:1-4.
6 Yoon MY.An improved calibration method for the COCOMO II post-architecture model.Journal of the Korea Industrial Information Systems Research,2000,5(2):47-55.
7 Sharma TN.Analysis of software cost estimation using COCOMO II.International Journal of Scientific &Engineering Research,2011,2(6):1-5.
8 Menzies T,Port D,Chen ZH,et al.Validation methods for calibrating software effort models.Proceedings of the 27th International Conference on Software Engineering.Saint Louis,MO,USA.2005.587-595.
9 馮靜,朱小冬,劉彥斌.應(yīng)用IFPUG功能點方法的軍用軟件規(guī)模估算.計算機工程,2006,32(10):50-52.[doi:10.3969/j.issn.1007-130X.2006.10.018]
10 Sachan RK,Nigam A,Singh A,et al.Optimizing basic COCOMO model using simplified genetic algorithm.Procedia Computer Science,2016,89:492-498.[doi:10.1016/j.procs.2016.06.107]