計算機(jī)軟件及應(yīng)用軟件體系結(jié)構(gòu)課件_第1頁
計算機(jī)軟件及應(yīng)用軟件體系結(jié)構(gòu)課件_第2頁
計算機(jī)軟件及應(yīng)用軟件體系結(jié)構(gòu)課件_第3頁
計算機(jī)軟件及應(yīng)用軟件體系結(jié)構(gòu)課件_第4頁
計算機(jī)軟件及應(yīng)用軟件體系結(jié)構(gòu)課件_第5頁
已閱讀5頁,還剩507頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件體系結(jié)構(gòu)第一部分天津大學(xué)計算機(jī)學(xué)院饒國政軟件體系結(jié)構(gòu)天津大學(xué)計算機(jī)學(xué)院課程內(nèi)容

軟件危機(jī)

軟件體系結(jié)構(gòu)概念

軟件體系結(jié)構(gòu)模式

體系結(jié)構(gòu)的設(shè)計模式

基礎(chǔ)結(jié)構(gòu)模式

軟件體系結(jié)構(gòu)的其它研究領(lǐng)域

課程內(nèi)容

軟件危機(jī)第一章軟件危機(jī)軟件軟件的發(fā)展階段軟件危機(jī)軟件生命周期第一章軟件危機(jī)軟件軟件軟件=程序、數(shù)據(jù)和相關(guān)文檔的完整集合軟件的特點:軟件是一個邏輯實體,而非物理實體;軟件是人類抽象思維的產(chǎn)物;開發(fā)過程沒有明顯的制作過程;生產(chǎn)成本隨著軟件的復(fù)雜程度急劇增加(指數(shù)級);容易復(fù)制、傳播;維護(hù)工作復(fù)雜。軟件軟件=程序、數(shù)據(jù)和相關(guān)文檔的完整集合軟件的發(fā)展階段三個發(fā)展階段程序設(shè)計階段(50~60年代中期)程序系統(tǒng)階段(60中期~70年代中期)軟件工程階段(70年代中期以來)軟件的發(fā)展階段三個發(fā)展階段軟件危機(jī)

軟件危機(jī)的表現(xiàn)◎軟件成本估計不準(zhǔn)確

隨著軟件規(guī)模增長,軟件開發(fā)成本往往成指數(shù)級增長。軟件危機(jī)

軟件危機(jī)的表現(xiàn)◎開發(fā)進(jìn)度難以控制

由于軟件是邏輯、智力產(chǎn)品,軟件的開發(fā)需建立龐大的邏輯體系,這是與其他產(chǎn)品的生產(chǎn)不一樣的。在軟件開發(fā)過程中,用戶需求變化等各種意想不到的情況層出不窮,令軟件開發(fā)過程很難保證按預(yù)定的計劃實現(xiàn),給項目計劃和論證工作帶來了很大的困難。盲目增加軟件開發(fā)人員并不能成比例地提高軟件開發(fā)能力。相反,隨著人員數(shù)量的增加,人員的組織、協(xié)調(diào)、通信、培訓(xùn)和管理等方面的問題將更為嚴(yán)重?!蜷_發(fā)進(jìn)度難以控制◎軟件質(zhì)量差

軟件項目即使能按預(yù)定日期完成,結(jié)果卻不盡人意。1965年至1970年,美國范登堡基地發(fā)射火箭多次失敗,絕大部分故障是由應(yīng)用程序錯誤造成的。在“軟件作坊”里,由于缺乏工程化思想的指導(dǎo),程序員幾乎總是習(xí)慣性地以自己的想法去代替用戶對軟件的需求,軟件設(shè)計帶有隨意性,很多功能只是程序員的“一廂情愿”而已,這是造成軟件不能令人滿意的重要因素?!蜍浖|(zhì)量差◎軟件開發(fā)缺乏適當(dāng)?shù)奈臋n資料

文檔資料對于軟件開發(fā)和軟件維護(hù)是至關(guān)重要的?!蜍浖_發(fā)缺乏適當(dāng)?shù)奈臋n資料◎軟件維護(hù)困難

由于在軟件設(shè)計和開發(fā)過程中,沒有嚴(yán)格遵循軟件開發(fā)標(biāo)準(zhǔn),各種隨意性很大,沒有完整的真實反映系統(tǒng)狀況的記錄文檔,給軟件維護(hù)造成了巨大的困難。特別是在軟件使用過程中,原來的開發(fā)人員可能因各種原因已經(jīng)離開原來的開發(fā)組織,使得軟件幾乎不可維護(hù)。有資料表明,工業(yè)界為維護(hù)軟件支付的費用占全部硬件和軟件費用的40%-75%。◎軟件維護(hù)困難

如何克服軟件危機(jī)人們面臨的不光是技術(shù)問題,更重要的是管理問題。管理不善必然導(dǎo)致失敗。要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程化的開發(fā)方法與工業(yè)化的生產(chǎn)技術(shù)。==》軟件工程

如何克服軟件危機(jī)人們面臨的不光是技術(shù)問題,更重軟件生命周期軟件從孕育、誕生、成長、衰亡的生存過程,稱為軟件的生命周期。六個步驟:制定計劃:問題分析、可行性研究需求分析軟件系統(tǒng)設(shè)計:總體設(shè)計、詳細(xì)設(shè)計軟件編碼軟件測試軟件維護(hù)軟件生命周期軟件從孕育、誕生、成長、衰亡的生存過程,稱為軟件第二章軟件體系結(jié)構(gòu)基本概念重要性組件與連接器風(fēng)格與模式非功能屬性第二章軟件體系結(jié)構(gòu)基本概念第一節(jié)基本概念定義還沒有達(dá)到共識。以下幾個有助于我們的理解軟件體系結(jié)構(gòu)是一組具有一定形式的結(jié)構(gòu)化元素(設(shè)計元素)組成。軟件體系結(jié)構(gòu)超越了計算過程中的算法設(shè)計和數(shù)據(jù)結(jié)構(gòu)。四視圖觀點:概念上的體系結(jié)構(gòu)、模塊體系結(jié)構(gòu)、代碼體系結(jié)構(gòu)和運行體系結(jié)構(gòu)。四模式觀點:概念模式、框架模式、動態(tài)模式、進(jìn)程模式第一節(jié)基本概念定義還沒有達(dá)到共識。所以:軟件體系結(jié)構(gòu)對軟件系統(tǒng)的構(gòu)造起著指導(dǎo)性作用。它回避了軟件系統(tǒng)的功能細(xì)節(jié),著重于討論軟件系統(tǒng)的總體構(gòu)架。它關(guān)注的是系統(tǒng)結(jié)構(gòu)及其組成組件。所以:修正后的軟件生命周期:需求分析體系結(jié)構(gòu)設(shè)計:選擇模式,選擇組件,組件之間的關(guān)系以及它們之間的約束。以此為框架,為詳細(xì)設(shè)計奠定基礎(chǔ)。-原為“總體設(shè)計”詳細(xì)設(shè)計實現(xiàn)維護(hù)修正后的軟件生命周期:第二節(jié)重要性良好的體系結(jié)構(gòu)設(shè)計是決定軟件系統(tǒng)成功的重要因素。早期的教訓(xùn):IBMOS/360(1963-1966)第二節(jié)重要性良好的體系結(jié)構(gòu)設(shè)計是決定軟件系統(tǒng)成功的重要因素軟件體系結(jié)構(gòu)的指導(dǎo)意義作為軟件開發(fā)的基本指導(dǎo)方針整個軟件設(shè)計的開端,決定著開發(fā)工作的整體結(jié)構(gòu),具有更大的決策性和約束性。體系結(jié)構(gòu)給予后繼開發(fā)人員一個可實現(xiàn)的指導(dǎo)和約束。軟件體系結(jié)構(gòu)的指導(dǎo)意義作為軟件開發(fā)的基本指導(dǎo)方針軟件體系結(jié)構(gòu)的指導(dǎo)意義對軟件質(zhì)量保證具有重大的影響支配了從開發(fā)到維護(hù)項目的團(tuán)隊組織結(jié)構(gòu)對軟件的修改、變動提供了保證和約束。提供了軟件的可重用性軟件體系結(jié)構(gòu)的指導(dǎo)意義對軟件質(zhì)量保證具有重大的影響為什么體系結(jié)構(gòu)沒能早日引進(jìn)來呢?早期軟件開發(fā)被認(rèn)為是個人創(chuàng)造力的產(chǎn)物,靈活性很高,從而導(dǎo)致開發(fā)者無規(guī)可循。早期軟件開發(fā)的規(guī)模較小,開發(fā)通常由個人或者小的團(tuán)隊來完成,團(tuán)隊易于溝通交流,體系結(jié)構(gòu)的要求不迫切。軟件產(chǎn)品提交給用戶的為編譯后的軟件,不能看到源代碼,其他人難以分析其結(jié)構(gòu),阻礙了技術(shù)的傳播。為什么體系結(jié)構(gòu)沒能早日引進(jìn)來呢?早期軟件開發(fā)被認(rèn)為是個人創(chuàng)造第三節(jié)組件和連接器現(xiàn)代軟件系統(tǒng)通常采用組件(構(gòu)件)的開發(fā)方法組件:系統(tǒng)中的結(jié)構(gòu)塊,是軟件功能設(shè)計和實現(xiàn)的承載體。連接器:組件之間進(jìn)行連接的組件。軟件體系結(jié)構(gòu)的兩大構(gòu)成:組件、連接器第三節(jié)組件和連接器現(xiàn)代軟件系統(tǒng)通常采用組件(構(gòu)件)的開發(fā)方組件組件:系統(tǒng)中的結(jié)構(gòu)塊,是軟件功能設(shè)計和實現(xiàn)的承載體。組件的表達(dá)形式:組件是由封裝的內(nèi)部數(shù)據(jù)結(jié)構(gòu)及其操作,以及對外提供的操作方法集合組成。-例:公安局組件接口組件的特性(略)組件組件:系統(tǒng)中的結(jié)構(gòu)塊,是軟件功能設(shè)計和實現(xiàn)的承載體。組件連接器連接:組件之間建立和維護(hù)行為關(guān)聯(lián)及信息傳遞的途徑。連接包含兩方面:物質(zhì)基礎(chǔ):連接發(fā)生和維持的機(jī)制;規(guī)約協(xié)議:連接能夠正確地、無二義、無沖突地進(jìn)行信息交換的保證。例:電源轉(zhuǎn)接板連接器連接:組件之間建立和維護(hù)行為關(guān)聯(lián)及信息傳遞的途徑。簡單連接:兩個組件直接連接復(fù)雜連接:專門的連接組件(連接器)連接器A組件A組件B組件B組件簡單連接:兩個組件直接連接復(fù)雜連接:專門的連接組件(連接器)連接的特性(略):方向性、激發(fā)、響應(yīng)特性連接的匹配(連接器如何工作的呢):修改組件:有源代碼進(jìn)行包裝:常用方法加入中介:比較復(fù)雜或要求靈活性的握手:經(jīng)常變動的系統(tǒng)連接的特性(略):方向性、激發(fā)、響應(yīng)特性第四節(jié)風(fēng)格和模式軟件設(shè)計人員在長期開發(fā)某種類型軟件過程中摸索到該類軟件的一些規(guī)律性的東西,經(jīng)過提煉總結(jié),得到了具有普遍性的構(gòu)建模式或稱為構(gòu)建風(fēng)格。本課程將討論學(xué)習(xí)應(yīng)用較廣泛的體系結(jié)構(gòu)風(fēng)格或模式。第四節(jié)風(fēng)格和模式軟件設(shè)計人員在長期開發(fā)某種類型軟件過程中摸使用軟件體系結(jié)構(gòu)的風(fēng)格和模式的意義:便于設(shè)計開發(fā)者之間互相交流促進(jìn)了設(shè)計的復(fù)用也促進(jìn)了代碼的復(fù)用使用標(biāo)準(zhǔn)的風(fēng)格和模式有利于支持互操作所以:有利于交流和理解;有利于提高軟件設(shè)計實施的效率和質(zhì)量;風(fēng)格和模式的完善和系統(tǒng)化,也標(biāo)志軟件體系結(jié)構(gòu)的成熟。使用軟件體系結(jié)構(gòu)的風(fēng)格和模式的意義:我們對風(fēng)格、模式和框架不加區(qū)分。我們講解側(cè)重于模式。模式分為三個層次:

