SE08-第8講進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)課件_第1頁
SE08-第8講進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)課件_第2頁
SE08-第8講進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)課件_第3頁
SE08-第8講進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)課件_第4頁
SE08-第8講進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩149頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)需要回答以下幾個(gè)問題為什么要進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)?體系結(jié)構(gòu)是什么?它有哪些研究領(lǐng)域?如何進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)?1進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)教材只給出了部分回答需要對(duì)教材內(nèi)容作適度補(bǔ)充推薦閱讀《軟件體系結(jié)構(gòu)(世界著名計(jì)算機(jī)教材精選)》,劉振東等譯,清華大學(xué)出版社,2007.03《設(shè)計(jì)模式—可復(fù)用面向?qū)ο筌浖幕A(chǔ)》,李英軍等譯,機(jī)械工業(yè)出版社,2005.06

《企業(yè)應(yīng)用架構(gòu)模式》,王懷民等譯,機(jī)械工業(yè)出版社,2004.07《Microsoft.NET企業(yè)級(jí)應(yīng)用架構(gòu)設(shè)計(jì)》,陳黎夫譯,人民郵電出版社,2010.06《ExpertOne-on-OneJ2EEDevelopmentwithoutEJB中文版》,JavaEye,電子工業(yè)出版社,2005.092進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)綜述體系結(jié)構(gòu)風(fēng)格特定領(lǐng)域體系結(jié)構(gòu)體系結(jié)構(gòu)框架體系結(jié)構(gòu)設(shè)計(jì)映射數(shù)據(jù)流到軟件體系結(jié)構(gòu)小結(jié)31體系結(jié)構(gòu)綜述體系結(jié)構(gòu)背景體系結(jié)構(gòu)定義體系結(jié)構(gòu)研究領(lǐng)域41.1體系結(jié)構(gòu)背景隨著軟件系統(tǒng)規(guī)模越來越大、越來越復(fù)雜,整個(gè)系統(tǒng)的結(jié)構(gòu)和規(guī)格說明顯得越來越重要。最早指出體系結(jié)構(gòu)重要性的是大師EdsgerDijkstra(1930-2002)

“..thelargertheproject,themoreessentialthestructuring!”(1968)

51.1體系結(jié)構(gòu)背景對(duì)于大規(guī)模的復(fù)雜軟件系統(tǒng)來說,對(duì)總體的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和規(guī)格說明要比算法和數(shù)據(jù)結(jié)構(gòu)的選擇重要得多。體系結(jié)構(gòu)是早期設(shè)計(jì)決策的體現(xiàn)體系結(jié)構(gòu)明確了對(duì)系統(tǒng)實(shí)現(xiàn)的約束條件體系結(jié)構(gòu)制約著系統(tǒng)的質(zhì)量屬性通過研究體系結(jié)構(gòu)可以預(yù)測軟件的質(zhì)量體系結(jié)構(gòu)可以提高軟件生產(chǎn)率…….61.1體系結(jié)構(gòu)背景體系結(jié)構(gòu)雖脫胎于軟件工程,但其形成同時(shí)借鑒了計(jì)算機(jī)體系結(jié)構(gòu)和網(wǎng)絡(luò)體系結(jié)構(gòu)中很多寶貴的思想和方法。近年來,體系結(jié)構(gòu)研究獨(dú)立于軟件工程的研究,成為計(jì)算機(jī)科學(xué)的一個(gè)新的研究方向和獨(dú)立學(xué)科分支。對(duì)體系結(jié)構(gòu)的系統(tǒng)、深入的研究將會(huì)成為提高軟件生產(chǎn)率和解決軟件維護(hù)問題,提供新的、最有希望的途徑。

71.2體系結(jié)構(gòu)定義目前學(xué)術(shù)界和工業(yè)界對(duì)于體系結(jié)構(gòu)的定義尚未形成統(tǒng)一意見,以下介紹幾種具有代表性的定義。

Booch&Rumbaugh&Jacobson定義Bass定義Garlan&Shaw定義Soni&Nord&HofmeisterIEEE的定義…….10多種81.2體系結(jié)構(gòu)定義Booch&Rumbaugh&Jacobson定義體系結(jié)構(gòu)={組織,元素,子系統(tǒng),風(fēng)格}體系結(jié)構(gòu)是一系列重要決策的集合,這些決策與以下內(nèi)容相關(guān):軟件元素:構(gòu)成系統(tǒng)的結(jié)構(gòu)元素及其接口。軟件的組織:軟件元素的選擇,以及它們?cè)趨f(xié)作中明確表現(xiàn)出的行為。子系統(tǒng):軟件元素在結(jié)構(gòu)和行為上組合成更大規(guī)模的軟件元素。體系結(jié)構(gòu)風(fēng)格:用于引導(dǎo)軟件元素的組合。91.2體系結(jié)構(gòu)定義Bass定義(教材采用的定義)Bass等人在《SoftwareArchitectureinPractice》一書中提到,程序或計(jì)算系統(tǒng)的體系結(jié)構(gòu)是系統(tǒng)的一個(gè)或多個(gè)結(jié)構(gòu),其包括軟件構(gòu)件構(gòu)件的外部可視屬性構(gòu)件之間的關(guān)系101.2體系結(jié)構(gòu)定義Garlan&Shaw定義體系結(jié)構(gòu)={構(gòu)件,連接件,約束}構(gòu)件:一組代碼,如程序的模塊、獨(dú)立的程序或數(shù)據(jù)庫服務(wù)器等。連接件:過程調(diào)用、管道、遠(yuǎn)程過程調(diào)用等,用于表示構(gòu)件之間的相互作用。約束:指明構(gòu)件連接的勢(shì)態(tài)和條件。例如,上層構(gòu)件可要求下層構(gòu)件的服務(wù),反之則不允許。111.2體系結(jié)構(gòu)定義Soni&Nord&Hofmeister定義西門子研究院的Soni等人認(rèn)為體系結(jié)構(gòu)有4個(gè)不同的具體形態(tài),每種形態(tài)都從不同的角度來描述系統(tǒng)。概念體系結(jié)構(gòu):用于描述設(shè)計(jì)元素和及其相互關(guān)系。模塊互連體系結(jié)構(gòu):包含功能分解和分層兩個(gè)正交的結(jié)構(gòu)。執(zhí)行體系結(jié)構(gòu):用于描述系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu)。代碼體系結(jié)構(gòu):用于描述源程序、二進(jìn)制代碼和函數(shù)庫的組織方式。121.2體系結(jié)構(gòu)定義IEEE的定義體系結(jié)構(gòu)={構(gòu)件,連接件,環(huán)境,原理}體系結(jié)構(gòu)是以構(gòu)件、構(gòu)件之間的關(guān)系、構(gòu)件與環(huán)境之間的關(guān)系為內(nèi)容的某一系統(tǒng)的基本組織結(jié)構(gòu)以及指導(dǎo)上述內(nèi)容設(shè)計(jì)與演化的原理。131.2體系結(jié)構(gòu)定義我們的認(rèn)識(shí)體系結(jié)構(gòu)在較高抽象層次上描述了構(gòu)成軟件系統(tǒng)的元素、元素之間的交互關(guān)系、指導(dǎo)元素組合的模式以及相關(guān)約束要求,對(duì)于軟件系統(tǒng)的理解、分析、驗(yàn)證和演化等方面有著十分重要的意義。141體系結(jié)構(gòu)綜述體系結(jié)構(gòu)背景體系結(jié)構(gòu)定義體系結(jié)構(gòu)研究領(lǐng)域

