軟件體系結(jié)構(gòu)ppt課件
《軟件體系結(jié)構(gòu)ppt課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件體系結(jié)構(gòu)ppt課件(142頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
軟件體系結(jié)構(gòu),劉興 計(jì)算機(jī)學(xué)院軟件工程系,1,軟件體系結(jié)構(gòu)內(nèi)容,1概述 2軟件體系結(jié)構(gòu)風(fēng)格 3案例研究 4軟件體系結(jié)構(gòu)的分析與評(píng)估(略) 5流行的軟件體系結(jié)構(gòu) 6設(shè)計(jì)模式與軟件架構(gòu) 7企業(yè)架構(gòu)師和設(shè)計(jì)師、企業(yè)軟件架構(gòu)簡(jiǎn)介,2,1概述,我們要學(xué)的這個(gè)是什么玩意? 我們?yōu)槭裁匆獙W(xué)這個(gè)玩意? 我們將來(lái)會(huì)怎么干? 其他人是怎么玩的?,3,1概述,它是一種簡(jiǎn)單的、清楚的、完善的方式形成的 軟件工程師需要一種更好的視角來(lái)理解軟件,并試圖找到一種新的方法來(lái)構(gòu)建更復(fù)雜的大型軟件系統(tǒng) SA (software architecture) 一個(gè)簡(jiǎn)單程序到復(fù)雜系統(tǒng)軟件的距離是十年,4,1概述需求開(kāi)發(fā)的主要困難,5,1概述軟件危機(jī)的原因,軟件規(guī)模越來(lái)越大 隨著軟件應(yīng)用范圍的增廣,軟件規(guī)模愈來(lái)愈大。大型軟件項(xiàng)目需要組織一定的人力共同完成,而多數(shù)管理人員缺乏開(kāi)發(fā)大型軟件系統(tǒng)的經(jīng)驗(yàn),而多數(shù)軟件開(kāi)發(fā)人員又缺乏管理方面的經(jīng)驗(yàn)。各類人員的信息交流不及時(shí)、不準(zhǔn)確、有時(shí)還會(huì)產(chǎn)生誤解。 軟件項(xiàng)目開(kāi)發(fā)人員不能有效地、獨(dú)立自主地處理大型軟件的全部關(guān)系和各個(gè)分支,因此容易產(chǎn)生疏漏和錯(cuò)誤。,6,1概述軟件危機(jī)的原因,軟件復(fù)雜度越來(lái)越高 軟件不僅僅是在規(guī)模上快速地發(fā)展擴(kuò)大,而且其復(fù)雜性也急劇地增加。軟件產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致人們無(wú)力處理“復(fù)雜問(wèn)題”。 所謂“復(fù)雜問(wèn)題”的概念是相對(duì)的,一旦人們采用先進(jìn)的組織形式、開(kāi)發(fā)方法和工具提高了軟件開(kāi)發(fā)效率和能力,新的、更大的、更復(fù)雜的問(wèn)題又?jǐn)[在人們的面前。,7,1.1what is SA ?,這種全局結(jié)構(gòu)的設(shè)計(jì)和規(guī)劃問(wèn)題包括 全局組織結(jié)構(gòu);全局控制結(jié)構(gòu);通信和同步以及數(shù)據(jù)存取協(xié)議;規(guī)定設(shè)計(jì)元素的功能;設(shè)計(jì)元素的組合;物理分布;規(guī)模和性能;演化的維度;設(shè)計(jì)方案的選擇等。 1隨著軟件系統(tǒng)的規(guī)模和復(fù)雜性不斷增加,系統(tǒng)的全局結(jié)構(gòu)的設(shè)計(jì)和規(guī)劃變得比算法的選擇以及數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)更加重要。 2人們普遍認(rèn)為,為系統(tǒng)設(shè)計(jì)一個(gè)合適的體系結(jié)構(gòu)是系統(tǒng)取得長(zhǎng)遠(yuǎn)的成功的關(guān)鍵因素。 3非形式化的。,8,1.1what is SA ?,形式化還是非形式化 : 首先,軟件工程師在長(zhǎng)期的實(shí)踐中已經(jīng)擁有了一套共享的,語(yǔ)義豐富的詞典,它由軟件系統(tǒng)的習(xí)慣用語(yǔ),模式,軟件系統(tǒng)組織結(jié)構(gòu)風(fēng)格組成。 通過(guò)識(shí)別一個(gè)管道過(guò)濾器體系結(jié)構(gòu)風(fēng)格的實(shí)例,一個(gè)軟件工程師傳達(dá)了這樣的事實(shí):這個(gè)系統(tǒng)的主要功能就是進(jìn)行數(shù)據(jù)流的轉(zhuǎn)換,系統(tǒng)的主要功能由各種獨(dú)立實(shí)體的過(guò)濾器分別來(lái)實(shí)現(xiàn),系統(tǒng)的響應(yīng)時(shí)間和吞吐量能用一種直接的方式計(jì)算出來(lái)。,9,1.1what is SA ?,e.g. 每個(gè)Filter都有輸入端和輸出端,例如一個(gè)MPEG-1解碼Filter它的輸入是MPEG編碼的流數(shù)據(jù),它的輸出端是一解碼過(guò)的流數(shù)據(jù)。DirectShow正是通過(guò)將不同的Filter連接在一起完成特定的功能的,我們將這些Filter的連接叫做Filter Graph,如下圖A給出是播放AVI的Filter Graph: 圖A 播放AVI文件的Graph Filter圖 上圖中每個(gè)模塊分別代表了不同的Filter,媒體文件Filter從硬盤讀取AVI文件,AVI分離 Filter將文件分離為音頻流和視頻流,AVI解碼Filter對(duì)視頻流進(jìn)行解碼并送往Video表現(xiàn)Filter,由后者將各幀在顯示器上顯示,默認(rèn)的DirectSound設(shè)備用DirectSound將音頻流輸出。,10,1.1what is SA ?,其次,體系結(jié)構(gòu)的描述的作用好像一個(gè)框架,系統(tǒng)屬性在這個(gè)框架下進(jìn)行擴(kuò)充,并且,它在考察一個(gè)系統(tǒng)實(shí)現(xiàn)其整體需求的能力中扮演了非常重要的作用。 (軟件體系結(jié)構(gòu)是非常抽象的,可以理解更大范圍的,系統(tǒng)級(jí)的關(guān)注點(diǎn),比如吞吐量,通信模式,執(zhí)行控制結(jié)構(gòu),可伸縮性,以及系統(tǒng)演化的擴(kuò)展方式,提供一個(gè)自然的框架。),11,1.1what is SA ?,軟件系統(tǒng)的體系結(jié)構(gòu)定義系統(tǒng)由計(jì)算構(gòu)件和構(gòu)件之間的相互作用組成。構(gòu)件可以是客戶機(jī)和服務(wù)器、數(shù)據(jù)庫(kù)、過(guò)濾器或者是在一個(gè)分層系統(tǒng)中的層。構(gòu)件之間的相互作用在這個(gè)設(shè)計(jì)層次上可以是簡(jiǎn)單和相似的,比如過(guò)程調(diào)用,共享變量的訪問(wèn)。但是它們也可以是復(fù)雜和語(yǔ)義豐富的。比如客戶機(jī)服務(wù)器協(xié)議(clientserver protocols)數(shù)據(jù)庫(kù)存取協(xié)議(database-accessing protocols),異步事件多點(diǎn)傳送(asynchronous event multicast)和管道數(shù)據(jù)流(piped streams),12,1.1what is SA ?,軟件設(shè)計(jì)層次 體系結(jié)構(gòu)級(jí):系統(tǒng)性能與構(gòu)件之間的整體聯(lián)系。這個(gè)級(jí)別的構(gòu)成元素是模塊,模塊通過(guò)各種方式互連,通過(guò)操作算子將子系統(tǒng)組裝成一個(gè)系統(tǒng)。 代碼級(jí):這個(gè)級(jí)別的設(shè)計(jì)問(wèn)題包括算法和數(shù)據(jù)結(jié)構(gòu);其構(gòu)成元素是編程語(yǔ)言原語(yǔ)。 執(zhí)行級(jí):這個(gè)級(jí)別的設(shè)計(jì)問(wèn)題包含存儲(chǔ)器的映射、數(shù)據(jù)格式配置、堆棧和寄存器的分配。,13,軟件各級(jí)抽象,高級(jí)程序設(shè)計(jì)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)與算法,軟件結(jié)構(gòu)研究的開(kāi)始,抽象數(shù)據(jù)類型,程序族,軟件體系結(jié)構(gòu),匯編語(yǔ)言、宏替換、高級(jí)語(yǔ)言編譯器、數(shù)據(jù)類型,程序數(shù)據(jù)結(jié)構(gòu)算法,軟件劃分與構(gòu)造、方便系統(tǒng)的開(kāi)發(fā)與維護(hù),數(shù)據(jù)類型抽象、封裝、信息隱藏、多態(tài)性,程序族在信息隱藏和軟件結(jié)構(gòu)設(shè)計(jì)上具有相同的模式(設(shè)計(jì)模式抽象),軟件體系結(jié)構(gòu)使系統(tǒng)在體系結(jié)構(gòu)級(jí)達(dá)到重用,14,1.1定義,Dewayne Perry和A1exander Wo1f 軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。 處理構(gòu)件負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的不同部分組合連接起來(lái)。 這一定義注重區(qū)分處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件,這一方法在其他的定義和方法中基本上得到保持。,15,1.1定義,Mary Shaw和David Garlan 軟件體系結(jié)構(gòu)是軟件設(shè)計(jì)過(guò)程中的一個(gè)層次,這一層次超越計(jì)算過(guò)程中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。 體系結(jié)構(gòu)問(wèn)題包括總體組織和全局控制、通訊協(xié)議、同步、數(shù)據(jù)存取,給設(shè)計(jì)元素分配特定功能,設(shè)計(jì)元素的組織,規(guī)模和性能,在各設(shè)計(jì)方案間進(jìn)行選擇等。 軟件體系結(jié)構(gòu)處理算法與數(shù)據(jù)結(jié)構(gòu)之上關(guān)于整體系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和描述方面的一些問(wèn)題,如全局組織和全局控制結(jié)構(gòu)、關(guān)于通訊、同步與數(shù)據(jù)存取的協(xié)議,設(shè)計(jì)構(gòu)件功能定義,物理分布與合成,設(shè)計(jì)方案的選擇、評(píng)估與實(shí)現(xiàn)等。,16,Kruchten 軟件體系結(jié)構(gòu)有四個(gè)角度,它們從不同方面對(duì)系統(tǒng)進(jìn)行描述:概念角度描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系;模塊角度包含功能分解與層次結(jié)構(gòu);運(yùn)行角度描述了一個(gè)系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu);代碼角度描述了各種代碼和庫(kù)函數(shù)在開(kāi)發(fā)環(huán)境中的組織。,17,Hayes Roth 軟件體系結(jié)構(gòu)是一個(gè)抽象的系統(tǒng)規(guī)范,主要包括用其行為來(lái)描述的功能構(gòu)件和構(gòu)件之間的相互連接、接口和關(guān)系。,18,David Garlan 和 Dewne Perry 軟件體系結(jié)構(gòu)是一個(gè)程序系統(tǒng)各構(gòu)件的結(jié)構(gòu)、它們之間的相互關(guān)系以及進(jìn)行設(shè)計(jì)的原則和隨時(shí)間演化的指導(dǎo)方針。,19,Barry Boehm 軟件體系結(jié)構(gòu)包括一個(gè)軟件和系統(tǒng)構(gòu)件,互聯(lián)及約束的集合;一個(gè)系統(tǒng)需求說(shuō)明的集合;一個(gè)基本原理用以說(shuō)明這一構(gòu)件,互聯(lián)和約束能夠滿足系統(tǒng)需求。,20,Bass,Ctements 和 Kazman 軟件體系結(jié)構(gòu)包括一個(gè)或一組軟件構(gòu)件、軟件構(gòu)件的外部的可見(jiàn)特性及其相互關(guān)系。其中,“軟件外部的可見(jiàn)特性”是指軟件構(gòu)件提供的服務(wù)、性能、特性、錯(cuò)誤處理、共享資源使用等。,21,1.2軟件體系結(jié)構(gòu)研究的內(nèi)容和范疇,被解決的:模塊接口語(yǔ)言,特定領(lǐng)域的軟件體系結(jié)構(gòu),軟件的重用,軟件組織結(jié)構(gòu)模式的規(guī)范化編纂,體系結(jié)構(gòu)描述語(yǔ)言,體系結(jié)構(gòu)設(shè)計(jì)形式化的支持和體系機(jī)構(gòu)設(shè)計(jì)環(huán)境。 四個(gè)研究領(lǐng)域: 1.新的體系機(jī)構(gòu)描述語(yǔ)言來(lái)解決體系機(jī)構(gòu)描述問(wèn)題。 2.體系結(jié)構(gòu)領(lǐng)域知識(shí)的總結(jié)性研究。這個(gè)領(lǐng)域關(guān)心的是工程師通過(guò)軟件實(shí)踐總結(jié)而來(lái)的各種體系機(jī)構(gòu)原則和模式的分類和闡釋。 3.針對(duì)特定的領(lǐng)域的框架的研究。 4.軟件體系結(jié)構(gòu)形式化支持的研究。,22,1.2軟件體系結(jié)構(gòu)研究的內(nèi)容和范疇,風(fēng)格、設(shè)計(jì)模式、框架 1.體系結(jié)構(gòu)風(fēng)格(architecture styles) 體系結(jié)構(gòu)風(fēng)格獨(dú)立于實(shí)際問(wèn)題,強(qiáng)調(diào)了軟件系統(tǒng)中通用的組織結(jié)構(gòu)。比如管道線,分層系統(tǒng),客戶機(jī)服務(wù)器等等。,23,1.2軟件體系結(jié)構(gòu)研究的內(nèi)容和范疇,風(fēng)格、設(shè)計(jì)模式、框架 2.設(shè)計(jì)模式 設(shè)計(jì)模式是軟件問(wèn)題高效和成熟的設(shè)計(jì)模板,模板包含了固有問(wèn)題的解決方案。設(shè)計(jì)模式可以看成規(guī)范了的小粒度的結(jié)構(gòu)成分,并且獨(dú)立于編程語(yǔ)言或編程范例。設(shè)計(jì)模式的應(yīng)用對(duì)軟件系統(tǒng)的基礎(chǔ)結(jié)構(gòu)沒(méi)有什么影響,但可能對(duì)子系統(tǒng)的組織結(jié)構(gòu)有較大影響。每個(gè)模式處理系統(tǒng)設(shè)計(jì)或?qū)崿F(xiàn)一種特殊的重復(fù)出現(xiàn)的問(wèn)題。它為解決抽象部分和實(shí)現(xiàn)部分獨(dú)立變化的問(wèn)題提供了一種通用結(jié)構(gòu)。因此,設(shè)計(jì)模式更強(qiáng)調(diào)直接復(fù)用的程序結(jié)構(gòu)。,24,1.2軟件體系結(jié)構(gòu)研究的內(nèi)容和范疇,風(fēng)格、設(shè)計(jì)模式、框架 3.應(yīng)用框架(application framework) 應(yīng)用框架是整個(gè)或部分系統(tǒng)的可重用設(shè)計(jì),表現(xiàn)為一組抽象構(gòu)件的集合以及構(gòu)件實(shí)例間交互的方法。可以說(shuō),一個(gè)框架是一個(gè)可復(fù)用的設(shè)計(jì)構(gòu)件,它規(guī)定了應(yīng)用的體系結(jié)構(gòu),闡明了整個(gè)設(shè)計(jì)、協(xié)作構(gòu)件之間的依賴關(guān)系、責(zé)任分配和控制流程。,25,1.2軟件體系結(jié)構(gòu)研究的內(nèi)容和范疇,體系結(jié)構(gòu)風(fēng)格、設(shè)計(jì)模式和應(yīng)用框架的概念是從不同的目的和出發(fā)點(diǎn)討論軟件體系結(jié)構(gòu),它們之間的概念經(jīng)常互相借鑒和引用。,26,1.3體系結(jié)構(gòu)設(shè)計(jì)原則,抽象 分而治之 封裝和信息隱藏 模塊化 高內(nèi)聚和低耦合 關(guān)注點(diǎn)分離 策略和實(shí)現(xiàn)的分離 接口和實(shí)現(xiàn)的分離,27,1.3體系結(jié)構(gòu)設(shè)計(jì)原則,體系結(jié)構(gòu)是指軟件系統(tǒng)的基本和主體的形態(tài),也就是軟件系統(tǒng)中“最本質(zhì)”的東西。一個(gè)軟件系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)得好不好,可以用“合適性、結(jié)構(gòu)穩(wěn)定性、可擴(kuò)展性、可復(fù)用性”這些特征量來(lái)評(píng)估。,28,1.3體系結(jié)構(gòu)設(shè)計(jì)原則,合適性:即體系結(jié)構(gòu)是否適合于軟件的“功能性需求”和“非功能性需求”。,設(shè)計(jì)師可以充分發(fā)揮主觀能動(dòng)性,根據(jù)需求的特征,通過(guò)推理和歸納的方法設(shè)計(jì)出合適的體系結(jié)構(gòu)。經(jīng)驗(yàn)不豐富的設(shè)計(jì)師往往把注意力集中在“功能性需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能體現(xiàn)設(shè)計(jì)水平的地方。 高水平的設(shè)計(jì)師高就高在“設(shè)計(jì)出恰好滿足客戶需求的軟件,并且使開(kāi)發(fā)方和客戶方獲取最大的利益,而不是不惜代價(jià)設(shè)計(jì)出最先進(jìn)的軟件。(以設(shè)計(jì)住宅為例) 對(duì)于軟件系統(tǒng)而言,能夠滿足需求的設(shè)計(jì)方案可能有很多種,究竟該選哪一種?此時(shí)商業(yè)目標(biāo)是決策依據(jù),即選擇能夠?yàn)殚_(kāi)發(fā)方和客戶方帶來(lái)最大利益的那個(gè)設(shè)計(jì)方案。大部分軟件開(kāi)發(fā)人員天生有使用新技術(shù)的傾向,而這種傾向?qū)﹂_(kāi)發(fā)商業(yè)產(chǎn)品而言可能是不利的,切記切記,29,結(jié)構(gòu)穩(wěn)定性,當(dāng)前中國(guó)有幾句流行的至理名言:“穩(wěn)定壓倒一切”、“發(fā)展是硬道理”。發(fā)展的前提條件是穩(wěn)定,社會(huì)如此,開(kāi)發(fā)軟件產(chǎn)品也是如此。 體系結(jié)構(gòu)一旦設(shè)計(jì)完成,應(yīng)當(dāng)在一定的時(shí)間內(nèi)保持穩(wěn)定不變,只有這樣才能使后續(xù)工作順利開(kāi)展。如果體系結(jié)構(gòu)經(jīng)常變動(dòng),那么建筑在體系結(jié)構(gòu)之上的用戶界面、數(shù)據(jù)庫(kù)、模塊、數(shù)據(jù)結(jié)構(gòu)等等也跟著經(jīng)常變動(dòng),用“樹(shù)倒猢猻散”來(lái)比喻很恰當(dāng),這將導(dǎo)致項(xiàng)目發(fā)生混亂。 高水平的設(shè)計(jì)師應(yīng)當(dāng)能夠分析需求文檔,判斷出哪些需求是穩(wěn)定不變的,哪些需求是可能變動(dòng)的。于是根據(jù)那些穩(wěn)定不變的需求設(shè)計(jì)體系結(jié)構(gòu),而根據(jù)那些可變的需求設(shè)計(jì)軟件的“可擴(kuò)展性”。,30,可擴(kuò)展性是指軟件擴(kuò)展新功能的容易程度??蓴U(kuò)展性越好,表示軟件適應(yīng)“變化”的能力越強(qiáng)??蓴U(kuò)展性越來(lái)越重要,這是由現(xiàn)代軟件的商業(yè)模式?jīng)Q定的: 社會(huì)的商業(yè)越發(fā)達(dá),需求變化就越快。 現(xiàn)代軟件產(chǎn)品通常采用“增量開(kāi)發(fā)模式”,開(kāi)發(fā)商不斷地推出軟件產(chǎn)品的新版本,從而不斷地獲取增值利潤(rùn)。 穩(wěn)定性和可擴(kuò)展性之間存在辨證的關(guān)系:如果系統(tǒng)不可擴(kuò)展的話,那么就沒(méi)有發(fā)展前途,所以不能只關(guān)心穩(wěn)定性而忽視可擴(kuò)展性;而軟件系統(tǒng)“可擴(kuò)展”的前提條件是“保持結(jié)構(gòu)穩(wěn)定”,否則軟件難以按計(jì)劃開(kāi)發(fā)出來(lái),穩(wěn)定性是使系統(tǒng)能夠持續(xù)發(fā)展的基礎(chǔ)。所以穩(wěn)定性和可擴(kuò)展性都是體系結(jié)構(gòu)設(shè)計(jì)的要素。 如果每次變化都導(dǎo)致體系結(jié)構(gòu)發(fā)生大的變動(dòng),那簡(jiǎn)直就是“傷筋動(dòng)骨”,這樣的體系結(jié)構(gòu)無(wú)疑是敗筆之作。(例如房屋裝修),31,復(fù)用就是指“重復(fù)利用已經(jīng)存在的東西”。被復(fù)用的對(duì)象可以是有形的物體,也可以是無(wú)形的知識(shí)財(cái)富。復(fù)用不是人類懶惰的表現(xiàn)而是智慧的表現(xiàn)。因?yàn)槿祟惪偸窃诶^承了前人的成果,不斷加以利用、改進(jìn)或創(chuàng)新后才會(huì)進(jìn)步。 復(fù)用的有利于提高產(chǎn)品的質(zhì)量、提高生產(chǎn)率和降低成本。由經(jīng)驗(yàn)可知,通常在一個(gè)新系統(tǒng)中,大部分的內(nèi)容是成熟的,只有小部分內(nèi)容是創(chuàng)新的。一般地可以相信成熟的東西總是比較可靠的(即具有高質(zhì)量),而大量成熟的工作可以通過(guò)復(fù)用來(lái)快速實(shí)現(xiàn)(即具有高生產(chǎn)率)。勤勞并且聰明的人們應(yīng)該把大部分的時(shí)間用在小比例的創(chuàng)新工作上,而把小部分的時(shí)間用在大比例的成熟工作中,這樣才能把工作做得又快又好。,32,復(fù)用的意義很容易理解,人們也樂(lè)意復(fù)用以前的成果,但是前提條件是該成果具有比較好的可復(fù)用性。可復(fù)用性是指成果被復(fù)用的容易程度。 可復(fù)用性是設(shè)計(jì)出來(lái)的,而不是偶然碰到的。要使體系結(jié)構(gòu)具有良好的可復(fù)用性,設(shè)計(jì)師應(yīng)當(dāng)分析應(yīng)用域的共性問(wèn)題,然后設(shè)計(jì)出一種通用的體系結(jié)構(gòu)模式,這樣的體系結(jié)構(gòu)才可以被復(fù)用。,33,問(wèn)題回答,架構(gòu)師與設(shè)計(jì)師 企業(yè)軟件架構(gòu) 作業(yè)1:分組 大作業(yè) 作業(yè)2:準(zhǔn)備,http:/en.wikipedia.org/wiki/Key_Word_in_Context,34,軟件體系結(jié)構(gòu)內(nèi)容,1概述 2軟件體系結(jié)構(gòu)風(fēng)格 3案例研究 4共享信息系統(tǒng) 5軟件體系結(jié)構(gòu)描述 6軟件體系結(jié)構(gòu)的分析與評(píng)估 7特定領(lǐng)域的軟件體系結(jié)構(gòu) 8流行的軟件體系結(jié)構(gòu),35,2體系結(jié)構(gòu)風(fēng)格,慣用模式 我們的目的是展示軟件體系結(jié)構(gòu)豐富的選擇空間,以及在這個(gè)基礎(chǔ)上對(duì)風(fēng)格選擇的一些權(quán)衡。,36,2.1體系結(jié)構(gòu)風(fēng)格,數(shù)據(jù)流系統(tǒng) 虛擬機(jī) 批處理序列 解釋器 管道和過(guò)濾器 基于規(guī)則系統(tǒng) 調(diào)用和返回系統(tǒng) 數(shù)據(jù)中心系統(tǒng)(知識(shí)庫(kù)) 主程序和子程序 數(shù)據(jù)庫(kù) 面向?qū)ο笙到y(tǒng) 超文本系統(tǒng) 多級(jí)分層 黑板 獨(dú)立構(gòu)件 通訊進(jìn)程 事件系統(tǒng),37,2.1體系結(jié)構(gòu)風(fēng)格,設(shè)計(jì)符號(hào)集即構(gòu)件和連接件的類型是什么? 被認(rèn)可的結(jié)構(gòu)模式是什么? 根本的計(jì)算模型是什么? 最基本的特點(diǎn)是什么? 使用這種風(fēng)格的通用例子有哪些? 使用這種風(fēng)格有什么優(yōu)點(diǎn)和缺點(diǎn) 通用的規(guī)格說(shuō)明是什么?,38,2.1體系結(jié)構(gòu)風(fēng)格,7種通用的風(fēng)格 管道和過(guò)濾器、對(duì)象、隱式調(diào)用、層、知識(shí)庫(kù)、解釋器和過(guò)程調(diào)用。,39,構(gòu)件對(duì)輸入流進(jìn)行內(nèi)部轉(zhuǎn)換和增量計(jì)算,在輸入數(shù)據(jù)流全部處理之前,輸出就已經(jīng)開(kāi)始了。 重要特點(diǎn)是每個(gè)filter必須是一個(gè)獨(dú)立實(shí)體。特別是filter之間無(wú)需共享狀態(tài)。,40,2.2管道過(guò)濾器(pipes &filters,典型的例子: Unix的shell中編寫的程序通過(guò)提供的符號(hào)表示要連接的構(gòu)件和提供運(yùn)行時(shí)機(jī)制實(shí)現(xiàn)管道。 傳統(tǒng)的編譯器 :詞法分析、句法分析、詞義分析、代碼生成階段 信號(hào)處理領(lǐng)域 并行計(jì)算 功能編程 分布式系統(tǒng),41,2.2管道過(guò)濾器(pipes &filters,管道過(guò)濾器的優(yōu)點(diǎn): 設(shè)計(jì)者可以將整個(gè)系統(tǒng)的輸入和輸出特性理解為各個(gè)過(guò)濾器功能的簡(jiǎn)單合成。 支持功能模塊的重用:只要相互傳輸?shù)臄?shù)據(jù)格式達(dá)成一致,就可以連接在一起。 系統(tǒng)容易維護(hù)和擴(kuò)展:新的過(guò)濾器可以加進(jìn)來(lái),舊的可以被替換 支持某些特定的分析,如吞吐量和死鎖檢測(cè) 具有天然的并發(fā)特性,可以獨(dú)立運(yùn)行,也可以和其他過(guò)濾器并發(fā)執(zhí)行。,42,2.2管道過(guò)濾器(pipes &filters,管道過(guò)濾器模式的缺點(diǎn): 過(guò)濾器獨(dú)立性強(qiáng),處理過(guò)程成批處理,不適合交互性強(qiáng)的應(yīng)用 維持兩個(gè)相對(duì)獨(dú)立但有不存在某種關(guān)系的數(shù)據(jù)流之間的通訊可能很困難。 根據(jù)實(shí)際應(yīng)用的要求,設(shè)計(jì)者也需要在數(shù)據(jù)傳輸時(shí)被迫使用底層公共命名。增加過(guò)濾器本身的復(fù)雜性。,43,2.3數(shù)據(jù)抽象和面向?qū)ο蠼M織結(jié)構(gòu),對(duì)象通過(guò)函數(shù)和過(guò)程調(diào)用來(lái)實(shí)現(xiàn)交互。這種模式有兩個(gè)重要的方面: 對(duì)象維護(hù)自身表示的完整性(通常是通過(guò)保持其表示上的一些不變式來(lái)實(shí)現(xiàn)的) 這種表示對(duì)其他對(duì)象是隱藏的。,44,2.3數(shù)據(jù)抽象和面向?qū)ο蠼M織結(jié)構(gòu),面向?qū)ο笙到y(tǒng)有很多眾所周知的優(yōu)點(diǎn)。由于對(duì)象的對(duì)客戶隱藏了實(shí)現(xiàn)的細(xì)節(jié),所以可以在不影響其客戶的情況下改變對(duì)象實(shí)現(xiàn)。另外,由于把操作的數(shù)據(jù)和一組存取例程綁定在一起,使得設(shè)計(jì)者能夠把問(wèn)題分解成交互作用的代理集合。,45,2.3數(shù)據(jù)抽象和面向?qū)ο蠼M織結(jié)構(gòu),最大的缺點(diǎn):當(dāng)一個(gè)對(duì)象和其他對(duì)象交互(過(guò)程調(diào)用),它必須知道其他對(duì)象的標(biāo)識(shí)。而在過(guò)濾器系統(tǒng)中,過(guò)濾器是不需要知道其他過(guò)濾器的存在。每當(dāng)一個(gè)對(duì)象的標(biāo)識(shí)改變的時(shí)候,必須修改那些顯式調(diào)用它的對(duì)象。在模塊化語(yǔ)言中,當(dāng)一個(gè)模塊改變后需要修改每一個(gè)引用了這個(gè)模塊的“導(dǎo)入”列表。,46,2.4事件驅(qū)動(dòng),隱式調(diào)用,隱式調(diào)用,響應(yīng)集成,選擇性廣播。這種模式起源于基于角色的系統(tǒng),約束滿足性檢查,后臺(tái)程序和包交換網(wǎng)絡(luò)。 思想是,不直接調(diào)用一個(gè)過(guò)程,而是發(fā)布或廣播一個(gè)或多個(gè)事件。系統(tǒng)中的其他構(gòu)件通過(guò)注冊(cè)與一個(gè)事件關(guān)聯(lián)起來(lái)的過(guò)程,來(lái)表示對(duì)某一個(gè)事件感興趣。當(dāng)這個(gè)事件發(fā)生時(shí),系統(tǒng)本身會(huì)調(diào)用所有注冊(cè)了這個(gè)事件的過(guò)程。這樣一個(gè)事件的激發(fā)會(huì)導(dǎo)致其他模塊中過(guò)程的隱式調(diào)用。,47,2.4事件驅(qū)動(dòng),隱式調(diào)用,QT的signal與slot,Object1 Signal1 signal2,Object2 Slot1 slot2,Object4 Slot1 Slot2 Slot3,Object3 Signal1,Connect(object1,singal1,object2,slot1),Connect(object1,singal1,object2,slot2),Connect(object1,singal2,object4,slot1),Connect(object3,singal1,object4,slot3),48,2.4事件驅(qū)動(dòng),隱式調(diào)用,主要特點(diǎn): 事件發(fā)布者不知道哪些構(gòu)件會(huì)受到事件的影響,這樣,構(gòu)件不能對(duì)事件的處理順序,或者事件發(fā)生后的處理結(jié)果做任何假設(shè)。 許多隱式調(diào)用系統(tǒng)也包含顯示調(diào)用(正常的過(guò)程調(diào)用)以此作為構(gòu)件交互的補(bǔ)充形式。,49,2.4事件驅(qū)動(dòng),隱式調(diào)用,例子: 編程環(huán)境中工具集成 數(shù)據(jù)庫(kù)管理系統(tǒng)中的一致性約束 用戶界面中數(shù)據(jù)表示與管理數(shù)據(jù)的應(yīng)用程序的分離 語(yǔ)法導(dǎo)向的增量語(yǔ)義檢查,50,2.4事件驅(qū)動(dòng),隱式調(diào)用,優(yōu)點(diǎn): 它提供了對(duì)重用非常好的支持。通過(guò)注冊(cè)一個(gè)系統(tǒng)事件,任何一個(gè)構(gòu)件可以很容易的引入到系統(tǒng)中來(lái)。 能簡(jiǎn)化系統(tǒng)的演化。在不改變系統(tǒng)中其他構(gòu)件接口的情況下,構(gòu)件可以非常容易的被其他構(gòu)件取代。,51,2.4事件驅(qū)動(dòng),隱式調(diào)用,缺點(diǎn): 構(gòu)件放棄了自身對(duì)系統(tǒng)的計(jì)算的控制。當(dāng)一個(gè)構(gòu)件發(fā)布一個(gè)事件,它不能保證保證其他構(gòu)件會(huì)對(duì)其作出響應(yīng)。即使它能夠肯定該事件會(huì)被其他構(gòu)件響應(yīng),它也不能依賴事件被處理的先后順序。 在數(shù)據(jù)交換方面,有時(shí)數(shù)據(jù)通過(guò)事件傳遞,但在某些情況下,事件系統(tǒng)必須依賴一個(gè)共享緩沖區(qū),這樣整體的性能和資源的管理可能成為關(guān)鍵性問(wèn)題。(ip) 正確性驗(yàn)證也可能是問(wèn)題,因?yàn)榘l(fā)布事件的過(guò)程的具體含義與事件激發(fā)的上下文有關(guān)。,52,2.5分層系統(tǒng)(LAYERED SYSTEMS),一個(gè)分層系統(tǒng)是按照層次結(jié)構(gòu)組織的,每一層向它的上層提供服務(wù),同時(shí)它又是下層的客戶。在某些分層系統(tǒng)中,內(nèi)層只對(duì)其相鄰的層和某些用于輸出的函數(shù)是可見(jiàn)的,對(duì)其他外部的層是隱藏的。在這些系統(tǒng)中,構(gòu)件在某些層中實(shí)現(xiàn)虛擬機(jī)。,53,2.5分層系統(tǒng)(LAYERED SYSTEMS),應(yīng)用系統(tǒng)層,用戶,基本功能層,內(nèi)核層,過(guò)程調(diào)用,過(guò)程調(diào)用,54,2.5分層系統(tǒng)(LAYERED SYSTEMS),例子: 最著名的例子是分層通信協(xié)議 數(shù)據(jù)庫(kù)系統(tǒng) 操作系統(tǒng),55,2.5分層系統(tǒng)(LAYERED SYSTEMS),性質(zhì)特點(diǎn): 它支持逐級(jí)抽象的系統(tǒng)設(shè)計(jì) 它支持?jǐn)U展,每層最多和上下兩層交互 它支持重用 。這使得定義標(biāo)準(zhǔn)層接口成為可能,在此接口上可建立不同實(shí)現(xiàn)。(OSI的ISO模型和X WINDOW SYSTEM),56,2.5分層系統(tǒng)(LAYERED SYSTEMS),缺點(diǎn): 并不是所有的系統(tǒng)都容易用這種模式來(lái)構(gòu)建。從性能的考慮,也需要將邏輯上高層次的功能與相對(duì)低層次的實(shí)現(xiàn)結(jié)合起來(lái)。 很難定義一個(gè)合適的抽象層次可能會(huì)非常困難。,57,2.6知識(shí)庫(kù)(REPOSITORIES),由兩種截然不同的功能構(gòu)件:一個(gè)是中央數(shù)據(jù)結(jié)構(gòu)構(gòu)件,代表系統(tǒng)當(dāng)前狀態(tài),另一個(gè)是一些相對(duì)獨(dú)立的構(gòu)件的集合,這些構(gòu)件對(duì)中央數(shù)據(jù)存儲(chǔ)進(jìn)行操作。 控制方式的選擇將知識(shí)庫(kù)分成了兩種主要的子類。輸入流中事務(wù)觸發(fā)系統(tǒng)相應(yīng)的進(jìn)程執(zhí)行,是傳統(tǒng)的數(shù)據(jù)庫(kù)型知識(shí)庫(kù)。由中心數(shù)據(jù)結(jié)構(gòu)的當(dāng)前狀態(tài)觸發(fā)系統(tǒng)相應(yīng)的進(jìn)程執(zhí)行,這種稱為黑板知識(shí)庫(kù),58,2.6知識(shí)庫(kù)(REPOSITORIES)黑板體系結(jié)構(gòu),黑板(共享數(shù)據(jù)),KS1,KS8,KS7,KS6,KS5,KS4,KS3,KS2,Knowledge source,直接存取,計(jì)算,59,2.6知識(shí)庫(kù)(REPOSITORIES)黑板體系結(jié)構(gòu),黑板系統(tǒng)傳統(tǒng)上應(yīng)用在復(fù)雜信號(hào)處理解釋上,比如語(yǔ)音和模式識(shí)別。 通過(guò)松散連接代理共享數(shù)據(jù) 集成編程環(huán)境 編譯器(以共享信息為基礎(chǔ)),60,2.7解釋器(INTERPRETERS),通常有一個(gè)虛擬機(jī)。一個(gè)解釋器包括正在被解釋執(zhí)行的偽碼和解釋引擎本身。包含四個(gè)部分:完成解釋工作的解釋引擎,一個(gè)包含將被解釋的偽碼的存儲(chǔ)區(qū),一個(gè)紀(jì)錄解釋引擎當(dāng)前工作狀態(tài)的數(shù)據(jù)結(jié)構(gòu),以及一個(gè)紀(jì)錄源代碼被解釋執(zhí)行的進(jìn)度的數(shù)據(jù)結(jié)構(gòu)。,61,2.7解釋器(INTERPRETERS),被解釋的程序 (偽碼),數(shù)據(jù) (程序狀態(tài)),解釋引擎,內(nèi)部解釋器狀態(tài),選擇的指令和數(shù)據(jù),輸入,輸出,62,2.8過(guò)程控制,過(guò)程控制環(huán)路。這種模式在軟件開(kāi)發(fā)團(tuán)隊(duì)中并沒(méi)有受到廣泛的認(rèn)可,不象面向?qū)ο蠡蚬δ茉O(shè)計(jì)那樣以出現(xiàn)的某類構(gòu)件為特征,控制環(huán)路設(shè)計(jì)的特點(diǎn)是不僅具有某類構(gòu)件,還具有在構(gòu)件間必須保持的特殊關(guān)系。,63,2.9異構(gòu)體系結(jié)構(gòu),大多數(shù)系統(tǒng)都是由很多風(fēng)格組合而成的 一種是使用層次結(jié)構(gòu) 一種是允許單一的構(gòu)件使用復(fù)合的連接件。 第三種組合方法是,用完全不同的體系結(jié)構(gòu)風(fēng)格來(lái)闡述體系結(jié)構(gòu)的一個(gè)角度。,64,2.10其他常見(jiàn)的體系結(jié)構(gòu),分布式處理(比如心跳算法) 主程序/子程序組織結(jié)構(gòu) 特定領(lǐng)域的軟件體系結(jié)構(gòu)(參考模型) 狀態(tài)轉(zhuǎn)換系統(tǒng)(State Transition System),65,軟件體系結(jié)構(gòu)內(nèi)容,1概述 2軟件體系結(jié)構(gòu)風(fēng)格 3案例研究 4共享信息系統(tǒng) 5軟件體系結(jié)構(gòu)描述 6軟件體系結(jié)構(gòu)的分析與評(píng)估 7特定領(lǐng)域的軟件體系結(jié)構(gòu) 8流行的軟件體系結(jié)構(gòu),66,3.0案例分析上下文關(guān)鍵字,Key Word in Context From Wikipedia, the free encyclopedia Jump to: navigation, search KWIC is an acronym for Key Word In Context, the most common format for concordance lines. The term KWIC was first coined by Hans Peter Luhn. 1 A KWIC index is formed by sorting and aligning the words within an article title to allow each word (except the stop words) in titles to be searchable alphabetically in the index. It was a useful indexing method for technical manuals before computerized full text search became common. For example, the title statement of this article and the Wikipedia slogan would appear as follows in a KWIC index. A KWIC index usually uses a wide layout to allow the display of maximum in context information (not shown in the following example).,http:/en.wikipedia.org/wiki/Key_Word_in_Context,http:/www.cs.cmu.edu/ModProb/KWIC.html,67,3.0案例分析上下文關(guān)鍵字,68,3.0案例分析上下文關(guān)鍵字 需求分析,處理算法的變更 比如輸入設(shè)備可以每讀入一行就執(zhí)行一次移動(dòng),也可以讀完所有行再執(zhí)行行移動(dòng),或者在需要以字母表的順序排列行集合時(shí)才執(zhí)行行移動(dòng)。 數(shù)據(jù)表示的變更 比如,行,單詞和字母可以用各種各樣的方式存儲(chǔ)。類似的,循環(huán)移動(dòng)情況也可以被顯示的或者隱式存儲(chǔ)(使用索引和偏移量),69,3.0案例分析上下文關(guān)鍵字 需求分析,系統(tǒng)功能的擴(kuò)充 比如,修改系統(tǒng)使其能夠排除以某些干擾單詞(a,an)開(kāi)頭的循環(huán)移動(dòng)。把系統(tǒng)變成交互式的,允許用戶從初始列表中(或者從循環(huán)移動(dòng)的列表中)刪除某些行。 性能:空間和時(shí)間。 重用:作為可重用的實(shí)體,構(gòu)件重用的程度。,70,3.0案例分析上下文關(guān)鍵字 解決方案1,使用共享數(shù)據(jù)的主程序/子程序 根據(jù)四個(gè)基本功能將問(wèn)題分解為:輸入、移動(dòng)、按字母表排序、輸出。所有計(jì)算構(gòu)件作為子程序協(xié)同工作,并且由一個(gè)主程序順序地調(diào)用這些子程序。構(gòu)件通過(guò)共享存儲(chǔ)區(qū)(核心存儲(chǔ)區(qū))交換數(shù)據(jù)。 因?yàn)槭琼樞蛟L問(wèn),使得計(jì)算構(gòu)件和共享數(shù)據(jù)之間基于一個(gè)不受約束的讀寫協(xié)議的通信成為可能。,71,3.0案例分析上下文關(guān)鍵字 解決方案1,輸入,循環(huán)移動(dòng),按字母表排序,輸出,字符,索引,按字母表索引,輸入媒介,輸出媒介,主控制,使用共享數(shù)據(jù)的主程序/子程序,72,3.0案例分析上下文關(guān)鍵字 解決方案1,優(yōu)點(diǎn):不同的計(jì)算功能被劃分到不同的模塊中 缺點(diǎn):數(shù)據(jù)存儲(chǔ)格式的變化會(huì)影響到所有模塊。整體處理算法的變更和系統(tǒng)功能擴(kuò)充的問(wèn)題也很難調(diào)和。不支持重用。,73,3.0案例分析上下文關(guān)鍵字 解決方案2,抽象數(shù)據(jù)類型 數(shù)據(jù)不在共享,每個(gè)模塊提供一個(gè)接口,該接口允許其他構(gòu)件通過(guò)調(diào)用接口中的過(guò)程來(lái)訪問(wèn)數(shù)據(jù)。,74,3.0案例分析上下文關(guān)鍵字 解決方案2,主控制,輸入,輸出,輸入媒介,輸出媒介,字符,設(shè)置字符,字符,單詞,循環(huán)移動(dòng),設(shè)置字符,字符,單詞,設(shè)置,按字母次序移動(dòng),字母,第I個(gè),抽象數(shù)據(jù)類型,75,3.0案例分析上下文關(guān)鍵字 解決方案2,優(yōu)點(diǎn):將系統(tǒng)邏輯上分成了幾個(gè)處理模塊。然而,當(dāng)設(shè)計(jì)變更時(shí),這種方案比第一種具有一定優(yōu)勢(shì)。特別是,在一個(gè)獨(dú)立的模塊中算法和數(shù)據(jù)表示的改變不會(huì)影響其他模塊。另外,為重用提供了更好的支持。 缺點(diǎn):并不能很好地適合于功能擴(kuò)展的情況。主要問(wèn)題是,向系統(tǒng)中加入一個(gè)新的功能時(shí),實(shí)現(xiàn)者要么平衡其簡(jiǎn)介性和完整性而修改現(xiàn)存模塊,要么添加新的模塊而導(dǎo)致性能下降。,76,3.0案例分析上下文關(guān)鍵字 解決方案3,輸入,循環(huán)移動(dòng),按字母表排序,輸出,輸入媒介,輸出媒介,主控制,使用共享數(shù)據(jù)隱式調(diào)用,行,插入,刪除,第一個(gè),行,刪除,第一個(gè),插入,77,3.0案例分析上下文關(guān)鍵字 解決方案3,采用共享數(shù)據(jù)的構(gòu)件集成方式。 兩個(gè)主要不同。 數(shù)據(jù)訪問(wèn)接口更加抽象 數(shù)據(jù)被修改時(shí),計(jì)算被隱式地調(diào)用。,78,3.0案例分析上下文關(guān)鍵字 解決方案3,優(yōu)點(diǎn):容易支持系統(tǒng)功能擴(kuò)展,通過(guò)注冊(cè),添加的模塊很容易和系統(tǒng)整合,當(dāng)發(fā)生數(shù)據(jù)交換事件時(shí),這些添加的模塊就會(huì)被調(diào)用。因?yàn)閿?shù)據(jù)被抽象訪問(wèn),所以這種解決方案也將計(jì)算和數(shù)據(jù)表示分開(kāi)。也支持重用。 難以控制隱式調(diào)用模塊的處理順序。數(shù)據(jù)驅(qū)動(dòng),會(huì)占用更大的空間。,79,3.0案例分析上下文關(guān)鍵字 解決方案,管道過(guò)濾器,輸入媒介,輸入,循環(huán)移動(dòng),按字母表順序排序,輸出,輸出媒介,80,3.0案例分析上下文關(guān)鍵字 解決方案,特性:首先,它能夠維持處理的自然流動(dòng)。第二,它支持重用,因?yàn)槊總€(gè)過(guò)濾器可以獨(dú)立處理。通過(guò)在處理序列中的合適位置插入過(guò)濾器,新的功能很容易加入系統(tǒng)中。第三,既然每個(gè)過(guò)濾器和其他過(guò)濾器在邏輯上是獨(dú)立的,那么每個(gè)過(guò)濾器也很容易替換或修改。,81,3.0案例分析上下文關(guān)鍵字 解決方案,缺點(diǎn): 首先,不可能通過(guò)修改使其支持交互。比如,刪除一行可能需要一些持久性共享存儲(chǔ)區(qū),但是這樣就違反了這種方案的基本原則。第二,這種方案空間使用的效率非常低。因?yàn)槊總€(gè)過(guò)濾器必須復(fù)制所有的數(shù)據(jù)到它的輸出端口。,82,3.0案例分析上下文關(guān)鍵字 方案比較,共享數(shù)據(jù)方案對(duì)整體處理算法、數(shù)據(jù)表示的變更以及重用的支持比較弱。另一方面,由于對(duì)數(shù)據(jù)的直接共享,獲得了相對(duì)好的性能。另外,相對(duì)比較容易加入新的處理構(gòu)件。 抽象數(shù)據(jù)類型方案在保證性能的情況下,允許數(shù)據(jù)表示變更并且支持重用。但是由于構(gòu)件的交互依賴于模塊本身,所以改變整體處理算法或者加入新的功能可能要對(duì)現(xiàn)有的系統(tǒng)作很大的修改。 隱式調(diào)用方案對(duì)于添加新的功能的支持非常好。然而,由于共享數(shù)據(jù)自身的一些問(wèn)題,該方案對(duì)于數(shù)據(jù)表示和重用的支持非常弱。它可能引起額外的執(zhí)行開(kāi)銷。管道過(guò)濾器方案允許在文本處理流中放置新的過(guò)濾器。因此它支持處理算法的改變、功能的變化和重用。 管道過(guò)濾器允許在文本處理流中放置新的過(guò)濾器,因此它支持處理算法的改變,功能的變化和重用。數(shù)據(jù)表示的選擇過(guò)分依賴于管道中傳輸?shù)臄?shù)據(jù)類型的假定。而且對(duì)管道中的數(shù)據(jù)進(jìn)行編碼和解碼需要額外的開(kāi)銷。,83,3.0案例分析上下文關(guān)鍵字 方案比較,共享數(shù)據(jù),抽象數(shù)據(jù)類型,隱式調(diào)用,管道過(guò)濾器,算法變更,數(shù)據(jù)表示變更,功能變更,性能,重用,84,3.案例分析儀器儀表,為Tektronix公司開(kāi)發(fā)一種可重用的體系結(jié)構(gòu) 需求:對(duì)電信號(hào)進(jìn)行取樣,并且在屏幕上顯示電信號(hào)的圖像,完成大量的測(cè)量,提供兆字節(jié)的內(nèi)存,支持工作站和其他儀器的接口,完善的界面,菜單和觸摸屏、內(nèi)置的HELP,85,3.案例分析儀器儀表,需求: 幾乎沒(méi)有在不同的示波器上可重用的軟件組織結(jié)構(gòu)。 性能問(wèn)題越來(lái)越嚴(yán)重。不能被快速配置。 (也碰到過(guò):網(wǎng)絡(luò)測(cè)試儀表、兩個(gè)不同的平臺(tái)),86,3.案例分析儀器儀表,面向?qū)ο竽P停▍⒖嘉臋n),示波器對(duì)象,波形,最大最小波形,X-Y波形,疊加波形,87,3.案例分析儀器儀表,但是沒(méi)有一個(gè)整體模型解釋怎么結(jié)合這些對(duì)象類型。這會(huì)導(dǎo)致功能劃分的混亂。比如量度是否應(yīng)該與被測(cè)量的或者被外部表示的數(shù)據(jù)類型相關(guān)聯(lián)?用戶界面應(yīng)該和哪些對(duì)象交互?,88,3.案例分析儀器儀表,分層模型 第二階段嘗試了解決這些問(wèn)題。,硬件,數(shù)字化,可視化,用戶接口,操作,89,3.案例分析儀器儀表,在應(yīng)用領(lǐng)域是錯(cuò)誤的。 主要問(wèn)題是層次間強(qiáng)加的抽象邊界和各種功能交互的需要是相互沖突的。 用戶需要跟各層打交道,比如在信號(hào)處理層中設(shè)置衰減,在采集層中選擇采集模式和參數(shù),或者在波形處理層中制作導(dǎo)出波形。,90,3.案例分析儀器儀表,管道過(guò)濾器模型,耦合,采集,To-xy,裁減,信號(hào),觸發(fā)子系統(tǒng),測(cè)量,測(cè)量值,91,3.案例分析儀器儀表,沒(méi)有在功能劃分中將各個(gè)功能孤立起來(lái),模型允許各個(gè)構(gòu)件靈活混合和替換。 問(wèn)題:沒(méi)有清晰說(shuō)明用戶怎么與其交互。如果用戶僅僅是等待結(jié)果,那么比分層還要糟糕。 改進(jìn)。?,92,3.案例分析儀器儀表,改進(jìn)后的FILTER,耦合,采集,To-xy,裁減,信號(hào),觸發(fā)子系統(tǒng),測(cè)量,測(cè)量值,耦合度,種類速率,轉(zhuǎn)換,大小,93,3.案例分析儀器儀表,專用化模型 顯著問(wèn)題:計(jì)算模型的性能非常差。特別是波形數(shù)據(jù)占用了很大的內(nèi)存容量。每個(gè)過(guò)濾器的處理速率是不同的。 解決方法:一些FILTER不用復(fù)制數(shù)據(jù),一些允許慢速過(guò)濾器在數(shù)據(jù)還沒(méi)有處理完時(shí)忽略新來(lái)的數(shù)據(jù)。,94,3.案例分析儀器儀表,小結(jié): 在工業(yè)設(shè)計(jì)體系結(jié)構(gòu)中,必須將“純”的體系結(jié)構(gòu)風(fēng)格改造成專用的風(fēng)格來(lái)滿足特定領(lǐng)域的需要。,95,3.2案例分析移動(dòng)機(jī)器人,簡(jiǎn)介:移動(dòng)機(jī)器人用來(lái)操縱有人駕駛或部分地有人駕駛的交通工具。 這類系統(tǒng)在諸如空間探索、有害垃圾處理、深水探索等領(lǐng)域得到了新的應(yīng)用。,96,3.2案例分析移動(dòng)機(jī)器人,軟件功能: 采集從傳感器發(fā)送來(lái)的輸入信號(hào), 操縱車輪和其他可移動(dòng)零件的運(yùn)動(dòng), 規(guī)劃未來(lái)的移動(dòng)路線。 使任務(wù)變復(fù)雜: 障礙物可能會(huì)阻擋機(jī)器人的移動(dòng)路線; 傳感器的輸入信號(hào)可能非常弱; 機(jī)器人的電力使用完; 機(jī)器的局限性會(huì)限制移動(dòng)的精確性; 機(jī)器人可能會(huì)處理有毒的材料; 不可預(yù)知的事件要求它具有快速響應(yīng)。,97,3.2案例分析移動(dòng)機(jī)器人,設(shè)計(jì)考慮因素:對(duì)體系結(jié)構(gòu)的幾個(gè)基本需求 需求:必須能夠協(xié)調(diào)有準(zhǔn)備的行為和反應(yīng)行為。(完成規(guī)定動(dòng)作) 需求:必須能夠處理不確定性。機(jī)器人能夠應(yīng)對(duì)不完整的或不可靠的信息。 需求:能應(yīng)對(duì)固有的危險(xiǎn)??紤]容錯(cuò)度、安全性和性能,這個(gè)體系結(jié)構(gòu)必須能夠保持完整性。(電力下降、有毒氣體) 需求:設(shè)計(jì)者靈活性。需要經(jīng)常實(shí)驗(yàn)和重新配置。任務(wù)的改變要定期的修改。 當(dāng)然有環(huán)境問(wèn)題。不同的使用環(huán)境是不同的要求。,98,3.2案例分析移動(dòng)機(jī)器人,考察四種設(shè)計(jì): Lozano的控制環(huán)路 Elfes的分層組織結(jié)構(gòu) Simmons的任務(wù)控制體系結(jié)構(gòu) Shafer的黑板組織結(jié)構(gòu)應(yīng)用,99,3.2案例分析移動(dòng)機(jī)器人,方案控制環(huán)路 開(kāi)始是開(kāi)環(huán)的。(不需要檢查結(jié)果)因此需要改進(jìn)成閉環(huán)的。,機(jī)器人的活動(dòng)組件,傳動(dòng)裝置,傳感器,控制器,外界環(huán)境,動(dòng)作,反饋,100,3.2案例分析移動(dòng)機(jī)器人,控制環(huán)路對(duì)需求的滿足: 需求:結(jié)構(gòu)簡(jiǎn)單,機(jī)器人與外界的交互非常清晰。然而在不可預(yù)知的環(huán)境中這種簡(jiǎn)單性也是它的缺陷。對(duì)于復(fù)雜的任務(wù),控制環(huán)路并沒(méi)有給出將軟件分解成幾個(gè)協(xié)作構(gòu)件的方法。,101,3.2案例分析移動(dòng)機(jī)器人,需求:對(duì)于不確定性,控制環(huán)路偏愛(ài)使用下述方法來(lái)解決。通過(guò)迭代來(lái)降低未知性。試探和錯(cuò)誤處理程序通過(guò)動(dòng)作和響應(yīng)來(lái)消除每次循環(huán)中的可能性。(沒(méi)有使用基本循環(huán)集成這些操作的框架,也沒(méi)有提供委托獨(dú)立實(shí)體進(jìn)行操作的框架),102,3.2案例分析移動(dòng)機(jī)器人,需求:這種閉環(huán)范例提供對(duì)容錯(cuò)度和安全性的支持。因?yàn)樗慕Y(jié)構(gòu)簡(jiǎn)單,使得復(fù)制操作更加容易,并能減少系統(tǒng)中錯(cuò)誤發(fā)生的幾率。,103,3.2案例分析移動(dòng)機(jī)器人,需求:主要構(gòu)件(監(jiān)視器、傳感器、發(fā)動(dòng)機(jī))是彼此分開(kāi)的,并能夠被獨(dú)立地替換。微小的修改必須在模塊中進(jìn)行。,104,3.2案例分析移動(dòng)機(jī)器人,方案分層體系結(jié)構(gòu),監(jiān)督,全局技術(shù),控制,導(dǎo)航,現(xiàn)實(shí)世界建模,傳感器集成分析,傳感器解釋分析,機(jī)器人控制,外界環(huán)境,這種定義也影響了Dolphin聲納和導(dǎo)航系統(tǒng)的設(shè)計(jì),并在Terregator Neptune移動(dòng)機(jī)器人上,駐留機(jī)器人控制程序(發(fā)動(dòng)機(jī),關(guān)節(jié)等),處理外界的輸入(分析單個(gè),集成分析),維持機(jī)器人的外界模型,負(fù)責(zé)調(diào)度和安排機(jī)器人行動(dòng)。處理問(wèn)題和重新安排,用戶界面和全局監(jiān)控,105,3.2案例分析移動(dòng)機(jī)器人,分層 需求:通過(guò)定義更多的執(zhí)行委托任務(wù)的構(gòu)件,Elfes的模型避開(kāi)了一些控制環(huán)路方案面臨的問(wèn)題。因?yàn)檫@個(gè)模型專用于自動(dòng)控制的機(jī)器人,所以它揭示了針對(duì)這種機(jī)器人所必須解決的問(wèn)題。(如傳感器集成)另外它定義了抽象層來(lái)指導(dǎo)設(shè)計(jì)。,106,3.2案例分析移動(dòng)機(jī)器人,需求:雖然這種模型很好的組織了用來(lái)協(xié)調(diào)機(jī)器人操作的構(gòu)件,但是這種分層體系結(jié)構(gòu)并不適合現(xiàn)行的數(shù)據(jù)和控制流模式。因?yàn)?,分層模型要求?qǐng)求和服務(wù)必須在相鄰的兩層進(jìn)行。 現(xiàn)實(shí)中,比如需要快速響應(yīng)的數(shù)據(jù)應(yīng)該直接從傳感器送到位于7層的問(wèn)題處理代理那里。并且相應(yīng)的命令也應(yīng)該跳過(guò)好幾層及時(shí)到達(dá)發(fā)動(dòng)機(jī)。,107,3.2案例分析移動(dòng)機(jī)器人,另一問(wèn)題:不能區(qū)分實(shí)際存在兩個(gè)抽象層次。 數(shù)據(jù)層: 原始的傳感器輸入(第1層) 解釋后和集成后的結(jié)果(第2層和第3 層)、最終的外界模型(第4層) 控制層: 包括發(fā)動(dòng)機(jī)控制(第1層)、導(dǎo)航(第5層)、調(diào)度(第6層)、安排(第7層)、用戶層控制(第8層)。,108,3.2案例分析移動(dòng)機(jī)器人,需求:抽象層的存在滿足了處理不確定性的需要:通過(guò)在較高層加入可以用到的知識(shí),使得在最低層中的不確定的事物在較高層中會(huì)變得確定。比如外界模型中的上下文能夠提供某些線索來(lái)消除相對(duì)矛盾的傳感器數(shù)據(jù)中的歧義。,109,3.2案例分析移動(dòng)機(jī)器人,需求3: 抽象機(jī)制滿足了容錯(cuò)度和被動(dòng)的安全性(你什么也不做)的要求??梢詮牟煌嵌确治鰯?shù)據(jù)和命令。將多個(gè)檢查和平衡操作合并到系統(tǒng)中是可能的。就象已經(jīng)提到的,性能和主動(dòng)安全性需要縮短通訊路徑。,110,3.2案例分析移動(dòng)機(jī)器人,需求4: 層次間的依賴性使得構(gòu)件的替換和添加更加困難。另外,層次間復(fù)雜的關(guān)系使得解讀每一次變化都會(huì)令人頭疼。,111,3.2案例分析移動(dòng)機(jī)器人,方案:隱式調(diào)用 內(nèi)嵌于任務(wù)控制體系結(jié)構(gòu)(Task-Control Architecture),task,task,task,task,task,異常,消息,分支的消息,竊聽(tīng),112,3.2案例分析移動(dòng)機(jī)器人,方案:隱式調(diào)用 內(nèi)嵌于任務(wù)控制體系結(jié)構(gòu)(Task-Control Architecture) 任務(wù)樹(shù),采集巖石,到位置,取石子,舉起巖石,左移,前移,113,3.2案例分析移動(dòng)機(jī)器人,TCA的三種功能: 異常(exception) 竊聽(tīng)(wiretapping) 例如一個(gè)安全性檢查的構(gòu)件能夠根據(jù)這種特點(diǎn)驗(yàn)證輸出的移動(dòng)命令。 監(jiān)控器(Monitor) 如果數(shù)據(jù)滿足某一標(biāo)準(zhǔn),監(jiān)控器就可以讀取信息,然后去執(zhí)行某些操作。比如監(jiān)控器檢測(cè)到電量低于一個(gè)給定值,就會(huì)調(diào)用負(fù)責(zé)充電的動(dòng)作。這個(gè)特點(diǎn)提供了一個(gè)處理容錯(cuò)度問(wèn)題的簡(jiǎn)便方法。放置一個(gè)代理來(lái)監(jiān)控系統(tǒng)。,114,3.2案例分析移動(dòng)機(jī)器人,隱式調(diào)用 需求:一方面是任務(wù)樹(shù),另一方是異常、竊聽(tīng)、監(jiān)控器,這些為動(dòng)作和響應(yīng)提供了清晰的劃分??梢赃M(jìn)行并發(fā)處理。多個(gè)任務(wù)是相互獨(dú)立的。,115,3.2案例分析移動(dòng)機(jī)器人,隱式調(diào)用 需求2:TCA解決不確定性是不夠清晰的。如果存在不可估計(jì)的情況,會(huì)創(chuàng)建一個(gè)試驗(yàn)性的任務(wù)樹(shù),如果任務(wù)樹(shù)中基本假設(shè)被證明是錯(cuò)誤的,那么異常處理程序會(huì)不斷的修改它直到正確為止。,116,3.2案例分析移動(dòng)機(jī)器人,隱式調(diào)用 需求3 TCA異常、竊聽(tīng)、監(jiān)控器特點(diǎn)使其考慮了性能、安全性、容錯(cuò)度這些問(wèn)題。 當(dāng)為同一個(gè)信號(hào)注冊(cè)多個(gè)處理者時(shí),通過(guò)冗余來(lái)實(shí)現(xiàn)容錯(cuò)。,117,3.2案例分析移動(dòng)機(jī)器人,隱式調(diào)用 需求4 使用隱式調(diào)用使得增量開(kāi)發(fā)和構(gòu)件的替換更為直接。在不影響現(xiàn)有構(gòu)件的情況下,很容易在中心服務(wù)器注冊(cè)新的處理者、異常、竊聽(tīng)器或監(jiān)控器。,118,3.2案例分析移動(dòng)機(jī)器人,方案:黑板體系結(jié)構(gòu),lookout,caption,Map navigator,pilot,黑板,感知子系統(tǒng),Caption:總監(jiān)視器 MN:高層路線規(guī)劃程序 Lookout:為獲取路標(biāo)而監(jiān)控環(huán)境的模塊 Pilot:底層的路線規(guī)劃程序和發(fā)動(dòng)機(jī)控制器 感知子系統(tǒng):這個(gè)模塊接收來(lái)自多個(gè)傳感器的原始輸入并將它們整合成一致的解釋,119,3.2案例分析移動(dòng)機(jī)器人,黑板體系結(jié)構(gòu) 需求:構(gòu)件(感知子系統(tǒng)中的模塊)通過(guò)黑板系統(tǒng)的共享知識(shí)庫(kù)來(lái)進(jìn)行通信。每個(gè)模塊只對(duì)某種信息感興趣。數(shù)據(jù)庫(kù)可以立刻向這些模塊發(fā)送它們需要的信息,或者在這些模塊向數(shù)據(jù)庫(kù)插入這些信息后,再向這些模塊發(fā)送它們需要的信息。,120,3.2案例分析移動(dòng)機(jī)器人,黑板 需求2:黑板也是一種解決矛盾和不確定性情況的方式。,121,3.2案例分析移動(dòng)機(jī)器人,黑板 需求3:通過(guò)數(shù)據(jù)庫(kù)進(jìn)行通信和通過(guò)TCA中心消息服務(wù)器進(jìn)行通信的方式非常相似。,122,3.2案例分析移動(dòng)機(jī)器人,黑板: 需求4 和TCA一樣,黑板體系結(jié)構(gòu)風(fēng)格支持并發(fā)以及發(fā)送者和接受者分離,這樣有利于維護(hù)。 總之,基于數(shù)據(jù)庫(kù)內(nèi)容的隱式調(diào)用機(jī)制、黑板體系結(jié)構(gòu)具有模擬任務(wù)協(xié)作的能力,滿足了以靈活的方式處理協(xié)調(diào)和解決不確定性的需求。,123,3.2案例分析移動(dòng)機(jī)器人,循環(huán)控制,分層,隱式調(diào)用,黑板,任務(wù)協(xié)調(diào),處理不確定性,故障容忍,安全,性能,適應(yīng)性,+,124,3.3定速巡航控制,目的:怎么將控制環(huán)路范例應(yīng)用到一個(gè)簡(jiǎn)單的問(wèn)題中,這個(gè)問(wèn)題傳統(tǒng)上使用面向?qū)ο蟮姆椒ㄟM(jìn)行處理。 控制環(huán)路體系結(jié)構(gòu)的使用,有利于闡明體系結(jié)構(gòu)對(duì)于問(wèn)題解決所起的重要作用。,125,3.3定速巡航控制,巡航控制系統(tǒng),系統(tǒng)開(kāi)關(guān),引擎開(kāi)關(guān),車輪脈沖,加速度,剎車,增減速,恢復(fù)速度,時(shí)鐘,油門,126,3.3定速巡航控制,車輪,當(dāng)前車速,時(shí)鐘,期望速度,油門,司機(jī),剎車,發(fā)動(dòng)機(jī),加速器,面向?qū)ο蟮姆椒?127,3.3定速巡航控制,控制環(huán)路方法,引擎,油門設(shè)定,期望速度,活躍閑置肘,車輪轉(zhuǎn)動(dòng),控制器,128,3.3定速巡航控制,激活狀態(tài)機(jī),非活動(dòng)加速,活動(dòng),非活動(dòng)減速,非活動(dòng)零,關(guān)閉,加速度設(shè)定點(diǎn),加速度設(shè)定點(diǎn),恢復(fù),剎車,系統(tǒng)開(kāi),引擎開(kāi),所有狀態(tài),除關(guān)閉外的所有狀態(tài),系統(tǒng)關(guān)閉,引擎關(guān),129,4軟件架構(gòu)的評(píng)估,130,5流行的軟件體系結(jié)構(gòu),需求: 提供一種手段,使應(yīng)用軟件可以預(yù)先編好的,功能明確的產(chǎn)品部件定制而成,并可用不同版本的部件實(shí)現(xiàn)應(yīng)用的擴(kuò)展和更新。 利用模塊化的方法,將復(fù)雜的難以維護(hù)的系統(tǒng)分解為互相獨(dú)立、協(xié)同工作的部件,并努力使這些部件可反復(fù)重用。 突破時(shí)間、空間及不同硬件設(shè)備的限制,利用客戶和軟件之間統(tǒng)一的接口實(shí)現(xiàn)跨平臺(tái)的互操作。,131,5流行的軟件體系結(jié)構(gòu),CORBA 規(guī)范 Sun的java平臺(tái) Microsoft的.NET平臺(tái),132,5流行的軟件體系結(jié)構(gòu),這兩種體系結(jié)構(gòu)提供的技術(shù)服務(wù), 例如:事務(wù)的完整性、消息傳遞和目錄服務(wù)、安全、異常處理、遠(yuǎn)程訪問(wèn),以及許多其他服務(wù),它們使開(kāi)發(fā)人員能夠?qū)⒆⒁饬性跇?gòu)件的功能上,而無(wú)需關(guān)注工作需要的所有底層技術(shù)基礎(chǔ)。,133,5.1基于CORBA的分布式構(gòu)件技術(shù),OMG OMA :三種對(duì)象 CORBA服務(wù) CORBA設(shè)備 應(yīng)用對(duì)象,134,5.1基于CORBA的分布式構(gòu)件技術(shù),對(duì)象請(qǐng)求代理(Object Request Broker),CORBA 服務(wù),應(yīng)用對(duì)象,CORBA 服務(wù),CORBA 服務(wù),垂直CORBA設(shè)備 facility,水平CORBA設(shè)備,OMA對(duì)象管理體系結(jié)構(gòu),135,5.1基于CORBA的分布式構(gòu)件技術(shù),Corba規(guī)范包括:ORB,IDL(接口定義語(yǔ)言),存根(STUB)和框架(SKELETON)、對(duì)象適配器、動(dòng)態(tài)調(diào)用接口。,136,5.1基于CORBA的分布式構(gòu)件技術(shù),CORBA 體系結(jié)構(gòu),接口庫(kù),客戶端程序,對(duì)象請(qǐng)求中間件核心(ORB CORE),實(shí)現(xiàn)庫(kù),對(duì)象適配器,客戶stub,動(dòng)態(tài)調(diào)用,ORB接口,對(duì)象實(shí)現(xiàn)(server),動(dòng)態(tài)服務(wù),靜態(tài)服務(wù),137,5.1基于CORBA的分布式構(gòu)件技術(shù),一個(gè)從客戶程序發(fā)送到對(duì)象實(shí)現(xiàn)的請(qǐng)求,客戶端程序,請(qǐng)求,Object Request Broker,IDL STUB,IDL STUB,對(duì)象實(shí)現(xiàn),138,5.2基于JAVA的分布式構(gòu)件技術(shù),客戶端應(yīng)用程序,動(dòng)態(tài)HTML頁(yè)面,動(dòng)態(tài)HTML頁(yè)面,客戶層,JSP頁(yè)面,EJB,JSP頁(yè)面,EJB,WEB層,業(yè)務(wù)層,EIS層,數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù),139,5.3基于.NET平臺(tái)的分布式構(gòu)件技術(shù),VB C+ C# PERL,WEB 服務(wù) 用戶界面 ,數(shù)據(jù)和XML(ADO.NET),類庫(kù)(CLASS LIBRARY),通用語(yǔ)言運(yùn)行時(shí)(Common Language Runtime),Visual studio .net,140,5.4面向服務(wù)的體系結(jié)構(gòu),服務(wù)注冊(cè),服務(wù)消費(fèi)者,服務(wù)提供者,服務(wù)注冊(cè),服務(wù),服務(wù)描述,綁定與調(diào)用,發(fā)布,發(fā)現(xiàn),141,5.4面向服務(wù)的體系結(jié)構(gòu),實(shí)現(xiàn)的核心技術(shù) 1)XML 2)SOAP 3)WSDL 4)UDDI(Universal Description Discovery and Integration),142,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 軟件 體系結(jié)構(gòu) ppt 課件
![提示](http://appdesigncorp.com/images/bang_tan.gif)
![](/images/jdt.gif)
鏈接地址:http://appdesigncorp.com/p-1928627.html