《[軟件工程]CH11》由會(huì)員分享,可在線閱讀,更多相關(guān)《[軟件工程]CH11(21頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),中國(guó)礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,Computer Science&Technology,*,軟件工程,軟件工程,劉迎春,軟件工程,第,11,章,軟件架構(gòu)與模式,11.1,概述,11.2,軟件架構(gòu),11.3,軟件模式,Architecture&Patterns,11.1,概述,1.,什么是,架構(gòu)(,Architecture,),軟件體系結(jié)構(gòu),通常被稱為架構(gòu),指可以預(yù)制和可重構(gòu)的軟件框架結(jié)構(gòu)。,ANSI/IEEE 611.12-1990,軟件工程標(biāo)準(zhǔn)詞匯,對(duì)于體系結(jié)構(gòu)定義是:,“體系架構(gòu)是以構(gòu)件、構(gòu)件之間的關(guān)系、
2、構(gòu)件與環(huán)境之間的關(guān)系為內(nèi)容的某一系統(tǒng)的,基本組織結(jié)構(gòu),以及指導(dǎo)上述內(nèi)容設(shè)計(jì)與演化的原理,”,強(qiáng)調(diào)了系統(tǒng)的基本組成,Garlan,&Shaw,模型,軟件體系結(jié)構(gòu),=,構(gòu)件,(component)+,連接件,(connector)+,約束,(constrain),構(gòu)件,可以是 一組代碼,如程序的模塊;也可以是一個(gè)獨(dú)立的程序,如數(shù)據(jù)庫(kù)服務(wù)器。,連接件,可以是過(guò)程調(diào)用、管道、遠(yuǎn)程過(guò)程調(diào)用,(RPC),等,用于表示構(gòu)件之間的相互作用。,約束,一般為對(duì)象連接時(shí)的規(guī)則,或指明構(gòu)件連接的形式和條件,例如,上層構(gòu)件可要求下層構(gòu)件的服務(wù),反之不行;兩對(duì)象不得遞規(guī)地發(fā)送消息;代碼復(fù)制遷移 的一致性約束;什么條件下此
3、種連接無(wú)效等。,2.,什么是模式(,Pattern,),模式的概念最早由建筑大師,Christopher Alexander,于二十世紀(jì)七十年代提出,應(yīng)用于建筑領(lǐng)域,八十年代中期由,Ward Cunningham,和,Kent Beck,將其思想引入到軟件領(lǐng)域,如今,模式,已成為軟件工程領(lǐng)域內(nèi)的一個(gè)熱門話題,其在計(jì)算機(jī)領(lǐng)域的影響超過(guò)了在建筑界的影響。,模式分為三個(gè)部分,模式是表示上下文、動(dòng)機(jī)、解決方案三個(gè)方面關(guān)系的一個(gè)規(guī)則,每個(gè)模式描述了一個(gè)在某種周境下不斷重復(fù)發(fā)生的,問(wèn)題,,以及該,問(wèn)題解決方案,的核心所在。模式既是一個(gè)事物又是一個(gè)過(guò)程,不僅描述該事物本身,而且提出了通過(guò)怎樣的過(guò)程來(lái)產(chǎn)生該事
4、物。,上下文,(,Context,),指模式在何種狀況下發(fā)生作用;,動(dòng)機(jī),(,System of Forces,),指問(wèn)題或預(yù)期的目標(biāo);,解決方案,(,Solution,),指平衡各動(dòng)機(jī)或解決所闡述問(wèn)題的一個(gè)構(gòu)造或配置。,3.,架構(gòu)和模式的關(guān)系,架構(gòu)和模式應(yīng)該是一個(gè)屬于相互涵蓋的過(guò)程,總體來(lái)說(shuō),架構(gòu),更加關(guān)注的是所謂的,High-Level Design,;,架構(gòu)強(qiáng)調(diào)的是,軟件系統(tǒng)的結(jié)構(gòu),及其,各個(gè)元素之間的關(guān)系,,而模式則是抽象各個(gè)層次上的關(guān)系;,相對(duì)于系統(tǒng)分析而言,架構(gòu)是在提出解決問(wèn)題的方案,而系統(tǒng)分析則是解決這些問(wèn)題,兩者都會(huì)運(yùn)用到模式。,模式,關(guān)注的重點(diǎn)在于通過(guò)經(jīng)驗(yàn)提取的“準(zhǔn)則或指導(dǎo)方
5、案”在設(shè)計(jì)中的應(yīng)用,因此在,不同層面,考慮問(wèn)題的時(shí)候就形成了不同問(wèn)題域上的模式,小到語(yǔ)言實(shí)現(xiàn)大到架構(gòu)。,在不同的層面上,模式提供不同層面的指導(dǎo),比如架構(gòu)設(shè)計(jì)方面,,三層應(yīng)用程序,,,分布式應(yīng)用程序,等等這些技術(shù)架構(gòu)模式為架構(gòu)設(shè)計(jì)提供了理論參考。,11.2,軟件架構(gòu),對(duì)于大規(guī)模的復(fù)雜軟件系統(tǒng)來(lái)說(shuō),軟件體系架構(gòu)比起對(duì)程序的算法和數(shù)據(jù)結(jié)構(gòu)的選擇已經(jīng)變得明顯重要得多。在此種背景下,人們認(rèn)識(shí)到軟件體系架構(gòu)的重要性,并認(rèn)為對(duì)軟件體系架構(gòu)系統(tǒng)、深入的研究將會(huì)成為,提高軟件生產(chǎn)效率和解決軟件危機(jī),的最有希望的途徑。,軟件設(shè)計(jì)的一個(gè)核心問(wèn)題是能否使用重復(fù)的體系架構(gòu),即能否達(dá)到,體系架構(gòu)級(jí),的,軟件重用,。,1.
6、J2EE,體系架構(gòu),J2EE,技術(shù)已經(jīng)成為企業(yè)級(jí)應(yīng)用的首選平臺(tái),基于,J2EE,技術(shù)構(gòu)建的軟件系統(tǒng)越來(lái)越多,;,J2EE,代表著先進(jìn)的軟件體系架構(gòu)思想,許多,軟件體系架構(gòu)模式,在,J2EE,中均被廣泛應(yīng)用。,層、管道和過(guò)濾器、黑板、代理(,Broker,)、,模型,-,視圖,-,控制器,(,Model-View-Controller,)、表示,-,抽象,-,控制(,Presentation-Abstraction-Control,)、微核、映像,2.Net,體系結(jié)構(gòu),.NET Framework,是一種新的計(jì)算平臺(tái),它簡(jiǎn)化了在高度,分布式,Internet,環(huán)境,中的應(yīng)用程序開發(fā)。,.NET
7、Framework,具有兩個(gè)主要組件:,公共語(yǔ)言運(yùn)行庫(kù),和,.NET Framework,類庫(kù),。,公共語(yǔ)言運(yùn)行庫(kù),公共語(yǔ)言運(yùn)行庫(kù)是,.NET Framework,的基礎(chǔ)。可以將運(yùn)行庫(kù)看作一個(gè)在執(zhí)行時(shí),管理代碼,的,代理,,它提供,核心服務(wù),(如內(nèi)存管理、線程管理和遠(yuǎn)程處理),而且還強(qiáng)制實(shí)施嚴(yán)格的類 型安全以及可確保安全性和可靠性的其他形式的代碼準(zhǔn)確性。,事實(shí)上,代碼管理的概念是運(yùn)行庫(kù)的基本原則。以運(yùn)行庫(kù)為目標(biāo)的代碼稱為,托管代碼,,而不以運(yùn)行庫(kù)為目標(biāo)的代碼稱為,非托管代碼,。,類庫(kù),是一個(gè)綜合性的面向?qū)ο蟮?可重用類,集合,可以使用它開發(fā)多種應(yīng)用程序,傳統(tǒng)的命令行,圖形用戶界面,(GUI),
8、應(yīng)用程序,Web,窗體,XML Web services,11.3,軟件模式,軟件模式的應(yīng)用對(duì)軟件開發(fā)產(chǎn)生了重大的作用,主要表現(xiàn)在:,軟件模式是人們?cè)陂L(zhǎng)期的設(shè)計(jì)軟件、管理組織軟件開發(fā)等實(shí)踐中大量經(jīng)驗(yàn)的提煉和抽象,是,復(fù)用,軟件設(shè)計(jì)方法,、,過(guò)程管理經(jīng)驗(yàn),的有力工具。,模式類似于拳擊中的組合拳,它提供了一系列軟件開發(fā)中的思維套路。通過(guò)模式的使用,有利于在復(fù)雜的系統(tǒng)中產(chǎn)生簡(jiǎn)潔、精巧的設(shè)計(jì)。,軟件模式為我們提供了一套簡(jiǎn)潔通用的設(shè)計(jì)、管理、組織方面的,詞匯,,同時(shí)模式也為我們提供了一個(gè)描述抽象事物的,規(guī)范標(biāo)準(zhǔn),,可大大促進(jìn)軟件開發(fā)過(guò)程中人與人之 間的交流,軟件開發(fā)中的交流是至關(guān)重要的,“軟件項(xiàng)目失敗的
9、原因最終都可追溯到信息沒(méi)有及時(shí)準(zhǔn)確地傳遞到應(yīng)該接收它的人”。,軟件模式種類,創(chuàng)建型模式,工廠模式、建造模式、工廠方法模式、原始模型模式、單例模式,結(jié)構(gòu)型模式,適配器模式、橋梁模式、合成模式、裝飾模式、門面模式、享元模式、代理模式,行為模式,責(zé)任鏈模式、命令模式、解釋器模式、迭代子模、調(diào)停者模式、備忘錄模式、觀察者模式、狀態(tài)模式、策略模式、模板方法模式、訪問(wèn)者模式,工廠模式,客戶類和工廠類分開。,消費(fèi)者任何時(shí)候需要某種產(chǎn)品,只需向工廠請(qǐng)求即可。消費(fèi)者無(wú)須修改就可以接納新產(chǎn)品。,缺點(diǎn)是當(dāng)產(chǎn)品修改時(shí),工廠類也要做相應(yīng)的修改。如:如何創(chuàng)建及如何向客戶端提供。,建造模式,將產(chǎn)品的內(nèi)部表象和產(chǎn)品的生成過(guò)程
10、分割開來(lái),從而使一個(gè)建造過(guò)程生成具有不同的內(nèi)部表象的產(chǎn)品對(duì)象。,建造模式使得產(chǎn)品內(nèi)部表象可以獨(dú)立的變化,客戶不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié)。建造模式可以強(qiáng)制實(shí)行一種分步驟進(jìn)行的建造過(guò)程。,代理模式,代理模式給某一個(gè)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制對(duì)源對(duì)象的引用。,代理就是一個(gè)人或一個(gè)機(jī)構(gòu)代表另一個(gè)人或者一個(gè)機(jī)構(gòu)采取行動(dòng)。某些情 況下,客戶不想或者不能夠直接引用一個(gè)對(duì)象,代理對(duì)象可以在客戶和目標(biāo)對(duì)象直接起到中介的作用??蛻舳朔直娌怀龃碇黝}對(duì)象與真實(shí)主題對(duì)象。代理模式可以 并不知道真正的被代理對(duì)象,而僅僅持有一個(gè)被代理對(duì)象的接口,這時(shí)候代理對(duì)象不能夠創(chuàng)建被代理對(duì)象,被代理對(duì)象必須有系統(tǒng)的其他角色代為創(chuàng)建并傳入。,代理模式的通俗解釋,PROXY,場(chǎng)景,在網(wǎng)上聊天,一開頭總是“,hi,你好”,“,你從哪兒來(lái)呀?”“你多大了?”“身高多少呀?”這些話,寫個(gè)程序做為,Proxy,,凡是接收到這些話都設(shè)置好了自動(dòng)的回答,接收到其他的話時(shí)再通知我回答。,參考資料,設(shè)計(jì)模式經(jīng)典解釋,http:/