1. 程式人生 > >軟考架構師(8)——軟體架構設計

軟考架構師(8)——軟體架構設計

一:架構模型

  軟體架構可歸納為

(1)結構模型:這是一個最直觀、最普遍的建模方法。這種方法以架構的構件、連線件(connector)和其他概念來刻畫結構,併力圖通過結構來反映系統的重要語義內容,包括系統的配置、約束、隱含的假設條件、風格、性質等。研究結構模型的核心是架構描述語言。

(2)框架模型:框架模型與結構模型類似,但它不太側重描述結構的細節而更側重於整體的結構。框架模型主要以一些特殊的問題為目標建立只針對和適應該問題的結構。

(3)動態模型:動態模型是對結構或框架模型的補充,研究系統的“大顆粒”的行為性質。例如,描述系統的重新配置或演化。動態可以指系統總體結構的配置、建立或拆除通訊通道或計算的過程。這類系統常是激勵型的。

(4)過程模型:過程模型研究構造系統的步驟和過程。因而結構是遵循某些過程指令碼的結果。

(5)功能模型:該模型認為架構是由一組功能構件按層次組成,下層向上層提供服務。它可以看作是一種特殊的框架模型。

5種,但各有所長,將它們有機統一起來也許更合適,所以有人提出了“4+1”檢視模型: 

邏輯檢視:邏輯檢視關注功能,不僅包括使用者可見的功能,還包括為實現使用者功能而必須提供的"輔助功能模組";它們可能是邏輯層、功能模組等。

開發檢視:開發檢視關注程式包,不僅包括要編寫的源程式,還包括可以直接使用的第三方SDK和現成框架、類庫,以及開發的系統將運行於其上的系統軟體或中介軟體。開發檢視和邏輯檢視之間可能存在一定的對映關係:比如邏輯層一般會對映到多個程式包等。

處理檢視:處理檢視關注程序、執行緒、物件等執行時概念,以及相關的併發、同步、通訊等問題。處理檢視和開發檢視的關係:開發檢視一般偏重程式包在編譯時期的靜態依賴關係,而這些程式執行起來之後會表現為物件、執行緒、程序,處理檢視比較關注的正是這些執行時單元的互動問題。物理檢視:物理檢視關注"目標程式及其依賴的執行庫和系統軟體"最終如何安裝或部署到物理機器,以及如何部署機器和網路來配合軟體系統的可靠性、可伸縮性等要求。物理檢視和處理檢視的關係:處理檢視特別關注目標程式的動態執行情況,而物理檢視重視目標程式的靜態位置問題;物理檢視是綜合考慮軟體系統和整個IT系統相互影響的架構檢視。

場景(scenarios)

:可以看作是那些重要系統活動的抽象,它使四個檢視有機聯絡起來,從某種意義上說場景是最重要的需求抽象。在開發架構時,它可以幫助設計者找到架構的構件和它們之間的作用關係。同時,也可以用場景來分析一個特定的檢視,或描述不同檢視構件間是如何相互作用的。場景可以用文字表示,也可以用圖形表示。

二:架構需求與軟體質量屬性

1:軟體質量屬性

一是可在執行時確定的系統系統質量屬性,如效能,安全性,可用性和使用性

二是無法通過觀察系統執行確定的:可更改性,可移植性,可重用性,可整合性,可測試性

三是架構直接相關的:概念完整性,正確性,完整性,可構建性。

1、可用性及其實現 故障處置。 1)錯誤檢測 日誌 心跳 異常捕捉 2)錯誤恢復 冗餘,備件,回滾,事務,降級 3)錯誤預防 事務等

2、可修改性及其實現 1)將修改限制在區域性 高內聚低耦合,降低對其他模組的依賴;提高模組的通用性;限制變更範圍等; 2)防止連鎖反應 對擴充套件開放, 對更改關閉。 3)推遲繫結時間 配置檔案,多型,註冊

3、效能及其實現 1)減少及控制資源使用 2)資源管理 引入併發,快取,增加資源 3)資源仲裁 資源排程

