什麼是架構
-
軟件架構是一張開發藍圖,是一個整體的規劃,即軟件工程的指導方針,軟件開發的主要目標如圖所示:
-
優秀的軟件架構提供迅速響應,擴展靈活;還要具備美觀性,代碼要簡潔,易於閱讀、維護、能使維護者對功能產生更清晰的認識,能夠快速地處理變化
軟件架構設計的關注點
- 軟件架構設計應該關注 – 變化
軟件架構設計的本質和目的
- 本質降低軟件熵
- 目的:降低因需求增加導致的軟件熵增加從而導致的成本增加
架構設計模式原則
- 架構的細節需要運用一些經典的設計模式原則,比較常用的原則之一爲SOLID原則
SOLID原則
- 單一職責原則(SRP): 每一個類都應該只具有一種職責
- 開放封閉原則(OCP) : 對於軟件對象擴展是開放的,修改是封閉的,應該將統一的功能抽象成一個共有的接口,具體到每個對象中去實現
- 里氏替換原則 (LSP) : 繼承應該保證有關超類型對象的任何屬性也適用於子類型對象
- 依賴倒置原則 (ISP) : 程序要依賴抽象的接口而不要依賴具體的實現 – 面向接口編程
- 接口分離原則 (DIP): 客戶端不應該依賴於它不需要的接口或方法,類於類之間的依賴應該建立在最小的接口之上(接口不應該設計的過於臃腫而導致系統解耦困難,增加重構的複雜度)
架構設計步驟
- 認識系統:認識系統的數據模型、業務組成、模塊組成
- 設計系統:選擇合適的架構模式,對架構模式調研分析,確定系統架構設計方案
- 創建系統:選擇系統的實現環境,對系統進行部署,進入開發/改造階段
- 收集反饋:系統創建完成,持續調研,收集反饋,對系統做下一步優化規劃
認識系統
- 目標:
- 設計者希望系統是什麼?
- 使用者希望系統是什麼?
- 成本預估目標如何?
- 明確的問題
- 現有系統存在的問題(內部)
- 影響系統的外部條件是什麼(外部)
設計系統
- 兩個階段
- 技術選型
- 架構模式選型
- 注意的問題
- 對於選定的技術和架構模式,團隊學習成本和接受度如何
- 選定的模型存在什麼優勢和劣勢,團隊成員對此情況的瞭解程度
- 選定技術模型流行度如何,以及流行原因
創建系統
- 託管代碼
- 跟蹤進度
- 完成後進行復盤
收集反饋
- 代碼評審
- 匿名留言
- 合作交流
- 社區討論