系統(tǒng)架構(gòu)設(shè)計(jì)筆記(52)—— 軟件架構(gòu)視圖

1 軟件視圖的分類

現(xiàn)代軟件系統(tǒng)非常復(fù)雜,通常在某個(gè)具體的時(shí)間內(nèi)只需將注意力集中在某幾個(gè)結(jié)構(gòu)上(就像看病時(shí),醫(yī)生只是將注意力集中在某方面的人體結(jié)構(gòu)上,骨科醫(yī)生與心血管科醫(yī)生關(guān)心不同的結(jié)構(gòu)),結(jié)構(gòu)是元素本身的集合,而視圖則是捕獲和表達(dá)結(jié)構(gòu)(文檔描述),雖然它們有區(qū)別,但在實(shí)際使用時(shí)則不嚴(yán)格區(qū)分,即從系統(tǒng)體系的角度說是結(jié)構(gòu),從文檔角度說是視圖。

軟件架構(gòu)是一種無法以簡(jiǎn)單的一維方式進(jìn)行說明的復(fù)雜實(shí)體,從不同側(cè)面的描述就是視圖。架構(gòu)的優(yōu)勢(shì)也在于使用視圖:每個(gè)視圖強(qiáng)調(diào)系統(tǒng)的某一個(gè)方面,同時(shí)忽視系統(tǒng)的其他方面,以便有助于處理或理解當(dāng)前問題,描述完整的系統(tǒng)架構(gòu)必須具備完整的視圖集, “4+1” 方法就是一類完備視圖集。

軟件視圖通常分為三種類型:
(1)模塊視圖類型:為系統(tǒng)的主要模塊實(shí)現(xiàn)單元編檔。
(2)構(gòu)件和連接件視圖類型:為系統(tǒng)的構(gòu)件和連接件執(zhí)行單元編檔。
(3)分配視圖類型:為軟件的開發(fā)和執(zhí)行環(huán)境之間的關(guān)系編檔。

每一視圖類型中,又有一些常用的形態(tài),可以把這些形態(tài)歸納成架構(gòu)風(fēng)格(簡(jiǎn)稱風(fēng)格),大量的架構(gòu)風(fēng)格供架構(gòu)設(shè)計(jì)師選用,例如客戶機(jī) / 服務(wù)器是一種常見的架構(gòu)風(fēng)格,它是構(gòu)件和連接件視圖類型中的一員。架構(gòu)風(fēng)格是對(duì)元素和關(guān)系類型的特化,它還包括如何使用這些元素和關(guān)系類型的一組限制條件。架構(gòu)結(jié)構(gòu) / 視圖分類如下所示。

(1)模塊視圖分類

架構(gòu)風(fēng)格 說明 應(yīng)用
分解 大模塊分解為小模塊,小到容易理解 資源分配、項(xiàng)目結(jié)構(gòu)化與規(guī)劃;信息隱蔽、封裝;配置控制
使用 一個(gè)單元的正確性依賴于另一個(gè)單元的正確性 設(shè)計(jì)子集;設(shè)計(jì)擴(kuò)展(增量開發(fā))
分層 上層使用下層服務(wù);實(shí)現(xiàn)隱藏細(xì)節(jié)抽象 增量式開發(fā);基于“虛擬機(jī)”上的可移植性
類或泛化 “繼承自”或“是一個(gè)實(shí)例”;共享訪問方法 面向?qū)ο笤O(shè)計(jì)(使用公共模板)

(2)構(gòu)件-連接器視圖類型

架構(gòu)風(fēng)格 說明 應(yīng)用
客戶機(jī)-服務(wù)器 構(gòu)件是客戶機(jī)和服務(wù)器,連接件是協(xié)議及共享消息 分布式操作;關(guān)注點(diǎn)分離(支持可修改性);負(fù)載均衡
進(jìn)程或通信進(jìn)程 通過通信、同步或排除操作形成進(jìn)程或線程之間的關(guān)聯(lián) 調(diào)度分析;性能分析
并發(fā) 在相同“邏輯線程”上運(yùn)行 確定資源爭(zhēng)用;分析線程
共享數(shù)據(jù) 運(yùn)行時(shí)產(chǎn)生數(shù)據(jù)、使用數(shù)據(jù)(共享數(shù)據(jù)存儲(chǔ)庫) 性能;數(shù)據(jù)完整性;可修改性