151.3體系結(jié)構(gòu)研究領(lǐng)域

體系結(jié)構(gòu)已經(jīng)取得了長足的發(fā)展,受到大多數(shù)軟件系統(tǒng)設(shè)計(jì)和研究人員的重視。但它仍處在不斷發(fā)展之中,下面簡介一些關(guān)注較多、影響較大的研究領(lǐng)域。體系結(jié)構(gòu)建模體系結(jié)構(gòu)描述語言體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)分析與驗(yàn)證基于體系結(jié)構(gòu)的軟件開發(fā)過程特定領(lǐng)域的體系結(jié)構(gòu)框架16體系結(jié)構(gòu)建模體系結(jié)構(gòu)建模是研究如何表示體系結(jié)構(gòu)的問題。根據(jù)建模的側(cè)重點(diǎn)的不同,可以將體系結(jié)構(gòu)的模型分為5種:結(jié)構(gòu)模型:用構(gòu)件、連接件和其他概念刻畫體系結(jié)構(gòu)。動(dòng)態(tài)模型:用于描述系統(tǒng)的“大粒度”的行為性質(zhì)。例如描述系統(tǒng)的重新配置或演化??蚣苣P停号c結(jié)構(gòu)模型類似,但它主要以一些特殊的問題為目標(biāo)建立只針對(duì)和適應(yīng)該問題的結(jié)構(gòu)。過程模型:研究構(gòu)造體系結(jié)構(gòu)的步驟和過程。功能模型:研究系統(tǒng)功能構(gòu)件的層次劃分,可以將其視為是一種特殊的框架模型。最為常用17體系結(jié)構(gòu)描述語言體系結(jié)構(gòu)描述語言(ADL)的主要目的是提供一種規(guī)范化的體系結(jié)構(gòu)描述。ADL為體系結(jié)構(gòu)的分析和驗(yàn)證提供形式化基礎(chǔ)。目前已有近20種ADL,比較有影響力的有C2、UniCon、MetaH、Aesop、SADL、Rapide、Wright等。18體系結(jié)構(gòu)設(shè)計(jì)

體系結(jié)構(gòu)設(shè)計(jì)是系統(tǒng)設(shè)計(jì)的一部分,它凌駕于算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)之上,其包括設(shè)計(jì)整體組織和全局控制結(jié)構(gòu),如構(gòu)件的功能分配、通信協(xié)議、物理空間分布等等

體系結(jié)構(gòu)設(shè)計(jì)方法體系結(jié)構(gòu)風(fēng)格體系結(jié)構(gòu)設(shè)計(jì)空間體系結(jié)構(gòu)設(shè)計(jì)的支撐工具19體系結(jié)構(gòu)分析與驗(yàn)證體系結(jié)構(gòu)分析與驗(yàn)證研究如何將軟件的非功能性轉(zhuǎn)化為體系結(jié)構(gòu)需求、如何分析和驗(yàn)證體系結(jié)構(gòu)滿足期望的需求屬性,以及如何建立評(píng)價(jià)體系結(jié)構(gòu)的方法。基于場景的體系結(jié)構(gòu)分析方法SAAM體系結(jié)構(gòu)權(quán)衡分析方法ATAM

體系結(jié)構(gòu)形式化的驗(yàn)證方法特定領(lǐng)域軟件體系結(jié)構(gòu)分析方法…….20基于體系結(jié)構(gòu)的軟件開發(fā)過程基于體系結(jié)構(gòu)的軟件開發(fā)過程研究引入體系結(jié)構(gòu)后的軟件開發(fā)過程、基于體系結(jié)構(gòu)的開發(fā)與中間技術(shù)集成、基于體系結(jié)構(gòu)的程序框架自動(dòng)生成技術(shù)等。體系結(jié)構(gòu)的開發(fā)是大型軟件系統(tǒng)開發(fā)的重要環(huán)節(jié)。對(duì)軟件產(chǎn)品線有重要意義:基于同一個(gè)體系結(jié)構(gòu),可以創(chuàng)建具有不同功能的多個(gè)系統(tǒng)。21特定領(lǐng)域的體系結(jié)構(gòu)框架特定領(lǐng)域的體系結(jié)構(gòu)框架研究為一些特定領(lǐng)域的軟件產(chǎn)品提供可重用框架。Eclipse的插件體系結(jié)構(gòu)Struts框架、Spring框架和Hibernate框架ASP.NetMVC框架北郵周瑩新博士提出的電信軟件的體系結(jié)構(gòu)北航金茂忠教授提出的測試環(huán)境的體系結(jié)構(gòu)…22進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)綜述體系結(jié)構(gòu)風(fēng)格特定領(lǐng)域體系結(jié)構(gòu)體系結(jié)構(gòu)框架映射數(shù)據(jù)流到軟件體系結(jié)構(gòu)小結(jié)232體系結(jié)構(gòu)風(fēng)格體系結(jié)構(gòu)風(fēng)格定義了一個(gè)系統(tǒng)家族,其包括一個(gè)詞匯表和一組約束。一個(gè)詞匯表包含一些構(gòu)件和連接件類型,一組約束指出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來的。242體系結(jié)構(gòu)風(fēng)格有些學(xué)者對(duì)體系結(jié)構(gòu)模式和體系結(jié)構(gòu)風(fēng)格不加區(qū)分。體系結(jié)構(gòu)模式(architecturalpattern)表達(dá)了軟件系統(tǒng)的基本結(jié)構(gòu)組織形式或者結(jié)構(gòu)方案,包含了一組預(yù)定義的子系統(tǒng)規(guī)定了這些子系統(tǒng)的責(zé)任提供了用于組織和管理這些子系統(tǒng)的規(guī)則和向?qū)А?52體系結(jié)構(gòu)風(fēng)格體系結(jié)構(gòu)風(fēng)格反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語義特性,并指導(dǎo)如何將各個(gè)模塊和子系統(tǒng)有效地組織成一個(gè)完整的系統(tǒng)。對(duì)體系結(jié)構(gòu)風(fēng)格的研究和實(shí)踐為大粒度的軟件復(fù)用提供了可能。262體系結(jié)構(gòu)風(fēng)格典型的體系結(jié)構(gòu)風(fēng)格數(shù)據(jù)流風(fēng)格管道/過濾器風(fēng)格調(diào)用—返回風(fēng)格倉庫風(fēng)格272.1數(shù)據(jù)流風(fēng)格數(shù)據(jù)流風(fēng)格的特點(diǎn)當(dāng)輸入數(shù)據(jù)經(jīng)過一系列的計(jì)算和操作構(gòu)件的變換形成輸出數(shù)據(jù)時(shí),可以應(yīng)用這種體系結(jié)構(gòu)。管道/過濾器、批處理序列屬于數(shù)據(jù)流風(fēng)格。