系統(tǒng)體系結(jié)構(gòu)模式(第三章)體系結(jié)構(gòu)的設(shè)計模式(第四章)基礎(chǔ)結(jié)構(gòu)模式(第五章)我們對風(fēng)格、模式和框架不加區(qū)分。系統(tǒng)體系結(jié)構(gòu)模式體系結(jié)構(gòu)的設(shè)計模式基礎(chǔ)結(jié)構(gòu)模式范圍最大,層次最高中等規(guī)模,獨立于特定語言最低層、最基礎(chǔ)的模式,和特定語言有關(guān)系統(tǒng)體系結(jié)構(gòu)模式體系結(jié)構(gòu)的設(shè)計模式基礎(chǔ)結(jié)構(gòu)模式系統(tǒng)體系結(jié)構(gòu)模式體系結(jié)構(gòu)的設(shè)計模式基礎(chǔ)結(jié)構(gòu)模式范圍最大,層次卷一、卷二、卷三參考書卷一、卷二、卷三參考書RobertC.Martin清華大學(xué)出版社RobertC.Martin第五節(jié)非功能屬性功能屬性非功能屬性:易修改性:可維護(hù)性可擴(kuò)展性結(jié)構(gòu)重組第五節(jié)非功能屬性功能屬性可移植性:硬件平臺、操作系統(tǒng)、用戶界面、編程語言互操作性:軟件需要經(jīng)常與其它系統(tǒng)和周圍的硬軟件軟件入口可移植性:可靠性容錯能力健壯性效率響應(yīng)時間、吞吐率、存儲空間可靠性可重用性重用現(xiàn)有的組件和重用以前的項目、商業(yè)庫、設(shè)計分析、設(shè)計說明。為重用進(jìn)行軟件開發(fā)可測試性軟件系統(tǒng)變的越來越大,越來越復(fù)雜,軟件測試工作也變得越來越困難和昂貴??芍赜眯缘谌孪到y(tǒng)體系結(jié)構(gòu)模式十種模式:管道-過濾器、分層、知識庫(黑板)、MVC、PAC、客戶與服務(wù)器、COM/DCOM/COM+、代理者、微核、映像、異構(gòu)第三章系統(tǒng)體系結(jié)構(gòu)模式客戶與服務(wù)器、每種體系結(jié)構(gòu)的講解內(nèi)容概述結(jié)構(gòu):靜態(tài)動態(tài)特性實現(xiàn)特性變體優(yōu)缺點Google八周歲了!每種體系結(jié)構(gòu)的講解內(nèi)容概述Google八周歲了!第1節(jié)管道-過濾器概述結(jié)構(gòu)動態(tài)特性實現(xiàn)特性變體優(yōu)缺點第1節(jié)管道-過濾器概述1概述數(shù)據(jù)流處理系統(tǒng)示例:UNIX操作系統(tǒng)的管道-過濾器示例:語言編譯器1概述數(shù)據(jù)流處理系統(tǒng)掃描器語法分析編譯器語義分析調(diào)用輸入代碼生成掃描器語法分析編譯器語義分析調(diào)用輸入代碼生成2靜態(tài)結(jié)構(gòu)過濾器組件過濾器組件管道過濾器組件管道輸入輸入輸出輸出數(shù)據(jù)源輸出數(shù)據(jù)池2靜態(tài)結(jié)構(gòu)過濾器組件過濾器組件管道過濾器組件管道輸入輸過濾器組件3種激活方式(1)后續(xù)的組件從過濾器中拉出數(shù)據(jù);(2)前面的組件向過濾器推入新數(shù)據(jù);(3)過濾器處于活躍狀態(tài),以循環(huán)的方式,不斷地從前面的組件中拉出數(shù)據(jù),并向后續(xù)的組件推入數(shù)據(jù)。前兩種稱為被動過濾器;后一種稱為主動過濾器過濾器組件3種激活方式數(shù)據(jù)源(1)主動:將數(shù)據(jù)推入過濾器(2)被動:在過濾器需要時被動提供數(shù)據(jù)數(shù)據(jù)源(1)主動:將數(shù)據(jù)推入過濾器數(shù)據(jù)池(1)主動:從過濾器拉出來數(shù)據(jù)(2)被動:在過濾器把結(jié)果推入或?qū)懭霐?shù)據(jù)池(1)主動:從過濾器拉出來數(shù)據(jù)管道組件管道是過濾器之間的連接。管道:(1)對被動過濾器的直接調(diào)用。(2)兩個主動過濾器進(jìn)行同步管道組件管道是過濾器之間的連接。一般結(jié)構(gòu)過濾器過濾器管道-過濾器結(jié)構(gòu)過濾器管道數(shù)據(jù)流數(shù)據(jù)源數(shù)據(jù)池過濾器一般結(jié)構(gòu)過濾器過濾器管道-過濾器結(jié)構(gòu)過濾器管道數(shù)據(jù)流數(shù)據(jù)源數(shù)3動態(tài)特性3動態(tài)特性[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件4實現(xiàn)(1)把系統(tǒng)任務(wù)分成幾個獨立的處理階段。(2)定義沿著每個管道傳輸?shù)臄?shù)據(jù)格式。(3)決定管道的連接。(4)設(shè)計和實現(xiàn)過濾器。(5)設(shè)計出錯處理。(6)建立處理流水線。4實現(xiàn)(1)把系統(tǒng)任務(wù)分成幾個獨立的處理階段。應(yīng)用舉例搜索引擎快速全面的原因抓取、分詞、索引、頁面等級評定、查詢應(yīng)用舉例搜索引擎[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件5特性(1)每個過濾器都是獨立的整體,相互之間的狀態(tài)互不影響。(2)過濾器并不知道它的上游和下游連接的過濾器的特性。(3)運行結(jié)果的正確性不依賴于各個過濾器運行的次序。5特性(1)每個過濾器都是獨立的整體,相互之間的狀態(tài)6變體(1)限制過濾器為單輸入、單輸出:從拓?fù)浣Y(jié)構(gòu)上看,為線性過濾器組件過濾器組件管道過濾器組件管道輸入輸入輸出輸出輸出6變體(1)限制過濾器為單輸入、單輸出:從拓?fù)浣Y(jié)構(gòu)(2)如果允許過濾器的輸入或輸出多于一個:造成反饋回路(拓?fù)浣Y(jié)構(gòu):有向圖)。需要保證系統(tǒng)可終止。(3)有名管道(文件)過濾器過濾器管道-過濾器結(jié)構(gòu)過濾器管道數(shù)據(jù)流數(shù)據(jù)源數(shù)據(jù)池過濾器(2)如果允許過濾器的輸入或輸出多于一個:造成反饋回路(拓?fù)?優(yōu)缺點1、優(yōu)點易于重組,增加了系統(tǒng)的靈活性。易于更新、升級和維護(hù)易于重用。并行處理提高了系統(tǒng)的效率。?快速原型系統(tǒng)的設(shè)計實現(xiàn)拓?fù)浣Y(jié)構(gòu)清晰,方便性能分析。7優(yōu)缺點1、優(yōu)點優(yōu)缺點2、缺點會導(dǎo)致數(shù)據(jù)的批處理方式。不適合處理交互式應(yīng)用要求。增加了系統(tǒng)的開銷和復(fù)雜性。共享狀態(tài)信息代價高且不靈活。用并行處理來獲得高效率是不可行的。?難以進(jìn)行錯誤處理。優(yōu)缺點2、缺點第2節(jié)分層結(jié)構(gòu)

1、概述

復(fù)雜系統(tǒng)的解決方法之一:層次化軟件系統(tǒng)的發(fā)展過程就是不斷分層的過程

層次系統(tǒng)組織成一個層次結(jié)構(gòu),每一層為上層服務(wù),并作為下層客戶。