(3)分配視圖類型

架構(gòu)風(fēng)格 說明 應(yīng)用
部署 功能分配給軟件(進(jìn)程)、硬件(處理器)和通信路徑 性能、可用性、安全性說明
實(shí)現(xiàn) 模塊映射到開發(fā)活動(dòng)中 配置控制、集成、測(cè)試活動(dòng)
工作分配 將責(zé)任分配到適當(dāng)?shù)拈_發(fā)小組,特別是公共部分不是每個(gè)人去實(shí)現(xiàn) 項(xiàng)目管理、管理通用性,最好的專業(yè)技術(shù)安排

2 模塊視圖類型及其風(fēng)格

模塊將遵循某種方式將軟件系統(tǒng)分解成可管理的功能單元。架構(gòu)模塊視圖是通過文檔來枚舉系統(tǒng)的主要實(shí)現(xiàn)單元或模塊,及這些單元之間的關(guān)系。

任務(wù)完整的架構(gòu)文檔必須包含有模塊視圖,它為源代碼提供藍(lán)圖。該類型如下表所示。

類型 說明
元素 元素就是模塊,它是一種能夠提供內(nèi)聚功能單元的軟件實(shí)現(xiàn)單元。
關(guān)系 1. 部分關(guān)系:模塊間部分-整體關(guān)系,如分解關(guān)系;2. 依賴關(guān)系:如共享數(shù)據(jù)、調(diào)用;3. 特化關(guān)系:定義了較為特殊的模塊和一般模塊之間的關(guān)系,如面向?qū)ο笾械睦^承。
元素特征 1. 必須遵守命名空間規(guī)則的名稱;2. 模塊責(zé)任:應(yīng)該使用責(zé)任特性定義模塊功能;3. 實(shí)現(xiàn)信息。
關(guān)系特征 1. 部分關(guān)系:擁有相關(guān)的可見性特征,這種特征確定了子模塊在聚集模塊之外是否可見;2. 依賴關(guān)系:擁有分配的約束條件,以便詳細(xì)規(guī)定兩個(gè)模塊之間的依賴性關(guān)系;3. 特化關(guān)系:擁有實(shí)現(xiàn)特性,如特殊模塊繼承一般模塊的實(shí)現(xiàn)方案。

下面對(duì)模塊視圖的四種風(fēng)格進(jìn)行總結(jié)。

(1)分解風(fēng)格

分解風(fēng)格能展示向模塊分配責(zé)任的方式。

類型 說明
元素 模塊,有時(shí)將具有獨(dú)立完整功能的模塊稱為子系統(tǒng)。
關(guān)系 分解關(guān)系,它是部分關(guān)系的精化形式,文檔必須定義分解的標(biāo)準(zhǔn)。
關(guān)系特征 可見性,模塊被其父模塊之外的模塊了解的程度及其功能對(duì)于這些外部模塊的可用程度。
其他 1. 分解視圖中不允許出現(xiàn)循環(huán);2. 在一個(gè)視圖中,一個(gè)模塊不能同時(shí)屬于多個(gè)模塊。

(2)使用風(fēng)格

使用風(fēng)格能展示模塊相互依賴的方式。

類型 說明
元素 模塊
關(guān)系 使用關(guān)系,它是“依賴關(guān)系”的精化形式,如果模塊 A 依賴于功能正常的模塊 B 的存在來滿足自己的需求,那么模塊 A 就是在使用模塊 B。
關(guān)系特征 描述一個(gè)模塊會(huì)以哪種方式使用另一個(gè)模塊。

(3)分層風(fēng)格

