讀古今文學網 > 程序員必讀之軟件架構 > 軟件架構 >

軟件架構

應用程序和系統架構相對較容易理解,但人們對「軟件架構」一詞的理解不盡相同。我想把軟件架構定義得盡可能簡單,而不去受制於各種定義的複雜性和細微差別。對我而言,軟件結構就是應用程序和系統架構的結合。

換句話說,從代碼結構和基礎到將代碼成功部署到生產環境,與一個軟件系統重要元素相關的所有東西就是軟件架構。從開發者的角度考慮軟件開發,關注點多數會放在代碼上。在這裡,我們考慮的是有助於構架更好軟件的東西,比如面向對象的原則、類、接口、控制反轉、重構、自動化單元測試、代碼整潔和其他不勝枚舉的技術實踐。如果你團隊裡的人都只考慮這些,那麼誰來考慮其他事情?

  • 橫切關注點,比如登錄和異常處理;
  • 安全性,包括認證、授權和敏感數據保密;
  • 性能、可伸縮性、可用性和其他質量屬性;
  • 審計及其他監管需求;
  • 客觀環境的約束;
  • 互操作性、與其他軟件系統的集成;
  • 運營、支持和維護的需求;
  • 結構和整個代碼庫解決問題、實現特性的方法的一致性;
  • 評估正在構建的基礎有助於交付按計劃進行。

有時你需要退一步,遠離代碼和你的開發工具。這並不意味著低層次的細節不重要,因為可用的軟件最終還是要靠交付可運行的代碼。細節同樣重要,但就大局而言,對軟件的整體視角可以確保你的代碼符合整體願景而非背道而馳。