282.2管道/過濾器風(fēng)格管道/過濾器風(fēng)格擁有一組過濾器構(gòu)件,這些構(gòu)件通過管道連接管道將數(shù)據(jù)從一個(gè)構(gòu)件傳送到下一個(gè)構(gòu)件。每個(gè)過濾器獨(dú)立于其上游和下游的構(gòu)件而工作,過濾器的設(shè)計(jì)要針對(duì)某種形式的數(shù)據(jù)輸入,并且產(chǎn)生某種特定形式的數(shù)據(jù)輸出。如果數(shù)據(jù)流退化成為單線的變換,則稱為批處理序列。這種結(jié)構(gòu)接收一批數(shù)據(jù),然后應(yīng)用一系列連續(xù)的構(gòu)件(過濾器)變換它。292.3調(diào)用—返回風(fēng)格調(diào)用—返回風(fēng)格:在此類體系結(jié)構(gòu)中,存在以下3種子風(fēng)格。主程序/子程序風(fēng)格302.3調(diào)用—返回風(fēng)格調(diào)用—返回風(fēng)格之面向?qū)ο箫L(fēng)格系統(tǒng)的構(gòu)件封裝了數(shù)據(jù)和必須應(yīng)用到該數(shù)據(jù)上的操作,構(gòu)件間通過消息傳遞進(jìn)行通信與合作。與主程序/子程序的體系結(jié)構(gòu)相比,面向?qū)ο箫L(fēng)格中的對(duì)象交互會(huì)復(fù)雜一些。面向?qū)ο箫L(fēng)格與網(wǎng)絡(luò)應(yīng)用的需求在分布性、自治性、協(xié)作性、演化性等方面具有內(nèi)在的一致性。312.3調(diào)用—返回風(fēng)格調(diào)用—返回風(fēng)格之分層風(fēng)格在這種體系結(jié)構(gòu)中,整個(gè)系統(tǒng)被組織成一個(gè)分層結(jié)構(gòu),每一層為上層提供服務(wù),并作為下一層的客戶。322.4倉庫風(fēng)格倉庫風(fēng)格:數(shù)據(jù)倉庫(如文件或數(shù)據(jù)庫)位于體系結(jié)構(gòu)的中心,其他構(gòu)件經(jīng)常訪問該數(shù)據(jù)倉庫,并對(duì)倉庫中的數(shù)據(jù)進(jìn)行增加、修改或刪除操作。數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)和黑板系統(tǒng)都屬于倉庫風(fēng)格。332.4倉庫風(fēng)格倉庫風(fēng)格:中心存儲(chǔ)庫變換成“黑板”,黑板構(gòu)件負(fù)責(zé)協(xié)調(diào)信息在客戶間的傳遞,當(dāng)用戶感興趣的數(shù)據(jù)發(fā)生變化時(shí),它將通知客戶軟件。黑板系統(tǒng)的傳統(tǒng)應(yīng)用是信號(hào)處理領(lǐng)域,如語音和模式識(shí)別。另一應(yīng)用是松耦合代理數(shù)據(jù)共享存取。34進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)綜述體系結(jié)構(gòu)風(fēng)格特定領(lǐng)域體系結(jié)構(gòu)體系結(jié)構(gòu)框架映射數(shù)據(jù)流到軟件體系結(jié)構(gòu)小結(jié)353特定領(lǐng)域體系結(jié)構(gòu)特定的應(yīng)用還需要特定的體系結(jié)構(gòu)模型。這些體系結(jié)構(gòu)模型稱為領(lǐng)域相關(guān)的體系結(jié)構(gòu)。有兩種領(lǐng)域相關(guān)的體系結(jié)構(gòu)模型:類屬模型(genericmodel)和參考模型(referencemodel)。363特定領(lǐng)域體系結(jié)構(gòu)類屬模型是從許多實(shí)際系統(tǒng)中抽象出來的一般模型,它封裝了這些系統(tǒng)的主要特征。例如,許多圖書館都開發(fā)了自己的圖書館館藏/流通系統(tǒng),若把它們的共同功能抽取出來并創(chuàng)建一個(gè)讓所有圖書館都認(rèn)可的系統(tǒng)體系結(jié)構(gòu)模型,這就是類屬模型。373特定領(lǐng)域體系結(jié)構(gòu)類屬模型的一個(gè)最著名的例子是編譯器模型,由這個(gè)模型已開發(fā)出了數(shù)以千計(jì)的編譯器。

383特定領(lǐng)域體系結(jié)構(gòu)參考模型源于對(duì)應(yīng)用領(lǐng)域的研究它描述了一個(gè)理想化的包含了系統(tǒng)應(yīng)具有的所有特征的軟件體系結(jié)構(gòu)。它是更抽象且是描述一大類系統(tǒng)的模型,并且也是對(duì)設(shè)計(jì)者有關(guān)某類系統(tǒng)的一般結(jié)構(gòu)的指導(dǎo)。393特定領(lǐng)域體系結(jié)構(gòu)參考模型的典型例子是開放式系統(tǒng)互聯(lián)(OSI)參考模型。403特定領(lǐng)域體系結(jié)構(gòu)以上兩種不同類型的模型之間并不存在嚴(yán)格的區(qū)別,也可以將類屬模型視為參考模型。類屬模型可以直接在設(shè)計(jì)中復(fù)用,而參考模型一般是用于領(lǐng)域概念間的交流和對(duì)可能的體系結(jié)構(gòu)做出比較。類屬模型通常是經(jīng)過“自下而上”地對(duì)已有系統(tǒng)的抽象,而參考模型是“由上到下”地產(chǎn)生的。413特定領(lǐng)域體系結(jié)構(gòu)分布式系統(tǒng)結(jié)構(gòu)傳統(tǒng)的C/S體系結(jié)構(gòu)三層C/S體系結(jié)構(gòu)分布式對(duì)象體系結(jié)構(gòu)