分層風(fēng)格能將系統(tǒng)分割成一組虛擬機(jī),通過 “ 允許使用 ” 關(guān)系相互關(guān)聯(lián),分層風(fēng)格能幫助實(shí)現(xiàn)可移植性和可修改性。

類型 說明
元素
關(guān)系 它是模塊視圖類型一般的“依賴關(guān)系”的特化。如果 P1 的正確性依賴于當(dāng)前 P2 的正確實(shí)現(xiàn),就說 P1 使用 P2。
關(guān)系特征 1. 層的名稱;2. 層包容的軟件單元;3. 允許層使用的軟件?!?】層間和層內(nèi)的使用規(guī)則,如高層可以使用較底層的軟件和不允許軟件使用同一層的其它軟件;【2】這些規(guī)則可以容許的例外情況。
其他 每一部分軟件只能分配給一個(gè)層。

(4)泛化風(fēng)格

泛化風(fēng)格能展示一個(gè)模塊如何成為另一個(gè)模塊的泛化或特化,從而使模塊之間產(chǎn)生關(guān)聯(lián)。它廣泛應(yīng)用于面向?qū)ο蟮南到y(tǒng),能展示繼承性,并能用來使用模塊之間的共性。

類型 說明
元素 模塊
關(guān)系 泛化關(guān)系,即模塊視圖類型中的特化關(guān)系。
元素特征 除了模塊視圖類型中為模塊定義的特性外,模塊還能擁有抽象特性,抽象特性能定義擁有的接口但沒有實(shí)現(xiàn)方案的模塊。
關(guān)系特征 泛化關(guān)系能擁有一種區(qū)別接口和實(shí)現(xiàn)繼承的特性。
其他 1. 不允許出現(xiàn)循環(huán),子模塊不能是父模塊的泛化;2. 模塊能擁有多個(gè)父模塊,但不提倡這種多重繼承。

3 C&C 視圖類型及其風(fēng)格

C&C 視圖能定義由具有某種運(yùn)行時(shí)存在的元素模型,這些元素包括進(jìn)程 、 對(duì)象 、 客戶機(jī) 、 服務(wù)器及數(shù)據(jù)存儲(chǔ)器等。此外,它還包含作為元素的交互路徑,如通信鏈路和協(xié)議 、 信息流及共享存儲(chǔ)器訪問。通常,可利用復(fù)雜的基礎(chǔ)結(jié)構(gòu)(如中間件框架 、 分布式通信信道和進(jìn)程調(diào)度)來執(zhí)行這些交互操作。

類型 說明
元素 1. 構(gòu)件類型:主要處理單元和數(shù)據(jù)存儲(chǔ)器;2.連接件類型:交互機(jī)制;
關(guān)系 1. 構(gòu)件且有接口,這種接口被稱為端口。連接件具有接口,這種接口被稱為角色;2.連接:構(gòu)件端口與特定的連接件角色相關(guān)聯(lián)。
元素特征 1. 構(gòu)件?!?】名稱應(yīng)反映構(gòu)件功能;【2】類型用于定義一般功能、端口數(shù)量、類型及所需特征;【3】其他包括性能和可靠性值等(取決于構(gòu)件類型)。2. 連接件。【1】名稱應(yīng)反映連接件的交互功能;【2】類型定義交互性質(zhì)、角色數(shù)量、類型及所需特征;【3】其他包括交互協(xié)議和性能值等(取決于連接件類型)。

C&C 視圖風(fēng)格是 C&C 視圖類型的特化, C&C 視圖風(fēng)格為數(shù)不少,下面對(duì) C&C 視圖的幾種風(fēng)格進(jìn)行總結(jié)。

(1)管道和過濾器風(fēng)格

管道和過濾器風(fēng)格中的交互模式表現(xiàn)出數(shù)據(jù)流連續(xù)變換的特征。數(shù)據(jù)抵達(dá)過濾器并經(jīng)過轉(zhuǎn)換后由管理傳送給下一個(gè)過濾器。

