第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第1頁
第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第2頁
第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第3頁
第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第4頁
第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第5頁
已閱讀5頁,還剩152頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1軟件體系結(jié)構(gòu)的風(fēng)格和模式SoftwareArchitecture建筑模式ChristopherAlexander,TheTimelessWayofBuilding,p247,1979每個模式是一個由三部分組成的規(guī)則,表達(dá)了特定環(huán)境、問題和解(solution)之間的關(guān)系。作為現(xiàn)實世界的一個成分,每個模式表達(dá)了下列三者之間的一種關(guān)系:特定環(huán)境,在該環(huán)境中反復(fù)出現(xiàn)的力(forces)的系統(tǒng),以及協(xié)調(diào)這些力的某種空間排列。作為語言的一個成分,每個模式是一條指令,展示了這種空間排列如何被一再重復(fù)使用,目的是協(xié)調(diào)同特定環(huán)境相關(guān)的力的系統(tǒng)。簡單地說,模式既是存在于現(xiàn)實世界中的事物,又是告訴我們?nèi)绾我约昂螘r創(chuàng)造該事物的規(guī)則。模式既是過程,又是事物;既是活生生的事物的描述,又是創(chuàng)造該事物的過程的描述。軟件體系結(jié)構(gòu)的構(gòu)建模式軟件體系結(jié)構(gòu)的特點之一就是抽象出了很多常見的系統(tǒng)構(gòu)建模式,這些模式(或者說結(jié)構(gòu)風(fēng)格)是系統(tǒng)設(shè)計人員多年工作經(jīng)驗的總結(jié)。軟件體系結(jié)構(gòu)風(fēng)格和模式的概念軟件體系結(jié)構(gòu)風(fēng)格(ArchitecturalStyle)一種體系結(jié)構(gòu)風(fēng)格以結(jié)構(gòu)組織模式定義了一個系統(tǒng)家族關(guān)于構(gòu)件和連接件類型的術(shù)語;一組約束對它們組合方式的規(guī)定;一個或多個語義模型,規(guī)定了如何從各成分的特性決定系統(tǒng)整體特性概括地說,一種軟件體系結(jié)構(gòu)風(fēng)格刻劃一個具有共享結(jié)構(gòu)和語義的系統(tǒng)家族軟件體系結(jié)構(gòu)模式(ArchitecturalPattern)一種軟件體系結(jié)構(gòu)模式是對某個具體環(huán)境下問題的結(jié)構(gòu)性解決方法體系結(jié)構(gòu)風(fēng)格模式系統(tǒng)中的詞匯目前尚不完善每個風(fēng)格可以視為一組構(gòu)件的集合,以及構(gòu)件間的交互(連接器)構(gòu)件(Components)+連接器(Connectors)E.g. C/S結(jié)構(gòu)中構(gòu)件:Client,Server連接器:C/S間的通訊協(xié)議軟件體系結(jié)構(gòu)的構(gòu)建風(fēng)格風(fēng)格分類:

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

2.面向?qū)ο箫L(fēng)格

3.事件驅(qū)動風(fēng)格

4.分層風(fēng)格

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

6.解釋器風(fēng)格

7.反饋控制環(huán)風(fēng)格

