利用簡(jiǎn)單的一元線性回歸分析估計(jì)軟件項(xiàng)目開(kāi)發(fā)時(shí)間_第1頁(yè)
利用簡(jiǎn)單的一元線性回歸分析估計(jì)軟件項(xiàng)目開(kāi)發(fā)時(shí)間_第2頁(yè)
利用簡(jiǎn)單的一元線性回歸分析估計(jì)軟件項(xiàng)目開(kāi)發(fā)時(shí)間_第3頁(yè)
利用簡(jiǎn)單的一元線性回歸分析估計(jì)軟件項(xiàng)目開(kāi)發(fā)時(shí)間_第4頁(yè)
利用簡(jiǎn)單的一元線性回歸分析估計(jì)軟件項(xiàng)目開(kāi)發(fā)時(shí)間_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、利用簡(jiǎn)單的一元線性回歸分析估計(jì)軟件項(xiàng)目開(kāi)發(fā)時(shí)間2010-07-22 18:46 by EricZhang(T2噬菌體), 2522 visits, 網(wǎng)摘, 收藏, 編輯 引言 前兩天一個(gè)朋友給我打電話(huà),問(wèn)我如何估計(jì)項(xiàng)目開(kāi)發(fā)時(shí)間。對(duì)此我很詫異,問(wèn)他以前他們是怎么估計(jì)的,他說(shuō)以前基本都是大家開(kāi)個(gè)會(huì),大約都說(shuō)說(shuō)自己意見(jiàn),最后負(fù)責(zé)人一拍腦袋,給出一個(gè)時(shí)間。不過(guò)這次遇到一個(gè)非常認(rèn)真的客戶(hù),要求不但要估計(jì)出項(xiàng)目開(kāi)發(fā)時(shí)間,還要明確說(shuō)明具體的依據(jù)和估算方法,這下我這朋友有點(diǎn)犯難,才詢(xún)問(wèn)我。后來(lái)我翻閱了一些數(shù)理統(tǒng)計(jì)和項(xiàng)目估算方面的資料,告訴了他利用一元線性回歸分析估計(jì)軟件項(xiàng)目開(kāi)發(fā)時(shí)間的方法。想到這種估算需要在一

2、些開(kāi)發(fā)團(tuán)隊(duì)很常見(jiàn),所以在這里整理成文。問(wèn)題的定義及數(shù)學(xué)模型 這里我們僅考慮比較簡(jiǎn)單的一元回歸問(wèn)題,即通過(guò)單一的Proxy預(yù)測(cè)項(xiàng)目開(kāi)發(fā)時(shí)間。這里先說(shuō)一下什么叫Proxy。Proxy叫做代理變量,簡(jiǎn)單來(lái)說(shuō)就是估計(jì)項(xiàng)目開(kāi)發(fā)時(shí)間的數(shù)理依據(jù)。說(shuō)白了,就是我們預(yù)測(cè)開(kāi)發(fā)時(shí)間,總要有個(gè)根據(jù),例如需求中用例個(gè)數(shù)、概要設(shè)計(jì)中的實(shí)體個(gè)數(shù)、數(shù)據(jù)庫(kù)中的表的數(shù)量等等。設(shè)Proxy為x,項(xiàng)目開(kāi)發(fā)時(shí)間為y,那么可以得到y(tǒng)=f(x),學(xué)過(guò)初等數(shù)學(xué)的都可以看懂,就是說(shuō)開(kāi)發(fā)時(shí)間是Proxy的一個(gè)函數(shù),如果我們既知道了新項(xiàng)目的x,又知道函數(shù)f,那么y就出來(lái)了??上煜履挠羞@么好的事,我們現(xiàn)在既不知道f,又不知道x,別說(shuō)x的值了,甚至

3、我們都不知道該用哪個(gè)Proxy做x。 不過(guò)也不必悲觀,經(jīng)過(guò)上面分析,我們至少明確了我們奮斗的方向: 1、找出候選的Proxy。 2、選擇最合適的Proxy作為x。 3、得到x的值。 4、確定函數(shù)f。 5、得出y。 下面我們一步一步解決各個(gè)問(wèn)題。找出候選的Proxy 雖然一個(gè)項(xiàng)目的特征量很多,不過(guò)可不是隨便一個(gè)特征量都可以當(dāng)做Proxy的。要成為Proxy,至少要滿(mǎn)足如下四個(gè)條件。 1)Proxy的值應(yīng)該和工作量緊密相關(guān)。 這個(gè)不用多解釋了吧,就是說(shuō)Proxy的值和y的值要有相關(guān)性。關(guān)于“相關(guān)性”的概念這里先定性說(shuō)一下,定量分析后續(xù)會(huì)講到。 2)Proxy應(yīng)該是能明確得出值的,沒(méi)有二義性。 這是