類型 說明
元素 1.構(gòu)件為過濾器。過濾器端口必須是輸入端口與輸出端口。2. 連接件為管道。管道扮演數(shù)據(jù)輸入與數(shù)據(jù)輸出角色。
關(guān)系 連接關(guān)系能使過濾器輸出端口與某個(gè)管道的數(shù)據(jù)輸入角色相關(guān)聯(lián),使過濾器輸入端口與多個(gè)管道的數(shù)據(jù)輸出角色相關(guān)聯(lián),并能確定交互過濾器的圖形。
計(jì)算模型 1.過濾器是從其輸入端口讀取數(shù)據(jù)并將數(shù)據(jù)流寫入其輸出端口的數(shù)據(jù)轉(zhuǎn)換器;2. 管道能將數(shù)據(jù)流從一個(gè)過濾器傳送到另一個(gè)過濾器。

(2)共享數(shù)據(jù)風(fēng)格

共享數(shù)據(jù)風(fēng)格通過保留持久數(shù)據(jù)來支配交互模式,持久數(shù)據(jù)由多個(gè)數(shù)據(jù)存取器和至少一個(gè)儲(chǔ)存庫保留。

類型 說明
元素 1.構(gòu)件為共享數(shù)據(jù)儲(chǔ)存庫和數(shù)據(jù)存取器;2.連接件為數(shù)據(jù)讀寫。
關(guān)系 連接關(guān)系能確定哪些數(shù)據(jù)存儲(chǔ)器將連接到哪些數(shù)據(jù)儲(chǔ)存庫。
計(jì)算模型 數(shù)據(jù)存取器之間的通信經(jīng)由共享數(shù)據(jù)存儲(chǔ)庫來完成,控制過程由數(shù)據(jù)存取器或數(shù)據(jù)儲(chǔ)存庫來啟動(dòng)。
特征 可精化為:存儲(chǔ)數(shù)據(jù)的類型、面向性能的數(shù)據(jù)特征和數(shù)據(jù)分配。

(3)發(fā)布-訂閱風(fēng)格

發(fā)布 - 訂閱風(fēng)格用于向一組未知接受者發(fā)送事件和消息??稍诓恍薷纳a(chǎn)者的情況下添加新的接受者(訂閱者)。在發(fā)布 - 訂閱風(fēng)格中,構(gòu)件通過事件發(fā)布進(jìn)行交互。構(gòu)件可訂閱一組事件。

類型 說明
元素 1.構(gòu)件為任何具有能發(fā)布和訂閱事件的接口 C&C 構(gòu)件;2.連接件為發(fā)布訂閱。
關(guān)系 連接關(guān)系能將構(gòu)件與發(fā)布-訂閱連接件關(guān)聯(lián)起來。
計(jì)算模型 宣布事件并能對(duì)其他已宣布事件做出反應(yīng)的獨(dú)立構(gòu)件系統(tǒng)。
特征 可精化為:哪些事件由哪些構(gòu)件宣布,哪些事件由哪些構(gòu)件訂閱,什么時(shí)候允許構(gòu)件訂閱事件。
其他 所有構(gòu)件連接到一個(gè)事件分配器,可將該分配器視為總線(連接件)或構(gòu)件。

(4)客戶機(jī)-服務(wù)器風(fēng)格

客戶機(jī) - 服務(wù)器風(fēng)格能展示構(gòu)件通過請(qǐng)求其他構(gòu)件的服務(wù)進(jìn)行交互的過程,將功能劃分成客戶機(jī)和服務(wù)器后即可基于運(yùn)行時(shí)準(zhǔn)則把它們單獨(dú)分配給各個(gè)級(jí)。

