




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本資料來(lái)源,第三章 軟件體系結(jié)構(gòu)風(fēng)格, 定義,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.1 軟件體系結(jié)構(gòu)風(fēng)格概述,軟件體系結(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)件和連接件組合起來(lái)的。 體系結(jié)構(gòu)風(fēng)格反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語(yǔ)義特性,并指導(dǎo)如何將各個(gè)模塊和子系統(tǒng)有效地組織成一個(gè)完整的系統(tǒng)。, 討論體系結(jié)構(gòu)風(fēng)格時(shí)要回答的問(wèn)題,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.1 軟件體系結(jié)構(gòu)風(fēng)格概述, 構(gòu)件和連接件的類型是什么? 可容許的結(jié)構(gòu)模式是什么? 基本的計(jì)算
2、模型是什么? 風(fēng)格的基本不變性是什么? 其使用的常見(jiàn)例子是什么? 使用此風(fēng)格的優(yōu)缺點(diǎn)是什么? 其常見(jiàn)的特例是什么?, 經(jīng)典的體系結(jié)構(gòu)風(fēng)格,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.1 軟件體系結(jié)構(gòu)風(fēng)格概述, 數(shù)據(jù)流風(fēng)格:批處理序列;管道/過(guò)濾器。 調(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)庫(kù)風(fēng)格:數(shù)據(jù)庫(kù)系統(tǒng);超文本系統(tǒng);黑板系統(tǒng)。, 管道和過(guò)濾器,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格,每個(gè)構(gòu)件都有一組輸入和輸出,構(gòu)件讀輸入的數(shù)據(jù)流,經(jīng)過(guò)內(nèi)部處理,然后產(chǎn)生輸出數(shù)據(jù)流。這個(gè)過(guò)程通常通過(guò)對(duì)輸入流的變換及
3、增量計(jì)算來(lái)完成,所以在輸入被完全消費(fèi)之前,輸出便產(chǎn)生了。 這里的構(gòu)件被稱為過(guò)濾器,這種風(fēng)格的連接件就象是數(shù)據(jù)流傳輸?shù)墓艿?,將一個(gè)過(guò)濾器的輸出傳到另一過(guò)濾器的輸入。, 管道和過(guò)濾器,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 管道和過(guò)濾器風(fēng)格的優(yōu)點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 使得軟構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特點(diǎn); 允許設(shè)計(jì)者將整個(gè)系統(tǒng)的輸入/輸出行為看成是多個(gè)過(guò)濾器的行為的簡(jiǎn)單合成; 支持軟件重用。只要提供適合在兩個(gè)過(guò)濾器之間傳送的數(shù)據(jù),任何兩個(gè)過(guò)濾器都可被連接起來(lái); 系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡(jiǎn)單。新的過(guò)濾器可以添加到現(xiàn)有系統(tǒng)中來(lái);舊的可以
4、被改進(jìn)的過(guò)濾器替換掉; 允許對(duì)一些如吞吐量、死鎖等屬性的分析; 支持并行執(zhí)行。每個(gè)過(guò)濾器是作為一個(gè)單獨(dú)的任務(wù)完成,因此可與其它任務(wù)并行執(zhí)行。, 管道和過(guò)濾器的缺點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 通常導(dǎo)致進(jìn)程成為批處理的結(jié)構(gòu)。這是因?yàn)殡m然過(guò)濾器可增量式地處理數(shù)據(jù),但它們是獨(dú)立的,所以設(shè)計(jì)者必須將每個(gè)過(guò)濾器看成一個(gè)完整的從輸入到輸出的轉(zhuǎn)換; 不適合處理交互的應(yīng)用。當(dāng)需要增量地顯示改變時(shí),這個(gè)問(wèn)題尤為嚴(yán)重; 因?yàn)樵跀?shù)據(jù)傳輸上沒(méi)有通用的標(biāo)準(zhǔn),每個(gè)過(guò)濾器都增加了解析和合成數(shù)據(jù)的工作,這樣就導(dǎo)致了系統(tǒng)性能下降,并增加了編寫(xiě)過(guò)濾器的復(fù)雜性。, 數(shù)據(jù)抽象和面向?qū)ο蠼M織,第3章 軟件
5、體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格,這種風(fēng)格建立在數(shù)據(jù)抽象和面向?qū)ο蟮幕A(chǔ)上,數(shù)據(jù)的表示方法和它們的相應(yīng)操作封裝在一個(gè)抽象數(shù)據(jù)類型或?qū)ο笾小?這種風(fēng)格的構(gòu)件是對(duì)象,或者說(shuō)是抽象數(shù)據(jù)類型的實(shí)例。對(duì)象是一種被稱作管理者的構(gòu)件,因?yàn)樗?fù)責(zé)保持資源的完整性。對(duì)象是通過(guò)函數(shù)和過(guò)程的調(diào)用來(lái)交互的。, 數(shù)據(jù)抽象和面向?qū)ο蠼M織,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 面向?qū)ο笙到y(tǒng)的優(yōu)點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 因?yàn)閷?duì)象對(duì)其它對(duì)象隱藏它的表示,所以可以改變一個(gè)對(duì)象的表示,而不影響其它的對(duì)象; 設(shè)計(jì)者可將一些數(shù)據(jù)存取操作的問(wèn)題分解成一些交互的代理程序的集
6、合。, 面向?qū)ο笙到y(tǒng)的缺點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 為了使一個(gè)對(duì)象和另一個(gè)對(duì)象通過(guò)過(guò)程調(diào)用等進(jìn)行交互,必須知道對(duì)象的標(biāo)識(shí)。只要一個(gè)對(duì)象的標(biāo)識(shí)改變了,就必須修改所有其他明確調(diào)用它的對(duì)象; 必須修改所有顯式調(diào)用它的其它對(duì)象,并消除由此帶來(lái)的一些副作用。例如,如果A使用了對(duì)象B,C也使用了對(duì)象B,那么,C對(duì)B的使用所造成的對(duì)A的影響可能是料想不到的。, 基于事件的隱式調(diào)用,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格,構(gòu)件不直接調(diào)用一個(gè)過(guò)程,而是觸發(fā)或廣播一個(gè)或多個(gè)事件。系統(tǒng)中的其它構(gòu)件中的過(guò)程在一個(gè)或多個(gè)事件中注冊(cè),當(dāng)一個(gè)事件被觸發(fā),系統(tǒng)自動(dòng)調(diào)用在這個(gè)事
7、件中注冊(cè)的所有過(guò)程,這樣,一個(gè)事件的觸發(fā)就導(dǎo)致了另一模塊中的過(guò)程的調(diào)用。 這種風(fēng)格的構(gòu)件是一些模塊,模塊既可以是一些過(guò)程,又可以是一些事件的集合。過(guò)程可以用通用的方式調(diào)用,也可以在系統(tǒng)事件中注冊(cè)一些過(guò)程,當(dāng)發(fā)生這些事件時(shí),過(guò)程被調(diào)用。 這種風(fēng)格的主要特點(diǎn)是事件的觸發(fā)者并不知道哪些構(gòu)件會(huì)被這些事件影響。這樣不能假定構(gòu)件的處理順序,甚至不知道哪些過(guò)程會(huì)被調(diào)用,因此,許多隱式調(diào)用的系統(tǒng)也包含顯式調(diào)用作為構(gòu)件交互的補(bǔ)充形式。, 基于事件的隱式調(diào)用的優(yōu)點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 為軟件重用提供了強(qiáng)大的支持。當(dāng)需要將一個(gè)構(gòu)件加入現(xiàn)存系統(tǒng)中時(shí),只需將它注冊(cè)到系統(tǒng)的事件中。
8、為改進(jìn)系統(tǒng)帶來(lái)了方便。當(dāng)用一個(gè)構(gòu)件代替另一個(gè)構(gòu)件時(shí),不會(huì)影響到其它構(gòu)件的接口。, 基于事件的隱式調(diào)用的缺點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 構(gòu)件放棄了對(duì)系統(tǒng)計(jì)算的控制。一個(gè)構(gòu)件觸發(fā)一個(gè)事件時(shí),不能確定其它構(gòu)件是否會(huì)響應(yīng)它。而且即使它知道事件注冊(cè)了哪些構(gòu)件的構(gòu)成,它也不能保證這些過(guò)程被 調(diào)用的順序。 數(shù)據(jù)交換的問(wèn)題。有時(shí)數(shù)據(jù)可被一個(gè)事件傳遞,但另一些情況下,基于事件的系統(tǒng)必須依靠一個(gè)共享的倉(cāng)庫(kù)進(jìn)行交互。在這些情況下,全局性能和資源管理便成了問(wèn)題。 既然過(guò)程的語(yǔ)義必須依賴于被觸發(fā)事件的上下文約束,關(guān)于正確性的推理存在問(wèn)題。, 分層系統(tǒng),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)
9、典軟件體系結(jié)構(gòu)風(fēng)格,層次系統(tǒng)組織成一個(gè)層次結(jié)構(gòu),每一層為上層服務(wù),并作為下層客戶。在一些層次系統(tǒng)中,除了一些精心挑選的輸出函數(shù)外,內(nèi)部的層只對(duì)相鄰的層可見(jiàn)。這樣的系統(tǒng)中構(gòu)件在一些層實(shí)現(xiàn)了虛擬機(jī)(在另一些層次系統(tǒng)中層是部分不透明的)。連接件通過(guò)決定層間如何交互的協(xié)議來(lái)定義,拓?fù)浼s束包括對(duì)相鄰層間交互的約束。 這種風(fēng)格支持基于可增加抽象層的設(shè)計(jì)。允許將一個(gè)復(fù)雜問(wèn)題分解成一個(gè)增量步驟序列的實(shí)現(xiàn)。由于每一層最多只影響兩層,同時(shí)只要給相鄰層提供相同的接口,允許每層用不同的方法實(shí)現(xiàn),同樣為軟件重用提供了強(qiáng)大的支持。, 分層系統(tǒng),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 分層系統(tǒng)的優(yōu)點(diǎn),第3
10、章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 支持基于抽象程度遞增的系統(tǒng)設(shè)計(jì),使設(shè)計(jì)者可以把一個(gè)復(fù)雜系統(tǒng)按遞增的步驟進(jìn)行分解; 支持功能增強(qiáng),因?yàn)槊恳粚又炼嗪拖噜彽纳舷聦咏换?,因此功能的改變最多影響相鄰的上下層?支持重用。只要提供的服務(wù)接口定義不變,同一層的不同實(shí)現(xiàn)可以交換使用。這樣,就可以定義一組標(biāo)準(zhǔn)的接口,而允許各種不同的實(shí)現(xiàn)方法。, 分層系統(tǒng)的缺點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 并不是每個(gè)系統(tǒng)都可以很容易地劃分為分層的模式,甚至即使一個(gè)系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,出于對(duì)系統(tǒng)性能的考慮,系統(tǒng)設(shè)計(jì)師不得不把一些低級(jí)或高級(jí)的功能綜合起來(lái); 很難找到一個(gè)合適的
11、、正確的層次抽象方法。, 倉(cāng)庫(kù)系統(tǒng)及知識(shí)庫(kù),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格,在倉(cāng)庫(kù)風(fēng)格中,有兩種不同的構(gòu)件:中央數(shù)據(jù)結(jié)構(gòu)說(shuō)明當(dāng)前狀態(tài),獨(dú)立構(gòu)件在中央數(shù)據(jù)存貯上執(zhí)行,倉(cāng)庫(kù)與外構(gòu)件間的相互作用在系統(tǒng)中會(huì)有大的變化。 控制原則的選取產(chǎn)生兩個(gè)主要的子類。若輸入流中某類時(shí)間觸發(fā)進(jìn)程執(zhí)行的選擇,則倉(cāng)庫(kù)是一傳統(tǒng)型數(shù)據(jù)庫(kù);另一方面,若中央數(shù)據(jù)結(jié)構(gòu)的當(dāng)前狀態(tài)觸發(fā)進(jìn)程執(zhí)行的選擇,則倉(cāng)庫(kù)是一黑板系統(tǒng)。, 倉(cāng)庫(kù)系統(tǒng)及知識(shí)庫(kù),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, C2風(fēng)格,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格,通過(guò)連接件綁定在一起的按照一組規(guī)則運(yùn)作的并行構(gòu)件
12、網(wǎng)絡(luò)。C2風(fēng)格中的系統(tǒng)組織規(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è)的頂部。, C2風(fēng)格,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, C2風(fēng)格的特點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格, 系統(tǒng)中的構(gòu)件可實(shí)現(xiàn)應(yīng)用需求,并能將任意復(fù)雜度的功能封裝在一起; 所有構(gòu)件之間的通訊是通過(guò)以連接件為中介的異步消息交換機(jī)制來(lái)實(shí)現(xiàn)的; 構(gòu)件相對(duì)獨(dú)立,
13、構(gòu)件之間依賴性較少。系統(tǒng)中不存在某些構(gòu)件將在同一地址空間內(nèi)執(zhí)行,或某些構(gòu)件共享特定控制線程之類的相關(guān)性假設(shè)。, 產(chǎn)生背景,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.3 客戶/服務(wù)器風(fēng)格, 在集中式計(jì)算技術(shù)時(shí)代廣泛使用的是大型機(jī)/小型機(jī)計(jì)算模型。它是通過(guò)一臺(tái)物理上與宿主機(jī)相連接的非智能終端來(lái)實(shí)現(xiàn)宿主機(jī)上的應(yīng)用程序。 20世紀(jì)80年代以后,集中式結(jié)構(gòu)逐漸被以PC機(jī)為主的微機(jī)網(wǎng)絡(luò)所取代。個(gè)人計(jì)算機(jī)和工作站的采用,永遠(yuǎn)改變了協(xié)作計(jì)算模型,從而導(dǎo)致了分散的個(gè)人計(jì)算模型的產(chǎn)生。, 基本概念,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.3 客戶/服務(wù)器風(fēng)格, C/S軟件體系結(jié)構(gòu)是基于資源不對(duì)等,且為實(shí)現(xiàn)共享而提出來(lái)的,是20世紀(jì)90
14、年代成熟起來(lái)的技術(shù),C/S體系結(jié)構(gòu)定義了工作站如何與服務(wù)器相連,以實(shí)現(xiàn)數(shù)據(jù)和應(yīng)用分布到多個(gè)處理機(jī)上。 C/S體系結(jié)構(gòu)有三個(gè)主要組成部分:數(shù)據(jù)庫(kù)服務(wù)器、客戶應(yīng)用程序和網(wǎng)絡(luò)。, 體系結(jié)構(gòu),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.3 客戶/服務(wù)器風(fēng)格, 任務(wù)分配,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.3 客戶/服務(wù)器風(fēng)格, 服務(wù)器 (1)數(shù)據(jù)庫(kù)安全性的要求; (2)數(shù)據(jù)庫(kù)訪問(wèn)并發(fā)性的控制; (3)數(shù)據(jù)庫(kù)前端的客戶應(yīng)用程序的全局?jǐn)?shù)據(jù)完整性規(guī)則; (4)數(shù)據(jù)庫(kù)的備份與恢復(fù)。, 任務(wù)分配,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.3 客戶/服務(wù)器風(fēng)格, 客戶應(yīng)用程序 (1)提供用戶與數(shù)據(jù)庫(kù)交互的界面; (2)向數(shù)據(jù)庫(kù)服務(wù)器提交用戶請(qǐng)求
15、并接收來(lái)自數(shù)據(jù)庫(kù)服務(wù)器的信息; (3)利用客戶應(yīng)用程序?qū)Υ嬖谟诳蛻舳说臄?shù)據(jù)執(zhí)行應(yīng)用邏輯要求。, 處理流程,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.3 客戶/服務(wù)器風(fēng)格, 優(yōu)點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.3 客戶/服務(wù)器風(fēng)格, C/S 體系結(jié)構(gòu)具有強(qiáng)大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡(jiǎn)單,易于人們理解和接受。 系統(tǒng)的客戶應(yīng)用程序和服務(wù)器構(gòu)件分別運(yùn)行在不同的計(jì)算機(jī)上,系統(tǒng)中每臺(tái)服務(wù)器都可以適合各構(gòu)件的要求,這對(duì)于硬件和軟件的變化顯示出極大的適應(yīng)性和靈活性,而且易于對(duì)系統(tǒng)進(jìn)行擴(kuò)充和縮小。 在C/S體系結(jié)構(gòu)中,系統(tǒng)中的功能構(gòu)件充分隔離,客戶應(yīng)用程序的開(kāi)發(fā)集中于數(shù)據(jù)的顯示和分析,而數(shù)據(jù)庫(kù)服務(wù)器的開(kāi)發(fā)則集中于
16、數(shù)據(jù)的管理,不必在每一個(gè)新的應(yīng)用程序中都要對(duì)一個(gè)DBMS進(jìn)行編碼。將大的應(yīng)用處理任務(wù)分布到許多通過(guò)網(wǎng)絡(luò)連接的低成本計(jì)算機(jī)上,以節(jié)約大量費(fèi)用。, 缺點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.3 客戶/服務(wù)器風(fēng)格, 開(kāi)發(fā)成本較高 客戶端程序設(shè)計(jì)復(fù)雜 信息內(nèi)容和形式單一 用戶界面風(fēng)格不一,使用繁雜,不利于推廣使用 軟件移植困難 軟件維護(hù)和升級(jí)困難 新技術(shù)不能輕易應(yīng)用, 體系結(jié)構(gòu),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.4 三層客戶/服務(wù)器風(fēng)格, 處理流程,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.4 三層客戶/服務(wù)器風(fēng)格, 物理結(jié)構(gòu),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.4 三層客戶/服務(wù)器風(fēng)格, 應(yīng)用實(shí)例,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3
17、.4 三層客戶/服務(wù)器風(fēng)格,自學(xué), 優(yōu)點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.4 三層客戶/服務(wù)器風(fēng)格, 允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對(duì)獨(dú)立性,能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性。 允許更靈活有效地選用相應(yīng)的平臺(tái)和硬件系統(tǒng),使之在處理負(fù)荷能力上與處理特性上分別適應(yīng)于結(jié)構(gòu)清晰的三層;并且這些平臺(tái)和各個(gè)組成部分可以具有良好的可升級(jí)性和開(kāi)放性。 應(yīng)用的各層可以并行開(kāi)發(fā),可以選擇各自最適合的開(kāi)發(fā)語(yǔ)言。 利用功能層有效地隔離開(kāi)表示層與數(shù)據(jù)層,未授權(quán)的用戶難以繞過(guò)功能層而利用數(shù)據(jù)庫(kù)工具或黑客手段去非法地訪問(wèn)數(shù)據(jù)層,為嚴(yán)格的安全管理奠定了堅(jiān)實(shí)的基礎(chǔ)。, 要注意的問(wèn)題,第3章 軟件體系結(jié)構(gòu)風(fēng)格
18、,3.4 三層客戶/服務(wù)器風(fēng)格, 三層C/S結(jié)構(gòu)各層間的通信效率若不高,即使分配給各層的硬件能力很強(qiáng),其作為整體來(lái)說(shuō)也達(dá)不到所要求的性能。 設(shè)計(jì)時(shí)必須慎重考慮三層間的通信方法、通信頻度及數(shù)據(jù)量。這和提高各層的獨(dú)立性一樣是三層C/S結(jié)構(gòu)的關(guān)鍵問(wèn)題。, 基本概念,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.5 瀏覽器/服務(wù)器風(fēng)格, 瀏覽器/服務(wù)器(B/S)風(fēng)格就是上述三層應(yīng)用結(jié)構(gòu)的一種實(shí)現(xiàn)方式,其具體結(jié)構(gòu)為:瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器。 B/S體系結(jié)構(gòu)主要是利用不斷成熟的.瀏覽器技術(shù),結(jié)合瀏覽器的多種腳本語(yǔ)言,用通用瀏覽器就實(shí)現(xiàn)了原來(lái)需要復(fù)雜的專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開(kāi)發(fā)成本。從某種程度上來(lái)
19、說(shuō),B/S結(jié)構(gòu)是一種全新的軟件體系結(jié)構(gòu)。, 體系結(jié)構(gòu),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.5 瀏覽器/服務(wù)器風(fēng)格, 優(yōu)點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.5 瀏覽器/服務(wù)器風(fēng)格, 基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決。用戶在使用系統(tǒng)時(shí),僅僅需要一個(gè)瀏覽器就可運(yùn)行全部的模塊,真正達(dá)到了“零客戶端”的功能,很容易在運(yùn)行時(shí)自動(dòng)升級(jí)。 B/S體系結(jié)構(gòu)還提供了異種機(jī)、異種網(wǎng)、異種應(yīng)用服務(wù)的聯(lián)機(jī)、聯(lián)網(wǎng)、統(tǒng)一服務(wù)的最現(xiàn)實(shí)的開(kāi)放性基礎(chǔ)。, 缺點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.5 瀏覽器/服務(wù)器風(fēng)格, B/S體系結(jié)構(gòu)缺乏對(duì)動(dòng)態(tài)頁(yè)面的支持能力,沒(méi)有集成有效的數(shù)據(jù)庫(kù)處理功能。 B/S體系結(jié)構(gòu)的系統(tǒng)
20、擴(kuò)展能力差,安全性難以控制。 采用B/S體系結(jié)構(gòu)的應(yīng)用系統(tǒng),在數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)地低于C/S體系結(jié)構(gòu)。 B/S體系結(jié)構(gòu)的數(shù)據(jù)提交一般以頁(yè)面為單位,數(shù)據(jù)的動(dòng)態(tài)交互性不強(qiáng),不利于在線事務(wù)處理(OLTP)應(yīng)用。, 對(duì)象管理結(jié)構(gòu),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.6 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu), CORBA技術(shù)規(guī)范,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.6 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu), 接口定義語(yǔ)言(IDL) 接口池(IR) 動(dòng)態(tài)調(diào)用接口(DII) 對(duì)象適配器(OA), CORBA技術(shù)規(guī)范,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.6 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu), 接口定義語(yǔ)言 CORBA利用IDL統(tǒng)一地描述服務(wù)器對(duì)象(
21、向調(diào)用者提供服務(wù)的對(duì)象)的接口。IDL本身也是面向?qū)ο蟮?。它雖然不是編程語(yǔ)言,但它為客戶對(duì)象(發(fā)出服務(wù)請(qǐng)求的對(duì)象)提供了語(yǔ)言的獨(dú)立性,因?yàn)榭蛻魧?duì)象只需了解服務(wù)器對(duì)象的IDL接口,不必知道其編程語(yǔ)言。 IDL語(yǔ)言是CORBA規(guī)范中定義的一種中性語(yǔ)言,它用來(lái)描述對(duì)象的接口,而不涉及對(duì)象的具體實(shí)現(xiàn)。 在CORBA中定義了IDL語(yǔ)言到C、C+、SmallTalk和Java語(yǔ)言的映射。, CORBA技術(shù)規(guī)范,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.6 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu), 接口池 CORBA的接口池包括了分布計(jì)算環(huán)境中所有可用的服務(wù)器對(duì)象的接口表示。它使動(dòng)態(tài)搜索可用服務(wù)器的接口、動(dòng)態(tài)構(gòu)造請(qǐng)求及參數(shù)成為可能。
22、, CORBA技術(shù)規(guī)范,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.6 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu), 動(dòng)態(tài)調(diào)用接口 CORBA的動(dòng)態(tài)調(diào)用接口提供了一些標(biāo)準(zhǔn)函數(shù)以供客戶對(duì)象動(dòng)態(tài)創(chuàng)建請(qǐng)求、動(dòng)態(tài)構(gòu)造請(qǐng)求參數(shù)??蛻魧?duì)象將動(dòng)態(tài)調(diào)用接口與接口池配合使用可實(shí)現(xiàn)服務(wù)器對(duì)象接口的動(dòng)態(tài)搜索、請(qǐng)求及參數(shù)的動(dòng)態(tài)構(gòu)造與動(dòng)態(tài)發(fā)送。當(dāng)然,只要客戶對(duì)象在編譯之前能夠確定服務(wù)器對(duì)象的IDL接口,CORBA也允許客戶對(duì)象使用靜態(tài)調(diào)用機(jī)制。顯然,靜態(tài)機(jī)制的靈活性雖不及動(dòng)態(tài)機(jī)制,但執(zhí)行效率卻勝過(guò)動(dòng)態(tài)機(jī)制。, CORBA技術(shù)規(guī)范,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.6 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu), 動(dòng)態(tài)調(diào)用接口 在CORBA中,對(duì)象適配器用于屏蔽ORB內(nèi)核的
23、實(shí)現(xiàn)細(xì)節(jié),為服務(wù)器對(duì)象的實(shí)現(xiàn)者提供抽象接口,以便他們使用ORB內(nèi)部的某些功能。這些功能包括服務(wù)器對(duì)象的登錄與激活、客戶請(qǐng)求的認(rèn)證等。, 體系結(jié)構(gòu),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.6 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu), 特點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.6 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu), 引入中間件作為事務(wù)代理,完成客戶機(jī)向服務(wù)對(duì)象方(Server)提出的業(yè)務(wù)請(qǐng)求。 實(shí)現(xiàn)客戶與服務(wù)對(duì)象的完全分開(kāi),客戶不需要了解服務(wù)對(duì)象的實(shí)現(xiàn)過(guò)程以及具體位置。 提供軟總線機(jī)制,使得在任何環(huán)境下、采用任何語(yǔ)言開(kāi)發(fā)的軟件只要符合接口規(guī)范的定義,均能夠集成到分布式系統(tǒng)中。 CORBA規(guī)范軟件系統(tǒng)采用面向?qū)ο蟮能浖?shí)現(xiàn)方法開(kāi)發(fā)應(yīng)用系
24、統(tǒng),實(shí)現(xiàn)對(duì)象內(nèi)部細(xì)節(jié)的完整封裝,保留對(duì)象方法的對(duì)外接口定義。, 概念,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.7 正交軟件體系結(jié)構(gòu),正交軟件體系結(jié)構(gòu)由組織層和線索的構(gòu)件構(gòu)成。層是由一組具有相同抽象級(jí)別的構(gòu)件構(gòu)成。線索是子系統(tǒng)的特例,它是由完成不同層次功能的構(gòu)件組成(通過(guò)相互調(diào)用來(lái)關(guān)聯(lián)),每一條線索完成整個(gè)系統(tǒng)中相對(duì)獨(dú)立的一部分功能。每一條線索的實(shí)現(xiàn)與其他線索的實(shí)現(xiàn)無(wú)關(guān)或關(guān)聯(lián)很少,在同一層中的構(gòu)件之間是不存在相互調(diào)用的。 如果線索是相互獨(dú)立的,即不同線索中的構(gòu)件之間沒(méi)有相互調(diào)用,那么這個(gè)結(jié)構(gòu)就是完全正交的。, 框架,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.7 正交軟件體系結(jié)構(gòu), 特征,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.
25、7 正交軟件體系結(jié)構(gòu), 正交軟件體系結(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)(一般為最低層)。, 實(shí)例,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.7 正交軟件體系結(jié)構(gòu),自學(xué), 優(yōu)點(diǎn),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.7 正交軟件體系結(jié)構(gòu), 結(jié)構(gòu)清晰,易于理解。由于線索功能相互獨(dú)立,不進(jìn)行互相調(diào)用,結(jié)構(gòu)簡(jiǎn)單、清晰,構(gòu)件在結(jié)構(gòu)圖中的位置已經(jīng)說(shuō)明它所實(shí)現(xiàn)的是哪一級(jí)抽象,擔(dān)負(fù)的是什么功能。 易修改,可維護(hù)性強(qiáng)。由于線索之間是相互獨(dú)立的,所以對(duì)一個(gè)線索的修改不會(huì)影響到其他線索。系
26、統(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í)的重用。, 概述,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.8 基于層次消息總線的體系結(jié)構(gòu), HMB風(fēng)格的構(gòu)件模型,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.8 基于層次消息總線的體系結(jié)構(gòu), 構(gòu)件接口,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.8 基于層次消息總線的體系結(jié)構(gòu), HMB風(fēng)格的構(gòu)件接口是一種基于消息的互聯(lián)接口,可以較好地支持體系結(jié)構(gòu)設(shè)計(jì)。構(gòu)件之間通過(guò)消息進(jìn)行通訊,接口定義了構(gòu)件發(fā)出和接收的消息
27、集合。 當(dāng)某個(gè)事件發(fā)生后,系統(tǒng)或構(gòu)件發(fā)出相應(yīng)的消息,消息總線負(fù)責(zé)把該消息傳遞到此消息感興趣的構(gòu)件。 按照響應(yīng)方式的不同,消息可分為同步消息和異步消息。, 消息總線,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.8 基于層次消息總線的體系結(jié)構(gòu), 構(gòu)件靜態(tài)結(jié)構(gòu),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.8 基于層次消息總線的體系結(jié)構(gòu), 構(gòu)件動(dòng)態(tài)行為,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.8 基于層次消息總線的體系結(jié)構(gòu), 構(gòu)件的行為就由外來(lái)消息的類型唯一確定,即一個(gè)消息和構(gòu)件的某個(gè)操作之間存在著固定的對(duì)應(yīng)關(guān)系。對(duì)于這類構(gòu)件,可以認(rèn)為構(gòu)件只有一個(gè)狀態(tài),或者在每次對(duì)消息響應(yīng)之前,構(gòu)件處于初始狀態(tài)。 更通常的情況是,構(gòu)件的行為同時(shí)受外來(lái)消息
28、類型和自身當(dāng)前所處狀態(tài)的影響。, 運(yùn)行時(shí)刻的系統(tǒng)演化,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.8 基于層次消息總線的體系結(jié)構(gòu), 動(dòng)態(tài)增加或刪除構(gòu)件 動(dòng)態(tài)改變構(gòu)件響應(yīng)的消息類型 消息過(guò)濾, 為什么要使用異構(gòu)結(jié)構(gòu),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.9 異構(gòu)結(jié)構(gòu)風(fēng)格, 不同的結(jié)構(gòu)有不同的處理能力的強(qiáng)項(xiàng)和弱點(diǎn),一個(gè)系統(tǒng)的體系結(jié)構(gòu)應(yīng)該根據(jù)實(shí)際需要進(jìn)行選擇,以解決實(shí)際問(wèn)題。 關(guān)于軟件包、框架、通信以及其他一些體系結(jié)構(gòu)上的問(wèn)題,目前存在多種標(biāo)準(zhǔn)。即使在某段時(shí)間內(nèi)某一種標(biāo)準(zhǔn)占統(tǒng)治地位,但變動(dòng)最終是絕對(duì)的。 實(shí)際工作中,我們總會(huì)遇到一些遺留下來(lái)的代碼,它們?nèi)杂行в?,但是卻與新系統(tǒng)有某種程度上的不協(xié)調(diào)。然而在許多場(chǎng)合,將技術(shù)與
29、經(jīng)濟(jì)綜合進(jìn)行考慮時(shí),總是決定不再重寫(xiě)它們。 即使在某一單位中,規(guī)定了共享共同的軟件包或相互關(guān)系的一些標(biāo)準(zhǔn),仍會(huì)存在解釋或表示習(xí)慣上的不同。, C/S與B/S混合之內(nèi)外有別模型,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.9 異構(gòu)結(jié)構(gòu)風(fēng)格, C/S與B/S混合之查改有別模型,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.9 異構(gòu)結(jié)構(gòu)風(fēng)格, 異構(gòu)實(shí)例,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.9 異構(gòu)結(jié)構(gòu)風(fēng)格, 互連系統(tǒng)構(gòu)成的系統(tǒng),第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.10 SIS體系結(jié)構(gòu)風(fēng)格, 基于SASIS的軟件過(guò)程,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.10 SIS體系結(jié)構(gòu)風(fēng)格, 基于SASIS的軟件過(guò)程,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.10 SIS體系結(jié)構(gòu)風(fēng)格, 基于SASIS的軟件過(guò)程,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.10 SIS體系結(jié)構(gòu)風(fēng)格, 定義,第3章 軟件體系結(jié)構(gòu)風(fēng)格,3.11 特定領(lǐng)域軟件體系結(jié)構(gòu), Hayes-Roth對(duì)DSSA的定義如下:“DSSA就是專用于一類特定類型的任務(wù)(領(lǐng)域)的、在整個(gè)領(lǐng)域中能有效地使用的、為成功構(gòu)造應(yīng)用系統(tǒng)限定了標(biāo)準(zhǔn)的組合結(jié)構(gòu)的軟件構(gòu)件的集合”。 Tracz的定義
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 油氣開(kāi)采智能化風(fēng)險(xiǎn)評(píng)估與管理
- 嬰兒腦癱早期診斷技術(shù)
- 英語(yǔ)四級(jí)高頻詞匯表
- 文化產(chǎn)業(yè)園區(qū)場(chǎng)地?zé)o償使用與文創(chuàng)產(chǎn)業(yè)發(fā)展合同
- 出差合同中環(huán)保責(zé)任及措施協(xié)議
- 倉(cāng)儲(chǔ)物流倉(cāng)儲(chǔ)配送信息化合同范本
- 餐飲店加盟管理與培訓(xùn)合作協(xié)議
- 柴油儲(chǔ)存設(shè)施租賃與運(yùn)營(yíng)管理合同
- 民用機(jī)場(chǎng)租賃合同中英文本詳細(xì)約定
- 餐飲連鎖品牌分店租賃經(jīng)營(yíng)合同
- 醫(yī)藥電商區(qū)域銷售數(shù)據(jù)特征研究-洞察闡釋
- 2025年新修訂《治安管理處罰法》
- 中式烹調(diào)考試試題及答案
- 配電室運(yùn)行維護(hù)投標(biāo)方案(技術(shù)標(biāo))
- 壓力分散型錨索張拉方案
- stoll電腦橫機(jī)各個(gè)線路板的功能
- 組委會(huì)結(jié)構(gòu)圖與職責(zé)說(shuō)明寧(共4頁(yè))
- 項(xiàng)目管理手冊(cè)
- 體育投擲單元教學(xué)計(jì)劃(共4頁(yè))
- 唯一住房補(bǔ)貼申請(qǐng)書(shū)
- 股東進(jìn)入退出機(jī)制
評(píng)論
0/150
提交評(píng)論