David Wood — Fredericksburg, Virginia, USA

軟體生命週期的真實成本分布#

業界傾向於把開發視為軟體生命週期中最重要的環節,各種方法論、書籍、文章也大多聚焦於開發。然而,開發並不是最花錢的地方

軟體系統生命週期成本中,60% 來自維護,開發僅佔 40%。實際維護成本因系統類型和部署環境而異,範圍約在 40% 至 80% 之間。

60/60 法則的由來#

在維護成本的構成中:

  • 60% 源於使用者驅動的功能增強(需求變更)
  • 23% 源於系統遷移活動
  • 17% 源於錯誤修復

「維護佔生命週期成本 60%」加上「60% 的維護工作屬於功能增強」,便形成了所謂的 60/60 法則——軟體維護領域少數幾個公認的「定律」之一。

補充: 遷移活動(將系統移至新硬體或軟體環境)本質上也是一種需求變更。若將遷移納入計算,超過 80% 的維護活動在某種程度上都與需求變更有關

理解程式碼:被忽視的成本#

維護工作中,約 30% 的時間花在理解現有軟體產品上。無論是功能增強、系統遷移還是錯誤修復,都必須先理解程式碼才能動手。這個理解成本,在維護階段取代了開發階段的新設計工作。

注意: 把資源全部押注在開發方法論的改進上,效益其實有限。即便能將錯誤減少 75%,也只影響了 17% 的維護工作——對遷移和功能增強的時間與成本毫無幫助。

重新思考軟體開發的重點#

60/60 法則提示我們:應該把精力放在建立可維護的系統上

重點: 軟體必須為變更而設計,才能在面對新需求時保持靈活性。這是軟體工程的下一個重大挑戰。

我們至少知道部分答案:軟體元件之間需要更鬆散的耦合(loosely coupled)——就像全球資訊網的元件在最後一刻才以靈活方式相互綁定一樣。設計這樣的系統,才是應對 60/60 法則的正道。