軟件體系結構課程

 

 

1 軟件體系結構基本概念

1.1軟件體系結構基本概念

1.2軟件體系結構風格、模式和框架

1.3軟件結構的基本元素和連接

1.4軟件體系結構設計的基本原則

 

1.1 軟件體系結構的基本概念

軟件體系結構是軟件工程的重要研究領域,軟件體系結構並沒有統一的定義。

90年代開始,很多專家學者對軟件體系結構引起廣泛關注,綜合軟件體系結構的定義,比較權威性的論述是:

總體組織

全局控制

通訊、同步、協議

設計元素的功能

物理分佈和集成

 

 

軟件體系結構要點:

軟件體系結構是軟件設計過程的一個層面,是相對獨立的、有價值的軟件設計方法的總結,可作爲軟件開發指導性的策略和途徑。
強調設計過程,而非分析的過程。分析的目標是理解和表示,設計的目標是實現。
非用戶的觀點及非功能的觀點。對於用戶,結構是軟件系統功能的組合。對於設計者,結構是爲特定目標而設立的軟件成分以及成分之間的關係。

 

1.2 軟件體系結構風格、模式和框架

軟件體系結構風格(Architecture Styles)

 風格是表達特定系統元素和組織方式的通用範例(idiomaticparadigm)。軟件體系結構風格,反映衆多系統共有結構的習慣用法和語義,表述系統的靜態結構方式,強調軟件元素的組織形式和通常用法。

軟件設計模式DesignPattern)

 設計模式是軟件問題高效和成熟的設計模板(pattern),模板包含了固有的問題的處理邏輯,強調處理邏輯採用方式的直接複用。

軟件應用框架(Application Framework)

 框架是待實例化的、可複用的大粒度部件結構。框架面向不同規模的應用問題,是通用的結構。強調針對實際問題和通用結構。

 

1.3軟件結構的基本元素和連接

軟件結構的表示從低層到高層,高層軟件結構是建立在基礎結構之上的。

軟件構成的基礎結構包括:

 

數據類型結構

數據類型是最基本的軟件結構元素,是描述複雜算法和軟件結構的基礎,即數據結構。

數據類型包括:

基本數據類型

抽象數據類型

②控制流連接結構

Ø控制流結構直接對應程序結構

 包括:

條件連接

循環連接

控制轉向連接

Ø控制流連接方式

進程中的控制連接(內部調用)進程之間的連接

同一機器空間  鏈詢調用方式分 析調用方式

不同機器空間(遠程過程調用)

④軟件的層次結構

層次結構是分析和解決問題普遍適用的方法

單項依賴層次結構:

下層僅向相鄰的上層提供支持,上層依賴相鄰的下層被建造

開放式層次結構:

使用及支持關係不僅限制在相鄰的層次之間

 

1.4軟件體系結構設計的基本原則

在大量的軟件開發實踐中,對於軟件結構的設計有被普遍性採用的原則,這些原則和策略多年來一直被廣泛地運用着。它們獨立於具體的軟件開發方法。

基本原則包括:

 抽象

 分而治之

 信息隱蔽    

 模塊化

高內聚和低耦合

關注點分離

策略和實現分離

接口和實現分離

 

Ø抽象的原則
抽象:

人們認識複雜事物的基本方法。抽象的實質是突出表現事物的主要特徵和屬性,忽略細節部分;並且,運用這些特徵和屬性,提取具有普遍意義的事物行爲。

軟件設計中的抽象:

數據抽象:描述特定數據對象的屬性集合

過程抽象:特定操作過程命名的操作序列

控制抽象:隱含內部細節的控制邏輯        

 

 

Ø分而治之原則

將大的問題分解,分別處理分解的局部問題,會降低問題的複雜性和難度。

軟件設計中運用的分解包括:

縱向分解:

按照事務的過程方式分解,將整體問題分解成爲多層,每層完成同一過程的各項處理,提取規範統一形式的接口,提供對(下一過程)的支持。

