1. 程式人生 > >軟體體系結構複習要點——chapter 3 軟體體系結構風格

軟體體系結構複習要點——chapter 3 軟體體系結構風格

Chapter 3 軟體體系結構風格

1. 軟體體系結構風格概述:

●軟體體系結構設計的一個核心問題是能否使用重複的體系結構模式,即能否達到體系結構級的軟體重用。

●軟體體系結構風格是描述某一特定應用領域中系統組織方式的慣用模式。體系結構風格定義一個系統家族,即一個體繫結構定義一個詞彙表和一組約束。詞彙表中包含一些構件和連線件型別,而這組約束指出系統是如何將這些構件和連線件組合起來的。體系結構風格反映了領域中眾多系統所共有的結構和語義特性,並指導如何將各個模組和子系統有效地組織成一個完整的系統。按這種方式理解,軟體體系結構風格定義了用於描述系統的術語表和一組指導構件系統的規則。

●對軟體體系結構風格的研究和實踐促進對設計的重用,經過實踐證實的解決方案也可以可靠地用於解決新的問題。體系結構風格的不變部分使不同系統可以共享同一個實現程式碼。只要系統是使用常用的、規範的方法來組織,就可使別的設計者很容易地理解系統的體系結構。

●軟體體系結構風格為大粒度的軟體重用提供了可能。但對於應用體系結構風格來說,由於視點的不同,系統設計師有很大的選擇餘地。要為系統選擇或設計某一個體繫結構風格,必須根據特定專案的具體特點,進行分析比較後再確定,體系結構風格的使用幾乎完全是特定的。

●軟體體系結構最關鍵的四要素:

    提供一個詞彙表、定義一套配置規則、定義一套語義解釋規則、定義對基於這種風格的系統所進行的分析

●通用體系結構風格:

    (1)資料流風格:批處理序列、管道/過濾器

    (2)呼叫/返回風格:主程式/子程式、面向物件風格、層次結構

    (3)獨立構件風格:程序通訊、事件系統

    (4)虛擬機器風格:直譯器、基於規則的系統

    (5)倉庫風格:資料庫系統、超文本系統、黑板系統

2. 管道和過濾器:

●優點:

    (1)使軟構件具有良好的隱蔽性和高內聚、低耦合的特點。

    (2)允許設計者將整個系統的輸入/輸出行為看成是多個過濾器的行為的簡單合成。

    (3)支援軟體重用。

    (4)系統維護和增強系統性能簡單。

    (5)允許對一些如吞吐量、死鎖等屬性的分析。

    (6)支援並行執行。

●缺點:

    (1)通常導致程序成為批處理的結構。

    (2)不適合處理互動的應用。

    (3)因為在資料傳輸上沒有通用的標準,每個過濾器都增加了解析和合成資料的工作,這樣就導致了系統性能下降,並增加了編寫過濾器的複雜性。

3. 分層系統:

●優點:

    (1)支援基於抽象程度遞增的系統設計。

    (2)支援功能增強。

    (3)支援重用。

●缺點:

    (1)並不是每個系統都可以很容易地劃分為分層模式。

    (2)很難找到一個合適的、正確的層次抽象方法。

4. C2風格:

●組織規則:

    (1)系統中的構件和連線件都有一個頂部和一個底部。

    (2)構件的頂部應連線到某連線件的底部,構件的底部則應連線到某連線件的頂部,而構件和構件之間的直接連線是不允許的。

    (3)一個連線件可以和任意數目的其他構件和連線件連線。

    (4)當兩個連線件進行直接連線時,必須由其中一個的底部到另一個的頂部。

●特點:

    (1)系統中的構件可實現應用需求,並能將任意複雜度的功能封裝在一起。

    (2)所有構件之間的通訊是通過以連線件為中介的非同步訊息交換機制來實現的。

    (3)構件相對獨立,構件之間依賴性較少。系統中不存在某些構件將在同一地址空間內執行,或某些構件共享特定控制執行緒之類的相關性假設。

5. 客戶/伺服器風格:

●主要組成部分:資料庫伺服器、客戶應用程式、網路

●優點:

    (1)對硬體和軟體的變化顯示出極大的適應性和靈活性,易於對系統進行擴充和縮小。

    (2)系統中的功能構件充分隔離。

    (3)將大應用處理任務分佈到許多通過網路連線的低成本計算機上,以節約大量費用。

    (4)具有強大的資料操作和事務處理能力,模型思想簡單,易於理解和接受。

●缺點:

    (1)開發成本較高。

    (2)客戶端程式設計複雜。

    (3)資訊內容和形式單一。

    (4)使用者介面風格不一,使用繁雜,不利於推廣使用。

    (5)軟體移植困難。

    (6)軟體維護和升級困難。

    (7)新技術不能輕易使用。

6. 三層客戶/伺服器風格:

●主要組成部分:資料庫伺服器(資料層)、客戶應用程式(表示層)、應用伺服器(功能層)

●優點:

    (1)允許合理地劃分為三層結構的功能。

    (2)允許更靈活有效地選用相應的平臺和硬體系統,具有良好的可升級性和開放性。

    (3)能並行而且高效地進行開發。

    (4)安全管理嚴格,管理層次更加合理和可控制。