8.異構(gòu)風(fēng)格的集成特別注意:體系結(jié)構(gòu)風(fēng)格不是對軟件進(jìn)行分類的標(biāo)準(zhǔn)。它僅僅是表示描述軟件的不同角度而已例如一個系統(tǒng)采用了分層風(fēng)格,但這并不妨礙它用面向?qū)ο蟮姆椒▉韺崿F(xiàn)。同一個系統(tǒng)采用多種風(fēng)格造成了所謂體系結(jié)構(gòu)風(fēng)格的異構(gòu)組合。管道-過濾器風(fēng)格概述在管道-過濾器風(fēng)格下,每個功能模塊都有一組輸入和輸出。功能模塊稱作過濾器(filters);功能模塊間的連接可以看作輸入、輸出數(shù)據(jù)流之間的通路,所以稱作管道(pipes)。管道-過濾器風(fēng)格的特性之一在于過濾器的相對獨立性,即過濾器獨立完成自身功能,相互之間無需進(jìn)行狀態(tài)交互。管道-過濾器風(fēng)格特性過濾器是獨立運行的構(gòu)件非臨近的過濾器之間不共享狀態(tài)過濾器自身無狀態(tài)過濾器對其處理上下連接的過濾器“無知”對相鄰的過濾器不施加任何限制結(jié)果的正確性不依賴于各個過濾器運行的先后次序各過濾器在輸入具備后完成自己的計算。完整的計算過程包含在過濾器之間的拓?fù)浣Y(jié)構(gòu)中。管道-過濾器風(fēng)格一個管道-過濾器風(fēng)格的示意圖如下圖所示:管道-過濾器風(fēng)格一個采用了嵌套的管道過濾器的系統(tǒng)示例:管道-過濾器風(fēng)格優(yōu)點設(shè)計者可以將整個系統(tǒng)的輸入、輸出特性簡單的理解為各個過濾器功能的合成。設(shè)計人員將整個系統(tǒng)的輸入輸出行為理解為單個過濾器行為的疊加與組合。這樣可以將問題分解,化繁為簡。將系統(tǒng)抽象成一個“黑箱”,其輸入是系統(tǒng)中第一個過濾器的輸入管道,輸出是系統(tǒng)中最后一個過濾器的輸出管道,而其內(nèi)部各功能模塊的具體實現(xiàn)對用戶完全透明。管道-過濾器風(fēng)格優(yōu)點管道-過濾器風(fēng)格支持功能模塊的復(fù)用任何兩個過濾器,只要它們之間傳送的數(shù)據(jù)遵守共同的規(guī)約,就可以相連接。每個過濾器都有自己獨立的輸入輸出接口,如果過濾器間傳輸?shù)臄?shù)據(jù)遵守其規(guī)約,只要用管道將它們連接就可以正常工作。管道-過濾器風(fēng)格優(yōu)點基于管道-過濾器風(fēng)格的系統(tǒng)具有較強(qiáng)的可維護(hù)性和可擴(kuò)展性。舊的過濾器可以被替代,新的過濾器可以添加到已有的系統(tǒng)上。軟件的易于維護(hù)和升級是衡量軟件系統(tǒng)質(zhì)量的重要指標(biāo)之一,在管道-過濾器模型中,只要遵守輸入輸出數(shù)據(jù)規(guī)約,任何一個過濾器都可以被另一個新的過濾器代替,同時為增強(qiáng)程序功能,可以添加新的過濾器。這樣,系統(tǒng)的可維護(hù)性和可升級性得到了保證。管道-過濾器風(fēng)格優(yōu)點支持一些特定的分析,如吞吐量計算和死鎖檢測等。利用管道-過濾器風(fēng)格的視圖,可以很容易的得到系統(tǒng)的資源使用和請求的狀態(tài)圖。然后,根據(jù)操作系統(tǒng)原理等相關(guān)理論中的死鎖檢測方法就可以分析出系統(tǒng)目前所處的狀態(tài),是否存在死鎖可能及如何消除死鎖等問題。管道-過濾器風(fēng)格優(yōu)點管道-過濾器風(fēng)格具有并發(fā)性每個過濾器作為一個單獨的執(zhí)行任務(wù),可以與其它過濾器并發(fā)執(zhí)行。過濾器的執(zhí)行是獨立的,不依賴于其它過濾器的。在實際運行時,可以將存在并發(fā)可能的多個過濾器看作多個并發(fā)的任務(wù)并行執(zhí)行,從而大大提高系統(tǒng)的整體效率,加快處理速度。管道-過濾器風(fēng)格不足交互式處理能力弱管道-過濾器模型適于數(shù)據(jù)流的處理和變換,不適合為與用戶交互頻繁的系統(tǒng)建模。在這種模型中,每個過濾器都有自己的數(shù)據(jù),這些數(shù)據(jù)或者是從磁盤存儲器中讀取來,或者是由另一個過濾器的輸出導(dǎo)入進(jìn)來,整個系統(tǒng)沒有一個共享的數(shù)據(jù)區(qū)。這樣,當(dāng)用戶要操作某一項數(shù)據(jù)時,要涉及到多個過濾器對相應(yīng)數(shù)據(jù)的操作,其實現(xiàn)較為復(fù)雜。由以上的缺點,可以對每個過濾器增加相應(yīng)的用戶控制接口,使得外部可以對過濾器的執(zhí)行進(jìn)行控制。管道-過濾器風(fēng)格不足改進(jìn)的過濾器管道-過濾器風(fēng)格不足管道-過濾器風(fēng)格往往導(dǎo)致系統(tǒng)處理過程的成批操作。設(shè)計者也許不得不花費精力協(xié)調(diào)兩個相對獨立但又存在某種關(guān)系的數(shù)據(jù)流之間的關(guān)系,例如多過濾器并發(fā)執(zhí)行時數(shù)據(jù)流之間的同步問題等。根據(jù)實際設(shè)計的需要,設(shè)計者也需要對數(shù)據(jù)傳輸進(jìn)行特定的處理(如為了防止數(shù)據(jù)泄漏而采取加密等手段),導(dǎo)致過濾器必須對輸入、輸出管道中的數(shù)據(jù)流進(jìn)行解析或反解析,增加了過濾器具體實現(xiàn)的復(fù)雜性。管道-過濾器風(fēng)格實例——數(shù)字通信系統(tǒng)通信的目的是傳遞消息。消息具有不同的形式,例如:符號、文字、語音、音樂、數(shù)據(jù)、圖片、圖像等等。因而,根據(jù)所傳遞消息的不同,目前通信業(yè)務(wù)可以分為電報、電話、傳真、數(shù)據(jù)傳輸及可視電話等。對于基本的點對點通信,是把發(fā)送端的消息傳遞到接收端。數(shù)字通信概念模型發(fā)送端接收端管道-過濾器風(fēng)格實例——數(shù)字通信系統(tǒng)將上圖發(fā)送端進(jìn)一步細(xì)分為信息源和發(fā)送設(shè)備,將接收端細(xì)分為接收設(shè)備和受信者;同時,在通信過程中會有噪聲干擾,在模型中添加噪聲源可得到圖所示的數(shù)字通信系統(tǒng)粗略模型。數(shù)字通信系統(tǒng)粗略模型信息源發(fā)送設(shè)備接收設(shè)備受信者噪聲源信道管道-過濾器風(fēng)格實例——數(shù)字通信系統(tǒng)圖中各單元作用:信息源把各種可能信息轉(zhuǎn)換成原始電信號;發(fā)送設(shè)備對原始電信號完成某種變化,便于原始信號在信道中傳輸,然后再送入信道;信道是指信號傳輸?shù)耐ǖ?,它既可以看成是管道(因為它的目的并不是為了實現(xiàn)某種功能,僅僅是為了信號的傳輸),也可以從某種意義上看做是過濾器(因為信號經(jīng)過信道后會產(chǎn)生一些變化,比如加入噪聲的影響,從而改變了發(fā)送設(shè)備發(fā)出的信號)。接收設(shè)備從接收信號中恢復(fù)出相應(yīng)的原始信號;受信者(也稱為信息宿或接收終端)是將復(fù)原的原始信號轉(zhuǎn)換成相應(yīng)的消息。噪聲源是信道中的噪聲以及分散在通信系統(tǒng)其它各處的噪聲的集中體現(xiàn),它使原信號受到了干擾,產(chǎn)生畸變。管道-過濾器風(fēng)格實例——數(shù)字通信系統(tǒng)在數(shù)字通信中存在以下幾個突出的問題:數(shù)字信號傳輸時,信道噪聲或干擾所造成的差錯,原則上都可以通過差錯控制編碼等手段來控制。為此,在發(fā)送端需要增加一個編碼器,而在接收端相應(yīng)的需要一個解碼器。當(dāng)需要保密時,可以有效的對基帶信號進(jìn)行加密,防止信息被竊取或通信被破壞。此時,在接收端就需要進(jìn)行解密。由于數(shù)字通信傳輸?shù)氖且粋€接一個按節(jié)拍傳送的數(shù)字信號單元,即碼元,因而接收端必須與發(fā)送端按相同的節(jié)拍進(jìn)行接收。不然,會因接收節(jié)拍不一致而造成混亂,使接收倒的數(shù)據(jù)全部無效。因此,數(shù)字通信系統(tǒng)中必須有同步控制構(gòu)件。針對上述問題,可得到數(shù)字通信系統(tǒng)詳細(xì)模型(下圖)管道-過濾器風(fēng)格實例——數(shù)字通信系統(tǒng)數(shù)字通信系統(tǒng)詳細(xì)模型管道-過濾器風(fēng)格實例管道-過濾器模式的體系結(jié)構(gòu)是面向數(shù)據(jù)流的軟件體系結(jié)構(gòu)。它最典型的應(yīng)用是在編譯系統(tǒng)。一個普通的編譯系統(tǒng)包括詞法分析器,語法分析器,語義分析與中間代碼生成器,優(yōu)化器,目標(biāo)代碼生成器等一系列對源程序進(jìn)行處理的過程。人們可以將編譯系統(tǒng)看作一系列過濾器的連接體,按照管道&過濾器的體系結(jié)構(gòu)進(jìn)行設(shè)計。需求描述:假設(shè)有一批實時的二維坐標(biāo)點數(shù)據(jù)需要變換(即對點的橫、縱坐標(biāo)進(jìn)行縮放),并在屏幕上進(jìn)行顯示,要求外部要能設(shè)置變換規(guī)則(如縮放倍數(shù))和顯示規(guī)則(如顯示模式和顯示顏色)。管道-過濾器風(fēng)格實例體系結(jié)構(gòu)建模這是一個對坐標(biāo)點的數(shù)據(jù)流進(jìn)行順序處理的過程,可以應(yīng)用管道-過濾器體系結(jié)構(gòu)建模。將這個系統(tǒng)分為兩個過濾器,一個為坐標(biāo)點數(shù)據(jù)流變換過濾器,另一個為坐標(biāo)點數(shù)據(jù)流實時顯示過濾器。其中,坐標(biāo)點數(shù)據(jù)流變換過濾器有一個外部控制接口對變換規(guī)則如縮放倍數(shù)進(jìn)行設(shè)置,坐標(biāo)點數(shù)據(jù)流實時顯示過濾器有一個外部控制接口對顯示規(guī)則如顯示模式和顯示顏色進(jìn)行設(shè)置。整個系統(tǒng)的體系結(jié)構(gòu)如圖所示。管道-過濾器風(fēng)格實例系統(tǒng)體系結(jié)構(gòu)圖管道-過濾器風(fēng)格實例過濾器的設(shè)計可以將過濾器用狀態(tài)轉(zhuǎn)換圖表示。過濾器有如下狀態(tài):停止?fàn)顟B(tài),工作狀態(tài),等待狀態(tài),休眠狀態(tài)。停止?fàn)顟B(tài):表示過濾器處于待啟動狀態(tài),當(dāng)外部啟動過濾器后,過濾器處于處理狀態(tài);處理狀態(tài):表示過濾器正在處理輸入數(shù)據(jù)隊列中的數(shù)據(jù);等待狀態(tài):表示過濾器的輸入數(shù)據(jù)隊列為空,此時過濾器等待,當(dāng)有新的數(shù)據(jù)輸入時,過濾器處于處理狀態(tài);休眠狀態(tài):表示過濾器已經(jīng)啟動,但被掛起。掛起的原因可能是由于外界用戶要設(shè)置過濾器的控制參數(shù),這樣暫時將過濾器掛起但不中止它,當(dāng)控制參數(shù)設(shè)置完畢后再將過濾器還原,繼續(xù)運行。這樣,實現(xiàn)了較高的效率。管道-過濾器風(fēng)格實例過濾器狀態(tài)轉(zhuǎn)換圖使用示例Unix系統(tǒng)中的管道過濾器結(jié)構(gòu)