面向服務(wù)的體系結(jié)構(gòu)423.1傳統(tǒng)的C/S體系結(jié)構(gòu)傳統(tǒng)的C/S體系結(jié)構(gòu)中,應(yīng)用系統(tǒng)被劃分為客戶機(jī)和服務(wù)器兩部分。433.1傳統(tǒng)的C/S體系結(jié)構(gòu)客戶/服務(wù)器體系結(jié)構(gòu)在基于資源不對(duì)等,且為實(shí)現(xiàn)共享而提出來的,由服務(wù)器、客戶機(jī)和網(wǎng)絡(luò)三部分組成。客戶機(jī)可以通過遠(yuǎn)程調(diào)用來獲取服務(wù)器提供的服務(wù)。客戶機(jī)必須知道可用的服務(wù)器的名字及它們所提供的服務(wù),而服務(wù)器不需要知道客戶機(jī)的身份,也不需要知道有多少臺(tái)服務(wù)器在運(yùn)行。443.1傳統(tǒng)的C/S體系結(jié)構(gòu)客戶/服務(wù)器體系結(jié)構(gòu)的兩種形態(tài)瘦客戶機(jī)模型:數(shù)據(jù)管理部分和應(yīng)用邏輯都在服務(wù)器上執(zhí)行,客戶機(jī)只負(fù)責(zé)表示部分。主要缺點(diǎn):它將繁重的處理負(fù)荷都放在了服務(wù)器和網(wǎng)絡(luò)上,服務(wù)器負(fù)責(zé)所有的計(jì)算,這將增加客戶機(jī)和服務(wù)器之間的網(wǎng)絡(luò)流量。目前個(gè)人計(jì)算機(jī)所具有的處理能力在瘦客戶機(jī)模型中用不上。453.1傳統(tǒng)的C/S體系結(jié)構(gòu)客戶/服務(wù)器體系結(jié)構(gòu)的兩種形態(tài)胖客戶機(jī)模型:服務(wù)器只負(fù)責(zé)對(duì)數(shù)據(jù)的管理??蛻魴C(jī)上的軟件實(shí)現(xiàn)應(yīng)用邏輯和與系統(tǒng)用戶的交互。主要缺點(diǎn):開發(fā)成本較高。用戶界面風(fēng)格不統(tǒng)一,使用繁雜,不利于推廣使用。軟件移植困難。軟件維護(hù)和升級(jí)困難463.2三層C/S體系結(jié)構(gòu)三層C/S體系結(jié)構(gòu):增加了應(yīng)用服務(wù)器,可以將整個(gè)應(yīng)用邏輯駐留在應(yīng)用服務(wù)器上,而只有表示層存在于客戶機(jī)上。473.2三層C/S體系結(jié)構(gòu)三層C/S體系結(jié)構(gòu)將整個(gè)系統(tǒng)分成表示層、應(yīng)用邏輯層和數(shù)據(jù)層三個(gè)部分,其數(shù)據(jù)處理流程如下圖所示。483.2三層C/S體系結(jié)構(gòu)瀏覽器/服務(wù)器(browser/server,B/S)風(fēng)格是三層體系結(jié)構(gòu)的一種實(shí)現(xiàn)方式,B/S體系結(jié)構(gòu)如下圖所示。493.2三層C/S體系結(jié)構(gòu)B/S體系結(jié)構(gòu)表示層:應(yīng)用系統(tǒng)的用戶界面部分,擔(dān)負(fù)著用戶與應(yīng)用程序之間的對(duì)話功能。它用于檢查用戶輸入的數(shù)據(jù),顯示應(yīng)用程序輸出的數(shù)據(jù),一般采用圖形用戶界面。應(yīng)用邏輯層:應(yīng)用系統(tǒng)的主體部分,包含具體的業(yè)務(wù)處理邏輯。通常在功能層中包含有確認(rèn)用戶對(duì)應(yīng)用和數(shù)據(jù)庫存取權(quán)限的功能以及記錄系統(tǒng)處理日志的功能。數(shù)據(jù)層:數(shù)據(jù)層主要包括數(shù)據(jù)的存儲(chǔ)及對(duì)數(shù)據(jù)的存取操作,一般選擇關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。503.2三層C/S體系結(jié)構(gòu)B/S體系結(jié)構(gòu)結(jié)合瀏覽器的多種腳本語言,用通用瀏覽器就實(shí)現(xiàn)了原來需要復(fù)雜的專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,節(jié)約了開發(fā)成本。B/S體系結(jié)構(gòu)具有以下優(yōu)點(diǎn):基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決。B/S體系結(jié)構(gòu)還提供了異種機(jī)、異種網(wǎng)、異種應(yīng)用服務(wù)的聯(lián)機(jī)、聯(lián)網(wǎng)和統(tǒng)一服務(wù)的最現(xiàn)實(shí)的開放性基礎(chǔ)。513.2三層C/S體系結(jié)構(gòu)與C/S體系結(jié)構(gòu)相比,B/S體系結(jié)構(gòu)也有許多不足之處。B/S體系結(jié)構(gòu)缺乏對(duì)動(dòng)態(tài)頁面的支持能力,沒有集成有效的數(shù)據(jù)庫處理功能。采用B/S體系結(jié)構(gòu)的應(yīng)用系統(tǒng),在數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)地低于C/S體系結(jié)構(gòu)。B/S體系結(jié)構(gòu)的數(shù)據(jù)提交一般以頁面為單位,數(shù)據(jù)的動(dòng)態(tài)交互性不強(qiáng),不利于在線事務(wù)處理(OLTP)應(yīng)用。523.3分布式對(duì)象體系結(jié)構(gòu)

