查看“︁軟體開發工作量預估”︁的源代码
←
軟體開發工作量預估
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[软件开发]]的'''工作量預估'''是預估[[軟體]]開發或維護所需要的工作量(會以[[人時|人以及工時]]或是金錢來表示),其參考輸入多半是不完整、不可靠,並且帶有雜訊的資訊。工作量[[估計|預估]]可以是專案計劃、迭代計劃、預算、投資分析、定價流程或競標的輸入<ref>{{cite web | url=http://www.infoq.com/articles/software-development-effort-estimation | title=What We do and Don't Know about Software Development Effort Estimation | access-date=2021-02-25 | archive-date=2021-02-08 | archive-url=https://web.archive.org/web/20210208012351/https://www.infoq.com/articles/software-development-effort-estimation/ | dead-url=no }}</ref><ref>{{cite web|title=Cost Estimating And Assessment Guide GAO-09-3SP Best Practices for developing and managing Capital Program Costs|date=2009|publisher=US Government Accountability Office|url=https://www.gao.gov/new.items/d093sp.pdf|access-date=2021-02-25|archive-date=2020-08-06|archive-url=https://web.archive.org/web/20200806063206/https://www.gao.gov/new.items/d093sp.pdf|dead-url=no}}</ref>。 ==現行實務== 有關預估實務的問卷指出,在預估工作量時,仍建議用專家預估為主要的作法<ref>{{cite journal | author = Jørgensen, M. | title = A Review of Studies on Expert Estimation of Software Development Effort | journal = Journal of Systems and Software | volume = 70 | issue = 1–2 | pages = 37–60 | url = http://simula.no/publications/review-studies-expert-estimation-software-development-effort | year = 2004 | doi = 10.1016/S0164-1212(02)00156-5 | access-date = 2021-02-25 | archive-date = 2017-02-02 | archive-url = https://web.archive.org/web/20170202232854/http://simula.no/publications/review-studies-expert-estimation-software-development-effort | dead-url = no }}</ref>。 一般而言,工作量預估往往會過於樂觀,會明顯的過度自信。最後的平均工作量會超過30%,而且不會隨時間而減少<ref>{{cite book | author = Molokken, K. Jorgensen, M. | title = 2003 International Symposium on Empirical Software Engineering, 2003. ISESE 2003. Proceedings | pages = 223–230 | doi = 10.1109/ISESE.2003.1237981 | year = 2003 | isbn = 978-0-7695-2002-5 | chapter = A review of software surveys on software effort estimation | s2cid = 15471986 }}</ref>。不過,有關預估量誤差的量測有很多的問題,細節可參考[[#預估的準確性評估|預估的準確性評估]]。 對工作量預估準確的強烈自信可以用以下方式說明:平均而言,若軟體專業人士在評估實際工作量最大值—最小值的區間時,有90%的信心水準,或認為「幾乎一定」準確,「過度自信」的情形,其估計區間符合實際量的比例只有60-70%<ref>{{cite journal | author = Jørgensen, M. Teigen, K.H. Ribu, K. | title = Better sure than safe? Over-confidence in judgement based software development effort prediction intervals | doi=10.1016/S0164-1212(02)00160-7 | volume=70 | issue = 1–2 | year=2004 | journal=Journal of Systems and Software | pages=79–93}}</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 | url = https://archive.org/details/sim_european-journal-of-information-systems_1994-04_3_2/page/139 | 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 | access-date = 2021-03-18 | archive-date = 2017-11-18 | archive-url = https://web.archive.org/web/20171118125523/http://www.dtic.mil/dtic/tr/fulltext/u2/603707.pdf | dead-url = no }}</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 | access-date = 2021-03-18 | archive-date = 2018-07-28 | archive-url = https://web.archive.org/web/20180728134658/http://www.dtic.mil/dtic/tr/fulltext/u2/607546.pdf | dead-url = no }}</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}}。 ==預估方式== 有許多方式可以為預估(估計)方式分類<ref>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.</ref><ref>{{cite web | author = Jørgensen, M. Shepperd, M. | title = A Systematic Review of Software Development Cost Estimation Studies | url = http://simula.no/research/engineering/publications/Jorgensen.2007.1 | access-date = 2021-02-25 | archive-date = 2021-04-13 | archive-url = https://web.archive.org/web/20210413130058/https://www.simula.no/research/engineering/publications/Jorgensen.2007.1 | dead-url = no }}</ref>。以下是最頂層的分類: * 專家估計:量化步驟(產生預估結果的步驟)是以判斷過程為基礎<ref>{{cite web | url=http://www.oxagile.com/services/custom-software-design-and-development/ | title=Custom Software Development Services - Custom App Development - Oxagile | access-date=2021-02-25 | archive-date=2019-02-01 | archive-url=https://web.archive.org/web/20190201061517/https://www.oxagile.com/services/custom-software-design-and-development/ | dead-url=no }}</ref> * 型式化估計模型:量化步驟是以數學過程為基礎,例如用歷史數據推導而成的公式。 * 混合基礎估計:量化步驟的基礎包括判斷,以及來自不同來源的預估值。 以下是各分類中的一些例子。 {| class="wikitable" |- ! 估計方式 ! 分類 ! 支持此估計方式的例子 |- | [[類比]]基礎的估計 | 型式化估計模型 | ANGEL、{{le|加權微機能點|Weighted Micro Function Points}} |- | [[工作分解结构]](從下往上)估計 | 專家估計 | [[項目管理軟件]]、公司特製的活動模版 |- | 參數化模型 | 型式化估計模型 | [[构造性成本模型|COCOMO]]、{{le|Putnam模型|Putnam model|SLIM}}、{{le|SEER-SEM|SEER-SEM}}、TruePlanning for Software |- | 大小為基礎的估計模型<ref>Hill Peter (ISBSG) - Estimation Workbook 2 - published by International Software Benchmarking Standards Group [http://www.isbsg.org/ISBSGnew.nsf/WebPages/~GBL~Practical%20Project%20Estimation%202nd%20Edition ISBSG - Estimation and Benchmarking Resource Centre] {{Webarchive|url=https://web.archive.org/web/20080829172340/https://www.isbsg.org/isbsgnew.nsf/WebPages/~GBL~Practical%20Project%20Estimation%202nd%20Edition |date=2008-08-29 }}</ref> | 型式化估計模型 | {{le|機能點分析|Function Point Analysis}}<ref>Morris Pam — Overview of Function Point Analysis [http://www.totalmetrics.com/function-point-resources/what-are-function-points Total Metrics - Function Point Resource Centre] {{Webarchive|url=https://archive.today/20120912175258/http://www.totalmetrics.com/function-point-resources/what-are-function-points |date=2012-09-12 }}</ref>、[[用例]]分析、{{le|用例點|Use Case Points}}、SSU(軟體大小單位)、[[敏捷软件开发]]中以故事点(Story point)為基礎的估計、{{le|物件點|Object Points}} |- | 群體估計 | 專家估計 | {{le|規劃撲克牌|Planning poker}}、{{le|寬帶德菲法|Wideband delphi}} |- | Mechanical combination | 混合基礎估計 | 將類比基礎以及[[工作分解结构]]基礎的估計值進行平均<ref>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</ref> |- | 判斷式合併 | 混合基礎估計 | 依參數模型以及群體估計的基礎,再由專家判斷 |} ==預估方式的選擇== 根據不同預估方式以及模型之間的預估準確度之間差異的資訊,可以得知沒有「最佳方式」,各方式和模型之間互相比較的相對準確度,和其專案情境有強烈的相關性<ref>{{cite journal | author = Shepperd, M. Kadoda, G. | title = Comparing software prediction techniques using simulation | journal = IEEE Transactions on Software Engineering | volume = 27 | issue = 11 | pages = 1014–1022 | doi = 10.1109/32.965341 | year = 2001 | url = http://bura.brunel.ac.uk/handle/2438/1102 | access-date = 2021-03-18 | archive-date = 2017-09-03 | archive-url = https://web.archive.org/web/20170903031347/http://bura.brunel.ac.uk/handle/2438/1102 | dead-url = no }}</ref>。因此不同的組織會適合不同的預估方式。支持依期望準確度來選擇預估方式的發現包括<ref name="Jørgensen, M">{{cite web | author = Jørgensen, M. | title = Estimation of Software Development Work Effort:Evidence on Expert Judgment and Formal Models | url = http://simula.no/research/engineering/publications/Jorgensen.2007.2 | access-date = 2021-03-18 | archive-date = 2021-04-13 | archive-url = https://web.archive.org/web/20210413125904/https://www.simula.no/research/engineering/publications/Jorgensen.2007.2 | dead-url = no }}</ref>: * 專家預估大致上至少和以模型為基礎旳工作量預估一樣準確。特別有些情境下,存在不穩定的關係以及高重要性的資訊,模型中不會包括這些資訊。此情形下建議使用專家預估。前提是假定有相關經驗的專家可以諮詢。 * 型式化預估若沒有針對特定組織的情境來調整,其結果可能會相當的不準確。若無法確定預估模型中的核心關係(型式參數)是否是依類似情境的專案所產生,使用自身的歷史資料就格外的重要了。 * 型式化預估若已針對特定組織的情境來調整(不論是用歷史資料,或是依類似的專案或情境所推導的模型),這類的模型會格外的有幫助,而且專家預估常常會有太過一廂情願的問題出現。 在許多預估領域中,最可靠的發現是整合來自各獨立來源,應用不同預估方式,所得的結果,平均來說這可以提昇預估的準確性<ref name="Jørgensen, M"/><ref>{{cite journal | author = Winkler, R.L. | title = Combining forecasts: A philosophical basis and some current issues Manager | url = https://archive.org/details/sim_international-journal-of-forecasting_1989_5_4/page/605 | doi=10.1016/0169-2070(89)90018-6 | volume=5 | issue = 4 | year=1989 | journal=International Journal of Forecasting | pages=605–609}} </ref><ref>{{cite journal | author = Blattberg, R.C. Hoch, S.J. | title = Database Models and Managerial Intuition: 50% Model + 50% Manager | url = https://archive.org/details/sim_management-science_1990-08_36_8/page/887 | jstor = 2632364 | volume=36 | issue = 8 | pages=887–899 | doi=10.1287/mnsc.36.8.887 | journal=Management Science | year=1990}} </ref>。 很重要的是知道軟體開發生產力傳統度量方式的限制<ref>{{cite web | author = BlueOptima | title = Identifying Reliable, Objective Software Development Metrics | url = https://www.blueoptima.com/blog/identifying-reliable-objective-software-development-metrics | date = 2019-10-29 | access-date = 2021-03-18 | archive-date = 2021-03-03 | archive-url = https://web.archive.org/web/20210303055305/https://www.blueoptima.com/blog/identifying-reliable-objective-software-development-metrics | dead-url = no }}</ref>。 此外,在選擇方式的階段,也需要考量其他因素,例如方式的結果是否容易理解和進行溝通、方式使用上的難易度、以及導入預估方式的成本等。 ==預估的準確性評估== 最常見平均預估準確度的測量方式是MMRE(相對誤差量值的平均),其中每一個估計量的MRE(相對誤差量值)是: ''MRE'' = <math>\frac{|\text{actual effort} - \text{estimated effort}|}\text{actual effort}</math> 此測量方式有受到一些人的質疑<ref>{{cite journal | author = Shepperd, M. Cartwright, M. Kadoda, G. | title = On Building Prediction Systems for Software Engineers | doi=10.1023/A:1026582314146 | volume=5 | issue = 3 | year=2000 | journal=Empirical Software Engineering | pages=175–182| s2cid = 1293988 }} </ref><ref>{{cite web | author = Kitchenham, B. Pickard, L.M. MacDonell, S.G. Shepperd | title = What accuracy statistics really measure | url = http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=IPSEFU000148000003000081000001&idtype=cvips&gifs=yes }} </ref><ref>{{cite journal | author = Foss, T. Stensrud, E. Kitchenham, B. Myrtveit, I. | title = A Simulation Study of the Model Evaluation Criterion MMRE | journal = IEEE Transactions on Software Engineering | volume = 29 | issue = 11 | pages = 985–995 | url = http://portal.acm.org/citation.cfm?id=951936 | doi = 10.1109/TSE.2003.1245300 | year = 2003 | citeseerx = 10.1.1.101.5792 }} </ref>,也有一些其他的測量方式,例如更對稱的測量方式<ref>{{cite journal | author = Miyazaki, Y. Terakado, M. Ozaki, K. Nozaki, H. | title = Robust regression for developing software estimation models | journal = Journal of Systems and Software | volume = 27 | pages = 3–16 | url = http://portal.acm.org/citation.cfm?id=198684 | doi = 10.1016/0164-1212(94)90110-4 | year = 1994 }} </ref>、相對誤差的四分位數加權平均值(Weighted Mean of Quartiles of relative errors、WMQ) <ref>{{cite web | author = Lo, B. Gao, X. | title = Assessing Software Cost Estimation Models: criteria for accuracy, consistency and regression | url = http://dl.acs.org.au/index.php/ajis/article/view/348 | access-date = 2021-02-28 | archive-date = 2014-04-27 | archive-url = https://web.archive.org/web/20140427165448/http://dl.acs.org.au/index.php/ajis/article/view/348 | dead-url = no }}</ref>及估測不平均變異(Mean Variation from Estimate、MVFE)<ref>{{cite journal | author = Hughes, R.T. Cunliffe, A. Young-Martos, F. | title = Evaluating software development effort model-building techniquesfor application in a real-time telecommunications environment | journal = IEE Proceedings - Software | volume = 145 | page = 29 | url = https://ieeexplore.ieee.org/document/689296 | doi = 10.1049/ip-sen:19983370 | year = 1998 | access-date = 2021-02-28 | archive-date = 2017-09-20 | archive-url = https://web.archive.org/web/20170920055746/http://ieeexplore.ieee.org/document/689296/ | dead-url = no }}</ref>。 若個別資料有歪斜特性,MRE就不可靠了。此時比較會用到PRED(25)來用測量預估準確度。PRED(25)測量預測值在實際值25%誤差範圍內的比例。 高預估誤差不能自動解釋為低預估能力的指標。替代、競爭、互補的原因包括專案的低成本控制、開發工作的高複雜性、或是實際交付的機能比一開始規劃時要多。也有一些框架可以改善預估誤差量測的使用及改善<ref>{{cite web | author = Grimstad, S. Jørgensen, M. | title = A Framework for the Analysis of Software Cost Estimation Accuracy | url = http://simula.no/publications/framework-analysis-software-cost-estimation-accuracy | year = 2006 | access-date = 2021-02-28 | archive-date = 2016-12-20 | archive-url = https://web.archive.org/web/20161220063534/https://www.simula.no/publications/framework-analysis-software-cost-estimation-accuracy | dead-url = no }}</ref>。 ==心理因素== 在預估軟體開發工作量時,過於樂觀的情形,可能有許多的心理層面因素,若要增加預估的準確性,需要處理這些層面的議題。這些因素是本質性的,就算是用型式化預估的方式,因為其輸入是依判斷而決定的,仍會受心理因素的影響。重要的心理因素包括:[[一廂情願]]、[[錨定效應]]、{{le|計劃謬誤|planning fallacy}}及[[認知失調]]。Jørgensen和Grimstad的著作中有相關議題的探討<ref>{{cite web | author = Jørgensen, M. Grimstad, S. | title = How to Avoid Impact from Irrelevant and Misleading Information When Estimating Software Development Effort | url = http://simula.no/research/se/publications/Simula.SE.112 | access-date = 2021-03-15 | archive-date = 2016-10-23 | archive-url = https://web.archive.org/web/20161023233931/http://simula.no/research/se/publications/Simula.SE.112 | dead-url = no }}</ref>: * 人們知道的事務,很容易預估。 * 人們確定自己不知道的事務,不容易預估(已知的未知)。 * 人們不知道自己不知道的事務,非常不容易預估(未知的未知)。 ==相關的「定律」== 有關開發工作量時常被低估的諷刺性情形,因此出現了一些常見的諷刺性的說法,例如將一些任務視為「{{le|軟體開發上的小事|small matter of programming}}」(認為需要投入的心力不多),以下則是一些有關工作量低估的定律: * [[90-90法则]]: {{Cquote|(开发软件时)前90%的代码要花费90%的开发时间,剩余的10%的代码要再花費90%的开发时间。 The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.|Tom Cargill,[[贝尔实验室]]<ref name="Bentley1985">{{cite journal|last= Bentley|first= Jon|year= 1985|title= Programming pearls|journal= Communications of the ACM|volume= 28|issue= 9|pages= 896–901|issn= 0001-0782|doi= 10.1145/4284.315122|s2cid= 5832776|format= fee required}}</ref>}} * [[侯世达定律]]: {{Cquote|做事所花费的时间总是比你预期的要长,即使你的预期中考虑了侯世达定律。 It always takes longer than you expect, even when you take into account Hofstadter's Law.|[[侯世达]]|[[哥德尔、埃舍尔、巴赫|《哥德尔、埃舍尔、巴赫》]]<ref>Gödel, Escher, Bach: An Eternal Golden Braid. 20th anniversary ed., 1999, p. 152. ISBN 0-465-02656-7</ref>}} * [[布魯克斯法則]]: {{Cquote|一個工程師花一個月可以完成的工作,二個工程師需要花上二個月的時間。 What one programmer can do in one month, two programmers can do in two months.|[[佛瑞德·布魯克斯]]| }} 預估工作量本身是件困難的工作,不適當的增加資源(甚至包括人力)對時程也不一定有幫助。 ==相關條目== * {{le|不定度錐|Cone of uncertainty}} * {{le|軟體工程的成本預估|Cost estimation in software engineering}} * {{le|成本預估模型|Cost estimation models}} * {{le|成本超支|Cost overrun}} * {{le|機能點|Function points}} * {{le|計畫謬誤|Planning fallacy}} <!--* [[Proxy-based estimating]]--> * {{le|Putnam模型|Putnam model}} * [[軟體度量]] * {{le|軟體參數模型|Software parametric models}} == 參考資料 == {{Reflist}} == 外部連結== {{Wikiquote}} [[Category:软件开发]] [[Category:軟體工程]]
该页面使用的模板:
Template:Cite book
(
查看源代码
)
Template:Cite journal
(
查看源代码
)
Template:Cite web
(
查看源代码
)
Template:Cquote
(
查看源代码
)
Template:Isbn
(
查看源代码
)
Template:Le
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:Webarchive
(
查看源代码
)
Template:Wikiquote
(
查看源代码
)
返回
軟體開發工作量預估
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息