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