![機(jī)械設(shè)計(jì)及理論論文_第1頁(yè)](http://file4.renrendoc.com/view/8d11939c6bd59c1abd868fa6ce17c1a2/8d11939c6bd59c1abd868fa6ce17c1a21.gif)
![機(jī)械設(shè)計(jì)及理論論文_第2頁(yè)](http://file4.renrendoc.com/view/8d11939c6bd59c1abd868fa6ce17c1a2/8d11939c6bd59c1abd868fa6ce17c1a22.gif)
![機(jī)械設(shè)計(jì)及理論論文_第3頁(yè)](http://file4.renrendoc.com/view/8d11939c6bd59c1abd868fa6ce17c1a2/8d11939c6bd59c1abd868fa6ce17c1a23.gif)
![機(jī)械設(shè)計(jì)及理論論文_第4頁(yè)](http://file4.renrendoc.com/view/8d11939c6bd59c1abd868fa6ce17c1a2/8d11939c6bd59c1abd868fa6ce17c1a24.gif)
![機(jī)械設(shè)計(jì)及理論論文_第5頁(yè)](http://file4.renrendoc.com/view/8d11939c6bd59c1abd868fa6ce17c1a2/8d11939c6bd59c1abd868fa6ce17c1a25.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、分類(lèi)號(hào)密級(jí)UDC碩士學(xué)位論文企業(yè)級(jí)應(yīng)用中面向?qū)ο罂蚣艿难芯繉W(xué)位申請(qǐng)人:xxx學(xué)科專(zhuān)業(yè):機(jī)械設(shè)計(jì)及理論指導(dǎo)教師:xxx論文答辯日期2005年月日學(xué)位授予日期答辯委員會(huì)主席評(píng)閱人AThesisSubmittedinPartialFulfillmentoftheRequirementsfortheDegreeofMasterofEngineeringResearchonObject-OrientedFrameworkofEnterpriseApplicationCandidate:FanJuyiMajor:MechanicalDesign&TheorySupervisor:Prof.HuYujinH
2、uazhongUniversityofScienceandTechnologyWuhan430074,P.R.ChinaMay,2004 摘要軟件復(fù)用是在軟件開(kāi)發(fā)中避免重復(fù)勞動(dòng)的解決方案。通過(guò)軟件復(fù)用,可以提高軟件開(kāi)發(fā)的效率和質(zhì)量。近十幾年來(lái),面向?qū)ο蠹夹g(shù)出現(xiàn)并逐步成為主流技術(shù),為軟件復(fù)用提供了基本的技術(shù)支持。軟件復(fù)用研究重新成為熱點(diǎn),被視為解決軟件危機(jī),提高軟件生產(chǎn)效率和質(zhì)量的現(xiàn)實(shí)可行的途徑??蚣芗夹g(shù)的發(fā)展使軟件復(fù)用技術(shù)達(dá)到了一個(gè)新的階段,同時(shí),企業(yè)級(jí)應(yīng)用的發(fā)展對(duì)軟件復(fù)用技術(shù)提出了需求,并為軟件復(fù)用技術(shù)提供了新的實(shí)踐環(huán)境??蚣苁且粋€(gè)軟件產(chǎn)品的半成品,它含可變和不變部分,通過(guò)對(duì)可變部分的定制得
3、到不同的應(yīng)用系統(tǒng)。由于當(dāng)前通用的EJB是面向事務(wù)的重量級(jí)框架,本文提出了一種輕量級(jí)的面向領(lǐng)域模型的框架。本文以企業(yè)級(jí)應(yīng)用和軟件復(fù)用技術(shù)為背景,提出了企業(yè)級(jí)應(yīng)用的框架模型,闡述了框架的設(shè)計(jì)、算法以及實(shí)現(xiàn)。文章主要包括以下幾點(diǎn):首先,講述現(xiàn)有程序開(kāi)發(fā)的問(wèn)題,提出采用框架技術(shù)的必要性。接著,對(duì)面向?qū)ο罂蚣芎驮O(shè)計(jì)模式進(jìn)行了全面的探討。然后,通過(guò)抽象業(yè)務(wù)系統(tǒng)中核心的組件,定義組件之間的協(xié)作規(guī)約,實(shí)現(xiàn)一個(gè)系統(tǒng)的框架,并描述用C+平臺(tái)實(shí)現(xiàn)框架的過(guò)程。最后,用一個(gè)實(shí)例驗(yàn)證了框架的可行性和有效性。關(guān)鍵詞:企業(yè)級(jí)應(yīng)用,軟件復(fù)用,框架ABSTRACTSoftwarereuseoffersasolutiontoeli
4、minaterepeatedworkandimproveefficiencyandqualityinthesoftwaredevelopment.Intherecenttenyears,object-orientedtechnologyhasappearedandbecomeamainstreamtechnology,therebyprovidingfundamentaltechnologysupportforsoftwarereuse.Softwarereuseregainsmoreattentioninsoftwareengineeringresearchandisconsideredap
5、racticalandfeasibleapproachtosolvingthesoftwarecrisis.Itcanimprovesoftwareproductivityandquality.Frameworktechnologyadvancestheresearchofsoftwarereuse.ThedevelopmentofEnterpriseApplicationneedthesoftwarereuse,anditgivesanewbackgroundtosoftwarereuse.Frameworkisageneraldesignofsomeapplications,itcompr
6、isesvariableandconstantparts.Wecangetaspecificapplicationbyspecifyingthevariableparts.ThepopularframeworkisEJB,butitistransaction-orientedandheavyweight.Sothisdissertationputforwardalightweightframeworkwhichisdomain-oriented.BasedonEnterpriseApplicationandsoftwarereuse,thisdissertationpresentaframew
7、orkofenterpriseapplication,andexpounditstheory,design,algorithmsandimplementation.Thisdissertationincludesseveralaspectsasfollows:Firstly,depicttheproblemexistinginthesoftwaredevelopmentanddemonstratethenecessityofusingframeworktechnology.Then,discusstheobject-orientedframeworkanddesignpatternindeta
8、il.Next,implementaframeworkofapplicationbyabstractingkeycomponentsofEnterpriseApplicationanddefiningagreementamongcomponentsanddepictthedetailoftheframeworkimplementationusingC+.Finally,weuseanexampletoprovevalidityoftheframework.KeyWords:EnterpriseApplication,softwarereuse,frameworktechnology目錄TOC
9、o 1-5 h z摘要3目錄5第一章緒論71.1研究背景71.2國(guó)內(nèi)外的現(xiàn)狀和發(fā)展趨勢(shì)71.3論文內(nèi)容及結(jié)構(gòu)10第二章框架122.1框架的定義122.2框架的特征122.3框架的分類(lèi)132.4與其它面向?qū)ο蠹夹g(shù)的比較142.5框架的開(kāi)發(fā)方法172.6基于框架的開(kāi)發(fā)(使用框架)192.7框架文檔202.8本章小結(jié)20第三章設(shè)計(jì)模式223.1設(shè)計(jì)模式的概念223.2設(shè)計(jì)模式的分類(lèi)233.3設(shè)計(jì)模式對(duì)框架影響的總結(jié)253.4本章小結(jié)26第四章企業(yè)級(jí)應(yīng)用框架274.1框架的層次結(jié)構(gòu)274.2框架組成與設(shè)計(jì)304.3框架關(guān)鍵技術(shù)324.4本章小結(jié)35第五章框架的應(yīng)用365.1數(shù)據(jù)庫(kù)及其數(shù)據(jù)表的建立365
10、.2工程的建立375.3實(shí)現(xiàn)具體的數(shù)據(jù)庫(kù)服務(wù)層385.4實(shí)現(xiàn)業(yè)務(wù)對(duì)象415.5實(shí)現(xiàn)數(shù)據(jù)管理對(duì)象455.6實(shí)現(xiàn)界面邏輯495.7應(yīng)用效果525.8本章小結(jié)55第六章結(jié)束語(yǔ)565.1全文總結(jié)565.2展望56參考文獻(xiàn)57第一章緒論1.1研究背景隨著計(jì)算機(jī)技術(shù)的發(fā)展和信息時(shí)代的到來(lái),電子商務(wù),電子政務(wù)得到了蓬勃的發(fā)展,在企業(yè)級(jí)應(yīng)用需求不斷增長(zhǎng)的今天,對(duì)企業(yè)級(jí)應(yīng)用的研究也越來(lái)越深入。作為企業(yè)級(jí)應(yīng)用本身也經(jīng)歷著一種漸進(jìn)式的改變,如今的企業(yè)級(jí)軟件面臨著一些明顯的挑戰(zhàn)。其中包括可伸縮性、安全和處理不同廠(chǎng)商技術(shù)的需要。另一個(gè)重要的問(wèn)題就是,隨著全球信息化的發(fā)展,對(duì)企業(yè)級(jí)應(yīng)用開(kāi)發(fā)的要求與日俱增。這樣眾多的企業(yè)級(jí)
11、應(yīng)用開(kāi)發(fā)使開(kāi)發(fā)人員不堪重負(fù)。那么一個(gè)很現(xiàn)實(shí)的問(wèn)題擺在我們面前:眾多的企業(yè)級(jí)應(yīng)用中是否有相同的部分可以重用?該如何實(shí)現(xiàn)軟件的重用?其實(shí),軟件重用一直存在著軟件開(kāi)發(fā)的過(guò)程中。通過(guò)對(duì)軟件復(fù)用技術(shù)的研究和探討,我們發(fā)現(xiàn)以復(fù)用為目的開(kāi)發(fā)的軟件,不但實(shí)現(xiàn)了代碼的復(fù)用,而且實(shí)現(xiàn)了設(shè)計(jì),分析,以至于測(cè)試的復(fù)用。復(fù)用的概念己經(jīng)得到了廣泛的擴(kuò)展。軟件復(fù)用是縮短企業(yè)級(jí)應(yīng)用開(kāi)發(fā)周期,降低開(kāi)發(fā)成本,保證開(kāi)發(fā)成功的最有效的方法。而且軟件復(fù)用思想早已在企業(yè)級(jí)應(yīng)用的開(kāi)發(fā)平臺(tái)中得到了運(yùn)用1。然而,對(duì)小規(guī)模復(fù)用的長(zhǎng)期研究與實(shí)踐表明,小規(guī)模的代碼復(fù)用如類(lèi)、數(shù)據(jù)結(jié)構(gòu)等的復(fù)用,并沒(méi)有給軟件工業(yè)帶來(lái)人們所期望的軟件生產(chǎn)率的大幅度提高、軟
12、件產(chǎn)品質(zhì)量穩(wěn)定可靠的前景。對(duì)于代碼復(fù)用,程序語(yǔ)言并不能很好地支持復(fù)雜軟件特性的描述。隨著軟件系統(tǒng)規(guī)模和復(fù)雜度的日益升級(jí),人們逐漸意識(shí)到,系統(tǒng)總體結(jié)構(gòu)的設(shè)計(jì)和規(guī)范說(shuō)明比算法和數(shù)據(jù)結(jié)構(gòu)重要得多,并認(rèn)為軟件體系結(jié)構(gòu)復(fù)用即框架的研究會(huì)成為提高軟件復(fù)用度的最有希望的途徑2。1.2國(guó)內(nèi)外的現(xiàn)狀和發(fā)展趨勢(shì)1.2.1軟件復(fù)用的趨勢(shì)復(fù)用概念的第一次引用是在1968年NATO軟件工程會(huì)議上,Mellroy的論文“大量生成的軟件構(gòu)件”中。在此之前,子程序的概念也體現(xiàn)了復(fù)用的思想。但其目的是為了節(jié)省當(dāng)時(shí)昂貴的機(jī)器內(nèi)存資源,并不是為了節(jié)省開(kāi)發(fā)軟件所需的人力資源。然而子程序的概念可以用于節(jié)省人力資源的目的,從而出現(xiàn)了通用
13、子程序庫(kù),供程序員在編程時(shí)使用。例如,數(shù)學(xué)程序庫(kù)就是非常成功的子程序復(fù)用的例子。在其后的發(fā)展過(guò)程中,有許多復(fù)用技術(shù)的研究成果和成功的復(fù)用實(shí)踐活動(dòng)3。但是,復(fù)用技術(shù)在整體上對(duì)軟件產(chǎn)業(yè)的影響卻并不盡人意。這是由于技術(shù)方面和非技術(shù)方面的種種因素造成的,其中技術(shù)上的不成熟是一個(gè)主要原因。近十幾年來(lái),面向?qū)ο蠹夹g(shù)出現(xiàn)并逐步成為主流技術(shù)4,為軟件復(fù)用提供了基本的技術(shù)支持56。軟件復(fù)用研究重新成為熱點(diǎn),被視為解決軟件危機(jī),提高軟件生產(chǎn)效率和質(zhì)量的現(xiàn)實(shí)可行的途徑。在具體的軟件開(kāi)發(fā)中,存在不同層次的復(fù)用,它們分別是:代碼級(jí)的復(fù)用組件級(jí)的復(fù)用框架的復(fù)用其中,框架的復(fù)用是軟件復(fù)用的發(fā)展趨勢(shì)7。從現(xiàn)在企業(yè)級(jí)應(yīng)用的實(shí)際
14、開(kāi)發(fā)情況來(lái)看,在當(dāng)今面向?qū)ο蟮能浖_(kāi)發(fā)中獲得最大限度的復(fù)用技術(shù)就是框架復(fù)用8。一個(gè)大的應(yīng)用系統(tǒng)往往可以由多層互相協(xié)作的框架組成9。使用框架,可以獲得代碼重用、設(shè)計(jì)重用、分析重用10。框架能夠重用代碼??梢哉f(shuō),框架是實(shí)現(xiàn)了一個(gè)特定領(lǐng)域的具有相同需求的部分功能,開(kāi)發(fā)具體應(yīng)用系統(tǒng)的人員只需要在其上完成應(yīng)用系統(tǒng)特有的需求功能即可。因此,框架的大部分代碼被重用??蚣苣軌蛑赜迷O(shè)計(jì)。它提供可重用的抽象算法及高層設(shè)計(jì),并能夠?qū)⒋笙到y(tǒng)分解成更小的組件,而且能夠描述組件間的內(nèi)部接口11。這些標(biāo)準(zhǔn)接口使在已有的組件基礎(chǔ)上通過(guò)組裝建立各種各樣的應(yīng)用系統(tǒng)成為可能。只要符合接口定義,新的組件就能插入到框架中,組件設(shè)計(jì)者就
15、能重用框架的設(shè)計(jì)。框架能夠重用分析。所有的人員若按照框架的思想來(lái)分析事務(wù),那么就能將應(yīng)用系統(tǒng)劃分為同樣的組件,采用相似的解決辦法,從而使采用同一框架的分析人員之間能夠進(jìn)行溝通。采用框架技術(shù)進(jìn)行軟件開(kāi)發(fā)的主要特點(diǎn)包括:軟件開(kāi)發(fā)人員主要專(zhuān)注于對(duì)應(yīng)用系統(tǒng)核心業(yè)務(wù)的了解,可以不必了解系統(tǒng)許多的底層實(shí)現(xiàn)細(xì)節(jié),使需求分析更加充分。領(lǐng)域內(nèi)的軟件結(jié)構(gòu)一致性好。建立更加開(kāi)放的系統(tǒng)。重用代碼大大增加,軟件生產(chǎn)的效率和質(zhì)量也得到了提高??蚣苁窃O(shè)計(jì)開(kāi)發(fā)人員經(jīng)驗(yàn)的總結(jié),可以讓那些經(jīng)驗(yàn)豐富的人員去設(shè)計(jì)框架和領(lǐng)域組件,而不必限于低級(jí)的重復(fù)性編程??梢圆捎每焖僭图夹g(shù),從而加快開(kāi)發(fā)。有利于在一個(gè)項(xiàng)目?jī)?nèi)多人協(xié)同工作,利用框架,
16、不同的小組可以專(zhuān)注于白己的任務(wù)。大粒度的重用使得平均開(kāi)發(fā)費(fèi)用降低。開(kāi)發(fā)周期縮短,開(kāi)發(fā)難度減小,系統(tǒng)的維護(hù)費(fèi)用降低,系統(tǒng)的適應(yīng)性、靈活性增強(qiáng)。軟件復(fù)用和企業(yè)級(jí)應(yīng)用企業(yè)級(jí)應(yīng)用一般指企業(yè)級(jí)軟件,有以下幾個(gè)特點(diǎn):含一系列訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的小程序,且這些小程序相對(duì)比較獨(dú)立。包含許多企業(yè)經(jīng)營(yíng)和業(yè)務(wù)的各種數(shù)據(jù)的數(shù)據(jù)庫(kù)。處理各種業(yè)務(wù)的程序可以互操作,能夠有機(jī)地集成在一起。在當(dāng)今的企業(yè)級(jí)應(yīng)用中,軟件復(fù)用技術(shù)被廣泛的應(yīng)用。使用軟件復(fù)用技術(shù),可以使企業(yè)級(jí)應(yīng)用的開(kāi)發(fā)獲得以下好處:加快企業(yè)軟件發(fā)展速度當(dāng)今企業(yè)級(jí)應(yīng)用的需求在頻繁的變化,甚至在一個(gè)項(xiàng)目的進(jìn)行過(guò)程中,企業(yè)的需求都可能發(fā)生變化。那么如何才能適應(yīng)這樣的變化呢?答案是使
17、用軟件復(fù)用技術(shù)。軟件復(fù)用能夠提高軟件生產(chǎn)率,縮短軟件開(kāi)發(fā)周期。軟件復(fù)用能夠支持快速原型設(shè)計(jì),利用可復(fù)用框架可以快速有效的構(gòu)造出應(yīng)用程序的原型,以獲得用戶(hù)對(duì)系統(tǒng)功能的反饋。提供企業(yè)級(jí)應(yīng)用的穩(wěn)定性企業(yè)級(jí)應(yīng)用的一個(gè)特點(diǎn)就是對(duì)高穩(wěn)定性的要求,大多數(shù)企業(yè)的應(yīng)用必須提供24X7小時(shí)的服務(wù)。用可復(fù)用的構(gòu)件構(gòu)造系統(tǒng)時(shí),除了能加快軟件的開(kāi)發(fā)速度外,同時(shí)還為企業(yè)級(jí)應(yīng)用的穩(wěn)定性做出了保障。因?yàn)榭蓮?fù)用構(gòu)件經(jīng)過(guò)了高度的優(yōu)化,并且在實(shí)踐中經(jīng)過(guò)了考驗(yàn)。由于使用經(jīng)過(guò)考驗(yàn)的構(gòu)件,減少了可能的錯(cuò)誤。提供企業(yè)級(jí)應(yīng)用的伸縮性對(duì)于企業(yè)級(jí)應(yīng)用來(lái)說(shuō),可伸縮性是一個(gè)很重要的指標(biāo)。可伸縮性是指一個(gè)應(yīng)用系統(tǒng)的體系結(jié)構(gòu)能夠在何種程度上滿(mǎn)足用戶(hù)發(fā)展
18、需求的特性。滿(mǎn)足這種不斷變化的需求的辦法就是使用框架技術(shù)。在企業(yè)級(jí)應(yīng)用的開(kāi)發(fā)中,只要開(kāi)發(fā)出可復(fù)用的框架,當(dāng)有新的需求到來(lái)時(shí),我們可以利用已有的框架,就可以開(kāi)發(fā)出新的應(yīng)用??蚣艿默F(xiàn)狀盡管企業(yè)級(jí)應(yīng)用設(shè)計(jì)到非常多的層面,本文將集中研究核心的層次,即業(yè)務(wù)模型框架的實(shí)現(xiàn),現(xiàn)今典型的業(yè)務(wù)模型框架是基于J2EE平臺(tái)的EJB組件12,EJB是面向以事務(wù)為中心的企業(yè)軟件,其核心是事務(wù)13,不是領(lǐng)域模型,也就是說(shuō),在尋求一個(gè)純粹領(lǐng)域模型的框架來(lái)支持應(yīng)用的時(shí)候,EJB組件是不適合的,如果勉強(qiáng)使用,也就引起對(duì)EJB的種種誤解,典型的如下:EJB技術(shù)的一項(xiàng)最根本的技術(shù)缺陷來(lái)自于對(duì)象序列化技術(shù),對(duì)象序列化技術(shù)是EJB跨平
19、臺(tái)通訊的基礎(chǔ),所有的EJB之間通訊都依賴(lài)了對(duì)象序列化技術(shù)的應(yīng)用。從設(shè)計(jì)架構(gòu)上看,這是個(gè)簡(jiǎn)單清晰的設(shè)計(jì),通過(guò)對(duì)象的序列化實(shí)現(xiàn)了對(duì)象在多個(gè)進(jìn)程之間的復(fù)制傳遞。但非常遺憾的是,設(shè)計(jì)者對(duì)于Java平臺(tái)對(duì)于對(duì)象序列化的實(shí)現(xiàn)的考慮卻做的很草率,對(duì)象序列化的性能很差14。另一項(xiàng)EJB技術(shù)更為嚴(yán)重的缺陷來(lái)自于RMI(遠(yuǎn)程方法調(diào)用),EJB更限定必須遵守COBRA規(guī)范的RMI-IIOP技術(shù),實(shí)際上我質(zhì)疑所有采用分布式對(duì)象調(diào)用的技術(shù),包括COBRA、COM+、RMI等,這種技術(shù)的根本原理上都是一樣的,通過(guò)本地的一個(gè)遠(yuǎn)程對(duì)象代理,通過(guò)網(wǎng)絡(luò)上的多次通訊實(shí)現(xiàn)對(duì)遠(yuǎn)程對(duì)象的方法調(diào)用,這種設(shè)計(jì)架構(gòu)的初衷是隱藏對(duì)象的具體位置,
20、可以讓對(duì)象使用者不用關(guān)心對(duì)象的實(shí)際位置,但是這種方法的實(shí)現(xiàn)性能極差,像COBRA這種系統(tǒng)的設(shè)計(jì)者當(dāng)初就沒(méi)有把性能問(wèn)題作為一個(gè)重要問(wèn)題去考慮,但正是性能問(wèn)題,導(dǎo)致隱藏對(duì)象位置這個(gè)目的實(shí)際上也并沒(méi)有達(dá)到,因?yàn)橥ㄟ^(guò)通訊訪(fǎng)問(wèn)遠(yuǎn)程對(duì)象的性能太差,因此使用者處于系統(tǒng)性能的考慮不得不考慮遠(yuǎn)程對(duì)象和本地對(duì)象的區(qū)別。更可悲的是,EJB的上層設(shè)計(jì)上也沒(méi)有能夠把遠(yuǎn)程對(duì)象和本地對(duì)象的差別消除,用EJB設(shè)計(jì)人員自己的說(shuō)法,遠(yuǎn)程對(duì)象調(diào)用和本地對(duì)象調(diào)用在語(yǔ)義上就無(wú)法統(tǒng)一起來(lái)。既然上層就必須區(qū)分遠(yuǎn)程對(duì)象和本地對(duì)象,那底層技術(shù)上就完全沒(méi)有必要采用這種性能很差的設(shè)計(jì)了。從COBRA開(kāi)始,這種分布式對(duì)象訪(fǎng)問(wèn)的技術(shù)就是不成熟的,EJ
21、B墨守了分布式對(duì)象技術(shù)的陳規(guī),導(dǎo)致自己背上了沉重的包袱,使用者必須很小心地使用EJB技術(shù),稍有不慎就會(huì)導(dǎo)致系統(tǒng)性能大幅度下降。與前面提到的兩個(gè)根本缺陷相比,EJB技術(shù)的其他方面的問(wèn)題就顯得微不足道了,比如EJB本身定義的復(fù)雜性,實(shí)體Bean的性能問(wèn)題等等,相信這些問(wèn)題一定可以解決,或者很容易被新的設(shè)計(jì)替換掉,比如復(fù)雜性問(wèn)題可以通過(guò)工具解決,實(shí)體Bean可以用輕量級(jí)的對(duì)象持久層代替等等。實(shí)際情況是,所有這些問(wèn)題都是開(kāi)發(fā)人員試圖使用EJB并沒(méi)有提供的領(lǐng)域模型,輕量級(jí)的業(yè)務(wù)模型只能由開(kāi)發(fā)人員自己定制新的框架來(lái)完成15。缺失了輕量級(jí)的領(lǐng)域模型框架,EJB3標(biāo)準(zhǔn)似乎在這個(gè)方向上竭盡全力,但直到現(xiàn)在,市場(chǎng)
22、上仍未發(fā)現(xiàn)成熟的產(chǎn)品。論文內(nèi)容及結(jié)構(gòu)本論文以軟件復(fù)用思想為指導(dǎo),來(lái)探討企業(yè)級(jí)應(yīng)用中通用框架的實(shí)現(xiàn),并用C+構(gòu)建了一個(gè)可復(fù)用框架(framework框架),這個(gè)框架為開(kāi)發(fā)企業(yè)級(jí)應(yīng)用的編程人員提供了一個(gè)方便靈活,可擴(kuò)展的平臺(tái)。本論文主要研究了以下內(nèi)容:分析了軟件復(fù)用的發(fā)展趨勢(shì)以及軟件復(fù)用在企業(yè)級(jí)應(yīng)用的狀況,提出構(gòu)建企業(yè)級(jí)應(yīng)用框架的必要性?;谲浖?fù)用的思想,為企業(yè)應(yīng)用系統(tǒng)設(shè)計(jì)一個(gè)通用的框架,從對(duì)企業(yè)應(yīng)用的分析中抽象出對(duì)象及其關(guān)系的概念,并根據(jù)功能的不同進(jìn)行邏輯分層。給出了本文框架的所有類(lèi)及其接口,實(shí)現(xiàn)了框架模型。在框架模型的基礎(chǔ)上,研究了設(shè)計(jì)模式以及其它面向?qū)ο蠹夹g(shù)在框架的設(shè)計(jì)和實(shí)現(xiàn)中的運(yùn)用。結(jié)合
23、實(shí)際的應(yīng)用系統(tǒng),應(yīng)用框架模型進(jìn)行開(kāi)發(fā),通過(guò)簡(jiǎn)潔的實(shí)現(xiàn)代碼說(shuō)明了此框架的可行性及高效性。第二章介紹了框架的概念,特征,開(kāi)發(fā)方法,和其它復(fù)用技術(shù)的比較,框架文檔。第三章介紹了設(shè)計(jì)模式以及其對(duì)框架開(kāi)發(fā)的影響。第四章是企業(yè)應(yīng)用系統(tǒng)的框架設(shè)計(jì)和實(shí)現(xiàn)問(wèn)題。第五章以此框架實(shí)現(xiàn)CRM系統(tǒng)中的一個(gè)模塊,驗(yàn)證了此框架的可用性。第六章總結(jié)本文的研究?jī)?nèi)容,指出了進(jìn)一步的研究方向。第二章框架2.1框架的定義最早的框架概念起源于Smalltalk環(huán)境,Smalltalk-80的用戶(hù)接口框架,就是ModelView-Controller(MVC),可能是最早被廣泛使用的框架。當(dāng)Apple公司開(kāi)發(fā)了支持基于Macintosh
24、的應(yīng)用的用戶(hù)接口框架后,以及Interviews和ET+的用戶(hù)接口框架也被開(kāi)發(fā)和使用后,框架逐漸被人們認(rèn)識(shí)和重視??蚣芤脖粦?yīng)用到其他領(lǐng)域如操作系統(tǒng)等。Taligent公司成立(1992年)后,致力于開(kāi)發(fā)一個(gè)基于框架的完全面向?qū)ο蟮牟僮飨到y(tǒng),它發(fā)布了很多用于加快應(yīng)用開(kāi)發(fā)的工具,包含了一百多個(gè)面向?qū)ο蟮目蚣?。框架也隨之得到了更多設(shè)計(jì)人員的關(guān)注、用框架開(kāi)發(fā)模式,使軟件開(kāi)發(fā)更象一個(gè)工業(yè)的生產(chǎn)過(guò)程。JohnsonandFoote,DesigningReusableClasses中的定義:Aframeworkisasetofclassesthatembodiesanabstractdesignforsol
25、utionstoafamilyofrelatedproblems.這是披引用得最多的關(guān)于框架的定義。經(jīng)過(guò)精心設(shè)計(jì)的框架,可以方便快速的擴(kuò)展功能,提取通用功能,而且改善性能,提高軟件的穩(wěn)定性,使維護(hù)更容易和方便??蚣懿粌H僅是一些類(lèi)和程序的集合,它來(lái)自于對(duì)象之問(wèn)內(nèi)在的聯(lián)系。是這些對(duì)象的內(nèi)在天然聯(lián)系,才使得框架發(fā)揮作用,使開(kāi)發(fā)者只用擴(kuò)展框架行為就可以用來(lái)適應(yīng)商業(yè)需求16。2.2框架的特征模塊化框架通過(guò)封裝多變的實(shí)現(xiàn)細(xì)節(jié)于固定的接口之后,提高了軟件的模塊性??蚣芡ㄟ^(guò)將把由設(shè)計(jì)和實(shí)現(xiàn)的變化所帶來(lái)的影響進(jìn)行局部化來(lái)改善應(yīng)用程序的質(zhì)量。這有助于理解和維護(hù)現(xiàn)有的軟件。可復(fù)用性框架提供的固定接口被定義成類(lèi)屬組件
26、,并可被用來(lái)創(chuàng)造新的應(yīng)用程序。這樣就提高了可復(fù)用性。框架的可復(fù)用性利用了有經(jīng)驗(yàn)的開(kāi)發(fā)者在該特定領(lǐng)域中的專(zhuān)業(yè)知識(shí)和開(kāi)發(fā)努力,避免了后繼開(kāi)發(fā)人員針對(duì)該領(lǐng)域中的同一問(wèn)題和需求做重復(fù)的勞動(dòng)??蚣芙M件的復(fù)用能大幅度的提高后繼開(kāi)發(fā)人員的產(chǎn)量,同時(shí)還能改善軟件的質(zhì)量、性能和可靠性。擴(kuò)展性框架通過(guò)提供顯式的鉤子方法(HookMethods),允許應(yīng)用程序來(lái)擴(kuò)展其固定的接口,這樣就提高了框架的擴(kuò)展性。鉤子方法系統(tǒng)的為框架的固定的接口和由于不同的需求而產(chǎn)生的應(yīng)用程序行為之問(wèn)進(jìn)行解耦??蚣艿倪@種擴(kuò)展性對(duì)于保證及時(shí)地定制新的應(yīng)用程序服務(wù)和特征是十分必要的。反向控制框架是一種運(yùn)行時(shí)體系結(jié)構(gòu),這種結(jié)構(gòu)被稱(chēng)為“反向控制”。
27、它使得標(biāo)準(zhǔn)的應(yīng)用程序過(guò)程能被可由框架派發(fā)機(jī)制激活的事件處理對(duì)象一步步地定制。當(dāng)事件發(fā)生時(shí),框架的派發(fā)器被事件處理對(duì)象的鉤子方法調(diào)用,對(duì)事件作出反應(yīng),執(zhí)行該事件的特定的代碼過(guò)程。反向控制允許框架(而不是應(yīng)用程序)決定何種方法被激活來(lái)相應(yīng)外部事件。白盒框架和黑盒框架白盒框架在很大程度上依靠面向?qū)ο笳Z(yǔ)言特征如繼承和動(dòng)態(tài)綁定來(lái)獲得可擴(kuò)展性。在這種框架中,已有的功能被服用和擴(kuò)展,通過(guò);(D從框架基類(lèi)繼承得到新的子類(lèi);(2)重載預(yù)定義的鉤子方法。白盒框架需要應(yīng)用程序開(kāi)發(fā)人員對(duì)框架的內(nèi)部結(jié)構(gòu)非常的熟悉。黑盒框架通過(guò)為組件定義接口,使其能通過(guò)對(duì)象組合技術(shù)嵌入到框架中來(lái)獲得擴(kuò)展性。在這種框架中,已有的功能被復(fù)用
28、和擴(kuò)展,通過(guò):(1)一致的接口規(guī)范來(lái)定義組件;(2)使用設(shè)計(jì)模式將組件集成到框架中去。與白盒框架不同,黑盒框架使用組合和代理而不是繼承,所以黑盒框架比白黑框架更容易使用和擴(kuò)展。但是,黑盒框架開(kāi)發(fā)起來(lái)更加困難,需要框架的開(kāi)發(fā)者定義良好的接口和鉤子方法。2.3框架的分類(lèi)可以按不同的方法對(duì)框架進(jìn)行分類(lèi),最重要的方法有:框架所描述的問(wèn)題領(lǐng)域和框架的使用方式。根據(jù)框架描述的問(wèn)題領(lǐng)域,我們可以將框架大致分為三種類(lèi)型:應(yīng)用程序框架應(yīng)用程序框架旨在提供一個(gè)全范圍的、功能性的創(chuàng)建一個(gè)應(yīng)用所需的基礎(chǔ)設(shè)施。這個(gè)功能集通常涉及很多方面,例如用戶(hù)界面GUI、文檔、數(shù)據(jù)庫(kù)等。一個(gè)最典型的應(yīng)用程序框架的例子就是C+類(lèi)庫(kù)MF
29、C,MFC被用來(lái)構(gòu)建MSWindows上的應(yīng)用程序。支持框架支持框架通常定位于非常專(zhuān)業(yè)的計(jì)算機(jī)相關(guān)的領(lǐng)域,例如存儲(chǔ)管理或者文件系統(tǒng)。對(duì)于這類(lèi)領(lǐng)域的支持有利于簡(jiǎn)化程序的開(kāi)發(fā)。典型的支持框架被用在應(yīng)用系統(tǒng)和應(yīng)用程序框架之間的連接17。領(lǐng)域框架領(lǐng)域框架捕獲了特定問(wèn)題領(lǐng)域的專(zhuān)業(yè)知識(shí)和經(jīng)驗(yàn):如制造控制框架和多媒體框架就是領(lǐng)域框架的例子。領(lǐng)域框架是目前框架技術(shù)運(yùn)用的熱點(diǎn)。同一領(lǐng)域中的系統(tǒng)的需求和功能必然具有顯著的共性,其實(shí)現(xiàn)也常常具有共性。領(lǐng)域模型描述了需求方面的共性。對(duì)于己生產(chǎn)了許多系統(tǒng)或更新較為頻繁的領(lǐng)域,建立基于共同功能的軟件框架將由于促進(jìn)軟件復(fù)用而得到顯著的回報(bào)18。如果說(shuō)領(lǐng)域模型描述了一系列問(wèn)題
30、,領(lǐng)域軟件框架則描述了一系列解決方案、將領(lǐng)域分析的產(chǎn)品轉(zhuǎn)化并映射到一個(gè)實(shí)現(xiàn)的構(gòu)架。領(lǐng)域框架并不是單個(gè)系統(tǒng)的表示,而是能夠適應(yīng)領(lǐng)域中多個(gè)系統(tǒng)的需求的一個(gè)高層次的設(shè)計(jì)。他包含組件以及組件互連的規(guī)則。當(dāng)開(kāi)發(fā)本領(lǐng)域的一個(gè)新系統(tǒng)時(shí),滿(mǎn)足當(dāng)前系統(tǒng)需求特點(diǎn)的系統(tǒng)結(jié)構(gòu),可以使用這些構(gòu)件按照規(guī)則構(gòu)成。一些領(lǐng)域分析方法包括了生成通用軟件框架的步驟,如ODM的說(shuō)明模型和FODA的特征模型,這對(duì)開(kāi)發(fā)一個(gè)通用體系結(jié)構(gòu)通常有指導(dǎo)作用。根據(jù)使用框架的方式,可以將框架分為兩類(lèi):體系結(jié)構(gòu)驅(qū)動(dòng)框架。這種方法主要依賴(lài)于繼承機(jī)制:框架使用者通過(guò)繼承框架中的類(lèi)和重載類(lèi)中的操作來(lái)生成應(yīng)用程序。這種方法的主要缺點(diǎn)是框架使用者不得不自己去實(shí)
31、現(xiàn)該框架中的種種行為,這就意味著要編寫(xiě)大量的代碼。數(shù)據(jù)驅(qū)動(dòng)框架。要使得框架去適應(yīng)應(yīng)用程序的特定需求,這在很大程度上依賴(lài)于對(duì)象組合。這種框架描述了對(duì)象是如何被組合的,但是它的功能在很大程度上取決于框架使用者傳遞到框架中的對(duì)象。所以,數(shù)據(jù)驅(qū)動(dòng)框架易于使用但是功能上有所限制。為了處理使用體系結(jié)構(gòu)驅(qū)動(dòng)和數(shù)據(jù)驅(qū)動(dòng)所帶來(lái)的問(wèn)題,一個(gè)較好的模式是框架以體系結(jié)構(gòu)驅(qū)動(dòng)為基礎(chǔ),又包含數(shù)據(jù)驅(qū)動(dòng)層,從而使得該框架既有良好的擴(kuò)展性,又便于使用。2.4與其它面向?qū)ο蠹夹g(shù)的比較在基于框架的軟件開(kāi)發(fā)中,有一些其它的面向?qū)ο髲?fù)用技術(shù)與框架密切相關(guān),它們是類(lèi)庫(kù)、組件和設(shè)計(jì)模式27。2.4.1框架與類(lèi)庫(kù)類(lèi)庫(kù)是一組相關(guān)的、可復(fù)用的類(lèi)
32、的集合,這些類(lèi)提供了通用的功能。類(lèi)庫(kù)的典型例子如C+的I/O流庫(kù)和標(biāo)準(zhǔn)模板庫(kù)(STL)。類(lèi)庫(kù)強(qiáng)調(diào)的是代碼復(fù)用,它們是面向?qū)ο蟓h(huán)境下的“子程序庫(kù)”。在基于框架的開(kāi)發(fā)過(guò)程中,類(lèi)庫(kù)扮演著重要的角色??蚣芡ǔ㈩?lèi)庫(kù)集成到其內(nèi)部來(lái)簡(jiǎn)化開(kāi)發(fā)工作,并通過(guò)類(lèi)庫(kù)來(lái)完成一些基本的任務(wù)如字符串處理、文件管理等。所有的框架都是類(lèi)庫(kù),但并不是所有的類(lèi)庫(kù)都是框架??蚣芡ㄟ^(guò)下列方式來(lái)擴(kuò)展類(lèi)庫(kù)的功能:框架是包含特定領(lǐng)域?qū)ο篌w系結(jié)構(gòu)和功能的“半成品”??蚣苤械慕M件在一起合作,為一類(lèi)相關(guān)的應(yīng)用程序提供了一個(gè)標(biāo)準(zhǔn)的體系結(jié)構(gòu)骨架,通過(guò)從框架組件繼承和組合可以得到完整的應(yīng)用程序。與之相比,類(lèi)庫(kù)不是針對(duì)特定領(lǐng)域,并只提供較小范圍內(nèi)的復(fù)用
33、。與框架的運(yùn)行時(shí)的“反向控制”相比,類(lèi)庫(kù)則是被動(dòng)的。當(dāng)使用類(lèi)庫(kù)時(shí),需要寫(xiě)應(yīng)用程序的主體并調(diào)用想要復(fù)用的代碼。當(dāng)使用框架時(shí),應(yīng)該復(fù)用應(yīng)用程序的主體,寫(xiě)主體調(diào)用的代碼。如圖2-1所示。圖2-1框架的反向控制基于框架的應(yīng)用開(kāi)發(fā)方法與通常的基于類(lèi)庫(kù)的開(kāi)發(fā)方法主要區(qū)別在于兩點(diǎn)一點(diǎn)是在運(yùn)行時(shí)刻由框架決定和控制應(yīng)用的行為,而基于類(lèi)庫(kù)的應(yīng)用不是。第二框架影響應(yīng)用系統(tǒng)的整個(gè)結(jié)構(gòu),而類(lèi)庫(kù)對(duì)應(yīng)用系統(tǒng)的影響比較小。2.4.2框架與組件組件是自包含的抽象數(shù)據(jù)類(lèi)型(ADT),并能夠被組裝在一起形成完整的程序。組件典型的例子如Microsoft公司的ActiveX和Borland公司的VCL。組件通過(guò)黑盒技術(shù),被設(shè)計(jì)成為定
34、義了一個(gè)相互協(xié)調(diào)的操作的集合,該操作集可以通過(guò)在語(yǔ)法上一致的接口來(lái)訪(fǎng)問(wèn)20。組件和框架是不同的,但是相互協(xié)作的技術(shù)。首先,框架為組件提供了一個(gè)可以復(fù)用的環(huán)境。每一個(gè)組件在開(kāi)發(fā)時(shí)都假定了它的存在環(huán)境,如果組件假定的環(huán)境不同,則它們就不可能在一起很好的工作;而框架則為組件提供了一個(gè)標(biāo)準(zhǔn)的環(huán)境來(lái)處理錯(cuò)誤、交換數(shù)據(jù)、激活彼此間的互操作。通常所謂的“組件系統(tǒng)”如OLE、OpenDoc和Beans,實(shí)際上是框架21,它們解決了在構(gòu)造復(fù)雜文檔和其它組合對(duì)象時(shí)所帶來(lái)的標(biāo)準(zhǔn)問(wèn)題??蚣芘c組件在一起協(xié)同工作的另一種方式就是框架使得開(kāi)發(fā)新的組件變得更容易。實(shí)際上,不管組件庫(kù)被設(shè)計(jì)得如何的優(yōu)秀,應(yīng)用程序的功能看起來(lái)還是
35、無(wú)法完全滿(mǎn)足,從而必須開(kāi)發(fā)新的組件,框架則提供了設(shè)計(jì)新組件的規(guī)范和實(shí)現(xiàn)它們的模板22。與框架相比,組件是松耦合的,并支持二進(jìn)制級(jí)別的復(fù)用。在基于框架的開(kāi)發(fā)過(guò)程中,組件可以被黑盒框架用作為可嵌入的策略模式。通常,框架被用來(lái)簡(jiǎn)化體系結(jié)構(gòu)和中間件的開(kāi)發(fā),而組件被用來(lái)簡(jiǎn)化最終用戶(hù)程序的開(kāi)發(fā)23。2.4.3框架與設(shè)計(jì)模式設(shè)計(jì)模式代表了在軟件開(kāi)發(fā)過(guò)程中特定場(chǎng)景下解決重復(fù)發(fā)生的問(wèn)題的方案。每一個(gè)設(shè)計(jì)模式都集中于一個(gè)特定的面向?qū)ο笤O(shè)計(jì)問(wèn)題或設(shè)計(jì)要點(diǎn),描述了什么時(shí)候使用它,以及使用的效果和如何取舍。一個(gè)使用設(shè)計(jì)模式的框架比不用設(shè)計(jì)模式的框架更可能獲得高層次的設(shè)計(jì)復(fù)用和代碼復(fù)用。它們最主要的不同在于如下三個(gè)方面:
36、(1)設(shè)計(jì)模式比框架更抽象框架能夠用代碼表示,而設(shè)計(jì)模式只有其實(shí)例才能表示為代碼。框架的威力在于它們能夠用程序設(shè)計(jì)語(yǔ)言編寫(xiě),不僅可以被學(xué)習(xí),還能被直接執(zhí)行和復(fù)用。從這個(gè)意義來(lái)說(shuō),框架是個(gè)物理實(shí)體,而設(shè)計(jì)模式是個(gè)邏輯實(shí)體,框架可以看成是一個(gè)或多個(gè)設(shè)計(jì)模式解決方案的物理實(shí)現(xiàn),而模式則指導(dǎo)如何來(lái)實(shí)現(xiàn)這些方案。(2)設(shè)計(jì)模式是比框架更小的體系結(jié)構(gòu)元素框架可以含有若干個(gè)設(shè)計(jì)模式,反之不行??蚣鼙仍O(shè)計(jì)模式更加特例化框架總是針對(duì)一個(gè)特定的應(yīng)用領(lǐng)域,而設(shè)計(jì)模式可以被用于任何應(yīng)用。在實(shí)際的開(kāi)發(fā)過(guò)程中,以上所討論的復(fù)用技術(shù)經(jīng)常是聯(lián)系在一起來(lái)完成應(yīng)用程序的開(kāi)發(fā)工作的。如圖2-2所示。圖2-2基于框架的應(yīng)用程序分解2
37、.5框架的開(kāi)發(fā)方法1.基于應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)的框架開(kāi)發(fā)流程(見(jiàn)圖2-3)圖2-3基于應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)的框架開(kāi)發(fā)流程圖2.基于領(lǐng)域分析的框架開(kāi)發(fā)流程(見(jiàn)圖2-4)圖2-4基于領(lǐng)域分析的框架開(kāi)發(fā)流程圖3.使用設(shè)計(jì)模式的框架開(kāi)發(fā)流程24(見(jiàn)圖2-5)4.通常使用的框架開(kāi)發(fā)方法25(見(jiàn)圖2-6)問(wèn)題領(lǐng)域分析。通過(guò)一個(gè)以上的領(lǐng)域內(nèi)應(yīng)用開(kāi)發(fā),提出關(guān)鍵的抽象層利用關(guān)鍵抽象開(kāi)發(fā)第一版的框架?;谶@個(gè)框架,開(kāi)發(fā)一個(gè)或若干個(gè)應(yīng)用,測(cè)試這個(gè)框架是否可重用。集中開(kāi)發(fā)過(guò)程中產(chǎn)生的問(wèn)題,開(kāi)發(fā)下一個(gè)版本的框架。重復(fù)3-4,一個(gè)成熟的框架發(fā)布。愎用幵搜御試世卑用經(jīng)牡沁襯維護(hù)架圖2-6通常使用的框架開(kāi)發(fā)方法圖2.6基于框架的開(kāi)發(fā)(使用框
38、架)從開(kāi)發(fā)過(guò)程看,基于框架的軟件開(kāi)發(fā)方法是采用自頂向下設(shè)計(jì),自底向上構(gòu)成的方法。設(shè)計(jì)時(shí)根據(jù)需求分析的結(jié)果,按照由粗到細(xì),先總體后細(xì)節(jié),先上層后下層的原則,確定所需要的組件。然后自底向上利用己準(zhǔn)備好的組件,根據(jù)相應(yīng)的原則組裝組件,配合其他的模塊,組成相應(yīng)的應(yīng)用系統(tǒng)26。傳統(tǒng)的開(kāi)發(fā)模式是分析設(shè)計(jì)開(kāi)發(fā)應(yīng)用,而基于框架的應(yīng)用開(kāi)發(fā)是領(lǐng)域分析一框架設(shè)計(jì)一開(kāi)發(fā)應(yīng)用(1,2.n)。通常的軟件開(kāi)發(fā)方法有以下幾個(gè)步驟:領(lǐng)域分析需求分析系統(tǒng)分析結(jié)構(gòu)設(shè)計(jì)詳細(xì)設(shè)計(jì)實(shí)現(xiàn)7.測(cè)試8.維護(hù)基于框架的開(kāi)發(fā)包含上述通常的步驟,但是還必須包括1)為系統(tǒng)應(yīng)用定義概念層的框架。分析系統(tǒng)的功能,進(jìn)行系統(tǒng)的功能分解,明確各功能的聯(lián)系。2)
39、選擇一個(gè)合適的面向?qū)ο罂蚣?。一般選擇了一個(gè)框架后該系統(tǒng)應(yīng)用的結(jié)構(gòu)也就基本固定了。3)把系統(tǒng)應(yīng)用的概念層框架影射到所選擇的面向?qū)ο蟮目蚣埽ㄗ酉到y(tǒng)影射到子框架)。4)指定和修改框架的子框架之間的關(guān)系。一個(gè)框架可能包含若干個(gè)子框架,一個(gè)框架也可能被設(shè)計(jì)為可添加子框架的,如設(shè)備驅(qū)動(dòng)程序框架和數(shù)據(jù)庫(kù)存取框架。5)結(jié)構(gòu)化子框架的不同組件。這包括決定子框架的哪些部分應(yīng)該是固定了,哪些還沒(méi)有。如果是固定了,那已經(jīng)實(shí)現(xiàn)的缺省行為動(dòng)作將被使用。如果沒(méi)有固定,就是說(shuō)還要去實(shí)現(xiàn)一些抽象類(lèi)或接口。6)實(shí)現(xiàn)軟件系統(tǒng)。2.7框架文檔推廣一個(gè)框架關(guān)鍵的一點(diǎn)就是這個(gè)框架有沒(méi)有一個(gè)好的文檔來(lái)描述這個(gè)框架是什么,怎么使用??蚣芪臋n
40、至少要適用于三種用戶(hù):決定使用哪一個(gè)框架的用戶(hù)??蚣芪臋n至少要說(shuō)清楚這個(gè)框架能夠做什么,有什么比較重要的功能。使用框架的用戶(hù)??蚣芪臋n要說(shuō)清楚如何使用這個(gè)框架,必須有一個(gè)十分清晰的使用文檔。使用框架的高級(jí)用戶(hù)??蚣芪臋n要說(shuō)清如何擴(kuò)展這個(gè)框架,即如何往框架中添加新的功能。文檔要能夠使用戶(hù)從深層次去理解框架,要從抽象的角度描述框架所使用的一些算法,設(shè)計(jì)模式等,描述清楚框架為什么要這樣設(shè)計(jì)。因?yàn)榭蚣馨祟I(lǐng)域內(nèi)很多復(fù)雜的問(wèn)題,以及屏蔽了技術(shù)上的很多難點(diǎn)與細(xì)節(jié),所以必須要有文檔來(lái)描述清楚。普通的類(lèi)庫(kù)文檔需要如下信息:結(jié)構(gòu)信息,如類(lèi)名,類(lèi)型,初始化參數(shù)等描述信息,說(shuō)明該類(lèi)的用途使用方法,描述一個(gè)類(lèi)能否以
41、某種特定的方式來(lái)實(shí)例化等。用到的術(shù)語(yǔ)解釋配置信息,描述類(lèi)與其它哪些類(lèi)相關(guān),是否適合在某種配置下被實(shí)例化。約束條件操作信息,如參數(shù),結(jié)果和結(jié)果類(lèi)型等除了上述信息外,框架文檔還必須包括框架目的如何使用框架應(yīng)用程序示例的目的框架的設(shè)計(jì)思想2.8本章小結(jié)本章介紹了框架的定義,比較了框架相對(duì)于其它復(fù)用技術(shù)的優(yōu)點(diǎn),講述了框架的各種分類(lèi),常用構(gòu)建框架的方法和使用框架進(jìn)行系統(tǒng)開(kāi)發(fā)的流程,以及框架文檔的用途。第三章設(shè)計(jì)模式面向?qū)ο蠹夹g(shù)的出現(xiàn)和應(yīng)用大大提高了軟件的重用性和軟件的質(zhì)量。面向?qū)ο蟮木幊桃脖纫酝母鞣N編程模式要簡(jiǎn)單和高效,但是面向?qū)ο蟮脑O(shè)計(jì)方法要比以往的設(shè)計(jì)方法要復(fù)雜和有技巧得多,一個(gè)良好的設(shè)計(jì)應(yīng)該既具
42、有對(duì)問(wèn)題的針對(duì)性,也充分考慮到對(duì)將來(lái)問(wèn)題和需求有足夠的通用性27。在過(guò)去的十幾年中,人們?cè)趯?duì)面向?qū)ο蠹夹g(shù)的研究探索和實(shí)際應(yīng)用中針對(duì)某些問(wèn)題創(chuàng)造了一些良好的解決方案,即所謂的面向?qū)ο蟮脑O(shè)計(jì)模式。面向?qū)ο蠹夹g(shù)的目的之一就是提高軟件的重用性,而對(duì)設(shè)計(jì)模式、設(shè)計(jì)方案的重用則從更深的層次上體現(xiàn)了重用的意義和本質(zhì)。有關(guān)設(shè)計(jì)模式,目前的主要研究方向有:設(shè)計(jì)模式與其他面向?qū)ο笤O(shè)計(jì)方法(如特定領(lǐng)域的框架)的關(guān)系,它們各自的優(yōu)劣和適應(yīng)范圍。設(shè)計(jì)模式已經(jīng)被廣泛用于多個(gè)領(lǐng)域的軟件構(gòu)造和設(shè)計(jì)、開(kāi)發(fā)處理和組織中,當(dāng)代許多先進(jìn)的軟件中已大量采用了軟件設(shè)計(jì)模式的概念28。3.1設(shè)計(jì)模式的概念人們對(duì)設(shè)計(jì)模式有很多定義,其中被引
43、用的最多是ChristopherAlexander的設(shè)計(jì)模式的定義:每一個(gè)設(shè)計(jì)模式是一個(gè)三方的規(guī)則,它表達(dá)了一個(gè)上下文環(huán)境(Context),個(gè)問(wèn)題和一個(gè)解決方案。設(shè)計(jì)模式一般有如下幾個(gè)基本要素:模式名稱(chēng),問(wèn)題,解決方案,效果29。模式名稱(chēng)(patternname):一個(gè)助記名,它用一兩個(gè)詞來(lái)描述模式的問(wèn)題、解決方案和效果。模式名稱(chēng)的產(chǎn)生使我們可以在更高層次上進(jìn)行設(shè)計(jì)并交流我們的設(shè)計(jì)思想,因此尋找好的模式名稱(chēng)是一個(gè)很重要也是很困難的工作。問(wèn)題(problem):告訴我們什么時(shí)候要使用設(shè)計(jì)模式,解釋問(wèn)題及其背景。它可能描述了特定的設(shè)計(jì)問(wèn)題,如怎樣用對(duì)象表示算法,也可能描述了導(dǎo)致不靈活設(shè)計(jì)的類(lèi)或?qū)?/p>
44、象結(jié)構(gòu)。有時(shí)候,問(wèn)題部分會(huì)包括使用模式必須滿(mǎn)足的一系列先決條件。解決方案(solution):描述了設(shè)計(jì)的組成部分,它們之間的相互關(guān)系以及各自的職責(zé)和協(xié)作方式。因?yàn)槟J骄拖褚粋€(gè)模板,可應(yīng)用于多種不同的場(chǎng)合,所以解決方案并不描述一個(gè)特定而具體的設(shè)計(jì)或?qū)崿F(xiàn),而是提供設(shè)計(jì)問(wèn)題的抽象描述和怎樣用一個(gè)具有一般意義的元素組合(類(lèi)或?qū)ο蠼M合)來(lái)解決這個(gè)問(wèn)題。效果(consequences):描述了模式應(yīng)用的效果及使用模式應(yīng)權(quán)衡的問(wèn)題。比較與其他設(shè)計(jì)方法的異同,得到應(yīng)用設(shè)計(jì)模式的代價(jià)和優(yōu)點(diǎn)。對(duì)于軟件設(shè)計(jì)來(lái)說(shuō),通常要考慮的是空間和時(shí)間的權(quán)衡,也會(huì)涉及到語(yǔ)言問(wèn)題和實(shí)現(xiàn)問(wèn)題。對(duì)于一個(gè)面向?qū)ο蟮脑O(shè)計(jì)而言,可復(fù)用性很重
45、要,后果還包括對(duì)系統(tǒng)靈活性、可擴(kuò)充性及可移植性的影響。明確看出這些效果有助于理解和評(píng)價(jià)設(shè)計(jì)模式。3.2設(shè)計(jì)模式的分類(lèi)根據(jù)應(yīng)用目的,有應(yīng)用系統(tǒng)、工具包、框架三類(lèi)軟件。因此,可以將設(shè)計(jì)模式分為可復(fù)用部件的設(shè)計(jì)模式和可復(fù)用框架設(shè)計(jì)模式??蓮?fù)用部件的設(shè)計(jì)模式主要注重單個(gè)部件的設(shè)計(jì)而忽略了整個(gè)的框架,相比之下,可復(fù)用框架的設(shè)計(jì)比可復(fù)用部件的設(shè)計(jì)更具有挑戰(zhàn)性,也更加重要。面向?qū)ο筌浖_(kāi)發(fā)領(lǐng)域的專(zhuān)家一般都會(huì)建議初學(xué)者首先學(xué)習(xí)面向?qū)ο蟮幕靖拍?,然后才研究各種各樣的框架。當(dāng)然,使用框架時(shí),都是在考慮實(shí)現(xiàn)細(xì)節(jié)之前先獲得應(yīng)用。雖然此時(shí)設(shè)計(jì)模式?jīng)]有被明確使用,初學(xué)者可以從各種框架中抽象出設(shè)計(jì)模式來(lái),從中學(xué)到如何設(shè)計(jì)
46、類(lèi)的界面和處理抽象類(lèi)與實(shí)際類(lèi)的相互關(guān)系。這種方法最大的缺點(diǎn)是需要花費(fèi)大量的精力:一開(kāi)始必須掌握如何應(yīng)用一種框架,因此要學(xué)習(xí)該框架的各種細(xì)節(jié),往往還得學(xué)習(xí)一種新的編程語(yǔ)言。對(duì)設(shè)計(jì)模式的抽取需要能從實(shí)現(xiàn)的細(xì)節(jié)中看到深層的框架,但在沒(méi)有任何提示的情況下,理解特定的設(shè)計(jì)意圖是不可能的。以框架為中心的設(shè)計(jì)模式方法的主要目的是在不涉及實(shí)現(xiàn)細(xì)節(jié)的前提下描述框架及其各個(gè)類(lèi)的實(shí)際。這種抽象的設(shè)計(jì)描述是成熟設(shè)計(jì)的不可缺少的工具。設(shè)計(jì)模式有助于針對(duì)待定的需求應(yīng)用某一種框架或結(jié)合已有的成熟設(shè)計(jì)來(lái)構(gòu)造新的框架。設(shè)計(jì)模式是理解某一框架的具體實(shí)現(xiàn)細(xì)節(jié)的引路圖,同時(shí),如果軟件工程師掌握了某一個(gè)框架的實(shí)際思想,那么將能夠應(yīng)用所
47、獲得的經(jīng)驗(yàn)來(lái)開(kāi)發(fā)新的框架30。設(shè)計(jì)模式的分類(lèi)有好幾種,可以根據(jù)其目的分為創(chuàng)建型(Creational),結(jié)構(gòu)型(Struetural)和行為型(Behavioral)三種。創(chuàng)建型模式主要是用來(lái)創(chuàng)建對(duì)象,結(jié)構(gòu)型模式主要是處理類(lèi)或?qū)ο蟮慕M合,行為型模式則主要用來(lái)描述類(lèi)或?qū)ο笤鯓咏换ズ驮鯓臃峙渎氊?zé)。也可以根據(jù)范圍將設(shè)計(jì)模式分為類(lèi)模式和對(duì)象模式,類(lèi)模式處理類(lèi)和子類(lèi)之間的關(guān)系,這些關(guān)系通過(guò)繼承建立,在編譯時(shí)刻就被確定下來(lái),是屬于靜態(tài)的。對(duì)象模式是處理對(duì)象間的關(guān)系,這些關(guān)系在運(yùn)行時(shí)刻變化,更具動(dòng)態(tài)性。從某種意義上來(lái)說(shuō),幾乎所有模式都使用繼承機(jī)制,所以“類(lèi)模式”只指那些集中于處理類(lèi)間關(guān)系的模式,而大部分模式
48、都屬于對(duì)象模式的范疇。創(chuàng)建型類(lèi)模式將對(duì)象的部分創(chuàng)建工作延遲到子類(lèi),而創(chuàng)建型對(duì)象模式則將它延遲到另一個(gè)對(duì)象中。結(jié)構(gòu)型類(lèi)模式使用繼承機(jī)制來(lái)組合類(lèi),而結(jié)構(gòu)型對(duì)象模式則描述了對(duì)象的組裝方式。行為型類(lèi)模式使用繼承描述算法合控制流,而行為型對(duì)象模式則描述一組對(duì)象怎樣協(xié)作完成單個(gè)對(duì)象無(wú)法完成的任務(wù)。ErichGamma按照上述的分類(lèi)方法總結(jié)為如圖3-1所示:的緒枸型類(lèi)Adapter(類(lèi)Inwrp啊rTtimplaleMethod対最A(yù)b5lrBclFactoryBkkiiriPrProttMypeSiroglftOflAdapted對(duì)踽CocnposUeDecpralOTFacadeProxyOminofR
49、espondWlityyATlinUIhlIteratorMcdiajturMenKncoObserverStateStrategyVisitor圖3-1ErichGamma的設(shè)計(jì)模式分類(lèi)表設(shè)計(jì)模式的簡(jiǎn)單介紹如下:AbstractFactory:提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴(lài)對(duì)象的接口,而無(wú)須指定具體的類(lèi)。Adapter:將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶(hù)希望的另外一個(gè)接口,使得原來(lái)由于接口不兼容而不能一起工作的那些類(lèi)可以一起工作。Bridge:將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。Builder:將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。Chainof
50、Responsibility:為解除請(qǐng)求的發(fā)送者和接收者之間禍合,而使得多個(gè)對(duì)象都有機(jī)會(huì)處理這個(gè)請(qǐng)求,將這些對(duì)象連成一個(gè)鏈,并沿著這條鏈遞送請(qǐng)求,直到有一個(gè)對(duì)象處理它。Command:將一個(gè)請(qǐng)求圭寸裝為一個(gè)對(duì)象,從而可用不同的請(qǐng)求對(duì)客戶(hù)進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可取消的操作。Composite:將對(duì)象組合成數(shù)形結(jié)構(gòu)以表示部分整體的層次結(jié)構(gòu)。使得客戶(hù)對(duì)單個(gè)對(duì)象和復(fù)合對(duì)象的使用具有一致性。Decorator二動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。就擴(kuò)展功能而言,它比生成子類(lèi)的方式更為靈活。Facade:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,定義了一個(gè)高層接口,這個(gè)接口使得這一子
51、系統(tǒng)更加容易使用。FactoryMethod:定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定將哪一個(gè)類(lèi)實(shí)例化,它使得一個(gè)類(lèi)的實(shí)例化延遲到其子類(lèi)。Flyweight:運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。Interpreter:給定一個(gè)語(yǔ)言,定義它文法的表示,并定義一個(gè)解釋器,該解釋器使用該表示來(lái)解釋語(yǔ)言中的句子。Iterator:提供一種方法順序訪(fǎng)問(wèn)一個(gè)聚合對(duì)象中各個(gè)元素,而不需暴露該對(duì)象的內(nèi)部表示。Mediator:用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各個(gè)對(duì)象不需要顯示地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。Memento:在不破壞圭寸裝性的前提下,捕獲一個(gè)對(duì)象的
52、內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。這樣以后就可以將該對(duì)象恢復(fù)到保存的狀態(tài)。Observer:定義對(duì)象間的一種一對(duì)多的依賴(lài)關(guān)系,以便當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴(lài)于它的對(duì)象都得到通知并自動(dòng)刷新。Prototype:用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并且通過(guò)拷貝這個(gè)原型來(lái)創(chuàng)建新的對(duì)象。Proxy:為其他對(duì)象提供一個(gè)代理以控制對(duì)這個(gè)對(duì)象的訪(fǎng)問(wèn)。Singleton:保證一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)訪(fǎng)問(wèn)它的全局訪(fǎng)問(wèn)點(diǎn)。State:允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。對(duì)象看起來(lái)似乎修改了它所屬的類(lèi)。Strategy:定義一系列的算法,把它們一個(gè)個(gè)圭寸裝起來(lái),并且使它們可相互替換。使得算法的
53、變化獨(dú)立于使用它的客戶(hù)。TemplateMethod:定義一個(gè)操作中算法的骨架,而將一些步驟延遲到子類(lèi)中,使得子類(lèi)可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。Visitor:表示一個(gè)作用于某對(duì)象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類(lèi)的前提下定義作用于這些元素的新操作。3.3設(shè)計(jì)模式對(duì)框架影響的總結(jié)在沒(méi)有使用設(shè)計(jì)模式時(shí),框架也可以使用,但是有了設(shè)計(jì)模式可以使框架得到更好的理解。設(shè)計(jì)模式和框架是兩種不同的思路:設(shè)計(jì)模式比框架更抽象,它的結(jié)構(gòu)元素的粒度比框架的要小,比框架更一般化。把兩者結(jié)合起來(lái)應(yīng)用可以取得很好的效果:一個(gè)使用設(shè)計(jì)模式的框架比不用設(shè)計(jì)模式的框架更可能獲得高層次
54、的設(shè)計(jì)復(fù)用和代碼復(fù)用。成熟的框架通常使用了多種設(shè)計(jì)模式。設(shè)計(jì)模式有助于得到適用于多種應(yīng)用的框架體系結(jié)構(gòu)31。當(dāng)框架和它使用的設(shè)計(jì)模式一起寫(xiě)入文檔時(shí),了解設(shè)計(jì)模式的人能較快地洞悉框架,不了解設(shè)計(jì)模式的人也可以從產(chǎn)生框架文檔的結(jié)構(gòu)中受益。加強(qiáng)文檔工作對(duì)于所有軟件而言都是重要的,但對(duì)于框架其重要性顯得尤為突出。學(xué)會(huì)使用框架常常是一個(gè)必須克服很多困難的過(guò)程。設(shè)計(jì)模式雖然無(wú)法徹底克服這些困難,但它通過(guò)對(duì)框架設(shè)計(jì)主要元素做更顯式的說(shuō)明可以降低框架學(xué)習(xí)的難度。本章小結(jié)本章介紹了設(shè)計(jì)模式的概念,簡(jiǎn)要比較了設(shè)計(jì)模式的分類(lèi),說(shuō)明了模式的用途,總結(jié)了在框架設(shè)計(jì)中使用設(shè)計(jì)模式技術(shù)的優(yōu)點(diǎn),并為本文框架使用的模式提供了技
55、術(shù)背景。第四章企業(yè)級(jí)應(yīng)用框架4.1框架的層次結(jié)構(gòu)設(shè)計(jì)框架首先要考慮的是框架如何分層、各層包含何種組件或?qū)ο蟆⒉煌瑢哟沃g以及同層對(duì)象如何通信?傳統(tǒng)的開(kāi)發(fā)方法分層如下:(1)三層模型:三層模型是一種“界面業(yè)務(wù)邏輯數(shù)據(jù)庫(kù)”的邏輯分層模型,典型用于C/S物理模型的應(yīng)用系統(tǒng)中,一部分業(yè)務(wù)量較少的B/S物理模型也采用這種程序架構(gòu)。典型的三層C/S結(jié)構(gòu)將處理負(fù)載分為成三部分,分別對(duì)應(yīng)于邏輯層次,其中表示層運(yùn)行用戶(hù)的界面,應(yīng)用邏輯層運(yùn)行業(yè)務(wù)邏輯,數(shù)據(jù)層存放應(yīng)用程序所需的數(shù)據(jù)。這種體系結(jié)構(gòu)如圖4-1所示。J*錄服爪點(diǎn)卅層應(yīng)用邂輯怎廠(chǎng)劇h如出用曰界面業(yè)命邏覲圖4-1三層體系結(jié)構(gòu)圖表示層通過(guò)調(diào)用應(yīng)用邏輯層代碼來(lái)獲
56、取所需要的數(shù)據(jù),并按照適當(dāng)?shù)母袷斤@示出來(lái)。由于業(yè)務(wù)邏輯從界面層分離出來(lái),極大地增強(qiáng)了應(yīng)用程序設(shè)計(jì)的靈活性。當(dāng)應(yīng)用程序被修改時(shí),只要對(duì)表示層提供的接口不變,就不需要更新每個(gè)客戶(hù)端的用戶(hù)界面程序,在運(yùn)行效率和可維護(hù)性上遠(yuǎn)遠(yuǎn)高于二層C/S結(jié)構(gòu)。數(shù)據(jù)層包含了應(yīng)用程序所需要的數(shù)據(jù)。這些數(shù)據(jù)可以由不同的信息源組成,如:oracle,Informix,Sybase數(shù)據(jù)庫(kù),也可以是XML文檔集,還可以是目錄服務(wù)。除了傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)機(jī)制外,還有許多種應(yīng)用程序可以訪(fǎng)問(wèn)的不同的企業(yè)數(shù)據(jù)源。另外,多種Client端能夠和一個(gè)Server端進(jìn)行通訊,而不僅僅是一個(gè)特定的服務(wù)器,Server端對(duì)執(zhí)行細(xì)節(jié)進(jìn)行封裝,提
57、供給客戶(hù)端的是標(biāo)準(zhǔn)的服務(wù)接口,客戶(hù)端無(wú)須了解服務(wù)端的具體位置以及具體的執(zhí)行細(xì)節(jié),體現(xiàn)了良好的封裝性32。(2)N層模型:實(shí)際上就是指三層C/S模型中應(yīng)用邏輯層不單純是一個(gè)程序,而是根據(jù)功能對(duì)應(yīng)用邏輯層進(jìn)行劃分。N層C/S結(jié)構(gòu)具有以下五個(gè)層次:用戶(hù)界面層:負(fù)責(zé)處理用戶(hù)與應(yīng)用程序之間的交互過(guò)程:它可以是一個(gè)通過(guò)防火墻運(yùn)行的Web瀏覽器,也可以是一般的終端設(shè)備、桌面應(yīng)用程序,甚至還可以是無(wú)線(xiàn)設(shè)備。表示邏輯層:定義了用戶(hù)界面要顯示的內(nèi)容,并根據(jù)所支持的是什么樣的接口確定如何處理用戶(hù)的請(qǐng)求。對(duì)于相應(yīng)的客戶(hù),表示邏輯層版本會(huì)有相應(yīng)的不同。業(yè)務(wù)邏輯層:通過(guò)與應(yīng)用數(shù)據(jù)打交道,對(duì)應(yīng)用的業(yè)務(wù)規(guī)則實(shí)施建模。基礎(chǔ)框架
58、服務(wù)層:提供應(yīng)用系統(tǒng)需要的其它功能,如:消息傳送、事務(wù)支持?jǐn)?shù)據(jù)層:存放企業(yè)級(jí)的應(yīng)用數(shù)據(jù)。在實(shí)際應(yīng)用中,也可以將業(yè)務(wù)邏輯層再分為若干組件集,每一個(gè)組件集完成一個(gè)相當(dāng)小的業(yè)務(wù)功能,用戶(hù)界面層通常需要連接若干個(gè)組件集來(lái)完成一個(gè)單獨(dú)的業(yè)務(wù)邏輯,組件集之間也可以相互調(diào)用。因此,通常我們所說(shuō)的三層C/S模型就是指N層模型。本論文的框架圖如圖4-2所示,分為表示層、業(yè)務(wù)領(lǐng)域?qū)?、?shù)據(jù)管理層和數(shù)據(jù)庫(kù)四層??蚣艿倪@種分層模型避開(kāi)了簡(jiǎn)單的三層模型中巨型業(yè)務(wù)對(duì)象的問(wèn)題,而不更細(xì)致地分為五層,是因?yàn)榈谖鍖?,即映射層(用于映射業(yè)務(wù)對(duì)象屬性到數(shù)據(jù)表字段一一對(duì)應(yīng))雖然可以增加了框架的應(yīng)用靈活性,但付出了框架設(shè)計(jì)的難度,而此映
59、射功能完全可以通過(guò)框架文檔的協(xié)議說(shuō)明來(lái)避免。另外要說(shuō)明的是,框架的表示層并不只是一個(gè)單機(jī)應(yīng)用的界面,完全可以使用J2EE的JSP+SERVERLET機(jī)制,實(shí)現(xiàn)一個(gè)JSP+SERVERLET+框架的互聯(lián)網(wǎng)級(jí)的應(yīng)用系統(tǒng),在此情形下,框架的協(xié)議分層可以被看作是五層。為了避免混淆,JSP+SERVERLET僅僅被當(dāng)作表示層,本框架是上圖所示四層模型。此四層模型解釋如下:表示層:顯示數(shù)據(jù)信息的界面,指應(yīng)用開(kāi)發(fā)平臺(tái)提供的界面層,在通常的非互聯(lián)網(wǎng)平臺(tái)如C+BUILDER中,它指代FORM界面,在互聯(lián)網(wǎng)平臺(tái)中如Websphere中,它指代JSP+SERVERLET。業(yè)務(wù)領(lǐng)域?qū)樱簶I(yè)務(wù)對(duì)象集合,所有表示業(yè)務(wù)邏輯的
60、對(duì)象都放在這一層。數(shù)據(jù)管理層:代理業(yè)務(wù)對(duì)象進(jìn)行數(shù)據(jù)處理的對(duì)象集合的層次。數(shù)據(jù)庫(kù)層:框架運(yùn)行于其上的各型數(shù)據(jù)庫(kù),一般指具有SQL能力的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),如典型的ORACLE、DB2、SQLSERVER等。其中圖上的箭頭指向意義如下:TFORM指向TPDOBJECT的箭頭表示界面允許使用業(yè)務(wù)對(duì)象。上圖的表述是一個(gè)TFORM指向一個(gè)TPDOBJECT,這并不意味著一個(gè)界面只能使用一個(gè)業(yè)務(wù)對(duì)象,也不意味著不同的界面必須使用不同的業(yè)務(wù)對(duì)象。不同層次之間的箭頭僅表示在實(shí)際應(yīng)用中層次之間的調(diào)用關(guān)系,不代表數(shù)量關(guān)系。界面之間的箭頭表示不同界面之間可以相互訪(fǎng)問(wèn)對(duì)方,一般的是A界面需要訪(fǎng)問(wèn)B界面的一些信息元素,或
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工齡重新認(rèn)定申請(qǐng)書(shū)
- DB37-T 4603-2023 醫(yī)養(yǎng)結(jié)合機(jī)構(gòu)心理支持服務(wù)指南
- 內(nèi)部調(diào)職申請(qǐng)書(shū)
- 代理排長(zhǎng)申請(qǐng)書(shū)
- 現(xiàn)代企業(yè)如何通過(guò)管理學(xué)提升管理效能
- 秩序部轉(zhuǎn)正申請(qǐng)書(shū)
- 2024-2025學(xué)年高中歷史第三章北魏孝文帝改革第三節(jié)孝文帝改革的歷史作用學(xué)案北師大版選修1
- 2024-2025學(xué)年新教材高中數(shù)學(xué)第十章概率10.1.1有限樣本空間與隨機(jī)事件10.1.2事件的關(guān)系和運(yùn)算應(yīng)用案鞏固提升新人教A版必修第二冊(cè)
- 合并執(zhí)行申請(qǐng)書(shū)
- 商戶(hù)退場(chǎng)申請(qǐng)書(shū)
- 非國(guó)有企業(yè)職務(wù)犯罪課件共58p
- 航空維修工程管理第1章分析課件
- 耳鼻咽喉科臨床診療指南
- 第二部分-3 植物纖維化學(xué)部分-纖維素
- 民法原理與實(shí)務(wù)課程教學(xué)大綱
- 2019北師大版高中英語(yǔ)選擇性必修四單詞表
- 園藝產(chǎn)品的品質(zhì)講義
- 鋼筋混凝土框架結(jié)構(gòu)工程監(jiān)理的質(zhì)量控制
- 桃花節(jié)活動(dòng)方案
- 社區(qū)醫(yī)院建設(shè)標(biāo)準(zhǔn)
- 變更戶(hù)主情況登記表
評(píng)論
0/150
提交評(píng)論