第2節(jié)分層結(jié)構(gòu)1、概述網(wǎng)絡(luò)網(wǎng)絡(luò)操作系統(tǒng)(Windows為例)操作系統(tǒng)(Windows為例)數(shù)據(jù)庫數(shù)據(jù)庫2分層的靜態(tài)結(jié)構(gòu)系統(tǒng)的每一層向它的上一層提供服務(wù),同時又作為下一層的客戶,調(diào)用下層提供的功能函數(shù)。簡單分層的結(jié)構(gòu)(3層)核心層功能層應(yīng)用層2分層的靜態(tài)結(jié)構(gòu)系統(tǒng)的每一層向它的上一層提供服務(wù),同時又[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件3分層的方案簡單、直觀最主要特征:N層的服務(wù)只能被N+1層調(diào)用,各層之間沒有更多的依賴性。3分層的方案簡單、直觀[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件組件3組件3<<組件2的服務(wù)>>組件2組件2<<組件1的服務(wù)>>組件1組件1組件1組件3組件3<<組件2的服務(wù)>>組件2組件2<<組件1的服務(wù)4分層的動態(tài)特性一、自頂向下:請求4分層的動態(tài)特性一、自頂向下:請求二、自底向上:通知二、自底向上:通知三、部分請求三、部分請求四、部分通知四、部分通知五:協(xié)議堆棧五:協(xié)議堆棧5分層結(jié)構(gòu)的實現(xiàn)(1)為便于分層,定義抽象準(zhǔn)則(2)根據(jù)抽象準(zhǔn)則定義抽象層數(shù)(3)給每一層命名并指定它們的任務(wù)(4)指定服務(wù)5分層結(jié)構(gòu)的實現(xiàn)(1)為便于分層,定義抽象準(zhǔn)則(5)為每個層定義接口:黑盒(6)構(gòu)建獨立的層(7)確定相鄰層間的通信:推/拉模式(8)降低相鄰層的耦合程度(9)設(shè)計錯誤處理策略:近可能在低層(5)為每個層定義接口:黑盒6分層的應(yīng)用實例通信協(xié)議TCP/IP6分層的應(yīng)用實例通信協(xié)議TCP/IP虛擬機(jī)虛擬機(jī)API棧API棧J2EE的結(jié)構(gòu)圖(.NET結(jié)構(gòu)類似)J2EE的結(jié)構(gòu)圖(.NET結(jié)構(gòu)類似)J2EEBlueprintsSun公司的J2EE開發(fā)技術(shù)的演示網(wǎng)上寵物商店:不斷更新展示最新的Java開發(fā)技術(shù)三層結(jié)構(gòu)表示層業(yè)務(wù)邏輯層數(shù)據(jù)層(持久層)J2EEBlueprintsSun公司的J2EE開發(fā)技術(shù)的[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件使用界面和功能介紹寵物展示購物車用戶登錄配貨處理Ajax支持使用界面和功能介紹[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件GoogleMapGoogleMap[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件表示層組件<<業(yè)務(wù)層的服務(wù)>>業(yè)務(wù)層組件<<數(shù)據(jù)層的服務(wù)>>數(shù)據(jù)層組件數(shù)據(jù)層組件表示層業(yè)務(wù)層數(shù)據(jù)層表示層組件<<業(yè)務(wù)層的服務(wù)>>業(yè)務(wù)層組件<<數(shù)據(jù)層的服務(wù)>>[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件JSP、HTML<<SessionBean接口>>SessionBean<<EntityBean接口>>EntityBeanEntityBean表示層業(yè)務(wù)層數(shù)據(jù)層JSP、HTML<<SessionBean接口>>Sessi7分層結(jié)構(gòu)的變體(1)松弛(寬松)分層結(jié)構(gòu)定義:有些層可以直接使用下面幾層的服務(wù),而不僅是相鄰層的服務(wù)。特點:增加了靈活性和效率,但卻犧牲了可維護(hù)性。應(yīng)用:常用于系統(tǒng)軟件,較少用于應(yīng)用軟件。7分層結(jié)構(gòu)的變體(1)松弛(寬松)分層結(jié)構(gòu)(2)通過繼承的分層結(jié)構(gòu)定義:低層作為基類,較高的層通過繼承來使用低層的服務(wù)。優(yōu)點:高層可以根據(jù)需要修改低層的服務(wù)。缺點:繼承關(guān)系把高層和低層緊密聯(lián)系在一起。(違反了“合成/聚合復(fù)用原則“)(2)通過繼承的分層結(jié)構(gòu)8分層結(jié)構(gòu)的優(yōu)缺點優(yōu)點:(1)層的重用(2)對軟件標(biāo)準(zhǔn)化的支持(3)局部依賴性(4)可替換性8分層結(jié)構(gòu)的優(yōu)缺點優(yōu)點:缺點:(1)更改行為的連鎖性(2)運行效率低(3)可能增加許多不必要的工作:(可能低層執(zhí)行了許多高層不需要的重復(fù)性工作)(4)很難確定分層的準(zhǔn)確程度缺點:第三節(jié)知識庫(黑板)結(jié)構(gòu)第三節(jié)知識庫(黑板)結(jié)構(gòu)1概述(1)適合無確定性求解策略的問題難以用數(shù)學(xué)精確處理的問題:醫(yī)療、地震、天氣人工智能:專家系統(tǒng)、模式識別、智能機(jī)器人(2)黑板系統(tǒng)是知識庫系統(tǒng)的一種。(3)示例:HEARSAY-II語音識別系統(tǒng)HASP潛艇探測系統(tǒng)CRYSALIS蛋白質(zhì)分子的三維結(jié)構(gòu)1概述(1)適合無確定性求解策略的問題2結(jié)構(gòu)組成部分(1)表示當(dāng)前狀態(tài)的中心公共數(shù)據(jù)結(jié)構(gòu):黑板(2)知識庫:是一些獨立的、分離的與應(yīng)用程序有關(guān)的知識庫(3)一組對公共數(shù)據(jù)結(jié)構(gòu)進(jìn)行協(xié)同操作的獨立程序集合(4)推理機(jī):中心控制組件,對黑板的信息進(jìn)行評估,并協(xié)調(diào)各專用程序進(jìn)行工作。2結(jié)構(gòu)組成部分

倉庫系統(tǒng)及知識庫

倉庫系統(tǒng)及知識庫[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件初始狀態(tài)目標(biāo)狀態(tài)中間狀態(tài)中間狀態(tài)推理知識庫知識庫知識庫知識庫初始狀態(tài)目標(biāo)狀態(tài)中間狀態(tài)中間狀態(tài)推理知識庫知識庫知識庫知識庫3動態(tài)特性(1)描述初始數(shù)據(jù)到黑板中(2)啟動控制組件的主循環(huán)(3)控制組件調(diào)用nextsource()過程,選擇下一條知識(4)nextsource()通過檢測黑板確定哪些知識是可匹配的知識-用知識的條件部分匹配黑板上的數(shù)據(jù)3動態(tài)特性(1)描述初始數(shù)據(jù)到黑板中(續(xù))(5)根據(jù)預(yù)先確定的控制策略進(jìn)行評估,在所有匹配的知識中選擇一條知識進(jìn)行操作(6)根據(jù)該條知識的操作部分,更新黑板上數(shù)據(jù)的內(nèi)容(7)控制策略判斷是否已達(dá)到系統(tǒng)終止條件,如果未達(dá)到,轉(zhuǎn)向步驟3(8)終止(續(xù))(5)根據(jù)預(yù)先確定的控制策略進(jìn)行評估,在所有匹配的知識[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件4實現(xiàn)(1)定義問題(2)定義問題的解空間(3)將求解過程分成幾個步驟(1)定義如何將低級中間解轉(zhuǎn)換成更高等級解(2)定義如何進(jìn)行啟發(fā)性搜索(3)詳細(xì)指出修剪部分解空間的知識類型(4)將知識分解成與一定子任務(wù)相關(guān)聯(lián)的專門知識(5)定義黑板上的詞匯集4實現(xiàn)(1)定義問題(6)設(shè)計系統(tǒng)的控制(7)實現(xiàn)知識庫(6)設(shè)計系統(tǒng)的控制5應(yīng)用實例HEARSAY-II-語音查詢,數(shù)據(jù)庫-類似于Google的語音搜索5應(yīng)用實例HEARSAY-II6優(yōu)缺點優(yōu)點:(1)可應(yīng)用于許多沒有確定解方法的問題(2)支持可更改性和可維護(hù)性(3)知識可重用(4)支持容錯性和健壯性6優(yōu)缺點優(yōu)點:缺點:(1)測試?yán)щy(2)不能保證最優(yōu)的求解方案(3)效率低(4)開發(fā)工作昂貴(5)缺少對并行機(jī)制的支持缺點:第四節(jié)MVC結(jié)構(gòu)第四節(jié)MVC結(jié)構(gòu)1、概述圖形用戶界面-增強(qiáng)和用戶的交互性用戶界面的問題:用戶界面經(jīng)常需要變動不同的用戶對用戶界面的要求不同:熟練用戶和初級用戶同樣的數(shù)據(jù)需要不同的用戶界面用戶界面和功能核心的關(guān)系1、概述圖形用戶界面-增強(qiáng)和用戶的交互性解決之道不可取的方式:用戶界面和功能核心緊密結(jié)合目標(biāo):用戶界面的易改動性、功能核心的相對穩(wěn)定性解決方案:MVC(模型-視圖-控制)結(jié)構(gòu)解決之道不可取的方式:用戶界面和功能核心緊密結(jié)合MVC結(jié)構(gòu)首先應(yīng)用在Smalltalk環(huán)境。目前廣泛應(yīng)用于圖形用戶界面和交互式系統(tǒng)。比如:MFC、ET++、Java類庫、Spring、Struts等MVC結(jié)構(gòu)首先應(yīng)用在Smalltalk環(huán)境。2、MVC靜態(tài)結(jié)構(gòu)3個組成部分:模型、視圖、控制模型:系統(tǒng)處理問題邏輯的內(nèi)在抽象。它封裝了問題的核心數(shù)據(jù),以及邏輯和功能的計算關(guān)系。-內(nèi)在視圖:把表示模型的數(shù)據(jù)和邏輯關(guān)系以及系統(tǒng)的狀態(tài)等信息以特定的方式顯示給用戶。-外表控制:處理用戶和應(yīng)用系統(tǒng)的交互操作。2、MVC靜態(tài)結(jié)構(gòu)3個組成部分:模型、視圖、控制模型、視圖、控制的分離,使得一個模型可以具有多個顯示視圖。模型變化的傳播機(jī)制:模型、視圖、控制保證一致性。模型、視圖、控制的分離,使得一個模型可以具有多個顯示視圖。[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件MVC的幾個部分MVC的幾個部分3MVC的動態(tài)特性3MVC的動態(tài)特性4MVC的設(shè)計實現(xiàn)1、分析應(yīng)用問題,將交互界面與核心功能分離2、實現(xiàn)觀察器、模型;并實現(xiàn)它們之間的變更-傳播機(jī)制(注冊)。classobserver{public:virtualvoidupdate(){}};4MVC的設(shè)計實現(xiàn)1、分析應(yīng)用問題,將交互界面與核心功能classModel{public:Voidattach(observer*s);Voiddetach(observer*s);Virtualvoidnotify();Private:Collection<observer*>registry;};classModel{VoidModel::notify(){Iterator<observer*>iter(registry);While(iter.next()){iter.curr()->update();}}VoidModel::notify(){3、實現(xiàn)視圖ClassView:publicobserver{Public:view(Model*m):myModel(m),myController(0){myModel->attach(this);}virtual~view(){myModel->detach(this);}virtualvoidupdate(){this->draw();}virtualvoidinitialize(){}virtualvoiddraw();VoidsetModel(Model*m){myModel=m;}Model*getModel(){returnmyModel;}VoidsetController(Controller*c){myController=c;}Controller*getController(){returnmyController;}protected:Model*myModel;Controller*myController;};3、實現(xiàn)視圖ClassView:publicobse4、實現(xiàn)控制器ClassController:publicobserver{Public:VirtualvoidhandleEvent(event*){}Controller(view*v):myView(v){myModel=myView->getModel();myModel->attach(this);}virtual~Controller(){myModel->detach(this);}virtualvoidupdate(){}VoidsetModel(Model*m){myModel=m;}Model*getModel(){returnmyModel;}VoidsetView(View*c){myView=c;}Controller*getView(){returnmyView;}protected:Model*myModel;Controller*myView;};4、實現(xiàn)控制器ClassController:publ[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件實例實例5MVC的變體1、將視圖和控制器合并在一個組件中(文檔-視圖):典型案例為MFC5MVC的變體1、將視圖和控制器合并在一個組件中(文檔-觀察者模式(Observer模式)觀察者模式(Observer模式)實例實例[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件6MVC的優(yōu)缺點優(yōu)點:⑴:同一模型可有多個視圖⑵:視圖同步化⑶:視圖與控制器可接插性⑷:模型的可移植性⑸:潛在的框架結(jié)構(gòu)6MVC的優(yōu)缺點優(yōu)點:缺點:⑴:增加了系統(tǒng)結(jié)構(gòu)的復(fù)雜性⑵:視圖與控制器間的連接過于緊密⑶:數(shù)據(jù)訪問的效率⑷:使用現(xiàn)代用戶界面工具的困難缺點:第五節(jié)PAC結(jié)構(gòu)第五節(jié)PAC結(jié)構(gòu)1、PAC結(jié)構(gòu)概述表示-抽象-控制體系結(jié)構(gòu)是以相互協(xié)作的代理程序組成的層次形式來定義的交互式軟件體系結(jié)構(gòu)。每個代理程序負(fù)責(zé)應(yīng)用程序的某一個特定功能方面,而且每個代理程序均由表示、抽象和控制3個組件。PAC結(jié)構(gòu)把代理程序的人機(jī)交互部分與其功能內(nèi)核及其通信部分分隔開來。1、PAC結(jié)構(gòu)概述表示-抽象-控制體系結(jié)構(gòu)是以相互協(xié)作的代理所以:在這種結(jié)構(gòu)中,是將系統(tǒng)功能進(jìn)行橫向分解。分解為多個代理程序。這些代理程序互相交互來完成軟件的功能。所以:在這種結(jié)構(gòu)中,是將系統(tǒng)功能進(jìn)行橫向分解。2、PAC結(jié)構(gòu)的方案樹狀的代理程序集合來建立交互式應(yīng)用程序樹根部分-頂層的代理程序樹干部分-中層的代理程序樹葉部分-低層的代理程序整個樹型圖反映了代理程序之間的傳遞關(guān)系。每個代理程序依賴于它上面的代理程序,直至樹根部的頂層代理程序。-依賴倒轉(zhuǎn)原則2、PAC結(jié)構(gòu)的方案樹狀的代理程序集合來建立交互式應(yīng)用程序[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件PAC到哪兒去了呢?在每個代理程序內(nèi)部,都包括了PAC三個組件:表示組件(P):提供PAC代理程序的可視行為。抽象組件(A):基礎(chǔ)的數(shù)據(jù)模型??刂平M件(C):連接表示組件和抽象組件,并與其他組件通信。PAC到哪兒去了呢?在每個代理程序內(nèi)部,都包括了PAC三個組以此為例,說明樹根、樹葉、樹干部分的代理程序的功能。以此為例,說明樹根、樹葉、樹干部分的代理程序的功能。3、PAC結(jié)構(gòu)PAC結(jié)構(gòu)中的各部分的功能分析(1)樹根部的代理程序抽象組件:反映的軟件的整體數(shù)據(jù)模型表示組件:一般很少有職責(zé)控制組件:協(xié)調(diào)各級代理程序之間的關(guān)系3、PAC結(jié)構(gòu)PAC結(jié)構(gòu)中的各部分的功能分析(2)樹葉代理程序:具體語義概念抽象組件:維護(hù)本代理的數(shù)據(jù)。表示組件:語義視圖,對用戶的交互??刂平M件:與上層代理的通信、交換事件與數(shù)據(jù)。(2)樹葉代理程序:具體語義概念(3)樹干代理程序:合成與協(xié)作抽象組件:維護(hù)本代理特殊的數(shù)據(jù)。表示組件:實現(xiàn)自己的視圖??刂平M件:與上下層代理的通信、交換事件與數(shù)據(jù)。(3)樹干代理程序:合成與協(xié)作[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件4、動態(tài)特性4、動態(tài)特性5、PAC結(jié)構(gòu)的設(shè)計實現(xiàn)共分九步。關(guān)鍵的部分:根部PAC代理程序、葉部PAC代理程序、樹干部PAC代理程序5、PAC結(jié)構(gòu)的設(shè)計實現(xiàn)共分九步。6、應(yīng)用實例6、應(yīng)用實例

7、優(yōu)缺點優(yōu)點:(1)事物分離-單一職責(zé)原則(2)易于變化和擴(kuò)展-易于變化(迪米特法則)、擴(kuò)展(依賴倒轉(zhuǎn)原則)(3)支持多任務(wù)-代理程序可分配到不同的線程、進(jìn)程或機(jī)器上。

7、優(yōu)缺點優(yōu)點:缺點:(1)系統(tǒng)的復(fù)雜性提高(2)控制組件復(fù)雜(3)代理程序間的通信會影響系統(tǒng)效率(4)分解粒度越小,則用戶界面相似性越多,但可用性就越差。缺點:第六節(jié)客戶/服務(wù)器結(jié)構(gòu)第六節(jié)客戶/服務(wù)器結(jié)構(gòu)1、概述MVC、PAC解決:同一程序內(nèi)的不同部分的交互問題。那么不同程序之間的交互如何處理呢?為什么會出現(xiàn)“不同程序之間的交互”呢?1、概述MVC、PAC解決:同一程序內(nèi)的不同部分的交互問題。1)一個程序不可能完成所有的工作;這些非核心的工作需要交給其他的程序。如數(shù)據(jù)庫服務(wù)器程序2)地理位置的分隔,也必然會使得兩個程序需要交互。網(wǎng)絡(luò)應(yīng)用程序1)一個程序不可能完成所有的工作;這些非核心的工作需要交給其客戶/服務(wù)器結(jié)構(gòu)一個應(yīng)用系統(tǒng)被分成了兩個邏輯上分離的部分:客戶、服務(wù)器。它們完成不同的功能。客戶:發(fā)出請求服務(wù)器:接受請求,完成服務(wù)功能??蛻?服務(wù)器結(jié)構(gòu)發(fā)展演變過程1、基本客戶/服務(wù)器系統(tǒng)客戶-負(fù)責(zé)與用戶的交互,向服務(wù)器請求服務(wù)器-負(fù)責(zé)操作數(shù)據(jù)庫,并把查詢結(jié)果發(fā)送給客戶發(fā)展演變過程1、基本客戶/服務(wù)器系統(tǒng)2、把客戶和服務(wù)器中的應(yīng)用操作部分抽取出來形成應(yīng)用邏輯服務(wù)器??蛻簦c用戶的交互應(yīng)用邏輯服務(wù)器-復(fù)雜處理2、把客戶和服務(wù)器中的應(yīng)用操作部分抽取出來形成應(yīng)用邏輯服務(wù)器3、減輕客戶端的開發(fā),統(tǒng)一客戶端應(yīng)用,引入瀏覽器和WWW服務(wù)器3、減輕客戶端的開發(fā),統(tǒng)一客戶端應(yīng)用,引入瀏覽器和WWW服務(wù)[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件2、客戶/服務(wù)器的結(jié)構(gòu)1)系統(tǒng)組成客戶:根據(jù)需要向服務(wù)器發(fā)出請求,得到結(jié)果后將信息顯示給用戶服務(wù)器:等待接收客戶的請求,向客戶提供服務(wù)2、客戶/服務(wù)器的結(jié)構(gòu)1)系統(tǒng)組成2、客戶/服務(wù)器的結(jié)構(gòu)2)兩組件之間的關(guān)系客戶:數(shù)量不定,請求的時間不定服務(wù)器:首先啟動,隨時提供服務(wù)。服務(wù)器需要公開自己能夠提供的服務(wù)接口,便于客戶端根據(jù)服務(wù)接口來請求。-接口。2、客戶/服務(wù)器的結(jié)構(gòu)2)兩組件之間的關(guān)系2、客戶/服務(wù)器的結(jié)構(gòu)3)客戶/服務(wù)器的連接分成兩種:兩個程序在同一臺機(jī)器:信號、消息、共享存儲區(qū)、網(wǎng)絡(luò)連接兩個程序在不同的機(jī)器:網(wǎng)絡(luò)連接2、客戶/服務(wù)器的結(jié)構(gòu)3)客戶/服務(wù)器的連接2、客戶/服務(wù)器的結(jié)構(gòu)網(wǎng)絡(luò)連接進(jìn)程標(biāo)識:操作系統(tǒng)使用的進(jìn)程號,但不能用在網(wǎng)絡(luò)上。端口號在網(wǎng)絡(luò)上需要還標(biāo)識機(jī)器:IP地址半相關(guān)(三元組)、全相關(guān)(五元組)如何在程序中調(diào)用網(wǎng)絡(luò)功能呢?2、客戶/服務(wù)器的結(jié)構(gòu)網(wǎng)絡(luò)連接直接處理每一位?如何和對方連接?如何處理差錯?如何解決流量等問題?這些工作不可能我們來一一解決。需要借助于操作系統(tǒng)提供的系統(tǒng)服務(wù)。SocketAPI(網(wǎng)絡(luò)套接字):可以把Socket簡單想像成一個文件直接處理每一位?如何和對方連接?[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件3、客戶/服務(wù)器的連接1)連接的要求(1)雙方的交互必須通過定義好的接口來實現(xiàn)(2)雙方交互的信息必須滿足規(guī)定的語法形式:協(xié)議(3)信息傳送的方向:客戶到服務(wù)器是請求信息,從服務(wù)器到客戶為返回結(jié)果和狀態(tài)信息(4)傳送的信息可能需要打包、解包、加密等處理3、客戶/服務(wù)器的連接1)連接的要求3、客戶/服務(wù)器的連接2)連接的檢測:服務(wù)器不可取的方式:循環(huán)檢測常用的方式:中斷的方式服務(wù)器的守護(hù)進(jìn)程首先啟動,處于等待狀態(tài);有客戶請求到達(dá)會立即響應(yīng),然后又回到等待狀態(tài)準(zhǔn)備接受下一個請求。3、客戶/服務(wù)器的連接2)連接的檢測:服務(wù)器3)連接方式:信號、消息、共享存儲區(qū)、網(wǎng)絡(luò)連接4)連接的協(xié)議調(diào)用的名稱、參數(shù)的個數(shù)、順序、類型,執(zhí)行的方式、返回值的類型等。3)連接方式:信號、消息、共享存儲區(qū)、網(wǎng)絡(luò)連接4、服務(wù)器的調(diào)度挑戰(zhàn):服務(wù)器需要時刻準(zhǔn)備著,處理來自不同客戶的請求,而且要同時接受和處理多個不同的請求。如何解決?4、服務(wù)器的調(diào)度挑戰(zhàn):服務(wù)器需要時刻準(zhǔn)備著,處理來自不同客戶(1)進(jìn)程調(diào)度主進(jìn)程從進(jìn)程從進(jìn)程從進(jìn)程客戶客戶客戶(1)進(jìn)程調(diào)度主進(jìn)程從進(jìn)程從進(jìn)程從進(jìn)程客戶客戶客戶(2)線程調(diào)度主進(jìn)程從線程從線程從線程客戶客戶客戶(2)線程調(diào)度主進(jìn)程從線程從線程從線程客戶客戶客戶(3)線程池調(diào)度(3)線程池調(diào)度5、客戶/服務(wù)器的變體前述的客戶/服務(wù)器結(jié)構(gòu)中,客戶和服務(wù)器是強(qiáng)耦合的:客戶需要知道服務(wù)器的準(zhǔn)確位置。帶來的問題:1)當(dāng)服務(wù)器改變位置時,客戶程序不再能夠訪問服務(wù)器。2)當(dāng)有多個服務(wù)器時,無法給客戶提供更優(yōu)的服務(wù)。-負(fù)載平衡5、客戶/服務(wù)器的變體前述的客戶/服務(wù)器結(jié)構(gòu)中,變體:客戶/分配器/服務(wù)器變體:客戶/分配器/服務(wù)器[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件客戶/服務(wù)器模式作業(yè)1、線程相對于進(jìn)程來說,執(zhí)行效率高于進(jìn)程,同時節(jié)省了資源。請問Java中對于線程提供了哪些輔助類?2、原示例程序中服務(wù)器(Server)的調(diào)度采用的是線程調(diào)度方式(p71),請將其修改為線程池的調(diào)度方式。給出Server類的新源代碼??蛻?服務(wù)器模式作業(yè)1、線程相對于進(jìn)程來說,執(zhí)行效率高于進(jìn)程第七節(jié)COM/DCOM/COM+結(jié)構(gòu)第七節(jié)COM/DCOM/COM+結(jié)構(gòu)潘愛民譯《COM本質(zhì)論》北京大學(xué)計算機(jī)技術(shù)研究所教學(xué)資料《com組件技術(shù)》/潘愛民譯《COM本質(zhì)論》軟件環(huán)境的變化單任務(wù)多任務(wù)文字界面圖形界面單線程多線程平臺相關(guān)跨平臺單機(jī)(本地)網(wǎng)絡(luò)(分布式)單一語言多種語言軟件環(huán)境的變化單任務(wù)多任務(wù)文字界面圖形界面單線程多線程平臺相1、概述如何在IE中打開word文件、Excel文件;如何在CAD中插入圖片;如何在PPT文件中編輯公式和音頻?OLE(ObjectLinkingandEmbedding)-多種資源和復(fù)合文檔1、概述如何在IE中打開word文件、Excel文件;如何在應(yīng)用程序之間需要交互和組合功能。例:數(shù)據(jù)庫服務(wù)器、網(wǎng)頁服務(wù)器IIS問題:文檔編輯服務(wù)器、電子表格服務(wù)器、聲音處理服務(wù)器、公式服務(wù)器?怎么辦?能否利用Word、Excel、Mediaplayer、公式編輯器?應(yīng)用程序之間需要交互和組合功能。COMWord、Excel、公式編輯器等等程序需要采用標(biāo)準(zhǔn)的方式來提供。COM-組件對象模型,1993年發(fā)布是一種基于面向?qū)ο蟾拍畹慕M件之間互聯(lián)和通信的二進(jìn)制代碼模型。是一種支持可組裝的可執(zhí)行代碼的結(jié)構(gòu)標(biāo)準(zhǔn)。按照COM標(biāo)準(zhǔn)建立的可執(zhí)行組件均具有標(biāo)準(zhǔn)的接口,通過這些接口實現(xiàn)組件間透明的連接和互操作。COMWord、Excel、公式編輯器等等程序需要采用標(biāo)準(zhǔn)的計算機(jī)網(wǎng)絡(luò)的發(fā)展分布式系統(tǒng)的發(fā)展軟件系統(tǒng)從集中式(單機(jī))向分布和協(xié)作式發(fā)展。組件分布在多臺機(jī)器上,通過網(wǎng)絡(luò)實行透明的通信和互操作。計算機(jī)網(wǎng)絡(luò)的發(fā)展DCOMDCOM-分布式組件對象模型是COM在網(wǎng)絡(luò)環(huán)境下的擴(kuò)展。COM-LPC(本地過程調(diào)用)DCOM-RPC(遠(yuǎn)程過程調(diào)用)DCOMDCOM-分布式組件對象模型COM+COM+是一種依賴于松散耦合LCE的消息機(jī)制COM/DCOM依賴于緊耦合TCE小結(jié):COM組件技術(shù)是一種基于本地過程調(diào)用LPC、遠(yuǎn)程過程調(diào)用RPC和標(biāo)準(zhǔn)操作接口的系統(tǒng)互聯(lián)的工業(yè)標(biāo)準(zhǔn)。并且成為在因特網(wǎng)上實現(xiàn)多層體系結(jié)構(gòu)的支持技術(shù)。COM+COM+是一種依賴于松散耦合LCE的消息機(jī)制小結(jié):新發(fā)展J2EE平臺.NET框架新發(fā)展J2EE平臺2、COM組件結(jié)構(gòu)(靜態(tài))面向?qū)ο竽P停?gt;組件對象模型相同點:組件=內(nèi)部數(shù)據(jù)成員(狀態(tài))+操作方法組件必須通過將類實例化后才能運行。DLL:組件實例EXE:實例代理2、COM組件結(jié)構(gòu)(靜態(tài))面向?qū)ο竽P停?gt;組件對象模型不同點:COM組件的調(diào)用是通過接口實現(xiàn)的。接口:提供給外界的函數(shù)的集合。(公安局)一個組件角色多個,可以定義多個接口(不提倡一個組件一個總接口,接口隔離原則)COM組件的運行功能和一般對象不同。COM組件是一個獨立運行的操作系統(tǒng)任務(wù)或進(jìn)程。比如word.exe:文檔編輯應(yīng)用+文檔操作服務(wù)不同點:COM中的組成COM整體為一個客戶/服務(wù)器結(jié)構(gòu)。服務(wù)器:COM組件,專門為用戶提供邏輯操作服務(wù)的(類似數(shù)據(jù)庫服務(wù)器)。服務(wù)器應(yīng)該提供多線程:多個用戶同時請求異步操作請求:不需用戶長時間等待COM中的組成COM整體為一個客戶/服務(wù)器結(jié)構(gòu)??蛻簦赫{(diào)用接口函數(shù)調(diào)用方式:同步調(diào)用和異步調(diào)用客戶組件解決程序之間的通信問題——組件基本問題客戶:客戶組件解決程序之間的通信問題——組件基本問題3、接口客戶和組件是通過接口交互的:要求跨語言、跨編譯器、跨平臺1、接口采用何種語言定義?C、C++、Java等?語言無關(guān)的:IDL!示例:InterfaceIAlarmer{HRESULTinitialize();HRESULTConnect([in]string,[in]string);HRESULTDisconnect([in]string);HRESULTUpdateMsg([in]string);HRESULTDeleteMSG([in]string);}3、接口客戶和組件是通過接口交互的:要求跨語言、跨編譯器、跨對此種接口,C++、VB、Java怎么使用呢?需要把IDL描述的接口轉(zhuǎn)換到具體的語言形式C++中的MIDLJava中的IDLJ對此種接口,C++、VB、Java怎么使用呢?2、工作模式2、工作模式3、默認(rèn)接口:IUnKnown接口InterfaceIUnKnown{HRESULTQueryInterface([in]REFIIDiid,[out]void**ppv);ULONGAddRef(void);ULONGRelease(void);}3、默認(rèn)接口:IUnKnown接口[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件4、COM組件生存期引用計數(shù)AddRef()Release()注意:在整個生存期內(nèi),AddRef與Release一定要配對,否則:漏掉AddRef,程序出錯漏掉Release,對象永不釋放4、COM組件生存期5、COM組件接口查詢及其設(shè)計原則HRESULTQueryInterface([in]REFIIDiid,[out]void**ppv);COM接口的標(biāo)識——IID,是一個128位的長整數(shù)5、COM組件接口查詢及其設(shè)計原則接口查詢中:默認(rèn)接口是唯一的;接口自反性接口對稱性接口傳遞性接口查詢中:COM中IUnknown接口解決了兩個重要的問題動態(tài)接口發(fā)現(xiàn),允許對象支持多個接口、允許在運行時刻確定對象是否支持某些接口生命周期管理COM中IUnknown接口解決了兩個重要的問題COM接口IID:128位整數(shù)接口定義語言COMIDL對應(yīng)于C++中由純虛函數(shù)組成的類單繼承,基接口:IUnknownCOM接口6、接口的特性接口的二進(jìn)制特性接口不變性:接口是對外界的承諾接口的動態(tài)多變性:接口的實現(xiàn)可以變化6、接口的特性4、COM組件的不同類型1、進(jìn)程內(nèi)組件客戶和啟動的組件在客戶的同一進(jìn)程中運行。Windows中,DLL(動態(tài)鏈接庫)本地啟動:進(jìn)程內(nèi)組件外地啟動:組件代理4、COM組件的不同類型1、進(jìn)程內(nèi)組件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件2、進(jìn)程外組件COM組件被啟動后,在自身獨立的進(jìn)程中運行兩種形式:可執(zhí)行程序的EXE形式,不管本地外地,均為進(jìn)程外DLL形式,遠(yuǎn)程啟動時為進(jìn)程外2、進(jìn)程外組件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件DLL和EXE兩種代碼形式是在編譯時確定的。區(qū)別:EXE可執(zhí)行程序式的組件:無論激活方式,只對應(yīng)同一個組件DLL動態(tài)鏈接庫:每一個應(yīng)用將擁有不同的組件個體DLL運行效率高于EXE:進(jìn)程間通信EXE穩(wěn)定性高于DLL:獨立進(jìn)程DLL和EXE兩種代碼形式是在編譯時確定的。5、COM組件的運行1、注冊應(yīng)用程序如何找到組件呢?注冊機(jī)構(gòu):唯一、確定的。如注冊表5、COM組件的運行1、注冊TreeView組件的注冊信息TreeView組件的注冊信息2、COM庫系統(tǒng)級的核心代碼支持COM庫:提供組件創(chuàng)建和組件操作的API函數(shù),通過注冊表查找組件代碼,實現(xiàn)組件名與組件代碼的全路徑文件名的轉(zhuǎn)換,以及為組件運行提供組件之間通信的LPC和RPC代碼。2、COM庫對象的創(chuàng)建過程對象的創(chuàng)建過程COM對象創(chuàng)建過程客戶組件COM創(chuàng)建函數(shù)COM庫DllGetClassObject類廠對象接口指針COM對象創(chuàng)建過程客戶組件COM創(chuàng)建函數(shù)COM庫DllGet[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件3、COM組件代碼的重用二進(jìn)制的重用:不同于代碼的重用兩種:包容:接口的轉(zhuǎn)換聚合:接口的查詢3、COM組件代碼的重用[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件6、COM組件的變體和擴(kuò)展1、連接點組件:雙向COM6、COM組件的變體和擴(kuò)展1、連接點組件:雙向COM[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件2、DCOM表面上看,單機(jī)到網(wǎng)絡(luò),LPC到RPC即可實際,安全、可靠性、性能等問題需要考慮:調(diào)用阻塞、中斷、信息丟失、異步調(diào)用、異常處理例:檢測客戶是否正常,ping周期2、DCOM[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件3、COM+組件COM/DCOM為LPC和RPC過程調(diào)用緊耦合消息COM+:松耦合消息3、COM+組件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件COM+是什么?面向企業(yè)應(yīng)用提供了企業(yè)應(yīng)用所需要的通用基礎(chǔ)設(shè)施設(shè)計企業(yè)應(yīng)用要求有思想上的根本變化COM+對COM的增強(qiáng)和改進(jìn)增強(qiáng)了COMruntimelibrary增強(qiáng)了MTS(MicrosoftTransactionServer)事務(wù)服務(wù)、安全服務(wù)提供了新的runtime服務(wù)隊列服務(wù)、事件服務(wù)、負(fù)載平衡、(內(nèi)存數(shù)據(jù)庫)COM+兼容COM,只是提供了更多的功能COM+是什么?面向企業(yè)應(yīng)用COM+:interception技術(shù)COM對象機(jī)器、進(jìn)程或者套間邊界ProxyRPC通道StubClientPolicy1ClientPolicy2ServerPolicy2ServerPolicy1COM+:interception技術(shù)COM對象機(jī)器、進(jìn)程或COM之前的應(yīng)用在COM之前,應(yīng)用程序是完全分開的實體,它們之間只有很少或沒有任何集成關(guān)系應(yīng)用代碼和數(shù)據(jù)結(jié)構(gòu)小結(jié)COM之前的應(yīng)用在COM之前,應(yīng)用程序是完全分開的實體,它COM組件模型COM提供了組件集成的方法.但是,每個組件必須提供細(xì)節(jié)復(fù)雜的通訊接口,對象不能直接交互COM組件模型COM提供了組件集成的方法.但是,每個組件COM的優(yōu)缺點COM的優(yōu)點:在構(gòu)建組件軟件方面,COM優(yōu)于簡單的DLL模型許多公司都使用COM構(gòu)建了他們自己的核心系統(tǒng)。如:N的后端使用COMCOM成功的關(guān)鍵之一:強(qiáng)調(diào)接口COM的優(yōu)缺點COM的優(yōu)點:COM的缺點:COMDLLs的名字和配置信息都進(jìn)入注冊表,將導(dǎo)致注冊表過重的負(fù)擔(dān)因為COM使用注冊表(每個使用者都可以看到),所以不可能隔離私有的組件注冊表為應(yīng)用程序的安裝和卸載過程增加了復(fù)雜性接口一旦發(fā)布決不能變化,發(fā)布后變化接口將破壞可靠性和可預(yù)測性。客戶使用接口必須遵循嚴(yán)格的規(guī)則COM組件的數(shù)據(jù)類型一致性問題:使用各自的類型系統(tǒng),比如VB組件使用VARIANT類型COM的缺點:走向.NET使用.NETFramework的公共語言運行時(CLR),所有的組件都建立在一個共同的底層基礎(chǔ)上。不再需要通訊的繁瑣細(xì)節(jié),對象可以直接交互走向.NET使用.NETFramework的公共語言運行Microsoft.NET把系統(tǒng)平臺從Windows桌面轉(zhuǎn)移到Internet上來Internet作為.NET的平臺WebServices新觀念:軟件作為服務(wù)核心技術(shù)XML:把各種數(shù)據(jù)和服務(wù)連接起來WebService.NETFrameworkMicrosoft.NET把系統(tǒng)平臺從Windows桌面轉(zhuǎn)第八節(jié)代理者(Broker)第八節(jié)代理者(Broker)1、概述公共信息系統(tǒng)-網(wǎng)絡(luò)訂票服務(wù)賓館預(yù)定導(dǎo)游服務(wù)等等1、概述公共信息系統(tǒng)-網(wǎng)絡(luò)公共信息不斷增加、不斷擴(kuò)展和更新的。要求:系統(tǒng)不斷改變和增長每個服務(wù)之間互相隔離,以減少變動的影響??蛻舳瞬槐刂婪?wù)器端的具體地址而獲得服務(wù)。公共信息不斷增加、不斷擴(kuò)展和更新的。要求:解決方法:代理者(Broker)用于構(gòu)建中間有隔離組件的分布式系統(tǒng)。解決方法:代理者(Broker)2、問題分析與方案構(gòu)建復(fù)雜的分布式的軟件系統(tǒng),遇到的問題:系統(tǒng)功能需要分割->系統(tǒng)是由獨立但相互之間可以互相操作的組件組合分布式組件需要相互通信時,需要組件間的通信手段組件的添加、移動、激活、定位->客戶不應(yīng)該過多地依賴系統(tǒng)的各種具體細(xì)節(jié)2、問題分析與方案構(gòu)建復(fù)雜的分布式的軟件系統(tǒng),遇到的問題:解決問題:地址透明在運行期間更換、添加或移動各組件(開閉原則)系統(tǒng)對用戶隱藏特定系統(tǒng)和特定實現(xiàn)的細(xì)節(jié)解決方案-代理者客戶代理者服務(wù)器解決問題:客戶代理者服務(wù)器2、問題分析與方案提供代理者之后的結(jié)果地址透明,客戶開發(fā)簡單消息調(diào)用(不必把重點放在低級的進(jìn)程間通信)體系結(jié)構(gòu)靈活,很容易做到對組件動態(tài)改變、添加、刪除和重定位2、問題分析與方案提供代理者之后的結(jié)果靜態(tài)結(jié)構(gòu)六種成分:客戶、服務(wù)器、代理者、客戶端代理、服務(wù)器代理、橋接(網(wǎng)橋)靜態(tài)結(jié)構(gòu)六種成分:服務(wù)器功能:實現(xiàn)多種服務(wù),一個或多個對象服務(wù)的展示:接口例子:WWW服務(wù)器服務(wù)器客戶程序:請求服務(wù)的程序發(fā)送給代理者,由代理者轉(zhuǎn)發(fā)客戶程序:代理者:中介者客戶到服務(wù)器的請求服務(wù)器返回給客戶的應(yīng)答或狀態(tài)信息為服務(wù)器提供服務(wù)注冊負(fù)責(zé)激活服務(wù)器定位服務(wù)器例子:信息系統(tǒng)-URL代理者:中介者基本組成部分基本組成部分客戶端代理:客戶-代理者之間,附加層效果:對客戶隱藏了代理者,客戶好像使用本地服務(wù)一樣例如:隱藏了客戶和代理者之間的進(jìn)程通信機(jī)制、參數(shù)和結(jié)果的列集等等客戶端代理:客戶-代理者之間,附加層服務(wù)器端代理:代理者和服務(wù)器之間功能:⑴負(fù)責(zé)接收請求,解析收到的消息,散集參數(shù),調(diào)用適當(dāng)?shù)姆?wù)。⑵返回的信息,進(jìn)行數(shù)據(jù)的列集傳送給客戶⑵服務(wù)器端代理:代理者和服務(wù)器之間⑵橋接(網(wǎng)橋):功能:代理者運行在異構(gòu)系統(tǒng)上,采用橋接來隱藏兩個代理者互相操作時的實現(xiàn)細(xì)節(jié)。橋接(網(wǎng)橋):[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件直接通信通信方式客戶代理者服務(wù)器直接通信通信方式客戶代理者服務(wù)器間接通信通信方式客戶代理者服務(wù)器客戶分配器服務(wù)器間接通信通信方式客戶代理者服務(wù)器客戶分配器服務(wù)器動態(tài)特性客戶代理者服務(wù)器客戶端代理服務(wù)端代理動態(tài)特性客戶代理者服務(wù)器客戶端代理服務(wù)端代理[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件客戶代理者服務(wù)器客戶端代理服務(wù)端代理代理者網(wǎng)橋客戶代理者服務(wù)器客戶端代理服務(wù)端代理代理者網(wǎng)橋[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件5、設(shè)計與實現(xiàn)1、對象模型2、組件互操作性IDL接口定義語言3、代理者與客戶和服務(wù)器的API函數(shù)客戶側(cè):構(gòu)建客戶請求、請求發(fā)送、接受回應(yīng)服務(wù)器側(cè):代理者注冊客戶代理者服務(wù)器5、設(shè)計與實現(xiàn)1、對象模型客戶代理者服務(wù)器4、客戶和服務(wù)器代理對象客戶端代理服務(wù)器代理客戶代理者服務(wù)器客戶端代理服務(wù)端代理4、客戶和服務(wù)器代理對象客戶代理者服務(wù)器客戶端代理服務(wù)端代理5、設(shè)計代理者組件-客戶與服務(wù)器之間傳遞消息的信使功能:1)請求發(fā)送、狀態(tài)返回2)兩端代理未提供參數(shù)的列集和散集->代理提供3)客戶服務(wù)器的異步通信->消息緩沖區(qū)4)目錄服務(wù)5)名字服務(wù)6)動態(tài)方法調(diào)用7)系統(tǒng)失效的處理5、設(shè)計代理者組件6、開發(fā)IDL編譯器6、開發(fā)IDL編譯器6、變體與擴(kuò)展1、直接通信2、消息傳遞:以數(shù)據(jù)傳輸為重點3、交易器代理者系統(tǒng)客戶請求目標(biāo)為服務(wù),而非服務(wù)器4、適配器代理者系統(tǒng)5、回調(diào)代理者系統(tǒng)消費者產(chǎn)生需求6、變體與擴(kuò)展1、直接通信7、代理者結(jié)構(gòu)的應(yīng)用①城市信息系統(tǒng)+賓館預(yù)定系統(tǒng)②萬維網(wǎng)③COBRA公共對象請求代理體系結(jié)構(gòu)④OLE對象連接與嵌入7、代理者結(jié)構(gòu)的應(yīng)用①城市信息系統(tǒng)+賓館預(yù)定系統(tǒng)8、代理者結(jié)構(gòu)的優(yōu)缺點優(yōu)點:定位的透明性:唯一的標(biāo)識符定位服務(wù)器組件的可變更和可擴(kuò)展性系統(tǒng)的移植性不同代理者系統(tǒng)間的互操作性可重用性8、代理者結(jié)構(gòu)的優(yōu)缺點優(yōu)點:缺點:效率較低:中間層,引入靈活性、可移植性、可變更性,而降低了效率容錯性較差測試和調(diào)試較困難。缺點:軟件體系結(jié)構(gòu)第一部分天津大學(xué)計算機(jī)學(xué)院饒國政軟件體系結(jié)構(gòu)天津大學(xué)計算機(jī)學(xué)院課程內(nèi)容

