版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、利用簡單的一元線性回歸分析估計軟件項目開發(fā)時間2010-07-22 18:46 by EricZhang(T2噬菌體), 2522 visits, 網(wǎng)摘, 收藏, 編輯 引言 前兩天一個朋友給我打電話,問我如何估計項目開發(fā)時間。對此我很詫異,問他以前他們是怎么估計的,他說以前基本都是大家開個會,大約都說說自己意見,最后負責人一拍腦袋,給出一個時間。不過這次遇到一個非常認真的客戶,要求不但要估計出項目開發(fā)時間,還要明確說明具體的依據(jù)和估算方法,這下我這朋友有點犯難,才詢問我。后來我翻閱了一些數(shù)理統(tǒng)計和項目估算方面的資料,告訴了他利用一元線性回歸分析估計軟件項目開發(fā)時間的方法。想到這種估算需要在一
2、些開發(fā)團隊很常見,所以在這里整理成文。問題的定義及數(shù)學模型 這里我們僅考慮比較簡單的一元回歸問題,即通過單一的Proxy預測項目開發(fā)時間。這里先說一下什么叫Proxy。Proxy叫做代理變量,簡單來說就是估計項目開發(fā)時間的數(shù)理依據(jù)。說白了,就是我們預測開發(fā)時間,總要有個根據(jù),例如需求中用例個數(shù)、概要設(shè)計中的實體個數(shù)、數(shù)據(jù)庫中的表的數(shù)量等等。設(shè)Proxy為x,項目開發(fā)時間為y,那么可以得到y(tǒng)=f(x),學過初等數(shù)學的都可以看懂,就是說開發(fā)時間是Proxy的一個函數(shù),如果我們既知道了新項目的x,又知道函數(shù)f,那么y就出來了??上煜履挠羞@么好的事,我們現(xiàn)在既不知道f,又不知道x,別說x的值了,甚至
3、我們都不知道該用哪個Proxy做x。 不過也不必悲觀,經(jīng)過上面分析,我們至少明確了我們奮斗的方向: 1、找出候選的Proxy。 2、選擇最合適的Proxy作為x。 3、得到x的值。 4、確定函數(shù)f。 5、得出y。 下面我們一步一步解決各個問題。找出候選的Proxy 雖然一個項目的特征量很多,不過可不是隨便一個特征量都可以當做Proxy的。要成為Proxy,至少要滿足如下四個條件。 1)Proxy的值應該和工作量緊密相關(guān)。 這個不用多解釋了吧,就是說Proxy的值和y的值要有相關(guān)性。關(guān)于“相關(guān)性”的概念這里先定性說一下,定量分析后續(xù)會講到。 2)Proxy應該是能明確得出值的,沒有二義性。 這是
4、說Proxy應該對應一個明確數(shù)值,是一就是一,是二就是二,不能取“不錯”、“挺多”這種值。 3)Proxy應該在項目開始階段可以得出或能較精確估計出。 這個開始階段最晚不能晚于概要設(shè)計,因為估算都是一開始進行,所以Proxy一定要在起始階段就能得出,否則項目結(jié)束了誰還搞估算,實際值都出來了。 4)Proxy對于不同的實施方案是敏感的。 就是說當開發(fā)方法、開發(fā)過程等因素變化時,Proxy應該具有一定的敏感性。 經(jīng)過上述分析,我想選用什么作為Proxy大家心里都有點譜了。一般來說,在估算時常被作為Proxy的有需求分析中用例數(shù)量、需求分析中功能模塊數(shù)量、概要設(shè)計中實體數(shù)量和數(shù)據(jù)庫設(shè)計中表的數(shù)量。當
5、然,各位也可以根據(jù)上述要求選擇自己的Proxy。在本文中,我們暫且選擇用例數(shù)量、實體數(shù)量和表數(shù)量三個Proxy作為候選。選擇最合適的Proxy作為x 這里所謂的“最合適”,在數(shù)學上的意義就是和開發(fā)時間y的相關(guān)性最強。那么什么是相關(guān)性呢,從直觀意義上,兩個變量的相關(guān)性是指兩個變量關(guān)聯(lián)的緊密程度,數(shù)學上可以用相關(guān)系數(shù)表示。相關(guān)系數(shù)計算公式如下: 至于這個公式為什么能反映出兩個變量的相關(guān)性,可以去參考高等數(shù)理統(tǒng)計相關(guān)資料,本文不再贅述,只是順便說一下,r的范圍在-11之間,絕對值越大代表相關(guān)性越強,如果為正值則表示兩個變量正相關(guān),否則為負相關(guān)。知道了這個,我們這一步驟的目的就是找出候選Proxy中與
6、y相關(guān)系數(shù)最大的作為x。 不過,這數(shù)據(jù)從哪里來呢?這就要從以前做過的項目中提取了。查閱朋友所在團隊最近做過的5個項目的數(shù)據(jù)資料(這里當然歷史項目越多越好,不過筆者這個朋友的團隊只有5個項目的記錄),得到如下數(shù)據(jù): 項目工期(y): 424 267 90 331 160 (人時) 用例數(shù)量(x1): 37 20 6 18 12 實體數(shù)量(x2):15 9 411 14 數(shù)據(jù)表數(shù)量(x3):2518 716 18 下面就是計算各個相關(guān)系數(shù)了,計算相關(guān)系數(shù)是一項機械且乏味的活動,一般都會交由相應的工具去完成。不過您要是感興趣,也可以自己代入上述公式手算。下圖是我用Excel計算的結(jié)果: 圖1 一般來
7、說,|r|大于0.7就有很好的相關(guān)性了,而從計算結(jié)果可以看出,用例數(shù)量x1和工期y的相關(guān)系數(shù)達到0.93,最為優(yōu)秀,而數(shù)據(jù)表數(shù)量x3也達到0.83,唯有實體數(shù)量x2的相關(guān)系數(shù)僅為0.65,質(zhì)量較差。因為|r(x2,y)|0.7,所以這里首先排除掉。 到了這里似乎我們可以順利成章選擇x1作為最終Proxy,但是還有一點要考慮,就是顯著性。所謂顯著性就是在偶然情況下得到此結(jié)果的概率,如果顯著性不足,說明這個結(jié)果不可靠。顯著性t值的計算公式如下: 因為n=5,這里自由度為3,然后查詢t分布表,得到95%預測區(qū)間為3.182。因為一般顯著性0.05則認為顯著性較好,所以如果t的值大于3.182,我們則
8、可以接受。不過如果使用工具的話,一般可以用t檢測直接得出顯著性,這里我用Excel得到r(x1,y)的顯著性為0.006,r(x3,y)的顯著性為0.007(如圖2所示),都遠小于0.05,顯著性均非常好。所以根據(jù)擇優(yōu)錄取原則,我們選擇x1:需求文檔中用例數(shù)量作為預測Proxy。圖2得到x的值 在上文中,我們通過相關(guān)性和顯著性分析,最終決定使用需求文檔中的用例數(shù)量作為x。下面就是要確定x的值,這個不必多說,直接從需求文檔中得到相應的數(shù)量即可。確定相關(guān)函數(shù)f 知道了x的值,下面就是要確定相關(guān)函數(shù)了。這一步是最艱難也是最有技術(shù)性的,因為相關(guān)函數(shù)不但和數(shù)理因素相關(guān),還與開發(fā)團隊、團隊中的人以及管理方
9、法有關(guān)。如果人員變動很大或管理方法做了很大的調(diào)整,歷史數(shù)據(jù)可能就不具備參考價值了。不過如果團隊的開發(fā)水平和管理方法沒有重大變動,這個函數(shù)還是相對穩(wěn)定的。 在函數(shù)選型上,一般會選擇線性函數(shù),當然我個人對此是十分懷疑的,但是這里為了簡單起見,我們姑且照例使用線性函數(shù)作為預測模型。這樣可以建立一元線性回歸模型如下: 這個函數(shù)并不是簡單的線性函數(shù),而是包含了一個隨機變量,這是一個服從正態(tài)分布的隨機變量。上述模型的直觀意義可以如下描述:a代表與x即用例數(shù)量無關(guān)的起始時間,b代表每一個用例所耗費的平均時間,而代表開發(fā)中的不確定性。在不同的團隊中或不同的管理方法下,a,b和都是不一樣的,但是當團隊和管理方法
10、相對穩(wěn)定,可以認為a,b和是可通過歷史數(shù)據(jù)估計的。而因為的期望為0,所以只要給出a和b的合理估計,就可以得到y(tǒng)的一個無偏估計。 下面我們估計a和b的值。估計方法有很多,如曲線擬合法或最小二乘法。這里我們采用最小二乘法進行估計。 最小二乘法估計的基本原理如下: 求極值可以使用微積分中的求極值方法,首先令Q(a,b)對a和b分別求偏導,并令偏導為零,得如下方程組: 經(jīng)過一系列計算和推導,最終可得到:圖3 根據(jù)估計結(jié)果,我們可以得出相關(guān)函數(shù)為y=56.251+10.653。我們還可以證明,這個估計是一致最小方差無偏估計,證明過程從略。 現(xiàn)在我們不但得到了相關(guān)函數(shù),還得到了如下有用的數(shù)據(jù)結(jié)果:這個團隊
11、在目前的管理模式下,開發(fā)一個項目平均準備時間為56.251人時,而平均每個用例開發(fā)耗時為10.653人時。得出y 有了上面的結(jié)果,我們可以很輕易得出新項目的計劃工時。例如新項目有50個用例,代入可以得到y(tǒng)=56.251+10.653*50=588.901,約為589個人時,再假設(shè)團隊中有3個開發(fā)人員,平均每周工作五天,每天工作8小時,就可以得到項目大約需要開發(fā)24.54個人日,開發(fā)周期約為5周。后面的話 至此我們已經(jīng)完成了利用一元線性回歸模型對軟件工期的估計。但是不得不承認,這個估計方法存在很多缺陷,如估計變量單一以及估計模型過于簡單等等。實驗證明,這種一元線性模型對中小型項目相對有效,如果團隊比較大并且項目十分復雜,估計效果就不理想了。不過這篇文章給出了一種思路,就是如何利用數(shù)理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年營業(yè)員個人計劃范文
- 有關(guān)初中英語復習計劃例文
- 一年日讀經(jīng)計劃
- 醫(yī)院2025年度工作計劃樣例
- 小學五年級語文教學新學期工作計劃
- 衛(wèi)生院后勤部2025年工作計劃
- XX年免疫規(guī)劃工作計劃
- 社區(qū)宣傳工作計劃模板范文每月工作計劃范文
- 《髖關(guān)節(jié)置換術(shù)講》課件
- 《氣候的形成》課件
- cecs31-2017鋼制電纜橋架工程設(shè)計規(guī)范
- 標簽打印流程
- 25公斤級平焊法蘭及螺栓規(guī)格尺寸
- 自我效能感理論及其研究綜述
- 醫(yī)生問診時與患者對話
- 中華護理學會會員申請表(普通+資深會員)
- (完整版)HSE管理體系及措施
- 軍人體型標準對照表
- 淺談吉林省中藥材產(chǎn)業(yè)發(fā)展
- 學生學習評價量表模板
- 圖形找規(guī)律專項練習60題(有答案)
評論
0/150
提交評論