4、說(shuō)Proxy應(yīng)該對(duì)應(yīng)一個(gè)明確數(shù)值,是一就是一,是二就是二,不能取“不錯(cuò)”、“挺多”這種值。 3)Proxy應(yīng)該在項(xiàng)目開(kāi)始階段可以得出或能較精確估計(jì)出。 這個(gè)開(kāi)始階段最晚不能晚于概要設(shè)計(jì),因?yàn)楣浪愣际且婚_(kāi)始進(jìn)行,所以Proxy一定要在起始階段就能得出,否則項(xiàng)目結(jié)束了誰(shuí)還搞估算,實(shí)際值都出來(lái)了。 4)Proxy對(duì)于不同的實(shí)施方案是敏感的。 就是說(shuō)當(dāng)開(kāi)發(fā)方法、開(kāi)發(fā)過(guò)程等因素變化時(shí),Proxy應(yīng)該具有一定的敏感性。 經(jīng)過(guò)上述分析,我想選用什么作為Proxy大家心里都有點(diǎn)譜了。一般來(lái)說(shuō),在估算時(shí)常被作為Proxy的有需求分析中用例數(shù)量、需求分析中功能模塊數(shù)量、概要設(shè)計(jì)中實(shí)體數(shù)量和數(shù)據(jù)庫(kù)設(shè)計(jì)中表的數(shù)量。當(dāng)

5、然,各位也可以根據(jù)上述要求選擇自己的Proxy。在本文中,我們暫且選擇用例數(shù)量、實(shí)體數(shù)量和表數(shù)量三個(gè)Proxy作為候選。選擇最合適的Proxy作為x 這里所謂的“最合適”,在數(shù)學(xué)上的意義就是和開(kāi)發(fā)時(shí)間y的相關(guān)性最強(qiáng)。那么什么是相關(guān)性呢,從直觀意義上,兩個(gè)變量的相關(guān)性是指兩個(gè)變量關(guān)聯(lián)的緊密程度,數(shù)學(xué)上可以用相關(guān)系數(shù)表示。相關(guān)系數(shù)計(jì)算公式如下: 至于這個(gè)公式為什么能反映出兩個(gè)變量的相關(guān)性,可以去參考高等數(shù)理統(tǒng)計(jì)相關(guān)資料,本文不再贅述,只是順便說(shuō)一下,r的范圍在-11之間,絕對(duì)值越大代表相關(guān)性越強(qiáng),如果為正值則表示兩個(gè)變量正相關(guān),否則為負(fù)相關(guān)。知道了這個(gè),我們這一步驟的目的就是找出候選Proxy中與

6、y相關(guān)系數(shù)最大的作為x。 不過(guò),這數(shù)據(jù)從哪里來(lái)呢?這就要從以前做過(guò)的項(xiàng)目中提取了。查閱朋友所在團(tuán)隊(duì)最近做過(guò)的5個(gè)項(xiàng)目的數(shù)據(jù)資料(這里當(dāng)然歷史項(xiàng)目越多越好,不過(guò)筆者這個(gè)朋友的團(tuán)隊(duì)只有5個(gè)項(xiàng)目的記錄),得到如下數(shù)據(jù): 項(xiàng)目工期(y): 424 267 90 331 160 (人時(shí)) 用例數(shù)量(x1): 37 20 6 18 12 實(shí)體數(shù)量(x2):15 9 411 14 數(shù)據(jù)表數(shù)量(x3):2518 716 18 下面就是計(jì)算各個(gè)相關(guān)系數(shù)了,計(jì)算相關(guān)系數(shù)是一項(xiàng)機(jī)械且乏味的活動(dòng),一般都會(huì)交由相應(yīng)的工具去完成。不過(guò)您要是感興趣,也可以自己代入上述公式手算。下圖是我用Excel計(jì)算的結(jié)果: 圖1 一般來(lái)

7、說(shuō),|r|大于0.7就有很好的相關(guān)性了,而從計(jì)算結(jié)果可以看出,用例數(shù)量x1和工期y的相關(guān)系數(shù)達(dá)到0.93,最為優(yōu)秀,而數(shù)據(jù)表數(shù)量x3也達(dá)到0.83,唯有實(shí)體數(shù)量x2的相關(guān)系數(shù)僅為0.65,質(zhì)量較差。因?yàn)閨r(x2,y)|0.7,所以這里首先排除掉。 到了這里似乎我們可以順利成章選擇x1作為最終Proxy,但是還有一點(diǎn)要考慮,就是顯著性。所謂顯著性就是在偶然情況下得到此結(jié)果的概率,如果顯著性不足,說(shuō)明這個(gè)結(jié)果不可靠。顯著性t值的計(jì)算公式如下: 因?yàn)閚=5,這里自由度為3,然后查詢(xún)t分布表,得到95%預(yù)測(cè)區(qū)間為3.182。因?yàn)橐话泔@著性0.05則認(rèn)為顯著性較好,所以如果t的值大于3.182,我們則