軟件危機(jī)

軟件體系結(jié)構(gòu)概念

軟件體系結(jié)構(gòu)模式

體系結(jié)構(gòu)的設(shè)計模式

基礎(chǔ)結(jié)構(gòu)模式

軟件體系結(jié)構(gòu)的其它研究領(lǐng)域

課程內(nèi)容

軟件危機(jī)第一章軟件危機(jī)軟件軟件的發(fā)展階段軟件危機(jī)軟件生命周期第一章軟件危機(jī)軟件軟件軟件=程序、數(shù)據(jù)和相關(guān)文檔的完整集合軟件的特點:軟件是一個邏輯實體,而非物理實體;軟件是人類抽象思維的產(chǎn)物;開發(fā)過程沒有明顯的制作過程;生產(chǎn)成本隨著軟件的復(fù)雜程度急劇增加(指數(shù)級);容易復(fù)制、傳播;維護(hù)工作復(fù)雜。軟件軟件=程序、數(shù)據(jù)和相關(guān)文檔的完整集合軟件的發(fā)展階段三個發(fā)展階段程序設(shè)計階段(50~60年代中期)程序系統(tǒng)階段(60中期~70年代中期)軟件工程階段(70年代中期以來)軟件的發(fā)展階段三個發(fā)展階段軟件危機(jī)

