重點摘要#

  • 系統的維護從長遠來看會消耗比初始開發更多的資源
  • 初始開發階段走的捷徑會在日後產生顯著的維護成本
  • 將現有系統強行用於不適合的用途是嚴重的架構錯誤
  • 發現架構缺陷時應立即修正 – 拖延越久,利息支付越高

詳細內容#

維護成本遠超開發成本#

在架構一個系統時,記住一個重要事實:維護從長遠來看會消耗比初始開發更多的資源。在初始開發階段走的捷徑可能導致日後顯著的維護成本。

跳過測試的代價#

例如,你可能聽說單元測試不能直接創造價值,於是告訴開發者可以跳過嚴格的測試。這會導致:

  • 交付的系統在未來更難以變更
  • 做出變更時信心降低
  • 系統需要更多手動測試來驗證較小的變更集
  • 導致脆弱性增加和維護費用升高
  • 設計品質不如經過完整測試的設計

一個嚴重的架構錯誤是強行將現有系統用於不適合的用途,僅僅因為「使用現有系統可以降低成本」。例如,使用 BPEL 架構元件加上資料庫觸發器來實作非同步訊息系統。在需求明確需要訊息架構的情況下,一開始就應該選擇正確的架構。

及時修正錯誤#

除了在初始開發階段避免走捷徑,及時糾正發現的設計缺陷同樣重要。設計不良的功能可能成為未來功能的基礎,使日後的糾正行動更加昂貴。

例如,如果你發現選用了不適當的函式庫,應該儘快替換它們。否則為了讓它們適應不斷演變的需求,你會需要額外的抽象層來隱藏前一層的不良匹配。你正在為自己建造一團糾結的麻線球 – 每加一層就更難解開。

作為架構師,當你遇到架構問題或設計缺陷時,堅持立即修正,趁現在修正最便宜的時候。你拖延得越久,利息支付就越高。

— By Scot Mcphee