分布式對(duì)象體系結(jié)構(gòu)分布式對(duì)象體系結(jié)構(gòu)為了消除C/S模型中客戶機(jī)與服務(wù)器之間的差別,提高系統(tǒng)的伸縮性以及有效地均衡負(fù)載。分布式對(duì)象的實(shí)質(zhì)是在分布式異構(gòu)環(huán)境下建立應(yīng)用系統(tǒng)框架和對(duì)象構(gòu)件,它將應(yīng)用服務(wù)分割成具有完整邏輯含義的獨(dú)立子模塊(稱為構(gòu)件),各個(gè)子模塊可放在同一臺(tái)服務(wù)器或分布在多臺(tái)服務(wù)器上運(yùn)行,模塊之間通過中間件互相通信。533.3分布式對(duì)象體系結(jié)構(gòu)分布式對(duì)象體系結(jié)構(gòu)負(fù)責(zé)模塊之間的中間件稱為軟件總線或?qū)ο笳?qǐng)求代理,它的作用是在對(duì)象之間提供一個(gè)無縫接口。543.3分布式對(duì)象體系結(jié)構(gòu)分布式對(duì)象體系結(jié)構(gòu)在分布式對(duì)象技術(shù)的基礎(chǔ)是構(gòu)件。構(gòu)件是一些獨(dú)立的代碼封裝體,在分布計(jì)算的環(huán)境下可以是一個(gè)簡單的對(duì)象,但大多數(shù)情況下是一組相關(guān)的對(duì)象組合體,提供一定的服務(wù)。分布式環(huán)境下,構(gòu)件是一些靈活的軟件模塊,它們可以位置透明、語言獨(dú)立和平臺(tái)獨(dú)立地互相發(fā)送消息,實(shí)現(xiàn)請(qǐng)求服務(wù)。構(gòu)件之間并不存在客戶機(jī)與服務(wù)器的界限,接受服務(wù)者扮演客戶機(jī)的角色,提供服務(wù)者就是服務(wù)器。553.3分布式對(duì)象體系結(jié)構(gòu)分布式對(duì)象體系結(jié)構(gòu)主流的分布式對(duì)象技術(shù)規(guī)范有OMG的CORBA、Microsoft公司的.NET和Sun公司的J2EE。它們都支持服務(wù)端構(gòu)件的開發(fā),都有其各自的特點(diǎn)。563.3分布式對(duì)象體系結(jié)構(gòu)1991年,OMG基于面向?qū)ο蠹夹g(shù),給出了以對(duì)象請(qǐng)求代理(ORB)為中心的分布式應(yīng)用體系結(jié)構(gòu)。573.3分布式對(duì)象體系結(jié)構(gòu)在OMG的對(duì)象管理結(jié)構(gòu)中,ORB是一個(gè)關(guān)鍵的通信機(jī)制,它以實(shí)現(xiàn)互操作性為主要目標(biāo),處理對(duì)象之間的消息分布。在ORB之上有4個(gè)對(duì)象接口:對(duì)象服務(wù):定義加入ORB的系統(tǒng)級(jí)服務(wù),如安全性、命名和事務(wù)處理,它們是與應(yīng)用領(lǐng)域無關(guān)的。公共設(shè)施:水平級(jí)的服務(wù),定義應(yīng)用程序級(jí)服務(wù)。領(lǐng)域接口:面向特定的領(lǐng)域。應(yīng)用接口:面向指定的現(xiàn)實(shí)世界應(yīng)用。是指供應(yīng)商或用戶借助于ORB、公共對(duì)象服務(wù)及公共設(shè)施而開發(fā)的特定產(chǎn)品。583.4面向服務(wù)的體系結(jié)構(gòu)面向服務(wù)的體系結(jié)構(gòu)(Service-OrientedArchitecture,簡記SOA)的概念最早是由Gartner于1996年提出的。由于SOA在系統(tǒng)結(jié)構(gòu)和軟件開發(fā)中帶來了很多的優(yōu)勢(shì),后來IBM、MS、BEA、Oracle在內(nèi)的全球著名IT公司加入了定義、實(shí)現(xiàn)和推廣SOA的行列。SOA已經(jīng)被各種分布式系統(tǒng)開發(fā)所采用。593.4面向服務(wù)的體系結(jié)構(gòu)60613.4面向服務(wù)的體系結(jié)構(gòu)Web服務(wù)技術(shù)XML、SOAP、WSDL、UDDISOA技術(shù)架構(gòu)SOA中的角色:服務(wù)提供者、服務(wù)消費(fèi)者、服務(wù)注冊(cè)庫SOA中的操作:發(fā)布、發(fā)現(xiàn)、綁定與調(diào)用SOA中的制品:服務(wù)、服務(wù)描述61進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)綜述體系結(jié)構(gòu)風(fēng)格特定領(lǐng)域體系結(jié)構(gòu)體系結(jié)構(gòu)框架映射數(shù)據(jù)流到軟件體系結(jié)構(gòu)小結(jié)624體系結(jié)構(gòu)框架體系結(jié)構(gòu)框架概述模型--視圖--控制器框架(MVC框架)表示--控制–中介者--實(shí)體–基礎(chǔ)框架(PCMEF框架)J2EE框架634.1體系結(jié)構(gòu)框架概述體系結(jié)構(gòu)框架是特定應(yīng)用領(lǐng)域問題的體系結(jié)構(gòu)模式,它在組織形式上是一個(gè)待實(shí)例化的完整系統(tǒng)。定義了軟件系統(tǒng)的構(gòu)成單元和關(guān)系創(chuàng)建了基本的模塊定義了涉及功能更改和擴(kuò)充的插件位置。體系結(jié)構(gòu)框架的重用,使得開發(fā)者可以集中精力解決業(yè)務(wù)邏輯問題。644.1體系結(jié)構(gòu)框架概述典型的體系結(jié)構(gòu)框架例子MVC框架PCMEF框架Struts框架ASP.netMVC框架J2EE框架…….654.2MVC框架MVC框架即模型—視圖—控制器(model-view-controller)框架。它強(qiáng)調(diào)將用戶輸入、數(shù)據(jù)模型和數(shù)據(jù)表示的方式分開設(shè)計(jì)。一個(gè)交互式應(yīng)用系統(tǒng)由模型、視圖和控制器3個(gè)部件組成,分別對(duì)應(yīng)于內(nèi)部數(shù)據(jù)、數(shù)據(jù)表示和輸入/輸出控制部分。664.2MVC框架MVC框架示意圖674.2MVC框架模型對(duì)象獨(dú)立于外在顯示內(nèi)容和顯示形式。代表應(yīng)用領(lǐng)域中的業(yè)務(wù)實(shí)體和業(yè)務(wù)規(guī)則,是整個(gè)模型的核心。模型對(duì)象的變化通過事件處理通知視圖和控制器對(duì)象。684.2MVC框架視圖對(duì)象代表GUI對(duì)象,并且以用戶需要的格式表示模型狀態(tài),是交互系統(tǒng)與外界的接口??梢园右晥D,子視圖用于顯示模型的不同部分。通常每個(gè)視圖對(duì)象對(duì)應(yīng)一個(gè)控制器對(duì)象694.2MVC框架控制器對(duì)象代表鼠標(biāo)和鍵盤事件。它處理用戶的輸入行為并給模型發(fā)送業(yè)務(wù)事件,將業(yè)務(wù)事件解析為模型應(yīng)執(zhí)行的動(dòng)作模型的更新與修改也將通過控制器來通知視圖,從而保持各個(gè)視圖與模型的一致性。704.2MVC框架MVC框架的處理請(qǐng)求的過程首先控制器接收用戶的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)模型來進(jìn)行處理;然后模型用業(yè)務(wù)邏輯來處理用戶的請(qǐng)求并返回?cái)?shù)據(jù);最后控制器用相應(yīng)的視圖格式化模型返回的數(shù)據(jù),并通過表示層呈現(xiàn)給用戶。714.2MVC框架MVC框架各部分的職責(zé)模型是核心數(shù)據(jù)和功能,視圖只關(guān)心顯示數(shù)據(jù),控制只關(guān)心用戶輸入MVC框架由于將數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開,因此可以最大化地重用代碼。72ASP.NETMVC2Web技術(shù)基礎(chǔ)ASP.NETMVC2概述案例73Web技術(shù)基礎(chǔ)Web請(qǐng)求過程:簡單的場景