軟件危機(jī)的表現(xiàn)◎軟件成本估計不準(zhǔn)確

隨著軟件規(guī)模增長,軟件開發(fā)成本往往成指數(shù)級增長。軟件危機(jī)

軟件危機(jī)的表現(xiàn)◎開發(fā)進(jìn)度難以控制

由于軟件是邏輯、智力產(chǎn)品,軟件的開發(fā)需建立龐大的邏輯體系,這是與其他產(chǎn)品的生產(chǎn)不一樣的。在軟件開發(fā)過程中,用戶需求變化等各種意想不到的情況層出不窮,令軟件開發(fā)過程很難保證按預(yù)定的計劃實現(xiàn),給項目計劃和論證工作帶來了很大的困難。盲目增加軟件開發(fā)人員并不能成比例地提高軟件開發(fā)能力。相反,隨著人員數(shù)量的增加,人員的組織、協(xié)調(diào)、通信、培訓(xùn)和管理等方面的問題將更為嚴(yán)重?!蜷_發(fā)進(jìn)度難以控制◎軟件質(zhì)量差

軟件項目即使能按預(yù)定日期完成,結(jié)果卻不盡人意。1965年至1970年,美國范登堡基地發(fā)射火箭多次失敗,絕大部分故障是由應(yīng)用程序錯誤造成的。在“軟件作坊”里,由于缺乏工程化思想的指導(dǎo),程序員幾乎總是習(xí)慣性地以自己的想法去代替用戶對軟件的需求,軟件設(shè)計帶有隨意性,很多功能只是程序員的“一廂情愿”而已,這是造成軟件不能令人滿意的重要因素?!蜍浖|(zhì)量差◎軟件開發(fā)缺乏適當(dāng)?shù)奈臋n資料