類型 說明
元素 1.構(gòu)件為請(qǐng)求其他構(gòu)件服務(wù)的客戶機(jī)和向其他構(gòu)件提供服務(wù)的服務(wù)器;2.連接件為請(qǐng)求/應(yīng)答,即客戶機(jī)對(duì)服務(wù)器的非對(duì)稱調(diào)用。
關(guān)系 連接關(guān)系使客戶機(jī)與連接件的請(qǐng)求角色相關(guān)聯(lián),使服務(wù)器與連接件的應(yīng)答角色相關(guān)聯(lián),并確定哪些服務(wù)能由哪些客戶機(jī)請(qǐng)求。
計(jì)算模型 客戶機(jī)能啟動(dòng)各項(xiàng)活動(dòng),向服務(wù)器請(qǐng)求所需服務(wù),并等待這些請(qǐng)求的結(jié)果。
特征 可精化為:可連接的客戶機(jī)數(shù)量和類型及性能特性。
其他 可施加以下限制:1. 與給定端口或角色的連接數(shù)量;2.服務(wù)器之間允許存在的關(guān)系;3.層級(jí)。

(5)對(duì)等連接

對(duì)等連接系統(tǒng)能通過構(gòu)件之間的直接交換支持服務(wù)交換。它是一種調(diào)用/返回風(fēng)格。

(6)通信-進(jìn)程風(fēng)格

通信 - 進(jìn)程風(fēng)格的特征表現(xiàn)在通過各種連接件機(jī)制并發(fā)執(zhí)行構(gòu)件的交互,如通過同步 、 消息傳遞 、 數(shù)據(jù)交換 、 啟動(dòng)和停止等進(jìn)行交互。

類型 說明
元素 1.構(gòu)件為并發(fā)單元,如任務(wù)、進(jìn)程和線程;2.連接件為數(shù)據(jù)交換、消息傳遞、同步、控制和其他類型的通信。
計(jì)算模型 通過特定連接件機(jī)制進(jìn)行交互的并發(fā)執(zhí)行構(gòu)件。
特征 1. 并發(fā)單元:可搶占性,它表示并發(fā)單元的執(zhí)行可被另一個(gè)并發(fā)單元搶占,或并發(fā)單元將繼續(xù)執(zhí)行,直到它自愿中止自己的執(zhí)行;優(yōu)先性影響調(diào)度;時(shí)間參數(shù)定義周期和最后期限等。2. 數(shù)據(jù)交換:緩沖表示如果不能立即處理消息就會(huì)把消息先保存起來;協(xié)議用于通信。

4 分配視圖類型及其風(fēng)格

硬件、文件系統(tǒng)和團(tuán)隊(duì)結(jié)構(gòu)都會(huì)與軟件架構(gòu)進(jìn)行交互,將軟件架構(gòu)映射到其環(huán)境的一般形式稱為“分配視圖類型”。

類型 說明
元素 軟件元素和環(huán)境元素。
關(guān)系 軟件元素被分配到環(huán)境元素。
元素特征 軟件元素?fù)碛幸蟮奶卣?,環(huán)境元素?fù)碛刑峁┑奶卣?,前者必須與后者匹配。
關(guān)系特征 取決于特定風(fēng)格。

分配視圖類型的三種常見風(fēng)格為:

  1. 部置風(fēng)格:能描述構(gòu)件和連接件對(duì)硬件的映射,硬件是軟件執(zhí)行的場(chǎng)所。
  2. 實(shí)現(xiàn)風(fēng)格:能描述模塊對(duì)包含它們的文件系統(tǒng)的映射。
  3. 工作任務(wù)風(fēng)格:能描述模塊對(duì)承擔(dān)模塊開發(fā)任務(wù)的人員、團(tuán)隊(duì)或小組的映射。

(1)部置風(fēng)格

部置風(fēng)格體現(xiàn)為 C&C 風(fēng)格(如通信-進(jìn)程風(fēng)格)的元素被分配到執(zhí)行平臺(tái)。

類型 說明
元素 軟件元素通常是 C&C 視圖類型中的進(jìn)程;環(huán)境元素計(jì)算硬件,如處理器、內(nèi)存、磁盤和網(wǎng)絡(luò)等。
關(guān)系 軟件元素駐留在哪些物理單元上,分配是動(dòng)態(tài)的。
元素特征 軟件元素要求的特征:重要的硬件特征,如處理器、內(nèi)存、容量需求和容錯(cuò)性;環(huán)境元素提供的特征:影響分配決策的重要硬件特征。
關(guān)系特征 分配到……

