《软件体系结构》第三章 软件体系结构风格
第三章 軟件體系結(jié)構(gòu)風(fēng)格
一、基本概念
1. 軟件體系結(jié)構(gòu)設(shè)計(jì)的一個(gè)核心問題是能否使用重復(fù)的體系結(jié)構(gòu)模式,即能夠達(dá)到體系結(jié)構(gòu)級(jí)的復(fù)用。
2.?軟件體系結(jié)構(gòu)風(fēng)格是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。體系結(jié)構(gòu)風(fēng)格定義了一個(gè)系統(tǒng)家族,即一個(gè)體系結(jié)構(gòu)定義一個(gè)詞匯表和一組約束。詞匯表中包含一些構(gòu)件和連接件類型,而這組約束指出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來的
3. 對(duì)軟件體系結(jié)構(gòu)風(fēng)格的研究和實(shí)踐促進(jìn)對(duì)設(shè)計(jì)的重用,一些經(jīng)過實(shí)踐證明的解決方案也可以可靠地用于解決新的問題。
4. 軟件體系結(jié)構(gòu)風(fēng)格為大粒度軟件重用提供了可能。
5.?討論體系結(jié)構(gòu)風(fēng)格時(shí)要回答的問題
????◎構(gòu)件和連接件的類型是什么?
????◎ 可容許的結(jié)構(gòu)模式是什么?
????◎ 基本的計(jì)算模型是什么?
????◎ 風(fēng)格的基本不變性是什么?
????◎ 其使用的常見例子是什么?
????◎ 使用此風(fēng)格的優(yōu)缺點(diǎn)是什么?
????◎ 其常見的特例是什么?
6.?軟件體系結(jié)構(gòu)風(fēng)格關(guān)鍵四要素
????????提供一個(gè)詞匯表、定義一套配置規(guī)則、定義一套語義解釋原則、定義對(duì)基于這種風(fēng)格的系統(tǒng)所進(jìn)行的分析。
7.體系結(jié)構(gòu)風(fēng)格分類
????◎ 數(shù)據(jù)流風(fēng)格:批處理序列;管道/過濾器。
????◎ 調(diào)用/返回風(fēng)格:主程序/子程序;面向?qū)ο箫L(fēng)格;層次結(jié)構(gòu)。
????◎ 獨(dú)立構(gòu)件風(fēng)格:進(jìn)程通訊;事件系統(tǒng)。
????◎ 虛擬機(jī)風(fēng)格:解釋器;基于規(guī)則的系統(tǒng)。
????◎ 倉(cāng)庫風(fēng)格:數(shù)據(jù)庫系統(tǒng);超文本系統(tǒng);黑板系統(tǒng)
二、管道和過濾器
1.優(yōu)點(diǎn)
????◎ 使得軟構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特點(diǎn);
????◎ 允許設(shè)計(jì)者將整個(gè)系統(tǒng)的輸入/輸出行為看成是多個(gè)過濾器的行為的簡(jiǎn)單合成;
????◎ 支持軟件重用。只要提供適合在兩個(gè)過濾器之間傳送的數(shù)據(jù),任何兩個(gè)過濾器都可被連接起來;
????◎ 系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡(jiǎn)單。新的過濾器可以添加到現(xiàn)有系統(tǒng)中來;舊的可以被改進(jìn)的過濾器替換掉;
????◎ 允許對(duì)一些如吞吐量、死鎖等屬性的分析;
????◎ 支持并行執(zhí)行。每個(gè)過濾器是作為一個(gè)單獨(dú)的任務(wù)完成,因此可與其它任務(wù)并行執(zhí)行。
2.缺點(diǎn)
????◎ 通常導(dǎo)致進(jìn)程成為批處理的結(jié)構(gòu)。這是因?yàn)殡m然過濾器可增量式地處理數(shù)據(jù),但它們是獨(dú)立的,所以設(shè)計(jì)者必須將每個(gè)過濾器看成一個(gè)完整的從輸入到輸出的轉(zhuǎn)換;
????◎ 不適合處理交互的應(yīng)用。當(dāng)需要增量地顯示改變時(shí),這個(gè)問題尤為嚴(yán)重;
????◎ 因?yàn)樵跀?shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個(gè)過濾器都增加了解析和合成數(shù)據(jù)的工作,這樣就導(dǎo)致了系統(tǒng)性能下降,并增加了編寫過濾器的復(fù)雜性。
三、分層系統(tǒng)
????層次系統(tǒng)組織成一個(gè)層次結(jié)構(gòu),每一層為上層服務(wù),并作為下層客戶。在一些層次系統(tǒng)中,除了一些精心挑選的輸出函數(shù)外,內(nèi)部的層只對(duì)相鄰的層可見。
1.優(yōu)點(diǎn)
????◎ 支持基于抽象程度遞增的系統(tǒng)設(shè)計(jì),使設(shè)計(jì)者可以把一個(gè)復(fù)雜系統(tǒng)按遞增的步驟進(jìn)行分解;
????◎ 支持功能增強(qiáng),因?yàn)槊恳粚又炼嗪拖噜彽纳舷聦咏换?#xff0c;因此功能的改變最多影響相鄰的上下層;
????◎ 支持重用。只要提供的服務(wù)接口定義不變,同一層的不同實(shí)現(xiàn)可以交換使用。這樣,就可以定義一組標(biāo)準(zhǔn)的接口,而允許各種不同的實(shí)現(xiàn)方法。
2.缺點(diǎn)
????◎ 并不是每個(gè)系統(tǒng)都可以很容易地劃分為分層的模式,甚至即使一個(gè)系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,出于對(duì)系統(tǒng)性能的考慮,系統(tǒng)設(shè)計(jì)師不得不把一些低級(jí)或高級(jí)的功能綜合起來;
????◎ 很難找到一個(gè)合適的、正確的層次抽象方法。
四、C2風(fēng)格:通過連接件綁定在一起的按照一組規(guī)則運(yùn)作的并行構(gòu)件網(wǎng)絡(luò)
1.組織規(guī)則
????◎ 系統(tǒng)中的構(gòu)件和連接件都有一個(gè)頂部和一個(gè)底部;
????◎ 構(gòu)件的頂部應(yīng)連接到某連接件的底部,構(gòu)件的底部則應(yīng)連接到某連接件的頂部,而構(gòu)件與構(gòu)件之間的直接連接是不允許的;
????◎ 一個(gè)連接件可以和任意數(shù)目的其它構(gòu)件和連接件連接;
????◎ 當(dāng)兩個(gè)連接件進(jìn)行直接連接時(shí),必須由其中一個(gè)的底部到另一個(gè)的頂部
2.示意圖
3.特點(diǎn)
????◎ 系統(tǒng)中的構(gòu)件可實(shí)現(xiàn)應(yīng)用需求,并能將任意復(fù)雜度的功能封裝在一起;
????◎ 所有構(gòu)件之間的通訊是通過以連接件為中介的異步消息交換機(jī)制來實(shí)現(xiàn)的;
????◎ 構(gòu)件相對(duì)獨(dú)立,構(gòu)件之間依賴性較少。系統(tǒng)中不存在某些構(gòu)件將在同一地址空間內(nèi)執(zhí)行,或某些構(gòu)件共享特定控制線程之類的相關(guān)性假設(shè)。
五、客戶/服務(wù)器風(fēng)格、三層客戶/服務(wù)器風(fēng)格、瀏覽器/服務(wù)器風(fēng)格
????各自優(yōu)缺點(diǎn)、區(qū)別(詳見作業(yè))
六、正交軟件體系結(jié)構(gòu)
1.定義
????????正交軟件體系結(jié)構(gòu)由組織層和線索的構(gòu)件構(gòu)成。層是由一組具有相同抽象級(jí)別的構(gòu)件構(gòu)成。線索是子系統(tǒng)的特例,它是由完成不同層次功能的構(gòu)件組成(通過相互調(diào)用來關(guān)聯(lián)),每一條線索完成整個(gè)系統(tǒng)中相對(duì)獨(dú)立的一部分功能。每一條線索的實(shí)現(xiàn)與其他線索的實(shí)現(xiàn)無關(guān)或關(guān)聯(lián)很少,在同一層中的構(gòu)件之間是不存在相互調(diào)用的。
????????如果線索是相互獨(dú)立的,即不同線索中的構(gòu)件之間沒有相互調(diào)用,那么這個(gè)結(jié)構(gòu)就是完全正交的。
2.特點(diǎn)
????◎ 正交軟件體系結(jié)構(gòu)由完成不同功能的n(n > 1)個(gè)線索(子系統(tǒng))組成;
????◎ 系統(tǒng)具有m(m > 1)個(gè)不同抽象級(jí)別的層;
????◎ 線索之間是相互獨(dú)立的(正交的);
????◎ 系統(tǒng)有一個(gè)公共驅(qū)動(dòng)層(一般為最高層)和公共數(shù)據(jù)結(jié)構(gòu)(一般為最低層)。
3.優(yōu)點(diǎn)
????◎ 結(jié)構(gòu)清晰,易于理解。由于線索功能相互獨(dú)立,不進(jìn)行互相調(diào)用,結(jié)構(gòu)簡(jiǎn)單、清晰,構(gòu)件在結(jié)構(gòu)圖中的位置已經(jīng)說明它所實(shí)現(xiàn)的是哪一級(jí)抽象,擔(dān)負(fù)的是什么功能。
????◎易修改,可維護(hù)性強(qiáng)。由于線索之間是相互獨(dú)立的,所以對(duì)一個(gè)線索的修改不會(huì)影響到其他線索。系統(tǒng)功能的增加或減少,只需相應(yīng)的增刪線索構(gòu)件族,而不影響整個(gè)正交體系結(jié)構(gòu),因此能方便地實(shí)現(xiàn)結(jié)構(gòu)調(diào)整。
????◎可移植性強(qiáng),重用粒度大。因?yàn)檎唤Y(jié)構(gòu)可以為一個(gè)領(lǐng)域內(nèi)的所有應(yīng)用程序所共享,這些軟件有著相同或類似的層次和線索,可以實(shí)現(xiàn)體系結(jié)構(gòu)級(jí)的重用。
七、基于層次消息總線的體系結(jié)構(gòu) HMB?(國(guó)內(nèi))
1.消息總線結(jié)構(gòu)
八、異構(gòu)結(jié)構(gòu)風(fēng)格
1.使用原因
????◎ 不同的結(jié)構(gòu)有不同的處理能力的強(qiáng)項(xiàng)和弱點(diǎn),一個(gè)系統(tǒng)的體系結(jié)構(gòu)應(yīng)該根據(jù)實(shí)際需要進(jìn)行選擇,以解決實(shí)際問題。
????◎ 關(guān)于軟件包、框架、通信以及其他一些體系結(jié)構(gòu)上的問題,目前存在多種標(biāo)準(zhǔn)。即使在某段時(shí)間內(nèi)某一種標(biāo)準(zhǔn)占統(tǒng)治地位,但變動(dòng)最終是絕對(duì)的。
????◎ 實(shí)際工作中,我們總會(huì)遇到一些遺留下來的代碼,它們?nèi)杂行в?#xff0c;但是卻與新系統(tǒng)有某種程度上的不協(xié)調(diào)。然而在許多場(chǎng)合,將技術(shù)與經(jīng)濟(jì)綜合進(jìn)行考慮時(shí),總是決定不再重寫它們。
????◎ 即使在某一單位中,規(guī)定了共享共同的軟件包或相互關(guān)系的一些標(biāo)準(zhǔn),仍會(huì)存在解釋或表示習(xí)慣上的不同。
2.使用實(shí)例
(1)內(nèi)外有別模型 ?
(2)查改有別模型
九、特定領(lǐng)域軟件體系結(jié)構(gòu) DSSA
1.定義
????DSSA就是專用于一類特定類型的任務(wù)(領(lǐng)域)的、在整個(gè)領(lǐng)域中能有效地使用的、為成功構(gòu)造應(yīng)用系統(tǒng)限定了標(biāo)準(zhǔn)的組合結(jié)構(gòu)的軟件構(gòu)件的集合
2.必備特征
(1)一個(gè)嚴(yán)格定義的問題域和(或)解決域
(2)具有普遍性,使其可以用于某個(gè)特定領(lǐng)域中的某個(gè)特定應(yīng)用的開發(fā)
(3)對(duì)整個(gè)領(lǐng)域的合適程度的抽象
(4)具備該領(lǐng)域固定的、典型的在開發(fā)過程中可重用的元素。
3.基本活動(dòng)
????領(lǐng)域分析、領(lǐng)域設(shè)計(jì)、領(lǐng)域?qū)崿F(xiàn)
4.參與人員
????領(lǐng)域?qū)<摇㈩I(lǐng)域分析師、領(lǐng)域設(shè)計(jì)人員和領(lǐng)域?qū)崿F(xiàn)人員。
5.階段
????DSSA的建立過程分為五個(gè)階段,每個(gè)階段可以進(jìn)一步劃分為一些步驟或者子階段,每個(gè)階段包括一組需要回答的問題,一組需要的輸入,一組將產(chǎn)生的輸出和驗(yàn)證標(biāo)準(zhǔn)。本過程是并發(fā)的、遞歸的、反復(fù)的、或者可以說,它是螺旋形。完成本過程可能需要對(duì)每個(gè)階段經(jīng)歷幾遍,每次增加更多的細(xì)節(jié)。
????DSSA的建立過程是并發(fā)的、遞歸的、反復(fù)進(jìn)行的。DSSA的建立需要設(shè)計(jì)人員對(duì)所在特定應(yīng)用領(lǐng)域必須精通,找到合適的抽象方式來實(shí)現(xiàn)DSSA的通用性和可重用性。以一種逐漸演化的方式發(fā)展。
????◎ 定義領(lǐng)域范圍:確定什么在感興趣的領(lǐng)域中以及本過程到何時(shí)結(jié)束。
????◎ 定義領(lǐng)域特定的元素:編譯領(lǐng)域字典和領(lǐng)域術(shù)語的同義詞詞典。識(shí)別領(lǐng)域中應(yīng)用間的共同性和差異性;
????◎ 定義領(lǐng)域特定的設(shè)計(jì)和實(shí)現(xiàn)需求約束:描述解空間中有差別的特性。不僅要識(shí)別出約束,并且要記錄約束對(duì)設(shè)計(jì)和實(shí)現(xiàn)決定造成的后果,還要記錄對(duì)處理這些問題時(shí)產(chǎn)生的所有問題的討論;
????◎ 定義領(lǐng)域模型和體系結(jié)構(gòu):產(chǎn)生一般的體系結(jié)構(gòu),并說明構(gòu)成它們的模塊或構(gòu)件的語法和語義;
????◎??產(chǎn)生、搜集可重用的產(chǎn)品單元:為DSSA增加構(gòu)件使得它可以被用來產(chǎn)生問題域中的新應(yīng)用。
6.DSSA和體系結(jié)構(gòu)風(fēng)格的比較 ?
????◎ DSSA以問題域?yàn)槌霭l(fā)點(diǎn),體系結(jié)構(gòu)風(fēng)格以解決域?yàn)槌霭l(fā)點(diǎn)。DSSA只對(duì)某一個(gè)領(lǐng)域進(jìn)行設(shè)計(jì)專家知識(shí)的提取、存儲(chǔ)和組織,但可以同時(shí)使用多種體系結(jié)構(gòu)風(fēng)格;而在某個(gè)體系結(jié)構(gòu)風(fēng)格中進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)專家知識(shí)的組織時(shí),可以將提取的公共結(jié)構(gòu)和設(shè)計(jì)方法擴(kuò)展到多個(gè)應(yīng)用領(lǐng)域。
????◎ DSSA通常選用一個(gè)或多個(gè)適合所研究領(lǐng)域的體系結(jié)構(gòu)風(fēng)格,并設(shè)計(jì)一個(gè)該領(lǐng)域?qū)S玫捏w系結(jié)構(gòu)分析設(shè)計(jì)工具。體系結(jié)構(gòu)風(fēng)格的定義和該風(fēng)格應(yīng)用的領(lǐng)域是直交的,提取的設(shè)計(jì)知識(shí)比用DSSA提取的設(shè)計(jì)專家知識(shí)的應(yīng)用范圍要廣。
????◎ DSSA和體系結(jié)構(gòu)風(fēng)格是互為補(bǔ)充的兩種技術(shù)。
總結(jié)
以上是生活随笔為你收集整理的《软件体系结构》第三章 软件体系结构风格的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EMVTag系列3《持卡人基本信息数据》
- 下一篇: apache phoenix 入门_实现