8、可以接受。不過(guò)如果使用工具的話(huà),一般可以用t檢測(cè)直接得出顯著性,這里我用Excel得到r(x1,y)的顯著性為0.006,r(x3,y)的顯著性為0.007(如圖2所示),都遠(yuǎn)小于0.05,顯著性均非常好。所以根據(jù)擇優(yōu)錄取原則,我們選擇x1:需求文檔中用例數(shù)量作為預(yù)測(cè)Proxy。圖2得到x的值 在上文中,我們通過(guò)相關(guān)性和顯著性分析,最終決定使用需求文檔中的用例數(shù)量作為x。下面就是要確定x的值,這個(gè)不必多說(shuō),直接從需求文檔中得到相應(yīng)的數(shù)量即可。確定相關(guān)函數(shù)f 知道了x的值,下面就是要確定相關(guān)函數(shù)了。這一步是最艱難也是最有技術(shù)性的,因?yàn)橄嚓P(guān)函數(shù)不但和數(shù)理因素相關(guān),還與開(kāi)發(fā)團(tuán)隊(duì)、團(tuán)隊(duì)中的人以及管理方

9、法有關(guān)。如果人員變動(dòng)很大或管理方法做了很大的調(diào)整,歷史數(shù)據(jù)可能就不具備參考價(jià)值了。不過(guò)如果團(tuán)隊(duì)的開(kāi)發(fā)水平和管理方法沒(méi)有重大變動(dòng),這個(gè)函數(shù)還是相對(duì)穩(wěn)定的。 在函數(shù)選型上,一般會(huì)選擇線性函數(shù),當(dāng)然我個(gè)人對(duì)此是十分懷疑的,但是這里為了簡(jiǎn)單起見(jiàn),我們姑且照例使用線性函數(shù)作為預(yù)測(cè)模型。這樣可以建立一元線性回歸模型如下: 這個(gè)函數(shù)并不是簡(jiǎn)單的線性函數(shù),而是包含了一個(gè)隨機(jī)變量,這是一個(gè)服從正態(tài)分布的隨機(jī)變量。上述模型的直觀意義可以如下描述:a代表與x即用例數(shù)量無(wú)關(guān)的起始時(shí)間,b代表每一個(gè)用例所耗費(fèi)的平均時(shí)間,而代表開(kāi)發(fā)中的不確定性。在不同的團(tuán)隊(duì)中或不同的管理方法下,a,b和都是不一樣的,但是當(dāng)團(tuán)隊(duì)和管理方法

10、相對(duì)穩(wěn)定,可以認(rèn)為a,b和是可通過(guò)歷史數(shù)據(jù)估計(jì)的。而因?yàn)榈钠谕麨?,所以只要給出a和b的合理估計(jì),就可以得到y(tǒng)的一個(gè)無(wú)偏估計(jì)。 下面我們估計(jì)a和b的值。估計(jì)方法有很多,如曲線擬合法或最小二乘法。這里我們采用最小二乘法進(jìn)行估計(jì)。 最小二乘法估計(jì)的基本原理如下: 求極值可以使用微積分中的求極值方法,首先令Q(a,b)對(duì)a和b分別求偏導(dǎo),并令偏導(dǎo)為零,得如下方程組: 經(jīng)過(guò)一系列計(jì)算和推導(dǎo),最終可得到:圖3 根據(jù)估計(jì)結(jié)果,我們可以得出相關(guān)函數(shù)為y=56.251+10.653。我們還可以證明,這個(gè)估計(jì)是一致最小方差無(wú)偏估計(jì),證明過(guò)程從略。 現(xiàn)在我們不但得到了相關(guān)函數(shù),還得到了如下有用的數(shù)據(jù)結(jié)果:這個(gè)團(tuán)隊(duì)

11、在目前的管理模式下,開(kāi)發(fā)一個(gè)項(xiàng)目平均準(zhǔn)備時(shí)間為56.251人時(shí),而平均每個(gè)用例開(kāi)發(fā)耗時(shí)為10.653人時(shí)。得出y 有了上面的結(jié)果,我們可以很輕易得出新項(xiàng)目的計(jì)劃工時(shí)。例如新項(xiàng)目有50個(gè)用例,代入可以得到y(tǒng)=56.251+10.653*50=588.901,約為589個(gè)人時(shí),再假設(shè)團(tuán)隊(duì)中有3個(gè)開(kāi)發(fā)人員,平均每周工作五天,每天工作8小時(shí),就可以得到項(xiàng)目大約需要開(kāi)發(fā)24.54個(gè)人日,開(kāi)發(fā)周期約為5周。后面的話(huà) 至此我們已經(jīng)完成了利用一元線性回歸模型對(duì)軟件工期的估計(jì)。但是不得不承認(rèn),這個(gè)估計(jì)方法存在很多缺陷,如估計(jì)變量單一以及估計(jì)模型過(guò)于簡(jiǎn)單等等。實(shí)驗(yàn)證明,這種一元線性模型對(duì)中小型項(xiàng)目相對(duì)有效,如果團(tuán)隊(duì)比較大并且項(xiàng)目十分復(fù)雜,估計(jì)效果就不理想了。不過(guò)這篇文章給出了一種思路,就是如何利用數(shù)理

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論