S1.客戶機(jī)瀏覽器運(yùn)用http協(xié)議向web服務(wù)器進(jìn)程發(fā)送頁面請(qǐng)求。

例如:/new/test.htmlS2.web服務(wù)器進(jìn)程接收請(qǐng)求,并查找所請(qǐng)求的html頁面例如:在web服務(wù)器的虛根目錄下new子文件夾下查找到test.html頁面。

S3.Web服務(wù)器進(jìn)程運(yùn)用http協(xié)議將test.html頁面以文件流的形式發(fā)送給客戶機(jī)瀏覽器。74Web技術(shù)基礎(chǔ)Web請(qǐng)求過程:簡單的場景

S4.客戶瀏覽器將接收到html文件。例如:<HTML><Head></Head><Body><H1>測試</H1></Body>

</HTML>S5.客戶瀏覽器解釋執(zhí)行收到html文件。例如:75Web技術(shù)基礎(chǔ)Web請(qǐng)求過程:復(fù)雜的場景

S1.客戶機(jī)瀏覽器運(yùn)用http協(xié)議向web服務(wù)器進(jìn)程發(fā)送頁面請(qǐng)求。例如:/new/test.aspx

S2.web服務(wù)器進(jìn)程接收請(qǐng)求,并查找所請(qǐng)求的aspx頁面例如:在web服務(wù)器的虛根目錄下new子文件夾下查找到test.aspx頁面。S3.Web服務(wù)器進(jìn)程將test.aspx頁面交給asp引擎執(zhí)行。76Web技術(shù)基礎(chǔ)Test.aspx頁面<htmlxmlns="/1999/xhtml"><headrunat="server"><title></title></head><body>

<h1>test!</h1><formid="form1"runat="server">

<div>

<asp:TextBox

ID="TextBox1“

runat="server">Test</asp:TextBox>

</div></form></body></html>運(yùn)用集成開發(fā)環(huán)境,在webForm中每放置一個(gè)控件,就在后代碼中生成一個(gè)form標(biāo)簽asp的服務(wù)器端腳本以<%..%>或<asp..></asp>標(biāo)識(shí)77Web技術(shù)基礎(chǔ)Web請(qǐng)求過程:復(fù)雜的場景

S4.asp引擎將執(zhí)行后的結(jié)果(一個(gè)html頁面),交給web服務(wù)器進(jìn)程。例如:

78執(zhí)行后結(jié)果:一個(gè)標(biāo)準(zhǔn)的Html頁面<htmlxmlns="/1999/xhtml"><head><title></title></head><body><h1>test!</h1><formname="form1"method="post"action="Default.aspx"id="form1"><div><inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE“value="/wEPDwULLTEwMzQyNzk1MzdkZO"/></div><div><inputtype="hidden"name="__EVENTVALIDATION"id="__EVENTVALIDATION"value="/wEWAgK6kazVDwLs0bLrBohTtYTdl6Ezag"/></div><div><inputname="TextBox1"type="text"value="Test"id="TextBox1"/></div></form></body></html>運(yùn)用html中input標(biāo)簽中的隱藏域來收集文本框的各種屬性值,加密存放在_viewStatus中運(yùn)用html中input標(biāo)簽中的隱藏域來收集文本框的各種事件值,加密存放在_viewStatus中。這樣用戶再交提交請(qǐng)求后,服務(wù)器與原先存放的值進(jìn)行比較就可獲知客戶端事件是否發(fā)生,如發(fā)生則調(diào)用事件處理代碼。79Web技術(shù)基礎(chǔ)Web請(qǐng)求過程:復(fù)雜的場景

S5.Web服務(wù)器進(jìn)程運(yùn)用http協(xié)議將該結(jié)果頁面以文件流的形式發(fā)送給客戶機(jī)瀏覽器。

S6.客戶瀏覽器解釋執(zhí)行收到html文件。80Web技術(shù)基礎(chǔ)Web應(yīng)用是一種典型的分布式架構(gòu)。每一次信息交換都要涉及客戶端和服務(wù)端兩個(gè)層面。客戶端Web頁技術(shù)(現(xiàn)代瀏覽器可直接解釋執(zhí)行)Html、XHTML、JavaApplet、JavaScript、VBScript、CSS、DHTML、Flash服務(wù)端Web頁技術(shù)(在服務(wù)端由相應(yīng)的引擎解釋執(zhí)行,一般輸出標(biāo)準(zhǔn)Html頁或帶客戶端腳本的Html頁)CGI(早期)、ASP、PHP、JSP和Servlet81ASP.NETMVC2(補(bǔ)充)Web技術(shù)基礎(chǔ)ASP.NETMVC2概述案例82ASP.NETMVC2概述使用微軟VS工具開發(fā)Web應(yīng)用程序兩種主要方式AWebForms技術(shù)AMVC框架可同時(shí)使用WebForm技術(shù)和MVC框架,但不推薦83ASP.NETMVC2概述WebForm技術(shù)優(yōu)點(diǎn)模擬windows編程模式事件驅(qū)動(dòng)使用ViewState和Postback解決Http協(xié)議無狀態(tài)的問題豐富的服務(wù)器控件,加速開發(fā)速度數(shù)據(jù)綁定技術(shù)缺點(diǎn)頁面生命周期復(fù)雜運(yùn)用效率不高(客戶端請(qǐng)求時(shí),可能需要承載大量的ViewState數(shù)據(jù))服務(wù)器端控件的大量使用,使得代碼冗余較大程序的可測試性、可維性、可擴(kuò)展性不高84ASP.NETMVC2概述AMVC2框架優(yōu)點(diǎn)MVC各負(fù)其責(zé),代碼耦合性更低URL可控易于對(duì)界面邏輯進(jìn)行單元測試易于客戶端腳本編程易于前后臺(tái)編碼人員配合ViewEngine、ActionFilter等部件均可替換或定置公開源代碼85ASP.NETMVC2概述AMVC2框架缺點(diǎn)使得大量現(xiàn)有控件難以直接使用存在許多約定,不易于初學(xué)者理解沒有webForm易于使用86ASP.NETMVC2概述ASP.NETMVC2請(qǐng)求響應(yīng)過程控制器處理請(qǐng)求,并將模型傳遞給視圖視圖根據(jù)控制器傳入的模型渲染界面后交由服務(wù)器以響應(yīng)用戶請(qǐng)求模型是控制器和視圖之間數(shù)據(jù)傳輸?shù)膶?duì)象87ASP.NETMVC2概述AMVC2框架的URL路由解決URL請(qǐng)求如何映射到控制器中對(duì)應(yīng)的請(qǐng)求處理部分控制器中的Action方法負(fù)責(zé)處理用戶請(qǐng)求通過路由映射表實(shí)現(xiàn)URL到控制器Action方法的映射

routes.MapRoute("Default",//Routename"{controller}/{action}/{id}",//URLwithparametersnew{controller=“Home”,action=“Index”,

id=UrlParameter.Optional}//Parameterdefaults)

