跳转到内容

軟體開發工作量預估:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
Wolfch留言 | 贡献
Wolfch留言 | 贡献
第36行: 第36行:


目前「工作量預估」一詞用來表示許多不同的概念,例如最可能的工作量(眾數),準確率(實際工作量小於估計量)為50%的估計量(中位數)、計劃的工作量、對應預算的工作量、或是用來競標或報價的工作量。不同的人有不同的目標,但在溝通時用「工作量預估」表達其不同的需求<ref>{{cite journal | last1 = Edwards | first1 = J.S. Moores | year = 1994 | title = A conflict between the use of estimating and planning tools in the management of information systems | journal = European Journal of Information Systems | volume = 3 | issue = 2| pages = 139–147 | doi=10.1057/ejis.1994.14| s2cid = 62582672 }}</ref><ref>Goodwin, P. (1998). Enhancing judgmental sales forecasting: The role of laboratory research. Forecasting with judgment. G. Wright and P. Goodwin. New York, John Wiley & Sons: 91-112. Hi</ref>。
目前「工作量預估」一詞用來表示許多不同的概念,例如最可能的工作量(眾數),準確率(實際工作量小於估計量)為50%的估計量(中位數)、計劃的工作量、對應預算的工作量、或是用來競標或報價的工作量。不同的人有不同的目標,但在溝通時用「工作量預估」表達其不同的需求<ref>{{cite journal | last1 = Edwards | first1 = J.S. Moores | year = 1994 | title = A conflict between the use of estimating and planning tools in the management of information systems | journal = European Journal of Information Systems | volume = 3 | issue = 2| pages = 139–147 | doi=10.1057/ejis.1994.14| s2cid = 62582672 }}</ref><ref>Goodwin, P. (1998). Enhancing judgmental sales forecasting: The role of laboratory research. Forecasting with judgment. G. Wright and P. Goodwin. New York, John Wiley & Sons: 91-112. Hi</ref>。

==歷史==
自從1960年代起,軟體研究者以及軟體實作者就已提出軟體開發專案上,預估工作量的問題,例如Farr<ref>{{cite web
| author = Farr, L. Nanus, B.
| title = Factors that affect the cost of computer programming, volume I
| url = http://www.dtic.mil/dtic/tr/fulltext/u2/603707.pdf
}}</ref><ref>{{cite web
| author = Farr, L. Nanus, B.
| title = Factors that affect the cost of computer programming, volume II
| url = http://www.dtic.mil/dtic/tr/fulltext/u2/607546.pdf
}}</ref>和Nelson的研究<ref>Nelson, E. A. (1966). Management Handbook for the Estimation of Computer Programming Costs. AD-A648750, Systems Development Corp.</ref>。

大部份的研究著重在建立型式化的軟體開發工作量預估模型。早期的模型一般是依[[迴歸分析]],或是從其他領域的理論數學推導來的模型。之後已評估了許多模型建立的作法,其基礎理論包括[[案例推论]]、分類和[[决策树]]、[[仿真]]、[[類神經網路]]、[[贝叶斯统计]]、需求規格的[[词法分析]]、[[遗传编程]]、[[线性规划]]、經濟生產模型、[[软计算]]、[[模糊逻辑]]建模、統計{{le|bootstrapping|bootstrapping}},或是上述理論的組合。其中最常見的可能是參數化的估計模型:[[构造性成本模型]](COCOMO)、{{le|SEER-SEM|SEER-SEM}}和SLIM。其估計研究的基是在1970年代至1980年代形成,也配合新的校正資料進行更新,最新版的主要更新是2000年的COCOMO II。以機能基礎的大小量測為準進行的預估作法,例如{{le|機能點|function points}}也是依1970年至1980年的研究所產生,不過也依修正後的大小量測方式以及不同計數方式來進行校正,例如1990年代的{{le|用例點|Use Case Points}}<ref>{{cite journal
| author = Anda, B. Angelvik, E. Ribu, K.
| title = Improving Estimation Practices by Applying Use Case Models
| doi=10.1007/3-540-36209-6_32
| year=2002
| journal=Lecture Notes in Computer Science
| volume = 2559
| pages=383–397
| isbn = 978-3-540-00234-5
| citeseerx = 10.1.1.546.112
}} {{isbn|9783540002345|9783540362098}}.</ref>或{{le|物件點|object point}}。