lsinvoices|grep–eAugust|sort過濾器介紹過濾器的作用:對輸入數(shù)據(jù)的處理enriches:computingandaddinginforefines:concentratingorextractinginfotransforms:deliveringdataintosomeotherrepresentation被動式過濾器(Passivefilter)adjacentpipespulls/pushesoutput/inputdatafrom/intothefilteractiveeitherasafunction(pull)orasaprocedure(push)主動式過濾器(Activefilter)filterisactiveinaloop,checkthepipesfordataprocessingonitsownasaseparateprogramorthread數(shù)據(jù)源、數(shù)據(jù)接收端、管道介紹DataSource(數(shù)據(jù)源)inputdatastreamtothesystem,forexampleAfileconsistingoflinesoftextAsensordeliveringasequenceofnumbersdatacanbepushedorpulledintofirstprocessingstagePipes(管道)connectionsbetweenfilters,betweendatasourceandthefirstfilter,betweenthelastfilterandthedatasinksynchronizesjoinedactivefilters,forexample,byaFIFO(first-in-first-out)bufferforpassivefilters,thepipescanbeimplementedbyadirectcallMakethefilterrecombinationharderDataSink(數(shù)據(jù)接收端)consumesoutputdata管道-過濾器風(fēng)格的類型類型pipelines—linearsequencesoffiltersboundedpipes—limitedamountofdataonapipetypedpipes—datastronglytypedbatchsequential—datastreamsarenotincremental面向?qū)ο箫L(fēng)格特征概述面相對象模式集數(shù)據(jù)抽象、抽象數(shù)據(jù)類型、類繼承為一體,使軟件工程公認(rèn)的模塊化、信息隱藏、抽象、重用性等原則在面向?qū)ο箫L(fēng)格下得以充分實現(xiàn)。應(yīng)用場合面向?qū)ο蟮捏w系結(jié)構(gòu)模式適用于數(shù)據(jù)和功能分離的系統(tǒng)中,同樣也適合于問題域模型比較明顯,或需要人機(jī)交互界面的系統(tǒng)。大多數(shù)應(yīng)用事件驅(qū)動風(fēng)格的系統(tǒng)也常常應(yīng)用了面向?qū)ο箫L(fēng)格。面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格的體系結(jié)構(gòu)面向?qū)ο箫L(fēng)格優(yōu)點高度模塊性封裝功能代碼共享靈活性易維護(hù)性可擴(kuò)充性面向?qū)ο箫L(fēng)格不足面向?qū)ο箫L(fēng)格最大的不足在于如果一個對象需要調(diào)用另一個對象,它就必須知道那個對象的標(biāo)識(對象名或?qū)ο笠茫?,這樣就無形之中增強(qiáng)了對象之間的依賴關(guān)系。如果一個對象改變了自己的標(biāo)識,就必須通知系統(tǒng)中所有和它有調(diào)用關(guān)系的對象,否則系統(tǒng)就無法正常運行。面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格實例實例背景目前,一個標(biāo)準(zhǔn)的計算機(jī)應(yīng)用系統(tǒng)應(yīng)該由三部分組成:計算機(jī)操作系統(tǒng)(包括各種應(yīng)用軟件系統(tǒng))、數(shù)據(jù)庫管理系統(tǒng)和網(wǎng)絡(luò)環(huán)境(包括網(wǎng)絡(luò)硬件設(shè)備和各種協(xié)議棧、網(wǎng)絡(luò)服務(wù)等),這樣一個具有分布式特性和開放性的系統(tǒng)稱為開放分布式系統(tǒng)(ODS,OpenDistributedSystem)。面向?qū)ο箫L(fēng)格示例CBA方法:它有三個基本的建模概念:協(xié)作、類型和細(xì)化。協(xié)作(Collaboration):根據(jù)構(gòu)件所承擔(dān)的不同角色,協(xié)作定義了一組構(gòu)件之間的動作(Action)集合。類型(Type):通過描述一個構(gòu)件的可視外部行為來定義構(gòu)件在系統(tǒng)中所承擔(dān)的功能。細(xì)化(Refinement):體現(xiàn)了對同一事物的兩種不同描述之間的關(guān)系,抽象(Abstraction)描述為基礎(chǔ),實現(xiàn)(Realization)描述可以看作抽象描述的具體的形式。面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格ODS系統(tǒng)中構(gòu)件、連接器和配置的模型,如下圖所示:面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格實例構(gòu)件的描述方法:利用GUI體系結(jié)構(gòu)框架自動生成工具,可以完成下述幾點功能:生成構(gòu)件模型,包括構(gòu)件的屬性、接口和實現(xiàn);建立連接器模型,包括協(xié)議、屬性和實現(xiàn);體系結(jié)構(gòu)的抽象和封裝;類型和類型檢查;主動規(guī)范,提供設(shè)計向?qū)?;多視圖模式,對不同層次的用戶顯示不同的內(nèi)容;生成實現(xiàn),如將構(gòu)件對應(yīng)為面向?qū)ο蠹夹g(shù)中的類;將系統(tǒng)的修改動態(tài)映射到實現(xiàn)。面向?qū)ο箫L(fēng)格實例具有自適應(yīng)穩(wěn)定性的連接器模型連接器中的通信協(xié)議棧面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格連接器的自適應(yīng)穩(wěn)定算法:為了提高通信協(xié)議棧在構(gòu)件通信過程中的穩(wěn)定性,需要設(shè)計某種自適應(yīng)穩(wěn)定算法,這樣可以修復(fù)構(gòu)件通信時出現(xiàn)的錯誤。面向?qū)ο箫L(fēng)格實例——人事檔案管理系統(tǒng)系統(tǒng)功能結(jié)構(gòu)面向?qū)ο箫L(fēng)格實例——人事檔案管理系統(tǒng)系統(tǒng)功能介紹:檔案管理根據(jù)高校人事檔案管理的特點,本模塊可通過錄入各類人事檔案信息,來構(gòu)造檔案數(shù)據(jù)庫,編制各種目錄索檢。針對檔案材料錄入工作量較大,在該功能模塊中設(shè)置了多種方式快速錄入法,如對指定的部分內(nèi)容可采用代碼錄入和菜單選項等輸入方法.信息檢索該模塊主要是檢索有關(guān)的人事檔案信息,其檢索方式為姓氏筆畫檢索目錄。在具體檢索中又可分為精確查詢和模糊查詢,并可將檢索內(nèi)容動態(tài)輸出,滿足檔案查詢的需要。檔案借閱該模塊主要是對檔案的借閱情況、歸還情況、利用登記等方面進(jìn)行管理。它能為研究如何更有效地利用人事檔案資料提供必要的信息。面向?qū)ο箫L(fēng)格實例——人事檔案管理系統(tǒng)檔案轉(zhuǎn)遞該模塊包括人事檔案的轉(zhuǎn)進(jìn)和轉(zhuǎn)出管理,編制清單,并能在檔案轉(zhuǎn)遞后,對已變更檔案數(shù)據(jù)庫進(jìn)行相應(yīng)地調(diào)整,以完成相應(yīng)檔案的刪加。統(tǒng)計報表該模塊主要用于統(tǒng)計庫存的各類人事檔案的實際數(shù)量,及每年歸檔的各類檔案數(shù)量,并可完成相應(yīng)的圖形繪制和報表打印。其中,在報表生成中,該模塊可根據(jù)管理人員對報表的自定義設(shè)置來生成相應(yīng)的非范式報表。系統(tǒng)維護(hù)由于高校人事檔案的數(shù)據(jù)管理是一項非常重要的工作,尤其是它的安全可靠性。因此,在進(jìn)入本模塊操作之前,系統(tǒng)會提醒用戶輸入姓名、操作口令和權(quán)限級別。同時該功能模塊還包括操作員管理、口令修改、重新登錄、權(quán)限級別設(shè)置、系統(tǒng)日志及系統(tǒng)初始化六個子模塊。系統(tǒng)幫助本模塊提供了在線聯(lián)機(jī)幫助,可實現(xiàn)幫助主題的查詢,還提供了計算器、日記/日歷等系統(tǒng)工具和關(guān)于本系統(tǒng)的簡介。面向?qū)ο箫L(fēng)格實例——人事檔案管理系統(tǒng)系統(tǒng)活動圖面向?qū)ο箫L(fēng)格實例——人事檔案管理系統(tǒng)系統(tǒng)類結(jié)構(gòu)圖事件驅(qū)動風(fēng)格特征事件驅(qū)動系統(tǒng)的基本觀點是一個系統(tǒng)對外部的表現(xiàn)可以從它對事件的處理表征出來。如圖示:事件驅(qū)動風(fēng)格特征事件驅(qū)動系統(tǒng)具有以下一些特點:系統(tǒng)是由若干子系統(tǒng)或元素所組成的一個整體;系統(tǒng)有一定的目標(biāo),各子系統(tǒng)在某一種消息機(jī)制的控制下,為了這個目標(biāo)而協(xié)調(diào)行動;在某一種消息機(jī)制的控制下,系統(tǒng)作為一個整體與環(huán)境相適應(yīng)和協(xié)調(diào);事件驅(qū)動風(fēng)格特征事件驅(qū)動系統(tǒng)具有以下一些特點(續(xù)):在一個系統(tǒng)的若干子系統(tǒng)中,必定有一個子系統(tǒng)起著主導(dǎo)作用,而其他子系統(tǒng)則處于從屬地位;任一系統(tǒng)和系統(tǒng)內(nèi)的任一元素,都有1個事件收集機(jī)制和1個事件處理機(jī)制,通過這種機(jī)制與周圍環(huán)境發(fā)生作用和聯(lián)系;事件驅(qū)動風(fēng)格特征下圖是一個基于事件驅(qū)動的軟件系統(tǒng)的示意圖:事件驅(qū)動風(fēng)格特征事件驅(qū)動風(fēng)格系統(tǒng)設(shè)計時有下述幾條基本原則從系統(tǒng)論的角度來看待描述的對象,合理分解子系統(tǒng),保證各個子系統(tǒng)的獨立性和社會性;無論系統(tǒng)多么復(fù)雜,子系統(tǒng)性質(zhì)的差異多么大,任何子系統(tǒng)都可以按照有無子系統(tǒng)這一性質(zhì)分為2類:管理系統(tǒng)和執(zhí)行系統(tǒng)。為了達(dá)到系統(tǒng)的目標(biāo),系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)行消息來協(xié)同操作。為了達(dá)到系統(tǒng)的目標(biāo),系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)行消息來協(xié)同操作。事件驅(qū)動風(fēng)格特征事件驅(qū)動風(fēng)格系統(tǒng)設(shè)計時有下述幾條基本原則(續(xù))在一個完整系統(tǒng)中,必須有這樣一個子系統(tǒng),它沒有上級,必須收集系統(tǒng)外的事件及下級發(fā)出的事件。管理類型的子系統(tǒng)一般不執(zhí)行具體操作,它的主要功能是按照自己的職能指揮下級完成任務(wù),功能性操作一般由執(zhí)行類型的子系統(tǒng)完成。在一般情況下,除最高級管理子系統(tǒng)外,子系統(tǒng)一般是“有問才答”,即使在必要的情況下需要積極尋找事件時,也必須征得上級系統(tǒng)得許可,保證了系統(tǒng)的控制流不會分散。事件驅(qū)動風(fēng)格基本結(jié)構(gòu)事件驅(qū)動系統(tǒng)具有某種意義上的遞歸性,形成了“部分-整體”的層次結(jié)構(gòu),可以用屬性結(jié)構(gòu)加以表示。一個簡單的表示方法是為執(zhí)行系統(tǒng)定義一些類,另外定義一些類作為這些執(zhí)行系統(tǒng)的容器類,也就是管理系統(tǒng)。事件驅(qū)動風(fēng)格事件驅(qū)動風(fēng)格的基本結(jié)構(gòu),如下圖:事件驅(qū)動風(fēng)格優(yōu)點事件驅(qū)動風(fēng)格非常適合于描述系統(tǒng)族,在屬于同一族的任何系統(tǒng)中,系統(tǒng)的高級管理子系統(tǒng)的描述是完全類似的,便于重用;由于最高管理子系統(tǒng)牢牢的掌握著控制權(quán),又因為各同級子系統(tǒng)一般不直接發(fā)生關(guān)系,因此容易實現(xiàn)并發(fā)處理和多任務(wù)操作;基于事件驅(qū)動風(fēng)格的系統(tǒng)具有良好的可擴(kuò)展性,設(shè)計者只需為某個對象注冊一個事件處理接口就可以將該對象引入整個系統(tǒng),同時并不影響其它的系統(tǒng)對象。事件驅(qū)動風(fēng)格優(yōu)點定義了包含執(zhí)行子系統(tǒng)和管理子系統(tǒng)的類層次結(jié)構(gòu);簡化客戶代碼;使整個系統(tǒng)的設(shè)計更具有一般化。事件驅(qū)動風(fēng)格不足事件驅(qū)動風(fēng)格最大的不足在于構(gòu)件削弱了自身對系統(tǒng)計算的控制能力事件驅(qū)動風(fēng)格中存在的另一個問題在于數(shù)據(jù)共享系統(tǒng)中各個對象的邏輯關(guān)系變得更加復(fù)雜事件驅(qū)動風(fēng)格和面向?qū)ο箫L(fēng)格的關(guān)系基于面向?qū)ο箫L(fēng)格的系統(tǒng)由多個封裝起來的對象構(gòu)成,對象之間通過消息傳遞實現(xiàn)通信,而事件驅(qū)動正是對消息傳遞機(jī)制的一種實現(xiàn)。所以基于事件驅(qū)動風(fēng)格的系統(tǒng)往往都是面向?qū)ο蟮?。事件?qū)動風(fēng)格實例事件驅(qū)動風(fēng)格實例:JavaBean系統(tǒng)概述事件從事件源到監(jiān)聽者的傳遞是通過對目標(biāo)監(jiān)聽者對象的Java方法調(diào)用進(jìn)行的。對每個明確的事件的發(fā)生,都相應(yīng)地定義一個明確的Java方法。這些方法都集中定義在事件監(jiān)聽者(EventListener)接口中,這個接口要繼承java.util.EventListener。事件驅(qū)動風(fēng)格實例JavaBean系統(tǒng)(續(xù))事件狀態(tài)對象與事件發(fā)生有關(guān)的狀態(tài)信息一般都封裝在一個事件狀態(tài)對象中,這種對象是java.util.EventObject的子類。按設(shè)計習(xí)慣,這種事件狀態(tài)對象類的名應(yīng)以Event結(jié)尾。事件驅(qū)動風(fēng)格實例JavaBean系統(tǒng)(續(xù))事件監(jiān)聽者接口(EventListenerInterface)與事件監(jiān)聽者由于Java事件模型是基于方法調(diào)用,因而需要一個定義并組織事件操縱方法的方式。JavaBean中,事件操縱方法都被定義在繼承了java.util.EventListener類的EventListener接口中,按規(guī)定,EventListener接口的命名要以Listener結(jié)尾。任何一個類如果想操縱在EventListener接口中定義的方法都必須以實現(xiàn)這個接口方式進(jìn)行。這個類也就是事件監(jiān)聽者。事件驅(qū)動風(fēng)格實例JavaBean系統(tǒng)(續(xù))事件監(jiān)聽者的注冊與注銷為了各種可能的事件監(jiān)聽者把自己注冊入合適的事件源中,建立源與事件監(jiān)聽者間的事件流,事件源必須為事件監(jiān)聽者提供注冊和注銷的方法。在前面的bound屬性介紹中已看到了這種使用過程,在實際中,事件監(jiān)聽者的注冊和注銷要使用標(biāo)準(zhǔn)的設(shè)計格式:publicvoidadd<ListenerType>(<ListenerType>listener)publicvoidremove<ListenerType>(<ListenerType>listener)事件驅(qū)動風(fēng)格實例適配類適配類是JavaBean事件模型中極其重要的一部分。在一些應(yīng)用場合,事件從源到監(jiān)聽者之間的傳遞要通過適配類來“轉(zhuǎn)發(fā)”。適配類成為了事件監(jiān)聽者,事件源實際是把適配類作為監(jiān)聽者注冊入監(jiān)聽者隊列中,而真正的事件響應(yīng)者并未在監(jiān)聽者隊列中,事件響應(yīng)者應(yīng)做的動作由適配類決定。事件驅(qū)動風(fēng)格實例TurboVisionBorland公司開發(fā)的TurboPascal6.0中提供了一種面向?qū)ο蟮氖录?qū)動程序設(shè)計的工具包TurboVision。TurboVision把各種屏幕上的可見對象歸納為2大類:一類為執(zhí)行對象,另一類為管理對象,分別稱為TView和TGroup類對象。又因為TGroup和TView類有相同之處,故TGroup是從TView派生而得,在TurboVision中,TGroup類的對象一般不進(jìn)行實際操作,不直接在屏幕上顯示自己,而是通過自己的下屬顯示自己,所有的實際操作都是通過TView類對象進(jìn)行的。