●缺點:

    (1)若各層的通訊效率不高,整體也達不到所要求的效能。

    (2)設計時必須慎重考慮三層間的通訊方法、通訊頻度及資料量。

7. 瀏覽器/伺服器風格:

●主要組成部分:客戶端瀏覽器、Web伺服器、資料庫伺服器

●優點:

    (1)用通用瀏覽器實現了原來需要複雜的專用軟體才能實現的強大功能,節約了開發成本。

    (2)系統安裝、修改和維護全在伺服器端解決。

    (3)提供異種機、異種網、異種應用服務的聯機、聯網、統一服務的最現實的開放性基礎。

    (4)實現了跨組織的功能覆蓋,可以充分利用網路上的各種資源,維護工作量大大減少。

●缺點:

    (1)缺乏對動態頁面的支援能力,沒有整合有效的資料庫處理功能。

    (2)系統擴充套件能力差,安全性難以控制。

    (3)資料查詢等響應速度慢。

    (4)資料的動態互動性不強,不利於線上事務處理應用。

8. 正交軟體體系結構:

●組成部分:組織層(橫向)、線索(縱向)

●主要特徵:

    (1)正交軟體體系結構由完成不同功能的n個線索(子系統)構成。

    (2)系統具有m個不同抽象級別的層。

    (3)線索之間是相互獨立的(正交的)。

    (4)系統有一個公共驅動層(一般為最高層)和公共資料結構(一般為最低層)。

●優點:

    (1)結構清晰,易於理解。

    (2)易修改,可維護性強。

    (3)可移植性強,重用粒度大。

9. 基於層次訊息匯流排的體系結構風格:

●HMB:由北大楊芙清院士等人提出。

●訊息匯流排:


●訊息過濾:訊息匯流排對訊息過濾提供了轉換和阻塞兩種方式。訊息過濾的原因主要在於不同來源的構件事先並不知道各自的介面,因此可能同一訊息在不同的構件中使用了不同的名字,或不同的訊息使用了相同的名字。

10. 異構結構風格:

●為什麼要使用異構結構?

    (1)應該根據實際需要進行選擇,以解決實際問題。

    (2)在某段時間內某一種標準佔統治地位,但變動最終是絕對的。

    (3)遺留程式碼仍然效用,但與新系統在某種程度上不協調。

    (4)即使規定了共享共同的軟體包或相互關係的一些標準,仍會存在解釋或表示習慣上的不同。

●異構結構的例項:

    (1)“內外有別”模型——內部C/S,外部B/S

           優點:外部使用者不直接訪問資料庫伺服器,能保證企業資料庫的相對安全。企業內部使用者的互動性較強,資料查詢和修改的響應速度較快。

           缺點:企業外部使用者修改和維護資料時,速度較慢,較繁瑣,資料的動態互動性不強。

    (2)“查改有別”模型——查詢瀏覽B/S,維護修改C/S

           優點:B/S和C/S的共同優點。

           缺點:企業資料容易暴露給外部使用者,給資料安全造成了一定的威脅。

11. 特定領域軟體體系結構:

●DSSA就是在一個特定應用領域中為一組應用提供組織結構參考的標準軟體體系結構。

●必備特徵:

    (1)一個嚴格定義的問題域和/或解決域

    (2)具備普遍性,使其可以用於領域中某個特定應用的開發。

    (3)對整個領域的合適程度的抽象。

    (4)具備該領域固定的、典型的在開發過程中可重用元素。

●基本活動:領域分析、領域設計、領域實現

●參與DSSA的人員:領域專家、領域分析師、領域設計人員、領域實現人員。

●建立過程:分為五個階段,每個階段可以進一步劃分為一些步驟或子階段。每個階段包括一組需要回答的問題、一組需要的輸入、一組將產生的輸出和驗證標準。本過程是併發的、遞迴的、反覆的、螺旋型的。

    (1)定義領域範圍。

    (2)定義領域特定的元素。

    (3)定義領域特定的設計和實現需求約束。

    (4)定義領域模型和體系結構。

(5)產生、蒐集可重用的產品單元。

●DSSA的建立需要設計人員對所在特定領域必須精通,他們要找到合適的抽象方式來實現DSSA的通用性和可重用性。通常DSSA以一種逐漸演化的方式發展。

12. DSSA與體系結構風格的比較:

(1)DSSA只對某一個領域進行設計專家知識的提取、儲存和組織,但可以同時使用多種體系結構風格;而在某個體系結構風格中進行體系結構設計專家知識的組織時,可以將提取的公共結構和設計方法拓展到多個領域。

(2)DSSA的特定領域參考體系結構通常選用一個或多個適合所研究領域的體系結構風格,並設計一個該領域專用的體系結構分析設計工具。

(3)體系結構風格的定義和該風格應用的領域是直交的,提取的設計知識比用DSSA提取的設計專家知識的應用範圍要廣。

(4)DSSA和體系結構風格是互為補充的兩種技術。