談軟件架構(gòu)就不得不說說五視圖方法論。
一、多階段還是多視圖
軟件架構(gòu)設(shè)計是多視圖的,也是多階段的,首先是多階段的。
先左后做——這叫階段,齊頭并進——這叫視圖。
二、軟件架構(gòu)設(shè)計的5視圖
根據(jù)關(guān)注角度的不同,軟件架構(gòu)又分為邏輯架構(gòu)、開發(fā)架構(gòu)、運行架構(gòu)、數(shù)據(jù)架構(gòu)和物理架構(gòu)。
邏輯架構(gòu):著重考慮功能需求,系統(tǒng)應(yīng)當向用戶提供什么樣的服務(wù),關(guān)注點主要是行為或職責的劃分。邏輯架構(gòu)關(guān)注的功能,不僅包括用戶可見的功能,還應(yīng)當包括為實現(xiàn)用戶功能而必須提供的輔助功能。邏輯架構(gòu)更偏向我們所說的"分層",像經(jīng)典的"三層架構(gòu)"。邏輯架構(gòu)的靜態(tài)方面是抽象職責的劃分,動態(tài)方面是承擔不同職責的邏輯單元之間的交互與協(xié)作關(guān)系。
開發(fā)架構(gòu):著重考慮開發(fā)期間的質(zhì)量屬性,關(guān)注點是在軟件開發(fā)環(huán)境中軟件模塊(包)的實際組織方式,具體涉及源程序文件、配置文件、源程序包、編譯打包后的目標文件,還包括應(yīng)用程序依賴的SDK、三方庫、中間件以及開發(fā)的系統(tǒng)將運行于其上的系統(tǒng)軟件和邏輯架構(gòu)有緊密的關(guān)聯(lián)。
運行架構(gòu):著重考慮軟件運行期間的質(zhì)量屬性,關(guān)注點是系統(tǒng)的并發(fā)、同步、通信等問題,這勢必涉及到進程、線程、對象等運行時概念。運行架構(gòu)的靜態(tài)方面關(guān)注軟件系統(tǒng)運行時的單元結(jié)構(gòu),動態(tài)方面關(guān)注運行時單元之間的交互機制。例如比較常見的"線程同步"問題、死鎖問題、對象的生命周期問題等。
物理架構(gòu):重考慮安裝和部署需求,主要關(guān)注軟件運行的系統(tǒng)、網(wǎng)絡(luò)、服務(wù)器等基礎(chǔ)設(shè)施以及如何通過服務(wù)器部署和配置網(wǎng)絡(luò)環(huán)境,來實現(xiàn)應(yīng)用程序的可伸縮性、高可用性等。
數(shù)據(jù)架構(gòu):著重考慮數(shù)據(jù)需求,關(guān)注點是持久化數(shù)據(jù)的存儲方案,不僅包括實體及實體關(guān)系數(shù)據(jù)存儲格式,還可能包括數(shù)據(jù)傳遞、數(shù)據(jù)復制、數(shù)據(jù)同步等策略問題。如何選擇關(guān)系型數(shù)據(jù)庫、NOSQL,如何保障數(shù)據(jù)存儲層面的性能、高可用性、災(zāi)備。
前三種視圖,可以歸納為軟件架構(gòu),而后兩種架構(gòu),則歸為系統(tǒng)架構(gòu)。