事件驅(qū)動風(fēng)格實例TurboVision很好地體現(xiàn)了面向?qū)ο蠓椒ê褪录?qū)動程序設(shè)計方法的精髓,TApplication是一個可以運行的交互式程序?qū)ο?,除了啟動和退出之外,它不提供任何功能,使用TurboVision,就能高效和快速地開發(fā)出高質(zhì)量地應(yīng)用程序。事件驅(qū)動風(fēng)格實例TurboVision

TurboVision軟件包中對象的分類結(jié)構(gòu)如圖所示:TurboVision中對象的分類結(jié)構(gòu)事件驅(qū)動風(fēng)格實例TurboVision

TurboVision對象的組裝結(jié)構(gòu)一般說來,TApplication對象擁有并管理它創(chuàng)建的3個子對象TMenuBar,TDeskTop和TStatusLine,如圖所示.

TurboVision的組裝結(jié)構(gòu)事件驅(qū)動風(fēng)格實例TurboVision在程序的實際運行中,Application對象通常創(chuàng)建各種TWindow類和Tdialog類對象,并委托DeskTop代為管理.因此,DeskTop對象的組裝常常隨程序的運行而改變.窗口對象(Twindow類)和對話框?qū)ο?Toialog類)隨應(yīng)用的不同而不同,典型的窗口和對話框?qū)ο蟮慕M裝結(jié)構(gòu)如圖所示.窗口和對話框?qū)ο蟮慕M裝結(jié)構(gòu)事件驅(qū)動風(fēng)格實例TurboVision

