1. 什么是架構設計?
架構設計就是一個系統的草圖。
軟件架構就是對軟件從整體到部分的描述,從開發到運行再到后期擴展的描述,從性能和安全可靠性進行描述。
2. 架構設計為了解決什么問題?
解決開發之初,也就是邏輯設計階段的問題 —— 系統如何開發,如:整個系統融合為一個系統開發,還是從業務角度將系統拆分為幾個獨立的子系統。
解決即將進入開發時的問題 —— 數據是如何持久化的、數據庫如何選型、非數據庫文件的存儲格式是怎樣等像這樣的存儲方案的確定。
解決開發過程中的問題 —— 如何保證開發質量、如何分層、代碼可擴展性、使用的設計模式、依賴了那些框架、開發語言等。
解決開發完成后的問題,也就是進入運行階段 —— 如何保證運行期間的質量屬性、性能、可伸展性等,主要是系統運行進程的划分,以及進程之間通過線程來通信。
另外,如果系統並非是單機運行,還需考慮系統的物理部署,系統部署在哪個服務器上,這些服務器配置性能能否勝任系統的運行,操作系統選型,以及系統部署的網絡拓撲圖,還有就是保證數據安全的數據備份是怎樣設計的。
3. 架構設計的五視圖法
我們剛才從五個不同的角度知道架構設計需要解決的問題,那么使用五視圖法就更加系統的分析設計我們架構了。


從這幅圖里面我們可以看出架構設計五視圖中各個角度需要解決的問題了,並且可以看出他們之間的聯系了。
1)物理架構
物理架構的目的是 —— 確定物理節點和物理節點的拓撲結構;
其中物理節點包括 —— 服務器、PC機、專用機、軟件安裝部署燒寫以及系統軟件的選型;
拓撲結構明確物理節點的關系。
2)運行架構
運行架構的目的是 —— 確定控制流和控制流的組織;
其中控制流包括 —— 進程、線程、服務程序;
控制流組織包括系統的啟動與停機、控制流通訊、同步與加鎖。
3)開發架構
開發架構的目的是 —— 確定程序單元以及程序單元的組織結構;
其中程序單元包括 —— 源文件、配置文件、程序庫、框架、目標單元;
程序單元組織包括project划分、project目錄結構、編譯依賴關系。
4)邏輯架構
邏輯架構的目的是 —— 職責的划分,並明確其與協作關系;
其中職責的划分注意邏輯的分層、子系統以及關鍵類的定義;
協作的定義關注接口的定義與協作關系的明確。
5)數據模型
數據架構的目的是 —— 確定要存儲的數據以及存儲格式;
其中存儲的數據可以是文件、關系數據庫、實時數據庫;
存儲格式包括文件格式、數據庫圖表。
來源於https://blog.csdn.net/degwei/article/details/51489444,感謝前輩,文章寫得很好^ _ ^