==估計方式==
==估計方式==

2021年3月18日 (四) 09:44的版本

软件开发工作量預估是估計軟體開發或維護所需要的工作量(會以人以及工時或是金錢來表示),其參考輸入多半是不完整、不可靠,並且帶有雜訊的資訊。工作量估計可以是專案計劃、迭代計劃、預算、投資分析、定價流程或競標的輸入[1][2]

現行實務

有關預估實務的問卷指出,在預估工作量時,仍建議用專家預估為主要的作法[3]

一般而言,工作量預估往往會過於樂觀,會明顯的過度自信。最後的平均工作量會超過30%,而且不會隨時間而減少[4]。不過,有關估計量誤差的量測有很多的問題,細節可參考估計的準確性評估。 對工作量預估準確的強烈自信可以用以下方式說明:平均而言,若軟體專業人士在評估實際工作量最大值—最小值的區間時,有90%的信心水準,或認為「幾乎一定」準確,「過度自信」的情形,其估計區間符合實際量的比例只有60-70%[5]

目前「工作量預估」一詞用來表示許多不同的概念,例如最可能的工作量(眾數),準確率(實際工作量小於估計量)為50%的估計量(中位數)、計劃的工作量、對應預算的工作量、或是用來競標或報價的工作量。不同的人有不同的目標,但在溝通時用「工作量預估」表達其不同的需求[6][7]

歷史

自從1960年代起,軟體研究者以及軟體實作者就已提出軟體開發專案上,預估工作量的問題,例如Farr[8][9]和Nelson的研究[10]

大部份的研究著重在建立型式化的軟體開發工作量預估模型。早期的模型一般是依迴歸分析,或是從其他領域的理論數學推導來的模型。之後已評估了許多模型建立的作法,其基礎理論包括案例推论、分類和决策树仿真類神經網路贝叶斯统计、需求規格的词法分析遗传编程线性规划、經濟生產模型、软计算模糊逻辑建模、統計bootstrapping英语bootstrapping,或是上述理論的組合。其中最常見的可能是參數化的估計模型:构造性成本模型(COCOMO)、SEER-SEM英语SEER-SEM和SLIM。其估計研究的基是在1970年代至1980年代形成,也配合新的校正資料進行更新,最新版的主要更新是2000年的COCOMO II。以機能基礎的大小量測為準進行的預估作法,例如機能點英语function points也是依1970年至1980年的研究所產生,不過也依修正後的大小量測方式以及不同計數方式來進行校正,例如1990年代的用例點英语Use Case Points[11]物件點英语object point

估計方式

有許多方式可以為估計方式分類[12][13]。以下是最頂層的分類:

  • 專家估計:量化步驟(產生估計結果的步驟)是以判斷過程為基礎[14]
  • 型式化估計模型:量化步驟是以數學過程為基礎,例如用歷史數據推導而成的公式。
  • 混合基礎估計:量化步驟的基礎包括判斷,以及來自不同來源的估計值。

以下是各分類中的一些例子。

估計方式 分類 支持此估計方式的例子
類比基礎的估計 型式化估計模型 ANGEL、加權微機能點英语Weighted Micro Function Points
工作分解结构(從下往上)估計 專家估計 項目管理軟件、公司特製的活動模版
參數化模型 型式化估計模型 COCOMOSLIM英语Putnam modelSEER-SEM英语SEER-SEM、TruePlanning for Software
大小為基礎的估計模型[15] 型式化估計模型 機能點分析英语Function Point Analysis[16]用例分析、用例點英语Use Case Points、SSU(軟體大小單位)、敏捷软件开发中以故事点(Story point)為基礎的估計、物件點英语Object Points
群體估計 專家估計 規劃撲克牌英语Planning poker寬帶德菲法英语Wideband delphi
Mechanical combination 混合基礎估計 將類比基礎以及工作分解结构基礎的估計值進行平均[17]
判斷式合併 混合基礎估計 依參數模型以及群體估計的基礎,再由專家判斷

