軟體開發評估知多少?

2020-12-07 CSDN技術社區

總體來說,這個預計誤差的平均水平約為30%。另外還有大量證據表明,從二十世紀八十年代開始就保持著這個誤差水平一直沒有太大的改觀(註:僅有Standish Group 得出的結論是估計精度得到了大大的改善,即估計誤差變小了,但是他們的結論並不具有普片性),評估方法也沒有很好的改進。儘管現在評估模型五花八門,佔主導地位的仍然是專家評估。


評估誤差沒有改觀並不意味著我們對軟體開發的評估水平相對二十世紀八十年代沒有進步,本文將對軟體評估中我們所獲得一些經驗進行綜述。

那些我們所知道的:

為了支持我的論點,我選擇了以下了七個研究結果作為論據。

1、永遠沒有最好

目前有大量的研究總是試圖在眾多的評估模型和方法中評選出誤差最小的那一個。但這樣做的問題是,一些諸如項目大小與開發投入之間的核心關係的不確定性將會導致這種研究結果不具備穩定性。此外,影響投入的最大要素也是可變的,因此,評估模型和方法應該根據具體的項目來量身打造。

核心關係的不穩定性也可以說明為什麼誤差水平長時間以來沒有改觀。換句話說,如果有穩定的核心關係就可以使用更加簡單的模型了。當核心要素發生變化時,先進的統計模型就會對歷史數據產生過擬合現象(過擬合是機器學習中常用的一個術語,反映的是在學習訓練過程中,NN對訓練集達到非常高的逼近精度,但對測試集的逼近誤差隨著NN的訓練次數而呈現先下降,後反而上升的異常現象,即過擬合現象會導致更大的估計誤差)。所以,具體的評估方法就根據你的項目來定製吧。

2、評估超支的主要原因:用戶想要最低的成本

項目奪標的競爭壓力迫使開發人員儘量減少預算,如果在沒有價格競爭壓力的環境下就不會出現這種趨勢,反而會朝著相反的方向發展。顯而易見,來自客戶的壓力是導致預算過低的主要原因,因為客戶比較樂意選擇成本更低的開發商。

3、「峰峰值」過小

「峰峰值」指評估方案中的最大值和最小值之間的距離。這種方法是有缺陷的,例如置信區間是90%也不能全部囊括實際情況的不確定性。儘管事實證明我們沒有辦法確定精確的最大最小值,但是目前仍然使用這種辦法,最常見的是基於PERT(三點評估)的方法,投入的期望值很可能就出現在最大最小值之間。

對最大最小值的估計就是專家發揮的地方,優秀的軟體開發者通常有如何評估最大最小值的歷史經驗,並且能根據經驗做出合適的評估。

4、誤導效應(評估很容易被誤導並且難於從誤導中恢復過來)

所有對軟體開發的評估都需要專家的指導,即使使用正式模型評估也不例外。專家的評估很精確,卻也容易造成誤導。最易被誤導的是投入估計的負責人,當他們考慮到預算,客戶要求,日程等因素時,專家的評估指標就成了參考指標。如果不注意到這點,你很可能就會把專家的評估當成了標準,並且在項目進行的過程中不斷地去接近這些指標。


儘管對如何從誤導中恢復過來做了大量的研究,目前仍然沒有找行之有效的方法。所以項目負責人需要對這個這些指標有個清晰地認識,並且自己能量化這些指標。

5、歷史記錄有助於提高精確度

使用歷史數據和清單撰寫的文檔有助於提高估計的精確度。當有可參照的歷史記錄時,一些注意事項就不會被遺忘,以前的經驗能重新利用,還能避開以前走過的彎路。特別是在進行相似的項目時,就可以使用類比來進行估計,歷史文檔的好處就顯而易見。

儘管歷史記錄有著諸多的好處,很遺憾好多公司還沒有把他們當做一個工具用起來。

6、結合獨立估計,提高估計精度