TurboVision把事件抽象為3種類型的事件:位置事件、聚焦事件和廣播事件。典型的位置事件是鼠標(biāo)器事件,TGroup類視圖把位置事件交給管理該區(qū)域的子視圖;典型的聚焦事件是擊鍵和命令事件(典型的命令事件是由狀態(tài)行或菜單條、下拉菜單將擊鍵事件或鼠標(biāo)器事件轉(zhuǎn)換而得),TGroup類視圖把該事件交給處于聚焦?fàn)顟B(tài)的下級視圖;廣播事件是管理視圖不知道該交給誰的那種事件,對于這種事件,它將該事件交給所有的視圖。TurboVision程序在運行時,由TApplication對象收集鼠標(biāo)器事件和健盤事件以及各種其它事件,然后按一定的規(guī)則交給下屬去處理.例如,對于鼠標(biāo)器事件,如果它發(fā)生在菜單條上,則將它交給菜單條來處理;如果它發(fā)生在狀態(tài)行,則將它交給狀態(tài)行來處理;如果它發(fā)生在DeskTop上,則將它交給DeskTop來處理。總之,細(xì)節(jié)問題總是交給下屬來處理.狀態(tài)行和菜單條的任務(wù)是將鍵盤事件和自己轄區(qū)的鼠標(biāo)器事件轉(zhuǎn)換成為命令事件,再上交給TApplication。分層風(fēng)格特征一個分層系統(tǒng)采用層次化的組織方式構(gòu)建,系統(tǒng)中的每一層都要承擔(dān)兩個角色。首先,它要為結(jié)構(gòu)中的上層提供服務(wù);其次,它要作為結(jié)構(gòu)中下面層次的客戶,調(diào)用下層提供的功能函數(shù)。分層風(fēng)格特征一個概念上的分層模型如下圖所示:分層風(fēng)格優(yōu)點分層風(fēng)格具有一些系統(tǒng)設(shè)計者無法抗拒的優(yōu)勢:分層風(fēng)格支持系統(tǒng)設(shè)計過程中的逐級抽象基于分層風(fēng)格的系統(tǒng)具有較好的可擴(kuò)展性分層風(fēng)格支持軟件復(fù)用分層風(fēng)格不足并不是所有的系統(tǒng)都適合用分層風(fēng)格來描述的對于抽象出來的功能具體應(yīng)該放在哪個層次上也是設(shè)計者頭疼的一個問題分層風(fēng)格實例分層風(fēng)格實例:計算機(jī)網(wǎng)絡(luò)的設(shè)計概述網(wǎng)絡(luò)協(xié)議設(shè)計者將計算機(jī)網(wǎng)絡(luò)中的各個部分按其功能劃分為若干個層次(Layer),其中的每一個層次都可以看成是一個相對獨立的黑箱、一個封閉的系統(tǒng)。用戶只關(guān)心每一層的外部特性,只需要定義每一層的輸入、數(shù)據(jù)處理和輸出等外部特性。分層風(fēng)格實例ISO/OSI網(wǎng)絡(luò)體系結(jié)構(gòu)ISO/OSI采用了7層體系結(jié)構(gòu),從高到低分別是:應(yīng)用層、表示層、會話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層,如圖所示。其最高層為第7層應(yīng)用層,用于同應(yīng)用服務(wù)之間交換數(shù)據(jù);最低層為第1層物理層,用于連接物理傳輸介質(zhì)實現(xiàn)真正的數(shù)據(jù)通信。層與層之間的聯(lián)系是通過各層之間的接口來實現(xiàn)的,上層通過接口向下層提出服務(wù)請求,而下層通過接口向上層提供服務(wù)。兩臺計算機(jī)通過網(wǎng)絡(luò)進(jìn)行通信時,只有兩物理層之間能夠通過媒體進(jìn)行真正的數(shù)據(jù)通信,其余各對等層之間均不存在直接的通信關(guān)系,各對等層之間只能通過各對等層的協(xié)議來進(jìn)行虛擬通信。ISO/OSI網(wǎng)絡(luò)體系結(jié)構(gòu)分層風(fēng)格實例ISO/OSI網(wǎng)絡(luò)體系結(jié)構(gòu)分層風(fēng)格實例ISO/OSI網(wǎng)絡(luò)體系結(jié)構(gòu)為了理解ISO/OSI各層的功能,以運輸公司進(jìn)行貨物運輸為例來進(jìn)行說明,也就是利用人們熟知的東西來理解陌生抽象的概念。其中,第1~3層3個層次相當(dāng)于由運輸公司負(fù)責(zé)的貨物運輸過程中的具體細(xì)節(jié)、具體操作方式;第4層相當(dāng)于運輸公司與用戶之間的接口;第5~7層3個層次相當(dāng)于由用戶公司負(fù)責(zé)的將貨物交去運輸所需要做的準(zhǔn)備工作。第1層是物理層(PhysicalLayer),它負(fù)責(zé)在物理信道上傳輸原始的數(shù)據(jù)bit流。它應(yīng)該提供為建立、維護(hù)和拆除物理鏈路連接所需的機(jī)械的、電氣的、功能和規(guī)程的特性,這類似于運輸車輛只需要負(fù)責(zé)將裝在車輛內(nèi)的貨物(類似于bits)運送到某地就行了。分層風(fēng)格實例第2層是數(shù)據(jù)鏈路層(DataLinkLayer),它的主要功能是糾錯和流量控制,負(fù)責(zé)在可能出現(xiàn)差錯的物理線路中實現(xiàn)無差錯的數(shù)據(jù)傳送。它應(yīng)該在物理層的基礎(chǔ)上,建立相鄰結(jié)點之間的數(shù)據(jù)鏈路,通過差錯控制提供數(shù)據(jù)幀(Frame)的無差錯傳輸,并進(jìn)行數(shù)據(jù)流量控制。這類似于運輸公司的運輸管理和質(zhì)量監(jiān)督部門,需要負(fù)責(zé)在可能出現(xiàn)問題的運輸線路之中保質(zhì)保量地完成運輸任務(wù)。分層風(fēng)格實例

第3層是網(wǎng)絡(luò)層(NetworkLayer),它的主要功能是路由控制(找路)、擁塞控制和數(shù)據(jù)打包。它應(yīng)該為其上一層傳輸層的數(shù)據(jù)傳輸提供建立、維護(hù)和終止網(wǎng)絡(luò)連接的手段,把上層傳來的數(shù)據(jù)分割成一個一個的數(shù)據(jù)包(Packet,也叫報文分組)在結(jié)點之間進(jìn)行交換傳送,并且負(fù)責(zé)路由控制和擁塞控制。這類似于運輸公司需要將用戶發(fā)送的貨物進(jìn)行分割打包,并在現(xiàn)有的交通網(wǎng)絡(luò)之中負(fù)責(zé)找出一條從源地址到目的地址的線路(即找路),在找路時需要考慮到能否到達(dá)、擁塞狀況、安全可靠性、甚至交通費用等諸多方面的因素。分層風(fēng)格實例第4層是傳輸層(TransportLayer),它的主要功能是在上層和下層之間起到一種接口的功能。它應(yīng)該為上層提供端到端(最終用戶到最終用戶)、的透明的、可靠的數(shù)據(jù)傳輸服務(wù)。所謂透明的傳輸是指在通信過程中上層可以將下面各層看作是一個封閉的黑箱系統(tǒng),傳輸層對上層屏蔽了傳輸系統(tǒng)的具體細(xì)節(jié)。這類似于運輸公司在各個地方設(shè)置的業(yè)務(wù)接洽處,它負(fù)責(zé)在用戶和公司之間建立起一個貨物交接的橋梁,使得用戶不用去管運輸公司將以什么樣的方式將貨物運送到目的地,也就是說業(yè)務(wù)接洽處對用戶屏蔽了貨物運輸中的具體細(xì)節(jié)。分層風(fēng)格實例第5層是會話層(SessionLayer),它的主要功能是負(fù)責(zé)收發(fā)數(shù)據(jù)的交接工作、并組織和管理數(shù)據(jù)。它應(yīng)該為表示層提供建立、維護(hù)和結(jié)束會話連接的功能,并提供會話管理服務(wù)。這類似于用戶公司的貨物收發(fā)室,它負(fù)責(zé)與運輸公司打交道,完成用戶公司貨物的收發(fā)的交接工作、并組織管理公司內(nèi)部要收發(fā)的貨物。分層風(fēng)格實例第6層是表示層(PresentationLayer),它的主要功能是為數(shù)據(jù)提供收發(fā)、存放的具體格式和規(guī)范。它應(yīng)該為應(yīng)用層提供信息表示方式的服務(wù),如數(shù)據(jù)格式的變換、文本壓縮、加密技術(shù)等。這類似于用戶公司的貨物收發(fā)員,它負(fù)責(zé)與用戶公司內(nèi)部要收發(fā)貨物的部門或個人打交道,在收集要發(fā)送的貨物時告訴用戶應(yīng)該怎樣填寫發(fā)貨資料,在向用戶發(fā)放貨物時告訴用戶應(yīng)該完清哪些具體手續(xù),等等。分層風(fēng)格實例第7層是應(yīng)用層(ApplicationLayer),它的主要功能是為數(shù)據(jù)提供各種可行的收發(fā)方式。它應(yīng)該為網(wǎng)絡(luò)用戶或應(yīng)用程序提供各種應(yīng)用服務(wù),如文件傳輸、電子郵件(E-mail)、分布式數(shù)據(jù)庫、網(wǎng)絡(luò)管理等。這類似于用戶公司內(nèi)部的部門或個人在收發(fā)貨物時,都必須遵循用戶公司內(nèi)部的有關(guān)規(guī)定,只能使用用戶公司所允許的方式來收發(fā)貨物。從另一方面來說,用戶公司也要為公司內(nèi)部的部門或個人收發(fā)貨物提供各種可行的收發(fā)方式,讓用戶公司內(nèi)部的部門或個人知道他們能夠使用哪些方式來收發(fā)貨物。分層風(fēng)格ISO/OSI層次分組關(guān)系:有兩種分組方法I第一種可以從數(shù)據(jù)處理分工的角度,將ISO/OSI七個層次分為三組:第1、2層解決有關(guān)網(wǎng)絡(luò)信道問題;第3、4層解決傳輸服務(wù)問題;第5、6、7層則處理對應(yīng)用進(jìn)程的訪問。從數(shù)據(jù)傳輸控制的角度,將ISO/OSI七個層次分為三組:下三層(1、2、3層)可以看作是傳輸控制組,負(fù)責(zé)通信子網(wǎng)的工作,解決網(wǎng)絡(luò)中的通信問題;上三層(5、6、7層)為應(yīng)用控制組,負(fù)責(zé)有關(guān)資源子網(wǎng)的工作,解決應(yīng)用進(jìn)程之間的信息轉(zhuǎn)換問題;中間層(4層)則為通信子網(wǎng)和資源子網(wǎng)的接口,起到連接傳輸和應(yīng)用的作用。分層風(fēng)格實例

