體系結構模型是什么?
體系結構模型,該模型描述系統如何被組織為一組相互通信的構件
體系結構分類
- 小體系結構關注單個程序的體系結構。在這個層次上,我們關注單個的程序是如何補分解為構件的。
- 大體系結構關注包括其他系統、程序和程序構件的復雜企業系統體系結構。
非功能性需求影響最大
對體系結構有顯著影響的需求”的研究中確認了這一點, 他們發現非功能性需求對于系統體系結構的影響最大
體系結構視圖
- 邏輯視圖。這個視圖將系統中的關鍵抽象顯示為對象或對象類。應該可以將系統需求與這個邏輯視圖中的實體聯系起來。
- 進程視圖。這個視圖顯示系統在運行時如何通過相互交互的進程來構成。該視圖對于做出關于非功能性系統特性(例如性能、可用性)的判斷很有用。
- 開發視圖。這個視圖顯示軟件如何面向開發任務進行分解;也就是說,該視圖顯示了軟件如何分解為由單個開發者或開發團隊實現的構件。該視圖對于軟件開發管理者和程序員都很有用。
- 物理視圖。這個視圖顯示系統硬件以及軟件構件如何分布在系統中的處理器上。該視圖對于規劃系統部署方案的系統工程師很有用
- 概念視圖。Hofmeister等人( Hofmeister,Nord, and Soni 2000 )提出使用相似的視圖,但向其中增加了一個概念視圖。這個視圖是一種系統的抽象視圖,可以作為將高層需求分解為更詳細的規格說明的基礎,幫助工程師確定可以復用的構件,以及表示一個產品線(在第15章中介紹)而不是單個系統。圖6-1描述了一個打包機器人的體系結構,可以作為一個概念系統視圖的例子。
體系結構模型
分層體系結構
分離和獨立性的思想是體系結構設計的基礎,因為這可以使變更被局部化。
- 層是指一組提供相關服務的子系統,多半是通過使用其它層的服務來實現本層的功能。
- 封閉體系結構:每一層只能訪問其相鄰的下一層(如OSI 7層模型)
- 開放體系結構:每一層可以訪問比其低的層次(JavaSwing)
知識庫體系結構
客戶—服務器體系結構
管道—過濾器體系結構
子系統分解
分解原則
- 耦合與內聚
- 封閉性與開放性
耦合
耦合:兩個子系統之間的依賴程度,如果是松耦合關系,那么對一個子系統進行改變則對另外一個子系統影響不大
內聚
內聚
- 描述子系統內部各實現類之間的依賴程度,如果一個子系統中含有許多相互關聯的類并且執行類似的操作,那么就是高內聚,反之就是低內聚。
- 我們總是希望系統是高內聚,低耦合。
封閉性
如果一個子系統能獨立的被其他子系統所使用,我們說這個子系統具有封閉性
開放性
如果一個子系統對外提供的服務能夠被方便擴充,我們說這個子系統具有開放性