不同渠道評估的均值一般要比單獨個體評估的結果精確。其中有一個重要的假設就是評估是相互獨立的,評估者來自不同的企業,具有不同的背景,使用不同的方法。即這是一個類似Delphi的評估方法(Delphi,一種在專家個人判斷法和專家會議法的基礎上發展起來的專家調查法,它廣泛應用在市場預測、技術預測、方案比選、社會評價等眾多領域),比如Planning Poker(計劃撲克(Planning Poker)的目的是確保開發團隊中的每個人都積極地參與到評估過程並貢獻他或她的知識。該活動在可能有很多未知變量且為了得到精確的估計,需要很多領域的專業知識。撲克會話通常是開發團隊、項目負責人和引導人參與。在計劃撲克(Planning Poker)開始前,引導人將開發團隊聚在一桌並給每個成員分發一副專用牌,這也是撲克這個名字的來由。引導人和負責人沒有牌。)就是基於這種方法的。

一個基於組的結構化的方法因為知識和經驗的共享比機械的合併會產生更好的效果。當然這種方法也存在風險性,比如組內的某種思想會滋生消極因素。

總體看來,評估模型的精度並沒有專家評估的精度高。但是能將這兩種方法結合起來就可以相互取長補短。

7、評估也會帶來弊端  

評估不僅僅是預測未來,更多的是約束未來。估計得太低會產生豆腐渣工程,根據帕金森定律,估計得太高又會降低生產力。


這就是為什麼你要考慮到底需不需要進行評估的原因。如果你壓根不需要評估或者後期才需要評估,不進行評估和後期來評估才是妥當的做法。敏捷開發就是避免早期評估潛在危害的一種好辦法,它是根據前期的反饋來制定後期計劃的一種方法。

那些我們不知道的事

儘管進行了大量的研究,評估工作仍然面臨著諸多挑戰,但至今仍然沒有十分令人滿意的方案。以下三大挑戰表明,我們自身的知識還遠遠不夠。

1、如何精確評估大型複雜項目

大型的項目對投入有更高的要求,不僅因為大型項目具有更多的因素,還因為它可參照的經驗和歷史記錄比較少。由於大型項目還涉及到業務流程的變化以及和現有軟體利益對接等問題。

2、如何精確評估項目規模和複雜度

長時間以來的研究仍然沒有找到十分有效的方法來評估項目的規模和複雜度。

3、如何衡量和預測生產力

即使你有好方法來計算項目的規模和複雜度,你依然要估計團隊或個人的工作進度和生產力。這是很難的,因為不同的軟體開發者或團隊,工作效率很有可能大不相同。這項指標的估計除了跟進工作進度來評估之外沒有更好的辦法。


目前,我們還不知道項目規模和經濟效益是正相關還是負相關。大多數基於經驗的研究表明:軟體項目的規模關係著經濟效益是正相關的,而軟體從業者卻認為是負相關的。不過這兩種觀點至今仍沒有定論。

我們目前所掌握的軟體開發投入評估的相關知識還不足以應對評估工作中面臨的挑戰,然而,這些知識可以為我們提供指導。特別是如果軟體公司做到了以下幾點,評估的精準度有望提高:

  • 將簡單模型和專家評估相結合,為你的項目量身打造評估模型。
  • 使用歷史記錄設置合適的最大-最小值。
  • 避免專家誤導和不相關信息的幹擾。
  • 使用自己組織特有的文檔清單。
  • 使用基於獨立性假設的有組織的,有結構的評估方法。
  • 避免基於不完整信息的前期估計。

來自投標的壓力會迫使評估者去降低預算,從而可能會導致豆腐渣工程,這中現象在別的領域稱之為「贏家的詛咒」。從長遠來看,客戶應該要意識到他們對固定價格、低價格的執著將對項目產生的消極作用。到那時,軟體公司也應該提高自身的意識,當他們因為價格優勢而中標時,應該考慮考慮如何避開這「贏家的詛咒」。


(英文出處:InfoQ,譯者金色的妖精,各位親,想要贏取積分和禮物,趕快來參與CSDN CODE翻譯任務吧,猛戳 這裡 哦!)