/Home/Index/001HomeControllerAction方法是index傳遞給index方法的參數(shù)是”001”88ASP.NETMVC2概述AMVC2框架的控制器控制器可包含多個(gè)Action方法,用于處理不同請(qǐng)求Action方法的返回類型是ActionResult,其子類有89ASP.NETMVC2概述AMVC2框架的控制器Action方法執(zhí)行完后,將返回的ActionResult對(duì)象交由框架,框架中的ViewEngine負(fù)責(zé)查找View。View缺省放在Views目錄下,且名稱與Action的名稱相同??刂破鱾鬟f給View的模型數(shù)據(jù)放在ViewData中,View可利用其進(jìn)行界面渲染90ASP.NETMVC2概述AMVC2框架的模型模型可用于控制器與視圖之間進(jìn)行數(shù)據(jù)傳遞可創(chuàng)建強(qiáng)類型的View。如View<Student>模型中的屬性標(biāo)注可用于檢驗(yàn),例如模型類Student的Name屬性標(biāo)注[required],則提交表單時(shí),可由框架進(jìn)行驗(yàn)證,如何該字段為空,則拋出異常。91ASP.NETMVC2概述ASP.NETMVC2的視圖視圖根據(jù)控制器傳入的模型數(shù)據(jù)渲染界面控制器傳入的模型數(shù)據(jù)可以被視圖中的子視圖(又稱部分視圖)使用ASP.NETMVC2框架提供了大量的幫助類,易于視圖的創(chuàng)建視圖可以使用客戶端腳本和WebForm控件(但不推薦使用WebForm控件)92ASP.NETMVC2(補(bǔ)充)Web技術(shù)基礎(chǔ)ASP.NETMVC2概述案例93ASP.NETMVC2概述案例:路由配置(Glob.asax)

publicstaticvoidRegisterRoutes(RouteCollectionroutes){

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default",//Routename"{controller}/{action}/{id}",//URLwithparametersnew{controller="Home",action="Index",

id=UrlParameter.Optional}//Parameter

defaults);}94ASP.NETMVC2概述案例:控制器publicclassAccountController:Controller{publicActionResultRegister(){ViewData["PasswordLength"]=

MembershipService.MinPasswordLength;returnView();}

[HttpPost]publicActionResultRegister(RegisterModelmodel){

…..}}繼承框架的控制類加入數(shù)據(jù)不是第一次訪問,而是填寫了表單遞交的請(qǐng)求傳遞給控制器的模型數(shù)據(jù)95ASP.NETMVC2概述案例:模型publicclassRegisterModel{[Required][DisplayName("Username")]publicstringUserName{get;set;}[Required][ValidatePasswordLength][DataType(DataType.Password)][DisplayName("Password")]publicstringPassword{get;set;}

……}標(biāo)注UserName屬性不能為空標(biāo)注userName屬性的顯示名稱為“UserName”96ASP.NETMVC2概述案例:視圖<%using(Html.BeginForm()){%>

……

<fieldset>

<divclass="editor-label">

<%=Html.LabelFor(m=>m.UserName)%></div><divclass="editor-field"><%=Html.TextBoxFor(m=>m.UserName)%><%=Html.ValidationMessageFor(m=>m.UserName)%></div>

<inputtype="submit"value="Register"/>

</fieldset><%}%>RegisterModel中的UserName屬性與界面的綁定974體系結(jié)構(gòu)框架體系結(jié)構(gòu)框架概述模型--視圖--控制器框架(MVC框架)表示--控制–中介者--實(shí)體–基礎(chǔ)框架(PCMEF框架)J2EE框架984.3PCMEF框架PCMEF框架PCMEF是表示、控制、中介者、實(shí)體和基礎(chǔ)的首字母縮寫(presentation-control-mediator-entity-foundation,PCMEF)PCMEF是一個(gè)垂直層次的分層體系結(jié)構(gòu)框架。每一層是可以包含其他包的包。994.3PCMEF框架PCMEF框架PCMEF框架包含4層表示層控制層領(lǐng)域?qū)樱喊瑢?shí)體包和中介者兩個(gè)預(yù)定義包?;A(chǔ)層1004.3PCMEF框架PCMEF框架PCMEF框架中包的依賴性主要是向下依賴性。表示層依賴于控制層控制層依賴于領(lǐng)域?qū)又薪檎甙蕾囉趯?shí)體包和基礎(chǔ)層。1014.3PCMEF框架表示層:包含定義GUI對(duì)象的類??刂茖?處理表示層的請(qǐng)求,負(fù)責(zé)大多數(shù)程序邏輯、算法、主要計(jì)算以及為每個(gè)用戶維持會(huì)話狀態(tài)。領(lǐng)域?qū)?其實(shí)體包處理控制請(qǐng)求,中介者包用于創(chuàng)建一個(gè)協(xié)調(diào)實(shí)體類和基礎(chǔ)類的通信通道?;A(chǔ)層:負(fù)責(zé)與數(shù)據(jù)庫和Web服務(wù)的所有通信。1024.3PCMEF框架七大原則向下依賴性原則向上通知原則相鄰?fù)ㄐ旁瓌t顯式關(guān)聯(lián)原則循環(huán)消除原則類命名原則相識(shí)包原則1034.3PCMEF框架擴(kuò)展PCMEF框架:PCBMER框架

PCBMER代表著表示、控制器、Bean、中介者、實(shí)體、資源(presentation-control-bean-mediator-entity-resource)104PCBMER框架PCBMER框架的層次不是嚴(yán)格線性的,上層可以依賴多個(gè)相鄰下層。bean層:表示那些預(yù)先確定要呈現(xiàn)在用戶界面上的數(shù)據(jù)類和值對(duì)象。除了用戶輸入外,bean數(shù)據(jù)由實(shí)體對(duì)象(實(shí)體層)創(chuàng)建。表示層:表示屏幕以及呈現(xiàn)bean對(duì)象的UI對(duì)象??刂破鲗樱罕硎緫?yīng)用邏輯。實(shí)體層:響應(yīng)控制器和中介者。中介者層:建立了充當(dāng)實(shí)體類和資源類媒介的通信管道。資源層:負(fù)責(zé)所有與外部持久數(shù)據(jù)資源(數(shù)據(jù)庫、Web服務(wù)等)的通信。1054體系結(jié)構(gòu)框架體系結(jié)構(gòu)框架概述模型--視圖--控制器框架(MVC框架)表示--控制–中介者--實(shí)體–基礎(chǔ)框架(PCMEF框架)J2EE框架1064.4J2EE框架J2EE的核心體系結(jié)構(gòu)在MVC框架的基礎(chǔ)上進(jìn)行擴(kuò)展得到的。1074.4J2EE框架J2EE框架是分層結(jié)構(gòu)中間3層(表示層,業(yè)務(wù)層,集成層)包含應(yīng)用程序構(gòu)件??蛻魧雍唾Y源層處于應(yīng)用程序的外圍。