.Net平臺也是一個明顯的分層系統(tǒng):數(shù)據(jù)共享風(fēng)格特征采用數(shù)據(jù)共享風(fēng)格構(gòu)建的系統(tǒng)中通常有兩個截然不同的功能構(gòu)件;中央數(shù)據(jù)單元構(gòu)件;一些相對獨立的構(gòu)件的集合。信息交互方式的差異導(dǎo)致了控制策略的不同。主要的控制策略有兩種,正是依據(jù)這兩種不同的控制策略,基于數(shù)據(jù)共享風(fēng)格的系統(tǒng)被分成兩個子類:基于傳統(tǒng)數(shù)據(jù)庫型數(shù)據(jù)共享風(fēng)格的應(yīng)用系統(tǒng)基于黑板型數(shù)據(jù)共享風(fēng)格的應(yīng)用系統(tǒng)數(shù)據(jù)共享風(fēng)格特征黑板型數(shù)據(jù)共享風(fēng)格的示意圖如下圖所示:數(shù)據(jù)共享風(fēng)格一個典型的黑板型數(shù)據(jù)庫系統(tǒng)包括以下三個部分:知識源:知識源中包含獨立的、與應(yīng)用程序相關(guān)的知識,知識源之間不直接進(jìn)行通訊,它們之間的交互只通過黑板來完成。黑板數(shù)據(jù)結(jié)構(gòu):黑板數(shù)據(jù)是按照與應(yīng)用程序相關(guān)的層次來組織的解決問題的數(shù)據(jù),知識源通過不斷地改變黑板數(shù)據(jù)來解決問題。控制:控制完全由黑板的狀態(tài)驅(qū)動,黑板狀態(tài)的改變決定使用的特定知識。黑板模式對于無確定性求解策略的問題比較有用,在專家系統(tǒng)中,這種模式應(yīng)用的比較廣泛。

數(shù)據(jù)共享風(fēng)格優(yōu)點解決問題的多方法性:對于一個專家系統(tǒng),針對于要解決的問題,如果在其領(lǐng)域中沒有獨立的方法存在,而且對解空間的完全搜索也是不可行的,在黑板模式中可以用多種不同的算法來進(jìn)行試驗,并且也允許用不同的控制方法。具有可更改性和可維護(hù)性:因為在黑板模式中每個知識源是獨立的,彼此之間的通信通過黑板來完成,所以這使整個系統(tǒng)更具有可更改性和可維護(hù)性。數(shù)據(jù)共享風(fēng)格優(yōu)點有可重用的知識源:由于每個知識源在黑板系統(tǒng)中都是獨立的,如果知識源和所基于的黑板系統(tǒng)有理解相同的協(xié)議和數(shù)據(jù),我們就可以重用知識源。支持容錯性和健壯性:在黑板模式中所有的結(jié)果都是假設(shè)的,并且只有那些被數(shù)據(jù)和其它假設(shè)強(qiáng)烈支持的才能夠生存。這對于噪聲數(shù)據(jù)和不確定的結(jié)論有很強(qiáng)的容錯性。數(shù)據(jù)共享風(fēng)格缺點測試?yán)щy:由于黑板模式的系統(tǒng)有中央數(shù)據(jù)構(gòu)件來描述系統(tǒng)的體現(xiàn)系統(tǒng)的狀態(tài),所以系統(tǒng)的執(zhí)行沒有確定的順序,其結(jié)果的可再現(xiàn)性比較差,難于測試。不能保證有好的求解方案:一個黑板模式的系統(tǒng)所提供給我們的往往是所解決問題的一個百分比,而不是最佳的解決方案。效率低:黑板模式的系統(tǒng)在拒絕錯誤假設(shè)的時候要承受多余的計算開銷,所以導(dǎo)致效率比較低。數(shù)據(jù)共享風(fēng)格缺點開發(fā)成本高:絕大部分黑板模式的系統(tǒng)需要用幾年的時間來進(jìn)化,所以開發(fā)成本較高。缺少對并行機(jī)的支持:黑板模式要求黑板上的中心數(shù)據(jù)同步并發(fā)訪問,所以缺少對不并行機(jī)的支持。數(shù)據(jù)共享風(fēng)格實例數(shù)據(jù)共享風(fēng)格實例:專家系統(tǒng)(ES,ExpertSystem)概述:專家系統(tǒng)實質(zhì)就是一組程序;從功能上:可定義為“一個在某領(lǐng)域具有專家水平解題能力的程序系統(tǒng)”,能像領(lǐng)域?qū)<乙粯庸ぷ鳎\用專家積累的工作經(jīng)驗與專門知識,在很短時間內(nèi)對問題得出高水平的解答。從結(jié)構(gòu)上講:可定義為“由一個專門領(lǐng)域的知識庫,以及一個能獲取和運用知識的機(jī)構(gòu)構(gòu)成的解題程序系統(tǒng)”。數(shù)據(jù)共享風(fēng)格實例ES一般結(jié)構(gòu)如下圖所示:實例知識庫系統(tǒng)實例IECRMAS知識生態(tài)系統(tǒng)

IECRMAS知識生態(tài)系統(tǒng)的構(gòu)建知識生態(tài)系統(tǒng)

IECRMAS環(huán)境有機(jī)體知識生產(chǎn)者

評估者知識知識消費者

評估知識分解者

AgentAgentCKOKDD評估者評估者IECRMAS知識生態(tài)系統(tǒng)知識流IECRMAS知識生態(tài)系統(tǒng)

知識系統(tǒng)環(huán)境

知識生產(chǎn)者

知識消費者

知識分解者

信用評估知識庫的形成IECRMAS知識生態(tài)系統(tǒng)知識庫系統(tǒng)實例客戶數(shù)據(jù)倉交易數(shù)據(jù)倉違約數(shù)據(jù)倉經(jīng)驗教訓(xùn)數(shù)據(jù)倉DRM/DWE…信息庫數(shù)據(jù)庫知識庫知識Agent信用評估知識基IECRMAPS知識生態(tài)系統(tǒng)中知識流動評估

Agent

評估

Agent

評估

Agent

知識

Agent

管理

Agent

檢索

評估系統(tǒng)知識基

更新

傳遞

傳遞

傳遞

學(xué)習(xí)

學(xué)習(xí)

學(xué)習(xí)

客戶

Agent

更新

更新

檢索

數(shù)據(jù)庫信息庫知識庫外部知識協(xié)作交流IECRMAS知識生態(tài)系統(tǒng)個體知識進(jìn)化圖評估Agent

學(xué)習(xí)

外部知識輸入

知識輸出

個體知識含量

KAS

UPS

CES

知識Agent