相關焦點

  • 軟體工程師薪水知多少?
    幾十年前,如果需要一個軟體應用程式,只需聘請一個工程師,所有問題便會迎刃而解。然而,隨著技術的進步,開發中不斷出現新的挑戰,對軟體開發技能的需求也急劇增加。在這樣的情況下,軟體工程師的薪水暴漲便不足為奇了。Bjiednc說到高薪人們就會精神振奮,我們放眼全球來看一看。哪個國家/地區薪水最高?
  • 從技術角度剖析西安軟體公司軟體開發管理的短板
    在西安軟體開發行業打拼很多年了,一些心得寫下來和西安軟體公司的同行們分享。越來越覺得說服別人的能力實在太重要了,特別是軟體開發過程中,說服別人放棄他的思想,採用公司統一的方式方法又省時間又省力,同一個軟體模塊不用反覆開發多次可以集中公司的力量來完善某個公用部分,每個程式設計師都開發一次重複建設一次,實在是太浪費公司的資源了。
  • 交通銀行招軟體開發、數據開發、應用安全等崗位工程師
    工作地點:上海截止日期:2021-06-30軟體開發工程師職位描述:(1)承擔計算機應用系統的設計、開發、單元測試等工作,編寫和完善技術文檔;(2)參與業務需求分析、架構方案設計、應用系統軟體開發、測試、運行維護、配合業務部門推廣等工作;(3)參與對分行提供應用系統技術培訓
  • SPC軟體應用你知多少?答案全在這裡
    不過,若想做好產品質量檢測與流程控制,還需要一款SPC軟體來實施全程、實時監管與分析。可是,究竟什麼是SPC軟體呢?SPC軟體應用範圍有哪些?在介紹SPC軟體應用範圍之前,先看看什麼是SPC軟體吧?顧名思義,SPC軟體則是一種進行統計過程控制的軟體。
  • APP軟體開發與系統開發的區別
    APP軟體開發與系統開發有什麼區別?APP軟體開發是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟體一般是用某種程序設計語言來實現的。通常採用軟體開發工具可以進行開發。
  • 自動變速器電控系統及其應用軟體開發技術
    《自動變速器電控系統及其應用軟體開發技術》提出的開發流程、控制策略、控制算法等基本理論和方法、技術,不僅可以用於 AT自動變速器的開發,對 CVT、DCT、AMT等類型的自動變速器的開發也具有非常重要的參考價值,也是混合動力變速器、插電式混合動力變速器、電動汽車用自動變速器等新能源汽車用自動變速器或機電耦合系統總成電控系統及其應用軟體開發的基礎
  • 華為軟體開發雲釋放莫比嗨客開發潛能
    高增長帶來新挑戰然而,快速的業務增長在給莫比嗨客帶來巨大收益的同時,也對莫比嗨客的軟體研發交付帶來了不小的挑戰。由於業務的迅猛增長,莫比嗨客需要進行大量的軟體研發工作,但落後的開發工具和開發平臺卻成為了莫比嗨客快速進行軟體開發的瓶頸,軟體開發效率與業務發展的不匹配已經成為莫比嗨客亟待解決的問題。
  • 軟體開發流程的6個步驟是什麼?怎樣繪製軟體開發流程圖?
    軟體開發流程圖的8個步驟是什麼?怎樣繪製流程圖?大家可能見過各種各樣的軟體,這個軟體有哪些功能,哪個軟體什麼地方比較好用。這些都是我們的用戶體驗,那麼大家知道軟體開發流程的步驟有什麼,又該怎樣在電腦上繪製軟體開發流程圖嗎?今天小編給大家分享一下。
  • 量子計算對軟體開發可能意味著什麼?
    學術界和工業界都對訪問優質的量子軟體有共同的需求,這是可靠的,並且與硬體保持同步。他們想知道自己正在獲得最佳性能。高盛(Goldman Sachs)量子研究負責人Will Zeng表示,總體而言,這仍是量子軟體開發的初期,還有新發現。
  • 破軟體開發團隊管理難,飛算全自動軟體工程平臺助企業破局
    有著二十多年軟體開發從業經驗的飛算雲智總裁陳定瑋這樣說道。由於團隊管理滿意度與「決策者預期」、「產出結果周期」、「完成結果」等要素直接相關,這是軟體開發團隊管理的特殊性。一般企業投入越大、期待越高,希望軟體開發周期快、質量好,但往往事與願違。
  • 斷卡行動| 「斷卡」知多少?
    斷卡行動| 「斷卡」知多少?這裡有兩個方法一是用天眼查等軟體查詢先下載天眼查軟體或者登陸網頁版輸入姓名查一下這個名字下是否有公司,比如二是去市場監管部門查詢如果天眼查沒查出自己要的結果,可以前往市場監管部門去查詢,記得攜帶身份證(2)查詢名下手機卡目前國內主要有移動、聯通、電信三大運營商據了解,想要查詢名下有多少張手機卡,需要逐個查詢查詢三家運營商的方式如下
  • 德州儀器新KeyStoneTM SoC與評估板助力啟動高性能計算系統開發
    日前,德州儀器 (TI) 宣布推出一款最新片上系統 (SoC) 66AK2H14 以及面向 KeyStoneTM 66AK2Hx 系列 SoC 的評估板 (EVM),進一步簡化處理密集型應用的開發。
  • SpaceX正在尋找一名軟體工程師來開發星鏈的「行動應用程式」
    工程師們正在積極評估這些網際網路衛星的性能;員工們目前正在對星鏈網絡進行私密性測試。「開發通過Starlink衛星將客戶連接到網際網路的行動應用程式」。工程師將組成一個團隊來開發Android和iOS的「Starlink Portal」應用程式,讓SpaceX的客戶「擁有管理帳戶和網際網路接入的無縫體驗」。
  • 遊戲開發軟體匯總
    2.PASCALPascal語言廣泛用於各種軟體,程序分為名稱(program後自擬)、設置(var後規定)、開始(begin)、程序(正文)、讀取(read/read ln)、結束(end),結構層次強,嚴謹而又緊密。
  • 軟體開發需要學什麼?
    很多想學軟體開發的同學都在問學軟體開發需要學什麼,今天小編特意諮詢了北大青鳥信獅教育軟體開發專業的老師,老師是這樣說的:軟體開發目前涵蓋的領域還是比較廣泛的,不同的開發方向需要掌握不同的知識結構,開發環境和設備也有所區別。
  • 萊布尼茨學會分析科學研究所開發新軟體首次實現自動檢測蛋白質組...
    萊布尼茨學會分析科學研究所的研究人員在最新一期《自然生物技術》(「Natrue Biotechnology」)期刊中表示已研發出新軟體,可以自動將數據轉化為統一格式並同時開展評估和運用。現今重要的數據分析手段之一是質譜分析法,從諸如細胞或組織的繁雜大生物分子中分析各自組成及其數量和變化。通過質譜分析法可以將混合物的不同成分根據質量分離出來,從而得到其濃度和組成。
  • 為STM32開發者而打造的開發軟體-TrueStudio
    對於開發STM32工程師來說,keil-MDK編譯器似乎是唯一的編譯工具,不過現在情況發生了改變,因為意法半導體公司針對STM32開發了一款全新的編譯軟體-TrueStudio。TrueStudio是一個強大的基於Eclipse的C / C++集成開發工具。TrueStudio for STM32是一個靈活的、可擴展的IDE和調試STM32單片機的強大工具。TrueStudio基於開放標準(Eclipse和GNU)和擴展代碼的專業特點,給系統的結構和動態行為提供了獨特的見解。
  • 學習軟體開發需要準備什麼?
    2020年,隨著Internet的不斷發展,現在Internet已經融入到每個人的生活中,所以在計算機行業的發展中,軟體開發技術就顯得非常重要,因為它是與我們的生活息息相關的,選擇許多人想學習Java軟體開發技術,但是如何做?
  • 人口普查知多少?
    人口普查知多少?來源:科普山東有你想看的精彩原標題:《人口普查知多少?》
  • 軟體項目工作量評估方法簡述之功能點 FPA 方法
    (二) 重要概念功能點估算法是從用戶視角出發,對軟體的規模從邏輯設計的角度進行度量的標準方法。(三) FPA 估算方法基本步驟 1、 收集可得的文檔文檔可以包括需求、數據/對象模型、類圖、數據流圖、用例、過程描述、報表顯示、界面顯示、用戶手冊,以及其它軟體開發文檔。