橫向分解:

在每一層面,將問題分成多項獨立的處理部分,它們原則上不要直接的聯繫,而是通過集中的控制。

 

Ø信息隱蔽的原則
局部化設計:

處理中的所有信息和操作被限制在局部過程中,儘量減少外部的直接接觸與共享,提高獨立性,減小相互的耦合性。

封裝設計:

將處理過程儘量隱蔽,使外界只瞭解其簡單、統一的可訪問形式。以減少外界可能的錯誤干擾和破壞。

 

Ø模塊化的原則

模塊:可被獨立命名、具有獨立作用的軟件成分

模塊可分解:整體問題可被分解成多個模塊來解決
模塊可組裝:現有的模塊可被組裝用以解決問題
模塊可理解:模塊可作爲獨立作用的成分被理解
模塊連續性好:對系統的修改只作用於單個的模塊
模塊保護性好:模塊出現異常的影響,僅在模塊內部
 
Ø高內聚和低耦合原則
內聚性:

軟件成份內部各處理單元的關係程度。能做到每個成分都有必然關係,缺一不可的緊密程度是最好的內聚形式。

耦合性:

軟件成份之間的關係特性。軟件成份之間應儘量做到沒有直接關係,使其保持相對獨立鬆散耦合關係會使未來的修改、複用簡單,出錯帶來的影響小。

 

常見的耦合形式

內容耦合:一個軟件成份直接修改另一個軟件成份的內容

公共耦合:多個軟件成份需要處理同一個外部的公共數據

控制耦合:軟件成份的動作依賴於接收的控制信號

標記耦合:軟件成份的接口參數具有一個複雜的內部結構

數據耦合:軟件成份之間通過簡單類型的形式參數傳遞

 

常見的內聚形式

偶然內聚:將沒有直接關係,只是分散在多處的成分合起來

邏輯內聚:將僅是邏輯相關的處理成分合起來

時間內聚:將需在同一時間執行並無直接關係的處理成分合起來

過程內聚:將過程順序相關的處理成分合起來

通訊內聚:將需要對同一個外部數據操作的處理成分合起來

順序內聚:將兩個具有輸入輸出順序關係的軟件成份合起來

功能內聚:保證每個成分只完成單一的功能

 

Ø關注點分離原則
關注點:

關注點是軟件系統中特別需要考慮的多變部分。例如,軟件成分的執行會受到運行環境、設備條件,以及通信設施等的制約和限制,爲了適應不同的運行環境和條件,需要進行必要的參數調整和驅動配置。爲此進行的這部分設計和開發,即是所謂的關注點。

關注點分離設計:

軟件系統中涉及關注點的成分應該與非關注點的成分分爲相互獨立的部分,這樣的設計會使未來的系統容易配置,實現機器無關性。

 
Ø策略和實現分離原則
策略

策略是指軟件中用於處理選擇控制的決策成分。通過上下文相關的決策分析、信息語義解釋分析、參數選擇等進行判斷,以決定怎樣具體數據加工和功能實現。

實現

實現是指軟件系統中有規範步驟及完整執行算法的成分

策略和實現分離的設計

通常,決策部分是異變的成分,而實現部分相對穩定,並可多次複用。將策略成分和實現成分分別設計成獨立的部分,使系統維護的範圍減小,以提高系統的維護性和複用性。

 
Ø接口和實現分離原則
接口

接口是軟件成分對外規範形式的、可訪問的操作集合,提供軟件成分的功能及使用方式。一個軟件成分可以不只一個接口,每個接口提供不同的一組相關的操作。

實現

實現是軟件成分外部不可見的操作執行部分

接口和實現分離的設計

爲了達到軟件成分的高複用,爲適應多種形式的訪問,可採用分設多種接口來實現。這就需要採用接口和實現獨立設計的方式提高系統的可移植性和複用性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章