(2)實(shí)現(xiàn)風(fēng)格

實(shí)現(xiàn)風(fēng)格能將模塊視圖類型中的模塊映射到開發(fā)基礎(chǔ)結(jié)構(gòu)。實(shí)現(xiàn)一個(gè)模塊總會(huì)產(chǎn)生許多獨(dú)立文件,必須對(duì)這些文件進(jìn)行組織,以免失去對(duì)系統(tǒng)的控制及系統(tǒng)的完整性。通常利用配置管理技術(shù)進(jìn)行文件管理。

類型 說明
元素 軟件元素通常是模塊;環(huán)境元素配置條目,如文件或目錄。
關(guān)系 包含關(guān)系,規(guī)定一個(gè)配置條目由另一個(gè)配置條目所包容;“分配到……”關(guān)系,描述將模塊分配到配置條目。
元素特征 軟件元素要求的特征:如對(duì)數(shù)據(jù)庫等開發(fā)環(huán)境的需求;環(huán)境元素提供的特征:對(duì)開發(fā)環(huán)境提供的特征的指示。
其他 分層配置條目:“包容在……”

(3)工作任務(wù)風(fēng)格

軟件項(xiàng)目的時(shí)間和預(yù)算估計(jì)取決于工作分解結(jié)構(gòu)( WBS ),而工作分解結(jié)構(gòu)則取決于軟件架構(gòu)。工作任務(wù)風(fēng)格將軟件架構(gòu)映射到由人組成的團(tuán)隊(duì)之中,實(shí)現(xiàn)這一項(xiàng)目管理的目的。

類型 說明
元素 軟件元素通常是模塊;環(huán)境元素:組織單元,如人員、團(tuán)隊(duì)、部門和分包商。
關(guān)系 “分配到……”關(guān)系,描述將模塊分配到配置條目。
元素特征 技能集:所需技能和提供的技能。
其他 分層配置條目:“包容在……”

工作任務(wù)風(fēng)格與模塊分解風(fēng)格關(guān)系密切,它能將模塊分解風(fēng)格用作其分配映射的基礎(chǔ)。這種風(fēng)格能通過添加與開發(fā)工具 、 測(cè)試工具和配置管理系統(tǒng)等對(duì)應(yīng)的模塊分解進(jìn)行擴(kuò)展。工作任務(wù)風(fēng)格還通常與其他風(fēng)格聯(lián)合使用,例如,團(tuán)隊(duì)工作任務(wù)可以是模塊分解風(fēng)格中的模塊,可以是分層圖中的層,也可以是多進(jìn)程系統(tǒng)中的任務(wù)或進(jìn)程。

5 各視圖類型間的映射關(guān)系

為了完整地描述一個(gè)架構(gòu),必須使用多個(gè)視圖,這些視圖必須遵守一定的映射關(guān)系。

(1)模塊視圖類型中的視圖通常會(huì)映射到構(gòu)件和連接件視圖類型中的視圖。模塊實(shí)現(xiàn)單元將映射到運(yùn)行時(shí)構(gòu)件。

(2)系統(tǒng)的構(gòu)件和連接件視圖和模塊視圖之間的關(guān)系可能會(huì)非常復(fù)雜。同樣的代碼模塊可由 C&C 視圖的許多元素執(zhí)行。反之, C&C 視圖的單一構(gòu)件可執(zhí)行由許多模塊定義的代碼。同樣, C&C 構(gòu)件可能會(huì)擁有許多與環(huán)境進(jìn)行交互的點(diǎn),每個(gè)交互點(diǎn)由同一模塊接口定義。

(3)分配視圖類型是為有效地實(shí)現(xiàn)軟件架構(gòu)的輔助性視圖,它將其他視圖類型中的軟件元素映射到軟件環(huán)境中,即反映其他視圖與軟件環(huán)境之間的關(guān)系。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容