知識貢獻(xiàn)IECRMAS知識生態(tài)系統(tǒng)解釋器風(fēng)格特征基于解釋器風(fēng)格的系統(tǒng)核心在于虛擬機(jī)。一個基于解釋器風(fēng)格的系統(tǒng)通常包括:正在被解釋執(zhí)行的偽碼和解釋引擎;偽碼:由需要被解釋執(zhí)行的源代碼和解釋引擎分析所得的中間代碼組成;解釋引擎包括:語法解釋器和解釋器當(dāng)前的運行狀態(tài)解釋器風(fēng)格特征解釋器風(fēng)格示意圖如下圖所示:解釋器風(fēng)格優(yōu)點在文法規(guī)則比較簡單的情況下,解釋器風(fēng)格工作的很好;易于改變和擴(kuò)展文法。因為解釋器風(fēng)格使用類來表示文法規(guī)則,用戶可以使用繼承來改變和擴(kuò)展文法。已有的表達(dá)式可以采用增量的方式逐漸擴(kuò)充,而新的表達(dá)式可以定義為舊表達(dá)式的變體;易于實現(xiàn)文法??梢杂枚喾N操作來“解釋”一個句子。解釋器風(fēng)格缺點無法解釋復(fù)雜的文法規(guī)則:對于比較簡單的文法規(guī)則,解釋器風(fēng)格工作的很好,而對于復(fù)雜的文法規(guī)則,則由于文法層次的龐大而難于管理;應(yīng)用范圍比較狹窄;在文法規(guī)則比較復(fù)雜,則文法的層次變得無法管理,系統(tǒng)中需要包含許多表示文法規(guī)則的類。解釋器風(fēng)格實例解釋器風(fēng)格實例:一個布爾表達(dá)式解釋器目標(biāo):布爾表達(dá)式求值系統(tǒng)現(xiàn)定義由如下文法定義的布爾正則表達(dá)式編譯器(1)系統(tǒng)的體系結(jié)構(gòu)可以隨技術(shù)的發(fā)展而發(fā)生變化傳統(tǒng)的編譯器模型具有共享符號表的傳統(tǒng)編譯器模型編譯器(2)隨著時間的推移,編譯技術(shù)變得更加復(fù)雜,更多的注意力轉(zhuǎn)移到程序在編譯過程的中間表示,例如屬性文法樹典型的現(xiàn)代編譯器模型解釋器風(fēng)格實例布爾表達(dá)式求值系統(tǒng)類圖,如下圖所示:解釋器風(fēng)格示例布爾表達(dá)式抽象語法樹實例,如下圖所示:解釋器風(fēng)格實例布爾表達(dá)式求值系統(tǒng)的優(yōu)缺點:在文法規(guī)則比較簡單的情況下,解釋器風(fēng)格工作的很好,但如果文法規(guī)則復(fù)雜,則文法的層次變得龐大而無法管理,系統(tǒng)中需要包含許多表示文法規(guī)則的類。最高效的解釋器通常不是通過直接解釋語法分析數(shù)實現(xiàn)的,而是首先將它們轉(zhuǎn)換成另一種形式。易于改變和擴(kuò)展文法。易于實現(xiàn)文法。解釋器風(fēng)格實例布爾表達(dá)式求值系統(tǒng)中的角色:BooleanExpression(抽象布爾表達(dá)式)TerminalExpression(終結(jié)符表達(dá)式,如VariableExpresssion和Constant)NonterminalExpression(非終結(jié)符表達(dá)式,如AndExpression、OrExpression和NotExpression)Context(上下文,也就是“解釋引擎內(nèi)部狀態(tài)”)Client(客戶)解釋器風(fēng)格實例布爾表達(dá)式求值系統(tǒng)的實現(xiàn)在具體實現(xiàn)布爾表達(dá)式求值系統(tǒng)時還有許多細(xì)節(jié)的問題要處理,這些細(xì)節(jié)問題處理的好壞甚至?xí)苯佑绊懻麄€系統(tǒng)的性能。這些問題主要表現(xiàn)在以下幾個方面:創(chuàng)建抽象語法樹定義求值操作共享終結(jié)符解釋器風(fēng)格示例解釋器風(fēng)格定義了特定語言的文法表示和解釋該文法的解釋器。這種模式如同樂譜。其中,音階和它的持續(xù)時間可以用五線譜上的符號表示。這些符號就是音樂語言。音樂家按照樂譜演奏,就可以反復(fù)重現(xiàn)同樣的音樂。解釋器實例使用音樂例子的解釋器風(fēng)格對象圖解釋器實例羅馬數(shù)字轉(zhuǎn)換系統(tǒng)解釋器實例AbstractExpression

(Expression)聲明執(zhí)行特定操作的接口。TerminalExpression

(ThousandExpression,HundredExpression,TenExpression,OneExpression)實現(xiàn)一個與語法中終結(jié)符相關(guān)的解釋操作。句子中的每一個終結(jié)符都需要一個實例。NonterminalExpression

語法中的每個規(guī)則R::=R1R2...Rn都需要這樣的一個類。管理從R1到Rn每一個符號的AbstractExpression類型變量的實例。實現(xiàn)語法中非終結(jié)符的解釋操作,在解釋中可能需要遞歸調(diào)用自身。Context

(Context)包含對于解釋器來說是全局的信息。Client

(InterpreterApp)建立(或者給定)一個抽象語法樹。抽象語法樹是由NonterminalExpression和TerminalExpression類的實例組合而成。調(diào)用解釋操作。程序源碼反饋控制環(huán)風(fēng)格概述所謂對一個對象(或過程)進(jìn)行控制,意味著設(shè)法使這個被控對象(或被控過程)的功能或特性有效的達(dá)到所期望的目標(biāo)。為了成功設(shè)計一個控制系統(tǒng),必須事先知道被控對象所具有的性質(zhì)和特征,同時還須了解和掌握這些性質(zhì)和特征隨環(huán)境等因素變化的情況。反饋控制環(huán)風(fēng)格控制工程是一個十分強(qiáng)調(diào)方法論的專業(yè)領(lǐng)域,因此控制工程方法完全是獨立于各種應(yīng)用領(lǐng)域的。為了將過程控制方法從單純的控制領(lǐng)域中抽象出來,我們引入了動態(tài)系統(tǒng)的概念。反饋控制環(huán)風(fēng)格動態(tài)系統(tǒng)表示信號處理和傳輸?shù)囊粋€功能單元(例如:信號可以是能量、材料、信息、資金及其他形式),其中系統(tǒng)的起因和由此引起的時間上的效果分別作為系統(tǒng)的輸入量和輸出量來考慮。如此定義的系統(tǒng)具有共同的特征,即在其中一定存在有目標(biāo)的作用、信息處理、閉環(huán)和開環(huán)控制過程,正如N.Wiener所提出的,以上概念可以用控制論這個更高級的概念來總結(jié)??刂普撘部梢詰?yīng)用于軟件體系結(jié)構(gòu)的創(chuàng)建。反饋控制環(huán)風(fēng)格描述手段根據(jù)上述的動態(tài)系統(tǒng)的定義,在系統(tǒng)中必然存在信號的處理和傳輸。這時系統(tǒng)也可描述為傳輸環(huán)節(jié)或傳輸系統(tǒng)。傳輸環(huán)節(jié)具有唯一的作用方向,這由輸入、輸出信號的箭頭方向給出。單變量系統(tǒng)如下圖所示:

反饋控制環(huán)風(fēng)格描述手段多變量系統(tǒng)如下圖所示:反饋控制環(huán)風(fēng)格描述手段除了用方框圖來表達(dá)動態(tài)系統(tǒng)以外,還可以用信號流圖,如下圖所示:反饋控制環(huán)風(fēng)格開環(huán)與閉環(huán)控制一般的動態(tài)系統(tǒng)描述框圖可以分為開環(huán)控制和閉環(huán)控制系統(tǒng),但在實際應(yīng)用中這兩種不同的動態(tài)系統(tǒng)往往很容易混淆在一起,對它們之間的區(qū)別強(qiáng)調(diào)的不夠?,F(xiàn)在通過一個市內(nèi)暖氣系統(tǒng)來指出這兩者之間的不同和相同之處。反饋控制環(huán)風(fēng)格開環(huán)與閉環(huán)控制開環(huán)控制圖如下圖所示:反饋控制環(huán)風(fēng)格開環(huán)與閉環(huán)控制閉環(huán)控制圖如下圖所示:反饋控制環(huán)風(fēng)格開環(huán)與閉環(huán)控制開環(huán)控制和閉環(huán)控制的差別:閉環(huán)控制:表示一個閉合的作用過程,(控制回環(huán));根據(jù)閉環(huán)作用原理可增加抗干擾性(負(fù)反饋);可能不穩(wěn)定,也即被控量不再衰減,而是增長到無窮大(理論上)。反饋控制環(huán)風(fēng)格開環(huán)與閉環(huán)控制開環(huán)控制和閉環(huán)控制的差別(續(xù)):開環(huán)控制表示一個開放的作用過程(控制序列);只能對抗指定由其處理的干擾,對于其他一些干擾因素?zé)o法消除;只要被控制對象自己保持穩(wěn)定,整個開環(huán)控制系統(tǒng)也就保持穩(wěn)定。反饋控制環(huán)風(fēng)格基本結(jié)構(gòu)以閉環(huán)控制系統(tǒng)為例分析過程控制環(huán)的基本結(jié)構(gòu);一個自動控制系統(tǒng)包括如下4個主要組成部分:被控對象、測量環(huán)節(jié)、調(diào)節(jié)器和執(zhí)行環(huán)節(jié),如下圖所示:反饋控制環(huán)風(fēng)格-自適應(yīng)自適應(yīng)反饋控制環(huán)需要包括以下3方面的工作:辨識被控對象的特征;在辨識的基礎(chǔ)上作出控制決策;在決策的基礎(chǔ)上實施修正動作.按照構(gòu)成自適應(yīng)控制環(huán)的目的的不同可將其分為兩種類型:參數(shù)自適應(yīng)控制環(huán);性能自適應(yīng)控制環(huán);反饋控制環(huán)風(fēng)格-自適應(yīng)反饋控制環(huán)參數(shù)自適應(yīng)控制環(huán)參數(shù)自適應(yīng)控制環(huán)如下圖所示:反饋控制環(huán)風(fēng)格-自適應(yīng)反饋控制環(huán)性能自適應(yīng)控制環(huán)性能自適應(yīng)控制環(huán)如下圖所示:反饋控制環(huán)風(fēng)格-自適應(yīng)反饋控制環(huán)在性能自適應(yīng)控制環(huán)中,最典型的代表就是所謂模型參考自適應(yīng)控制系統(tǒng)。模型參考自適應(yīng)控制系統(tǒng)按照其控制方式又可分為兩種A.直接法B.間接法反饋控制環(huán)風(fēng)格-自適應(yīng)反饋控制環(huán)直接法模型如下圖所示:間接法模型如下圖所示:反饋控制環(huán)風(fēng)格實例鋼鐵燒結(jié)工藝控制體系結(jié)構(gòu)

