首頁>技術>

架構設計的流程

所有軟體開發方法都要解決從需求到實踐的轉換問題,為了提高軟體的質量,前輩們提出了分析工程和各種建模技術的需求,但是需求和設計之間的鴻溝還是很難逾越的,也就是說,缺乏從需求到設計進行銜接並做決策的中間過程,於是軟體架構設計應運而生。

人們已經對架構設計提出了許多方法:工件驅動的方法、用例驅動的方法、模式驅動的方法、領域驅動的方法。這裡展示一種經典的架構設計過程模型,它沿用了 RUP 中迭代增量的思想,由分析、描述、選擇、構造和組合5個階段組成,如圖5.5所示。

圖5.5

有興趣的讀者可以學習架構設計的元模型,來設計屬於自己領域或者產品線的設計過程模型,其實下面的模型也是元模型的例項化。

如圖5.5所示,系統依據需求規格說明書分析出功能需求和架構需求,透過用例和場景的描述,將需求分為關鍵的、次要的和可選的3類。關鍵需求決定架構,結合軟體架構風格和通用知識選擇最關鍵、影響最大的子系統分析設計併產生構件。組合就是定義構件介面,構件作為一個封閉的功能實體對外提供互動介面,並透過連線件將構件連線起來形成最終的軟體架構描述。這是個不斷迭代的過程,在每一次迭代中,都選取並實現一組用例和場景來確認並完善架構。

這個過程模型看似很流暢,架構師在設計時卻很難把握它的正確性和精準性,而且用它構架的系統是否對後續設計開發形成一種原則上的指導是很難說的。我們知道,層次化分析是解決複雜問題的一般性方法,下面的方法將從層次化的角度來設計系統的架構模型,它將直接指導開發人員實現系統,是一種架構設計的理想方式。

接著講講架構設計方法之四層驅動模型。在軟體開發過程中是存在多個層次的,對於每個層次,驅動其進行架構設計的因素也有所不同,所以更好的方式是,區分和建立必要的層次,從而形成一種層次化的多因素驅動的軟體架構設計模型。我們將整個軟體架構的設計劃分為4個層次:目標層、資訊層、構件層和實現層。同時,軟體的整體複雜性也透過這4個不同的抽象層次清晰地刻畫出來。模型中的每一層都有一種因素驅動著建模設計的進行:目標層的驅動因素是所要實現系統的各種相關角色;資訊層的驅動因素是目標層中的各種目標;構造層的驅動因素是資訊層中的各種資訊及其資訊活動;實現層的驅動因素是構件層中的類、物件、物件互動等各種面向物件設計的元素,實現層所產生的介面、類及其屬性、方法的具體語言程式碼及實現框架則對接下來的編碼實現階段直接提供支援。

架構設計的核心要素

一般來說,軟體架構需要關注效能、可用性、伸縮性、擴充套件性和安全性這5個要素,下面分別對這5個要素進行講解。

效能

效能是架構設計的一個重要方面,任何軟體架構設計方案都必須考慮可能帶來的效能問題。也正是因為效能問題幾乎無處不在,所以最佳化網站效能的手段非常多。

◎ 瀏覽器端:可以使用瀏覽器快取、頁面壓縮傳輸、合理佈局頁面、減少Cookie傳輸等手段,甚至可以使用CDN加速功能。

◎ 應用伺服器端:可以使用伺服器本地快取和分散式快取,也可以透過非同步操作方式來加快響應。在高併發請求的情況下,可以將多臺應用伺服器組成一個叢集共同對外服務,提高整體處理能力,改善效能。

◎ 資料庫伺服器端:可以使用索引、快取、SQL效能最佳化等手段,還可以使用NoSQL資料庫來最佳化資料模型和儲存結構等。

◎ 衡量架構效能的一系列指標:重要的指標有響應時間、TPS、系統性能計數器等,透過這些指標可以確定系統設計是否達標。

可用性

可用性即系統不間斷地提供服務的時間。幾乎所有網站都承諾7×24 小時提供服務,但任何網站都不可能完全做到,總會有一些不可用的時間,扣除這些不可用的時間後,就是網站的可用時間。一些架構可以做到4個9以上的可用性,也就是99.99%。

讓架構高可用的主要手段是冗餘,應用部署在多臺伺服器上同時提供服務,資料儲存在多臺伺服器上相互備份,任何一臺伺服器都不會影響應用的整體可用,通常的實現手段是將多臺伺服器透過負載均衡裝置組成一個叢集。

衡量一個系統架構設計是否滿足高可用的目標,就是假設系統中任何一臺或者多臺伺服器宕機,以及出現各種不可預期的問題,而這時系統整體是否依然可用。

伸縮性

大型網站需要面對大量使用者的高併發訪問和海量資料儲存,網站透過叢集的方式將多臺伺服器組成一個整體共同提供服務。所謂的伸縮性是指透過不斷向叢集中加入伺服器來緩解不斷增加的整體上的使用者併發訪問壓力和資料儲存需求。

衡量架構伸縮性的主要標準就是能否用多臺伺服器構建叢集,是否容易向叢集中新增新的伺服器,加入新的伺服器後是否可以提供和原來的伺服器無差別的服務,以及叢集可容納的總伺服器數量是否有限制。

擴充套件性

不同於其他架構要素主要關注非功能性需求,網站的擴充套件性架構直接關注網站的功能需求。網站在快速發展,功能也在不斷擴充套件,能夠快速響應需求的變化,是設計網站可擴充套件架構的主要目標。

衡量網站架構擴充套件性好壞的主要標準就是在網站增加新的業務產品時,是否可以實現對現有產品透明、無影響,不同產品之間是否很少耦合等。網站可擴充套件架構的主要手段事件驅動架構和分散式服務。事件驅動通常利用訊息佇列實現,透過這種方式將訊息生產和處理邏輯分離。

伺服器服務則是將業務和可複用服務分離,透過分散式服務框架進行呼叫。在新增產品時,可以透過呼叫可複用的服務來實現自身的業務邏輯,對現有產品沒有任何影響。

安全性

網際網路是開放的,網站的安全架構就是保護網站不受惡意訪問和攻擊,避免網站的重要資料被竊取。衡量網站安全架構的標準就是針對現存和潛在的各種攻擊和竊密手段,是否有可靠的應對策略。

19
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 跟光磊學Java開發-Java集合框架進階