<讀書筆記>軟體調試之道 :從大局看調試-零容忍策略

來源:互聯網
上載者:User

標籤:

聲明:本文檔的內容主要來源於書籍《軟體調試修鍊之道》作者Paul Butcher,屬於讀書筆記。歡迎轉載!

--------------------------------------------------------------------------------------------

缺陷優先

如何使缺陷修複與軟體開發相結合?

如何估計缺陷修複花費的時間?

如何確保項目不會陷入《人月神話》中所描述的無數缺陷修複的焦油坑中呢?

  1. 缺陷優先
  • 要採用早起缺陷修複原則,並且基於以下兩個原則
  1.    測試、代碼審查、讓使用者使用軟體要貫穿於整個開發過程中
  2.    缺陷修複要由於其它任何事情
  • 早期缺陷修複可以大大降低軟體啟動並執行不可靠性,並估計修複上所需要的大概時間以調整你的測試計劃,後期修複只會積累技術債務,也不知道何時能修複他們並結束項目。
  • 品質低下具有傳染性,因此要沒有破窗,軟體開發與維護,是一個持續與熵抗爭的過程

    2.調試的思維

  • 調試首先是一種心理活動,要保持健康的調試心態。天真的說,“沒有破窗”可以被理解為只有絕對完美的情況下才能實現。任何參加過軟體開發的人都知道,缺陷不可避免,無論多麼努力,總會有遺漏,如何解決這個問題?
  • 最有效思維模式是務實的零容忍策略,非常接近於零,但是用務實的心態去實現,雖然我們遠遠做不到完美,但是可以用正確的方式無限的接近它。
  • 採取無破窗策略時,要分清是缺陷還是特性,缺陷是無意識行為,其它都是特性,對於客戶來說二者可能一樣,但是軟體開發人員要分清,並且要明白特性就是軟體按照設計啟動並執行,問題沒有缺陷那麼嚴重。

   3.自己解決品質問題

  • 沒有快速修複缺陷的靈丹妙藥,唯一可靠的方法就是修複所有缺陷。 停止開發有缺陷的程式,構建實驗,觀察結果
  • 把不乾淨的代碼從乾淨的代碼中分離出來,如果沒有足夠的時間修複它,那麼就先阻斷它,這種方法的一個變化形式是採用“沙箱模型”來解決問題模組。
  • 錯誤分類,定期更新缺陷資料庫,並保證新建立項目具有合理的優先順序。
  • 缺陷閃電戰,即在一天、一周或者一個時期內,除了修複缺陷不做其它任何工作,但是要謹慎使用,期間一長,很容易讓人疲憊,並累垮每一個人。
  • 專項小組,是閃電缺陷戰的變形,讓一個小組在有限的時間內聚集在一起解決特殊的品質問題。

    4.修複已經發布的軟體時,要集中精力減少風險

  • 一個真正的修複可能涉及大範圍的軟體重構,深層次的軟體體系變化,在缺少發布過程的正常檢驗和各環節平衡的前提下,很難確定其帶來的連鎖反應,最終使事情變得更糟而不是更好。因此實施一個補丁時,治標不治本可能是一個更好的選擇。
  • 不要以為修複程式試一次修改就疏忽大意,要注意與這樣的修複產生關聯的潛在問題,因此要儘可能多的檢查。
  • 在開發版經曆完整的發布周期時,要得到一個完整的、解決根本的修複。

    5.向後相容

  • 確定代碼本身的修複不會引起相容性問題,迴歸測試可以查明向後相容性問題
  • 解決相容性問題,如果確認導致相容性問題,那麼需要按照下面的選擇
  1. 提供遷移辦法
  2. 實現一個相容模式
  3. 提供預警
  4. 不修複缺陷

6.海森堡缺陷

  • 如果在調試器下運行軟體,嘗試將插樁直接加到源碼中。
  • 海森堡缺陷依賴於某些不確定性因素,這本身就是一條線索,把你的任務變為尋找某種方法來收集你所需要的資訊,這種方法對軟體影響極小,保證不會改變它的行為
  • 修複該缺陷的唯一辦法就是比平時更仔細些,確保你真正瞭解潛藏的根本原因。
  • 在未瞭解問題本質前,不要假設你已經修複它了。比如缺陷是由一個未出生的變數引起的,那麼要弄明白未出生的變數如何引起你觀察到的行為?將其初始化為壞值,你能看到預期的結果嗎? 效能缺陷 尋找瓶頸,是哪個特定地區的代碼限制了整體效能 準確效能分析

7.嵌入式軟體

  • 調試嵌入式軟體是非常棘手的,不是它錯綜複雜,而是它所在的運行環境。
  • 利用嵌入式調試工具,可以通過網路電纜進行遠端偵錯,或者通過JTAG,SW線上調試,其中挑戰之一是軟硬體並行發展,通常修複一個硬體問題比解決軟體問題更難。
  • 提取資訊的痛苦過程,一個LCD、LED、串口等手段當做通訊通道往往就夠了,雖然並不方便,但是它是可能的。
  • 利用邏輯分析儀作為軟體的調試工具,解決時序錯誤!

     8. 第三方軟體的錯誤

  • 不要太快去指責,第三方也只是代碼,也會包含缺陷,首先要懷疑自己的代碼。
  • 如果確信第三方代碼存在缺陷,那麼出了提交錯誤報表並等待解決,別無它法,最好是短期內擱置問題。
  • 開原始碼,很多開源項目只獲得了有限的關注,因此其開源不意味著調試的結束。
  • 開源社區的一個偉大之處是,為我們提高了高品質、免費的軟體,往往高品質的支援人員也是免費的。因此要學會有效尋求協助。

<讀書筆記>軟體調試之道 :從大局看調試-零容忍策略

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.