4、安全性及其實現 1)防禦攻擊 2)檢測攻擊 3)恢復

5、可測試性及其實現 1)輸入輸出 記錄,介面與實現分離,用實現替代用於測試 2)內部監控

6、易用性及其實現 1)運用時 記錄使用者習慣,收集使用者反饋 2)設計時 使用者介面獨立 3)支援使用者主動操作

2:軟體架構評估

名詞解釋

敏感點:敏感點是一個或多個構件(和/或構件之間的關係)的特性。研究敏感點可使構設計師或系統分析師明確在搞清楚如何實現質量目標時應注意什麼。

權衡點:權衡點是影響多個質量屬性的特性,是多個質量屬性的敏感點。

風險點

非風險點

質量屬性效應樹:

軟體評估方式:

基於調查問卷(檢查表)的方式

基於度量的方式

基於場景的方式:

架構權衡分析法(ATAM)

軟體架構分析法(SAAM)

成本效益分析法(CBAM)

三:軟體架構風格

架構設計的一個核心問題是能能否達到架構級的軟體服用

架構風格反映了領域中眾多系統所共有的結構和語義特性,並指導如何將各個構件有效地組織成一個完成的系統

架構風格定義了用於描述系統的術語表和一組指導構件系統的規則

1:資料流風格

  在管道/過濾器風格中,每個構件都有一組輸入和輸出,構件讀輸入的資料流,經過內部處理,然後產生輸出資料流。傳統的編譯器一直被認為是一種管道系統,在該系統中,一個階段(包括詞法分析、語法分析、語義分析和程式碼生成)的輸出是另一個階段的輸入。

2:面向物件風格

(內容較多,出新篇)

2:呼叫返回風格

3:獨立構件風格

4:虛擬機器風格

5:倉庫風格

黑板風格:語音識別的應用

6.C2風格

C2(Component-Connector)架構風格可以概括為:

通過連線件繫結在一起的按照一組規則運作的並行構件網路。C2風格中的系統組織規則如下:

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

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

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

(4)當兩個連線件進行直接連線時,必須由其中一個的底部到另一個的頂部。從C2風格的組織規則和結構圖中,我們可以得出C2風格具有以下特點:

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

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

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

6:兩層 C/S 架構

C/S架構的優點主要在於系統的客戶應用程式和伺服器構件分別執行在不同的計算機上,系統中每臺伺服器都可以適合各構件的要求,這對於硬體和軟體的變化顯示出極大的適應性和靈活性,而且易於對系統進行擴充和縮小

7:三層C/S架構

8:三層 B/S 架構

不足:

B/S 架構缺乏對動態頁面的支援能力,沒有整合有效地資料庫處理功能

B/S架構的安全性難以控制

採用B/S架構的應用系統,在資料查詢等響應速度上,要遠低於C/S架構

B/S架構的資料提交一般以頁面為單位,資料的動態互動性不強,不利於OLTP應用

9:混合架構風格

 

10:富換聯網應用(RIA)

 

RIA-AJAX

11:基於服務的架構(SOA)

服務是一種為了滿足某項業務需求的操作,規則等的邏輯組合,它包含一系列有序活動的互動,為實現使用者目標提供支援。

基於服務的架構(SOA)到實現方式:

1:WebService

2:ESB

12:特定領域軟體架構(Domain Specific Software Architecture,DSSA)

是在一個特定應用領域中為一組應用提供組織結構參考的標準軟體架構,是一個特定的問題領域中支援一組應用的領域模型、參考需求、參考架構等組成的開發基礎,其目標是支援在一個特定領域中多個應用的生成。

 四:軟體產品線

軟體產品線主要由兩部分組成,分別是核心資源和產品集合。核心資源是領域工程的所有結果的集合,是產品線中產品構造的基礎。

軟體產品線開發有4個基本技術特點,即過程驅動、特定領域、技術支援和架構為中心。與其他軟體開發方法相比,組織選擇軟體產品線的巨集觀上的原因有:對產品線及其實現所需的專家知識領域的清楚界定;對產品線的長期遠景進行了戰略性規劃。