1084.4J2EE框架客戶層用戶通過客戶層與系統(tǒng)交互。該層可以是各種類型的客戶端??删幊炭蛻舳耍夯贘avaSwing的客戶端或applet瀏覽器客戶端:純Web和WML移動(dòng)客戶端等。

1094.4J2EE框架資源層企業(yè)數(shù)據(jù)庫電子商務(wù)解決方案中的外部企業(yè)系統(tǒng)外部SOA服務(wù)數(shù)據(jù)可以分布在多個(gè)服務(wù)器上1104.4J2EE框架表示層也稱為Web層或服務(wù)器端表示層。用戶通過表示層來訪問應(yīng)用程序。在基于Web的應(yīng)用系統(tǒng)中,表示層由用戶界面代碼和運(yùn)行于Web服務(wù)器或應(yīng)用服務(wù)器上的過程組成。表示層參考了MVC框架,它包括視圖構(gòu)件和控制器構(gòu)件。1114.4J2EE框架業(yè)務(wù)層包含表示層中的控制器構(gòu)件沒有實(shí)現(xiàn)的一部分應(yīng)用邏輯。負(fù)責(zé)確認(rèn)和執(zhí)行企業(yè)范圍內(nèi)的業(yè)務(wù)規(guī)則和事務(wù)管理從資源層加載到應(yīng)用程序高速緩存中的業(yè)務(wù)對(duì)象。1124.4J2EE框架集成層負(fù)責(zé)建立和維護(hù)與數(shù)據(jù)源的連接。例如通過JDBC與數(shù)據(jù)庫進(jìn)行通信并進(jìn)行池化。利用Java消息服務(wù)(JMS)與外部系統(tǒng)聯(lián)合。113進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)綜述體系結(jié)構(gòu)風(fēng)格特定領(lǐng)域體系結(jié)構(gòu)體系結(jié)構(gòu)框架映射數(shù)據(jù)流到軟件體系結(jié)構(gòu)1145映射數(shù)據(jù)流到軟件體系結(jié)構(gòu)基本概念變換分析事務(wù)分析小結(jié)1155.1基本概念1165.1基本概念數(shù)據(jù)流的種類變換流事務(wù)流1175.1.1變換流變換流(TransformFlow)118變換流輸入流:信息沿著各種將外部數(shù)據(jù)變換為內(nèi)部形式的路徑進(jìn)入系統(tǒng),這些路徑被標(biāo)識(shí)為輸入流。輸出流:輸入數(shù)據(jù)通過“變換中心”,并沿著各種路徑流出軟件,這些流出數(shù)據(jù)被稱為輸出流。變換流:軟件系統(tǒng)的數(shù)據(jù)流動(dòng)以一種順序的方式沿著一條或僅僅很少的幾條“直線”路徑進(jìn)行5.1.1變換流1195.1.1變換流1205.1.1事務(wù)流事務(wù)流擁有事務(wù)中心,它是發(fā)射出很多動(dòng)作的信息流中心。1211225.2變換分析按照變換分析方法對(duì)DFD進(jìn)行變換,可以得到軟件系統(tǒng)的體系結(jié)構(gòu)圖。1235.2變換分析變換分析方法1245.2變換分析舉例:汽車數(shù)字儀表板的設(shè)計(jì)功能通過模-數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理機(jī)接口;在發(fā)光二極管面板上顯示數(shù)據(jù);指示每小時(shí)英里數(shù)(mph),行駛的里程,每加侖油行駛的英里數(shù)(mpg)等等;指示加速或減速;如果車速超過55mph,則發(fā)出警告鈴聲。125汽車數(shù)字儀表板的設(shè)計(jì)第一步:DFD的分界,先分出I、P、O三塊126燃料流傳感器信號(hào)SPS旋轉(zhuǎn)信號(hào)讀旋轉(zhuǎn)信號(hào)收集和求平均確定加/減速轉(zhuǎn)換成轉(zhuǎn)/分計(jì)算里程計(jì)算mph,超速值產(chǎn)生加/減速顯示計(jì)算燃料消耗計(jì)算gph讀和校核產(chǎn)生mpg顯示產(chǎn)生mph顯示發(fā)出鈴聲產(chǎn)生里程顯示SPS

SPS箭頭指示燃燒流上箭頭水平線下箭頭rpmrpmgphmphmpgmph超速值英里顯示鈴聲mph顯示mpg顯示127汽車數(shù)字儀表板的設(shè)計(jì)完成一級(jí)分解128MPIO129汽車數(shù)字儀表板的設(shè)計(jì)映射:每個(gè)處理直接對(duì)應(yīng)一個(gè)下層模塊。P:由邊界向回溯,將每個(gè)遇到的處理器映成相應(yīng)的層模塊。I:由邊界向外推,方法與類似OIADCBMICBDA130汽車數(shù)字儀表板的設(shè)計(jì)未精化的輸入結(jié)構(gòu)131汽車數(shù)字儀表板的設(shè)計(jì)未精化的變換結(jié)構(gòu)132汽車數(shù)字儀表板的設(shè)計(jì)未精化的輸出結(jié)構(gòu)133汽車數(shù)字儀表板的設(shè)計(jì)數(shù)字儀表板控制數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動(dòng)儀表板接收傳感器信號(hào)計(jì)算gph讀燃料流轉(zhuǎn)換成rpm收集sps讀旋轉(zhuǎn)信號(hào)確定加/減速計(jì)算mph計(jì)算mpg計(jì)算里程加/減速顯示顯示mpg顯示mph顯示里程發(fā)出鈴聲發(fā)光二極管顯示1345映射數(shù)據(jù)流到軟件體系結(jié)構(gòu)基本概念變換分析事務(wù)分析小結(jié)1355.3事務(wù)分析與變換分析的主要區(qū)別在于,由DFD生成軟件結(jié)構(gòu)的映射方法不同。1361375.4小結(jié)映射數(shù)據(jù)流到軟件體系結(jié)構(gòu)的基本步驟138139Q&APractice,Practice,andPractice1401.2體系結(jié)構(gòu)定義體系結(jié)構(gòu)尚處在發(fā)展期,對(duì)于其定義,目前學(xué)術(shù)界和工業(yè)界尚未形成統(tǒng)一意見,不同學(xué)者有不同看法。以下介紹幾種具有代表性的定義。

Booch&Rumbaugh&Jacobson定義

Bass定義Shaw定義Garlan&Shaw模型Perry&Wolf模型

Garlan&Perry定義

Soni&Nord&HofmeisterBoehm模型

IEEE軟件工程標(biāo)準(zhǔn)詞匯中的定義

教材的定義

10種1411.2體系結(jié)構(gòu)定義Booch&Rumbaugh&Jacobson定義體系

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論