控制系統(tǒng)組成如下圖所示。燒結(jié)機(jī)過程控制系統(tǒng)采用兩套Quantum控制器,共配置600路模擬量輸入輸出點,分別實現(xiàn)對配混料工序、燒結(jié)工序的全生產(chǎn)過程控制。配混系統(tǒng)下設(shè)3個遠(yuǎn)程站,燒結(jié)系統(tǒng)下設(shè)5個遠(yuǎn)程站。整個系統(tǒng)主要由以太網(wǎng)、MB+網(wǎng)和遠(yuǎn)程I/O網(wǎng)構(gòu)成。遠(yuǎn)程I/O網(wǎng)是一個高速(1.544Mb/s)局域網(wǎng)絡(luò),傳輸介質(zhì)采用同軸電纜,在本系統(tǒng)中采用介質(zhì)冗余的方式,當(dāng)一個通道有通信故障時,系統(tǒng)自動轉(zhuǎn)到另一通道,確保了PLC與遠(yuǎn)程I/O之間數(shù)據(jù)采集與控制的正常運行。系統(tǒng)簡介:反饋控制環(huán)風(fēng)格實例鋼鐵燒結(jié)工藝控制體系結(jié)構(gòu)打印機(jī)服務(wù)器工作站1工作站N交換機(jī)以太網(wǎng)Quantum系列Quantum系列遠(yuǎn)程I/O遠(yuǎn)程I/OMB+網(wǎng)控制系統(tǒng)組成反饋控制環(huán)風(fēng)格實例鋼鐵燒結(jié)工藝控制體系結(jié)構(gòu) 下面,我們主要介紹混合料水控制和點火溫度控制。系統(tǒng)主要功能:自動配料控制混合料水分控制點火溫度控制混合料總量控制生產(chǎn)中固體燃料的消耗控制自動布料控制等功能。反饋控制環(huán)風(fēng)格實例鋼鐵燒結(jié)工藝控制體系結(jié)構(gòu)

混合料水分的自動控制:

通過實時跟蹤混合料中各種原料的重量,計算其干重和濕重。根據(jù)物料平衡原理調(diào)整混合料中的水含量。在上位機(jī)輸入各種原料的含水量及一混、二混、三混內(nèi)的目標(biāo)水分,系統(tǒng)即可根據(jù)流量自動調(diào)節(jié)混合料的含水量。一混、二混、三混內(nèi)自動給水系統(tǒng)構(gòu)成相同,由電磁流量計、電動調(diào)節(jié)閥、快中子水分計等檢測設(shè)備組成,與PLC一起實現(xiàn)混合料加水系統(tǒng)的前饋控制與反饋控制及串級控制相結(jié)合的控制方法。實現(xiàn)加水流量的閉環(huán)控制,控制混合料的含水量??刂圃砣缦聢D所示。反饋控制環(huán)風(fēng)格實例鋼鐵燒結(jié)工藝控制體系結(jié)構(gòu)實際水分-測量變送器混合料水分控制原理主PID調(diào)節(jié)器副PID調(diào)節(jié)器電動調(diào)節(jié)閥流量對象水分對象測水儀信號模型運算目標(biāo)水分實測水分-反饋控制環(huán)風(fēng)格實例鋼鐵燒結(jié)工藝控制體系結(jié)構(gòu)

點火溫度自動控制:

點火器溫度的穩(wěn)定是保證燒結(jié)礦產(chǎn)品質(zhì)量的重要因素,利用PLC對點火溫度進(jìn)行實時控制,對提高生產(chǎn)率和燒結(jié)礦質(zhì)量、節(jié)約能源有著積極的意。把熱電偶檢測到4~20mA標(biāo)準(zhǔn)信號送入模擬量輸入模塊,在CPU內(nèi)部,將此次采樣值作為過程值與設(shè)定值進(jìn)行比較計算,通過模擬量輸出模塊輸出4~20mA信號,控制執(zhí)行機(jī)構(gòu)動作,改變煤氣流量,達(dá)到控制溫度的目的。同時,為保證燃燒的經(jīng)濟(jì)性,煤氣量與空氣量必須按一定比例混合,本系統(tǒng)采用比值控制系統(tǒng),通過控制煤氣、空氣的流量,使點火溫度保持在一定范圍內(nèi)??刂圃砣缦聢D所示。反饋控制環(huán)風(fēng)格實例鋼鐵燒結(jié)工藝控制體系結(jié)構(gòu)測量值-信號流量點火溫度控制原理溫度調(diào)節(jié)煤氣流量調(diào)節(jié)器電動調(diào)節(jié)閥溫度對象電動調(diào)節(jié)閥空氣流量測量變送器溫度設(shè)定Q(煤氣流量)-溫度測量變送器煤氣流量測量變送器比值器空氣流量調(diào)節(jié)器-T(點火溫度)(空氣流量)Q2七種構(gòu)建模式的比較軟件體系結(jié)構(gòu)的七種構(gòu)建模式各有自己的特點、局限、應(yīng)用范圍和優(yōu)缺點,比較各種構(gòu)建模式的不同將有助于在實際的項目開發(fā)過程中選擇適合項目的構(gòu)建模式。七種構(gòu)建模式的比較見下表所示:

七種構(gòu)建模式的比較構(gòu)建模式主要特點主要優(yōu)點主要缺點適合領(lǐng)域說明管道-過濾器風(fēng)格過濾器相對獨立功能模塊復(fù)用;強(qiáng)可維護(hù)性和可擴(kuò)展性;具有并發(fā)性;模塊獨立性高不適于交互性強(qiáng)的應(yīng)用;對于存在關(guān)系的數(shù)據(jù)流必須進(jìn)行協(xié)調(diào)系統(tǒng)可劃分清晰的模塊;模塊相對獨立;有清晰的模塊接口每個功能模塊有一組輸入輸出,模塊劃分限制較大。面向?qū)ο箫L(fēng)格力取實現(xiàn)問題空間和軟件系統(tǒng)空間結(jié)構(gòu)的一致性高度模塊性;實現(xiàn)封裝;代碼共享;靈活;易維護(hù);可擴(kuò)充性好增加了對象之間的依賴關(guān)系多種領(lǐng)域是現(xiàn)在使用非常多的一種構(gòu)建模式事件驅(qū)動風(fēng)格系統(tǒng)由若干子系統(tǒng)構(gòu)成且成為一個整體;系統(tǒng)有統(tǒng)一的目標(biāo);子系統(tǒng)有主從之分;每一子系統(tǒng)有自己的事件收集和處理機(jī)制適合描寫系統(tǒng)組;容易實現(xiàn)并發(fā)處理和多任務(wù);可擴(kuò)展性好;具有類層次結(jié)構(gòu);簡化代碼;因為樹型結(jié)構(gòu)所以削弱了對系統(tǒng)計算的控制能力;各個對象的邏輯關(guān)系復(fù)雜一個系統(tǒng)對外部的表現(xiàn)可以從它對事件的處理表征出來事件驅(qū)動系統(tǒng)具有某種意義上的帝歸性,形成了“部分-整體”的層次結(jié)構(gòu)七種構(gòu)建模式的比較構(gòu)建模式主要特點主要優(yōu)點主要缺點適合領(lǐng)域說明分層風(fēng)格各個層次的組件形成不同功能級別的虛擬機(jī);多層相互協(xié)同工作,而且實現(xiàn)透明支持系統(tǒng)設(shè)計過程中的逐級抽象;可擴(kuò)展性好;支持軟件復(fù)用不同層次之間耦合度高的系統(tǒng)很難實現(xiàn)適合功能層次的抽象和相互之間低耦合的系統(tǒng)數(shù)據(jù)共享風(fēng)格采用兩個常用構(gòu)件中央數(shù)據(jù)單元和一些相對獨立的組件集合中央數(shù)據(jù)單元實現(xiàn)了數(shù)據(jù)的集中,以數(shù)據(jù)為中心適合于特定領(lǐng)域適合于專家系統(tǒng)等人工智能領(lǐng)域問題的求解數(shù)據(jù)和處理功能分界明顯,解釋器風(fēng)格系統(tǒng)核心是虛擬機(jī)可以用多種操作來解釋一個句子適合于特定領(lǐng)域適合于模式匹配系統(tǒng)和語言編譯器反饋控制環(huán)風(fēng)格通過不斷地測量被控對象,認(rèn)識和掌控被控對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論