重點摘要#

  • 好的架構師降低複雜性,偉大的架構師理解變化的影響 – 不僅在軟體模組中,還在人與系統之間
  • 架構師的角色不是管理變化,而是確保變化是可管理的
  • 變化的廣度和複雜性無法事先完全預見,但架構師可以決定這些變化是否會使專案崩潰
  • 降低複雜性很重要,但降低複雜性不等於簡單性

詳細內容#

變化的多種面向#

變化可以以多種形式出現:

  • 功能需求改變
  • 擴展性需求演進
  • 系統介面被修改
  • 團隊成員來來去去
  • 還有更多 ⋯

架構師的角色不是管理變化,而是確保變化是可管理的(change is manageable)

分散式系統中的變化影響#

以一個高度分散式的解決方案為例,它跨越多個應用程式並依賴各種中介軟體來黏合各部分。業務流程的一個變化可能造成嚴重的影響,如果依賴關係沒有被正確追蹤或以視覺化模型準確呈現的話。當變化影響到資料模型、破壞現有介面,而現有的長時間執行的有狀態交易必須在舊版本下完成時,影響尤其顯著。

緩解變化影響的工具和技術#

  • 進行小規模、漸進式的變更
  • 建立可重複的測試案例,並經常執行
  • 讓建立測試案例更容易
  • 追蹤依賴關係
  • 系統性地行動和回應
  • 自動化重複性任務

風險評估#

架構師必須估計專案範圍、時間和預算各方面的變化風險,並準備在影響最大的區域投入更多時間。衡量風險是了解應該把寶貴時間花在哪裡的有用工具。

降低複雜性很重要,但降低複雜性不等於簡單性。理解變化的類型和影響對你的解決方案帶來的回報,在中長期來看是不可估量的。

— By Doug Crawford