系統的架構設計用來定義應用程序的基本特徵和行爲。
架構驅動
的軟件開發是構建複雜系統的最有效方法,架構驅動的方法優於需求驅動,文檔驅動和方法論(抽象推理的能力)驅動。雖然方法論(抽象推理的能力)能夠幫助咱們取得項目的成功,可是它並非決定性的因素。 全部架構的核心:關注點分離
(分離角色和職能,分離以後的結果是對具體功能的高度抽象)。前端
架構設計的過程其實也是在梳理需求的過程當中不斷標識
、封裝
和操縱
關注點。
根據迪米特法則
和開閉原則
,分離以後的職責對象應該高度獨立
和封閉
(優勢是不須要關係它們內部的具體實現,只關心輸入和輸出便可)。架構
更容易構造有效的(職責)角色
和強力的模型
,變的更好開發,測試,管理和維護。性能
一、抽象職責(功能模塊)
之間的相互做用
二、抽象職責
和數據流
之間的關係
測試
一、擴展性架構設計
二、彈性(伸縮性)設計
三、靈活性code
四、穩定性對象
一、靈活性
響應外部環境變化的能力,架構中是否便捷作一些改變,功能模塊間的緊耦合是下降靈活性的關鍵。開發
二、易於部署文檔
三、易於開發
四、可測試性
職責和數據流的劃分,便於分塊測試。
五、伸縮性
系統是否利於擴展,緊耦合與職責劃分不清晰是下降伸縮性的關鍵。
六、性能
任何架構的本質是在處理數據流,因此數據流的流轉效率決定了該架構的性能。
本文提出的這些觀點實際上也是屬於架構設計的方法論
。在掌握並熟練運用了這些方法論以後並實踐到項目中,慢慢的纔會搭建出更好的架構。
ps:因爲本人比較懶,因此沒有針對一些名詞作具體講解和示例。