《人月神話》閱讀筆記6

Hbro發表於2024-06-17
  1. 對於大多數專案來說,初始開發的系統通常並不完美。可能存在速度慢、體積過大或者難以使用的問題。解決這些問題的唯一方法就是重新設計一個更加靈活、高效的系統。因此,構建一個試驗性的系統,然後丟棄它是很常見的做法。

  2. 一旦認識到試驗性系統必須被構建和丟棄,重新設計就是不可避免的。

  3. 為了應對變化,系統設計需要具備細緻的模組化、可擴充套件的函式、精確完整的模組間介面設計和完備的文件。另外,還可能需要採用呼叫佇列和表驅動技術。同時,使用高階語言和自文件技術可以減少變更引起的錯誤。採用編譯時的操作來整合標準說明也能幫助調整變化。

    變更的階段化是一種必要的技術。每個產品都應該有數字版本號,每個版本都應該有自己的日程表和凍結日期。在此之後的變更屬於下一個版本的範疇。

  4. 為變更計劃組織架構和團隊。

  5. 在軟體維護過程中,缺陷修復往往會引入新的 bug,整個過程就像是前進兩步,後退一步。由於維護人員通常不是編寫程式碼的開發人員,並且缺陷修復總會引入新的 bug,因此程式的維護成本非常高。

    使用能夠消除或至少指明副作用的程式設計方法可以降低維護成本。設計實現的人員越少、介面越少,產生的錯誤也就越少。

  6. 維護工作會破壞系統的架構,增加系統的混亂程度。隨著時間的推移,系統變得越來越無序,無法再成為下一步進展的基礎。因此,系統的重新設計是必要的。

    軟體開發是為了減少系統的混亂度,而軟體維護則會增加混亂度。即使是最熟練的軟體維護工作,也只能放緩系統退化的程序。

相關文章