文檔資料對于軟件開發(fā)和軟件維護(hù)是至關(guān)重要的?!蜍浖_發(fā)缺乏適當(dāng)?shù)奈臋n資料◎軟件維護(hù)困難

由于在軟件設(shè)計和開發(fā)過程中,沒有嚴(yán)格遵循軟件開發(fā)標(biāo)準(zhǔn),各種隨意性很大,沒有完整的真實反映系統(tǒng)狀況的記錄文檔,給軟件維護(hù)造成了巨大的困難。特別是在軟件使用過程中,原來的開發(fā)人員可能因各種原因已經(jīng)離開原來的開發(fā)組織,使得軟件幾乎不可維護(hù)。有資料表明,工業(yè)界為維護(hù)軟件支付的費用占全部硬件和軟件費用的40%-75%?!蜍浖S護(hù)困難

如何克服軟件危機(jī)人們面臨的不光是技術(shù)問題,更重要的是管理問題。管理不善必然導(dǎo)致失敗。要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程化的開發(fā)方法與工業(yè)化的生產(chǎn)技術(shù)。==》軟件工程

如何克服軟件危機(jī)人們面臨的不光是技術(shù)問題,更重軟件生命周期軟件從孕育、誕生、成長、衰亡的生存過程,稱為軟件的生命周期。六個步驟:制定計劃:問題分析、可行性研究需求分析軟件系統(tǒng)設(shè)計:總體設(shè)計、詳細(xì)設(shè)計軟件編碼軟件測試軟件維護(hù)軟件生命周期軟件從孕育、誕生、成長、衰亡的生存過程,稱為軟件第二章軟件體系結(jié)構(gòu)基本概念重要性組件與連接器風(fēng)格與模式非功能屬性第二章軟件體系結(jié)構(gòu)基本概念第一節(jié)基本概念定義還沒有達(dá)到共識。以下幾個有助于我們的理解軟件體系結(jié)構(gòu)是一組具有一定形式的結(jié)構(gòu)化元素(設(shè)計元素)組成。軟件體系結(jié)構(gòu)超越了計算過程中的算法設(shè)計和數(shù)據(jù)結(jié)構(gòu)。四視圖觀點:概念上的體系結(jié)構(gòu)、模塊體系結(jié)構(gòu)、代碼體系結(jié)構(gòu)和運行體系結(jié)構(gòu)。四模式觀點:概念模式、框架模式、動態(tài)模式、進(jìn)程模式第一節(jié)基本概念定義還沒有達(dá)到共識。所以:軟件體系結(jié)構(gòu)對軟件系統(tǒng)的構(gòu)造起著指導(dǎo)性作用。它回避了軟件系統(tǒng)的功能細(xì)節(jié),著重于討論軟件系統(tǒng)的總體構(gòu)架。它關(guān)注的是系統(tǒng)結(jié)構(gòu)及其組成組件。所以:修正后的軟件生命周期:需求分析體系結(jié)構(gòu)設(shè)計:選擇模式,選擇組件,組件之間的關(guān)系以及它們之間的約束。以此為框架,為詳細(xì)設(shè)計奠定基礎(chǔ)。-原為“總體設(shè)計”詳細(xì)設(shè)計實現(xiàn)維護(hù)修正后的軟件生命周期:第二節(jié)重要性良好的體系結(jié)構(gòu)設(shè)計是決定軟件系統(tǒng)成功的重要因素。早期的教訓(xùn):IBMOS/360(1963-1966)第二節(jié)重要性良好的體系結(jié)構(gòu)設(shè)計是決定軟件系統(tǒng)成功的重要因素軟件體系結(jié)構(gòu)的指導(dǎo)意義作為軟件開發(fā)的基本指導(dǎo)方針整個軟件設(shè)計的開端,決定著開發(fā)工作的整體結(jié)構(gòu),具有更大的決策性和約束性。體系結(jié)構(gòu)給予后繼開發(fā)人員一個可實現(xiàn)的指導(dǎo)和約束。軟件體系結(jié)構(gòu)的指導(dǎo)意義作為軟件開發(fā)的基本指導(dǎo)方針軟件體系結(jié)構(gòu)的指導(dǎo)意義對軟件質(zhì)量保證具有重大的影響支配了從開發(fā)到維護(hù)項目的團(tuán)隊組織結(jié)構(gòu)對軟件的修改、變動提供了保證和約束。提供了軟件的可重用性軟件體系結(jié)構(gòu)的指導(dǎo)意義對軟件質(zhì)量保證具有重大的影響為什么體系結(jié)構(gòu)沒能早日引進(jìn)來呢?早期軟件開發(fā)被認(rèn)為是個人創(chuàng)造力的產(chǎn)物,靈活性很高,從而導(dǎo)致開發(fā)者無規(guī)可循。早期軟件開發(fā)的規(guī)模較小,開發(fā)通常由個人或者小的團(tuán)隊來完成,團(tuán)隊易于溝通交流,體系結(jié)構(gòu)的要求不迫切。軟件產(chǎn)品提交給用戶的為編譯后的軟件,不能看到源代碼,其他人難以分析其結(jié)構(gòu),阻礙了技術(shù)的傳播。為什么體系結(jié)構(gòu)沒能早日引進(jìn)來呢?早期軟件開發(fā)被認(rèn)為是個人創(chuàng)造第三節(jié)組件和連接器現(xiàn)代軟件系統(tǒng)通常采用組件(構(gòu)件)的開發(fā)方法組件:系統(tǒng)中的結(jié)構(gòu)塊,是軟件功能設(shè)計和實現(xiàn)的承載體。連接器:組件之間進(jìn)行連接的組件。軟件體系結(jié)構(gòu)的兩大構(gòu)成:組件、連接器第三節(jié)組件和連接器現(xiàn)代軟件系統(tǒng)通常采用組件(構(gòu)件)的開發(fā)方組件組件:系統(tǒng)中的結(jié)構(gòu)塊,是軟件功能設(shè)計和實現(xiàn)的承載體。組件的表達(dá)形式:組件是由封裝的內(nèi)部數(shù)據(jù)結(jié)構(gòu)及其操作,以及對外提供的操作方法集合組成。-例:公安局組件接口組件的特性(略)組件組件:系統(tǒng)中的結(jié)構(gòu)塊,是軟件功能設(shè)計和實現(xiàn)的承載體。組件連接器連接:組件之間建立和維護(hù)行為關(guān)聯(lián)及信息傳遞的途徑。連接包含兩方面:物質(zhì)基礎(chǔ):連接發(fā)生和維持的機(jī)制;規(guī)約協(xié)議:連接能夠正確地、無二義、無沖突地進(jìn)行信息交換的保證。例:電源轉(zhuǎn)接板連接器連接:組件之間建立和維護(hù)行為關(guān)聯(lián)及信息傳遞的途徑。簡單連接:兩個組件直接連接復(fù)雜連接:專門的連接組件(連接器)連接器A組件A組件B組件B組件簡單連接:兩個組件直接連接復(fù)雜連接:專門的連接組件(連接器)連接的特性(略):方向性、激發(fā)、響應(yīng)特性連接的匹配(連接器如何工作的呢):修改組件:有源代碼進(jìn)行包裝:常用方法加入中介:比較復(fù)雜或要求靈活性的握手:經(jīng)常變動的系統(tǒng)連接的特性(略):方向性、激發(fā)、響應(yīng)特性第四節(jié)風(fēng)格和模式軟件設(shè)計人員在長期開發(fā)某種類型軟件過程中摸索到該類軟件的一些規(guī)律性的東西,經(jīng)過提煉總結(jié),得到了具有普遍性的構(gòu)建模式或稱為構(gòu)建風(fēng)格。本課程將討論學(xué)習(xí)應(yīng)用較廣泛的體系結(jié)構(gòu)風(fēng)格或模式。第四節(jié)風(fēng)格和模式軟件設(shè)計人員在長期開發(fā)某種類型軟件過程中摸使用軟件體系結(jié)構(gòu)的風(fēng)格和模式的意義:便于設(shè)計開發(fā)者之間互相交流促進(jìn)了設(shè)計的復(fù)用也促進(jìn)了代碼的復(fù)用使用標(biāo)準(zhǔn)的風(fēng)格和模式有利于支持互操作所以:有利于交流和理解;有利于提高軟件設(shè)計實施的效率和質(zhì)量;風(fēng)格和模式的完善和系統(tǒng)化,也標(biāo)志軟件體系結(jié)構(gòu)的成熟。使用軟件體系結(jié)構(gòu)的風(fēng)格和模式的意義:我們對風(fēng)格、模式和框架不加區(qū)分。我們講解側(cè)重于模式。模式分為三個層次:

系統(tǒng)體系結(jié)構(gòu)模式(第三章)體系結(jié)構(gòu)的設(shè)計模式(第四章)基礎(chǔ)結(jié)構(gòu)模式(第五章)我們對風(fēng)格、模式和框架不加區(qū)分。系統(tǒng)體系結(jié)構(gòu)模式體系結(jié)構(gòu)的設(shè)計模式基礎(chǔ)結(jié)構(gòu)模式范圍最大,層次最高中等規(guī)模,獨立于特定語言最低層、最基礎(chǔ)的模式,和特定語言有關(guān)系統(tǒng)體系結(jié)構(gòu)模式體系結(jié)構(gòu)的設(shè)計模式基礎(chǔ)結(jié)構(gòu)模式系統(tǒng)體系結(jié)構(gòu)模式體系結(jié)構(gòu)的設(shè)計模式基礎(chǔ)結(jié)構(gòu)模式范圍最大,層次卷一、卷二、卷三參考書卷一、卷二、卷三參考書RobertC.Martin清華大學(xué)出版社RobertC.Martin第五節(jié)非功能屬性功能屬性非功能屬性:易修改性:可維護(hù)性可擴(kuò)展性結(jié)構(gòu)重組第五節(jié)非功能屬性功能屬性可移植性:硬件平臺、操作系統(tǒng)、用戶界面、編程語言互操作性:軟件需要經(jīng)常與其它系統(tǒng)和周圍的硬軟件軟件入口可移植性:可靠性容錯能力健壯性效率響應(yīng)時間、吞吐率、存儲空間可靠性可重用性重用現(xiàn)有的組件和重用以前的項目、商業(yè)庫、設(shè)計分析、設(shè)計說明。為重用進(jìn)行軟件開發(fā)可測試性軟件系統(tǒng)變的越來越大,越來越復(fù)雜,軟件測試工作也變得越來越困難和昂貴。可重用性第三章系統(tǒng)體系結(jié)構(gòu)模式十種模式:管道-過濾器、分層、知識庫(黑板)、MVC、PAC、客戶與服務(wù)器、COM/DCOM/COM+、代理者、微核、映像、異構(gòu)第三章系統(tǒng)體系結(jié)構(gòu)模式客戶與服務(wù)器、每種體系結(jié)構(gòu)的講解內(nèi)容概述結(jié)構(gòu):靜態(tài)動態(tài)特性實現(xiàn)特性變體優(yōu)缺點Google八周歲了!每種體系結(jié)構(gòu)的講解內(nèi)容概述Google八周歲了!第1節(jié)管道-過濾器概述結(jié)構(gòu)動態(tài)特性實現(xiàn)特性變體優(yōu)缺點第1節(jié)管道-過濾器概述1概述數(shù)據(jù)流處理系統(tǒng)示例:UNIX操作系統(tǒng)的管道-過濾器示例:語言編譯器1概述數(shù)據(jù)流處理系統(tǒng)掃描器語法分析編譯器語義分析調(diào)用輸入代碼生成掃描器語法分析編譯器語義分析調(diào)用輸入代碼生成2靜態(tài)結(jié)構(gòu)過濾器組件過濾器組件管道過濾器組件管道輸入輸入輸出輸出數(shù)據(jù)源輸出數(shù)據(jù)池2靜態(tài)結(jié)構(gòu)過濾器組件過濾器組件管道過濾器組件管道輸入輸過濾器組件3種激活方式(1)后續(xù)的組件從過濾器中拉出數(shù)據(jù);(2)前面的組件向過濾器推入新數(shù)據(jù);(3)過濾器處于活躍狀態(tài),以循環(huán)的方式,不斷地從前面的組件中拉出數(shù)據(jù),并向后續(xù)的組件推入數(shù)據(jù)。前兩種稱為被動過濾器;后一種稱為主動過濾器過濾器組件3種激活方式數(shù)據(jù)源(1)主動:將數(shù)據(jù)推入過濾器(2)被動:在過濾器需要時被動提供數(shù)據(jù)數(shù)據(jù)源(1)主動:將數(shù)據(jù)推入過濾器數(shù)據(jù)池(1)主動:從過濾器拉出來數(shù)據(jù)(2)被動:在過濾器把結(jié)果推入或?qū)懭霐?shù)據(jù)池(1)主動:從過濾器拉出來數(shù)據(jù)管道組件管道是過濾器之間的連接。管道:(1)對被動過濾器的直接調(diào)用。(2)兩個主動過濾器進(jìn)行同步管道組件管道是過濾器之間的連接。一般結(jié)構(gòu)過濾器過濾器管道-過濾器結(jié)構(gòu)過濾器管道數(shù)據(jù)流數(shù)據(jù)源數(shù)據(jù)池過濾器一般結(jié)構(gòu)過濾器過濾器管道-過濾器結(jié)構(gòu)過濾器管道數(shù)據(jù)流數(shù)據(jù)源數(shù)3動態(tài)特性3動態(tài)特性[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件4實現(xiàn)(1)把系統(tǒng)任務(wù)分成幾個獨立的處理階段。(2)定義沿著每個管道傳輸?shù)臄?shù)據(jù)格式。(3)決定管道的連接。(4)設(shè)計和實現(xiàn)過濾器。(5)設(shè)計出錯處理。(6)建立處理流水線。4實現(xiàn)(1)把系統(tǒng)任務(wù)分成幾個獨立的處理階段。應(yīng)用舉例搜索引擎快速全面的原因抓取、分詞、索引、頁面等級評定、查詢應(yīng)用舉例搜索引擎[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件5特性(1)每個過濾器都是獨立的整體,相互之間的狀態(tài)互不影響。(2)過濾器并不知道它的上游和下游連接的過濾器的特性。(3)運行結(jié)果的正確性不依賴于各個過濾器運行的次序。5特性(1)每個過濾器都是獨立的整體,相互之間的狀態(tài)6變體(1)限制過濾器為單輸入、單輸出:從拓?fù)浣Y(jié)構(gòu)上看,為線性過濾器組件過濾器組件管道過濾器組件管道輸入輸入輸出輸出輸出6變體(1)限制過濾器為單輸入、單輸出:從拓?fù)浣Y(jié)構(gòu)(2)如果允許過濾器的輸入或輸出多于一個:造成反饋回路(拓?fù)浣Y(jié)構(gòu):有向圖)。需要保證系統(tǒng)可終止。(3)有名管道(文件)過濾器過濾器管道-過濾器結(jié)構(gòu)過濾器管道數(shù)據(jù)流數(shù)據(jù)源數(shù)據(jù)池過濾器(2)如果允許過濾器的輸入或輸出多于一個:造成反饋回路(拓?fù)?優(yōu)缺點1、優(yōu)點易于重組,增加了系統(tǒng)的靈活性。易于更新、升級和維護(hù)易于重用。并行處理提高了系統(tǒng)的效率。?快速原型系統(tǒng)的設(shè)計實現(xiàn)拓?fù)浣Y(jié)構(gòu)清晰,方便性能分析。7優(yōu)缺點1、優(yōu)點優(yōu)缺點2、缺點會導(dǎo)致數(shù)據(jù)的批處理方式。不適合處理交互式應(yīng)用要求。增加了系統(tǒng)的開銷和復(fù)雜性。共享狀態(tài)信息代價高且不靈活。用并行處理來獲得高效率是不可行的。?難以進(jìn)行錯誤處理。優(yōu)缺點2、缺點第2節(jié)分層結(jié)構(gòu)