估計的準確性評估

最常見平均預估準確度的測量方式是MMRE(相對誤差量值的平均),其中每一個估計量的MRE(相對誤差量值)是:

MRE =

此測量方式有受到一些人的質疑[18][19][20],也有一些其他的測量方式,例如更對稱的測量方式[21]、相對誤差的四分位數加權平均值(Weighted Mean of Quartiles of relative errors、WMQ) [22]及估測不平均變異(Mean Variation from Estimate、MVFE)[23]

若個別資料有歪斜特性,MRE就不可靠了。此時比較會用到PRED(25)來用測量估計準確度。PRED(25)測量預測值在實際值25%誤差範圍內的比例。

高估計誤差不能自動解釋為低估計能力的指標。替代、競爭、互補的原因包括專案的低成本控制、開發工作的高複雜性、或是實際交付的機能比一開始規劃時要多。也有一些框架可以改善估計誤差量測的使用及改善[24]

心理因素

在預估軟體開發工作量時,過於樂觀的情形,可能有許多的心理層面因素,若要增加預估的準確性,需要處理這些層面的議題。這些因素是本質性的,就算是用型式化預估的方式,因為其輸入是依判斷而決定的,仍會受心理因素的影響。重要的心理因素包括:一廂情願錨定效應計劃謬誤英语planning fallacy認知失調。Jørgensen和Grimstad的著作中有相關議題的探討[25]

  • 人們知道的事務,很容易估計。
  • 人們確定自己不知道的事務,不容易估計(已知的未知)。
  • 人們不知道自己不知道的事務,非常不容易估計(未知的未知)。

相關的「定律」

有關開發工作量時常被低估的諷刺性情形,因此出現了一些常見的諷刺性的說法,例如將一些任務視為「軟體開發上的小事英语small matter of programming」(認為需要投入的心力不多),以下則是一些有關工作量低估的定律:

預估工作量本身是件困難的工作,不適當的增加資源(甚至包括人力)對時程也不一定有幫助。

相關條目