1、概述

復(fù)雜系統(tǒng)的解決方法之一:層次化軟件系統(tǒng)的發(fā)展過程就是不斷分層的過程

層次系統(tǒng)組織成一個層次結(jié)構(gòu),每一層為上層服務(wù),并作為下層客戶。

第2節(jié)分層結(jié)構(gòu)1、概述網(wǎng)絡(luò)網(wǎng)絡(luò)操作系統(tǒng)(Windows為例)操作系統(tǒng)(Windows為例)數(shù)據(jù)庫數(shù)據(jù)庫2分層的靜態(tài)結(jié)構(gòu)系統(tǒng)的每一層向它的上一層提供服務(wù),同時又作為下一層的客戶,調(diào)用下層提供的功能函數(shù)。簡單分層的結(jié)構(gòu)(3層)核心層功能層應(yīng)用層2分層的靜態(tài)結(jié)構(gòu)系統(tǒng)的每一層向它的上一層提供服務(wù),同時又[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件3分層的方案簡單、直觀最主要特征:N層的服務(wù)只能被N+1層調(diào)用,各層之間沒有更多的依賴性。3分層的方案簡單、直觀[計算機(jī)軟件及應(yīng)用]軟件體系結(jié)構(gòu)課件組件3組件3<<組件2的服務(wù)>>組件2組件2<<組件1的服務(wù)>>組件1組件

溫馨提示

  • 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

提交評論