參考資料

  1. ^ What We do and Don't Know about Software Development Effort Estimation. 
  2. ^ Cost Estimating And Assessment Guide GAO-09-3SP Best Practices for developing and managing Capital Program Costs (PDF). US Government Accountability Office. 2009. 
  3. ^ Jørgensen, M. A Review of Studies on Expert Estimation of Software Development Effort. Journal of Systems and Software. 2004, 70 (1–2): 37–60. doi:10.1016/S0164-1212(02)00156-5. 
  4. ^ Molokken, K. Jorgensen, M. A review of software surveys on software effort estimation. 2003 International Symposium on Empirical Software Engineering, 2003. ISESE 2003. Proceedings. 2003: 223–230. ISBN 978-0-7695-2002-5. S2CID 15471986. doi:10.1109/ISESE.2003.1237981. 
  5. ^ Jørgensen, M. Teigen, K.H. Ribu, K. Better sure than safe? Over-confidence in judgement based software development effort prediction intervals. Journal of Systems and Software. 2004, 70 (1–2): 79–93. doi:10.1016/S0164-1212(02)00160-7. 
  6. ^ Edwards, J.S. Moores. A conflict between the use of estimating and planning tools in the management of information systems. European Journal of Information Systems. 1994, 3 (2): 139–147. S2CID 62582672. doi:10.1057/ejis.1994.14. 
  7. ^ Goodwin, P. (1998). Enhancing judgmental sales forecasting: The role of laboratory research. Forecasting with judgment. G. Wright and P. Goodwin. New York, John Wiley & Sons: 91-112. Hi
  8. ^ Farr, L. Nanus, B. Factors that affect the cost of computer programming, volume I (PDF). 
  9. ^ Farr, L. Nanus, B. Factors that affect the cost of computer programming, volume II (PDF). 
  10. ^ Nelson, E. A. (1966). Management Handbook for the Estimation of Computer Programming Costs. AD-A648750, Systems Development Corp.
  11. ^ Anda, B. Angelvik, E. Ribu, K. Improving Estimation Practices by Applying Use Case Models. Lecture Notes in Computer Science. 2002, 2559: 383–397. CiteSeerX 10.1.1.546.112可免费查阅. ISBN 978-3-540-00234-5. doi:10.1007/3-540-36209-6_32.  ISBN 97835400023459783540362098.
  12. ^ Briand, L. C. and Wieczorek, I. (2002). Resource estimation in software engineering. Encyclopedia of software engineering. J. J. Marcinak. New York, John Wiley & Sons: 1160-1196.
  13. ^ Jørgensen, M. Shepperd, M. A Systematic Review of Software Development Cost Estimation Studies. 
  14. ^ Custom Software Development Services - Custom App Development - Oxagile. 
  15. ^ Hill Peter (ISBSG) - Estimation Workbook 2 - published by International Software Benchmarking Standards Group ISBSG - Estimation and Benchmarking Resource Centre 互联网档案馆存檔,存档日期2008-08-29.
  16. ^ Morris Pam — Overview of Function Point Analysis Total Metrics - Function Point Resource Centre
  17. ^ Srinivasa Gopal and Meenakshi D'Souza. 2012. Improving estimation accuracy by using case based reasoning and a combined estimation approach. In Proceedings of the 5th India Software Engineering Conference (ISEC '12). ACM, New York, NY, USA, 75-78. DOI=https://dx.doi.org/10.1145/2134254.2134267
  18. ^ Shepperd, M. Cartwright, M. Kadoda, G. On Building Prediction Systems for Software Engineers. Empirical Software Engineering. 2000, 5 (3): 175–182. S2CID 1293988. doi:10.1023/A:1026582314146. 
  19. ^ Kitchenham, B. Pickard, L.M. MacDonell, S.G. Shepperd. What accuracy statistics really measure. 
  20. ^ Foss, T. Stensrud, E. Kitchenham, B. Myrtveit, I. A Simulation Study of the Model Evaluation Criterion MMRE. IEEE Transactions on Software Engineering. 2003, 29 (11): 985–995. CiteSeerX 10.1.1.101.5792可免费查阅. doi:10.1109/TSE.2003.1245300. 
  21. ^ Miyazaki, Y. Terakado, M. Ozaki, K. Nozaki, H. Robust regression for developing software estimation models. Journal of Systems and Software. 1994, 27: 3–16. doi:10.1016/0164-1212(94)90110-4. 
  22. ^ Lo, B. Gao, X. Assessing Software Cost Estimation Models: criteria for accuracy, consistency and regression. 
  23. ^ Hughes, R.T. Cunliffe, A. Young-Martos, F. Evaluating software development effort model-building techniquesfor application in a real-time telecommunications environment. IEE Proceedings - Software. 1998, 145: 29. doi:10.1049/ip-sen:19983370. 
  24. ^ Grimstad, S. Jørgensen, M. A Framework for the Analysis of Software Cost Estimation Accuracy. 2006. 
  25. ^ Jørgensen, M. Grimstad, S. How to Avoid Impact from Irrelevant and Misleading Information When Estimating Software Development Effort. 
  26. ^ Bentley, Jon. Programming pearls. Communications of the ACM (fee required). 1985, 28 (9): 896–901. ISSN 0001-0782. S2CID 5832776. doi:10.1145/4284.315122. 
  27. ^ Gödel, Escher, Bach: An Eternal Golden Braid. 20th anniversary ed., 1999, p. 152. ISBN 0-465-02656-7

外部連結