構(gòu)件化軟件技術(shù)基于XML的構(gòu)件組裝平臺分析_第1頁
構(gòu)件化軟件技術(shù)基于XML的構(gòu)件組裝平臺分析_第2頁
構(gòu)件化軟件技術(shù)基于XML的構(gòu)件組裝平臺分析_第3頁
構(gòu)件化軟件技術(shù)基于XML的構(gòu)件組裝平臺分析_第4頁
構(gòu)件化軟件技術(shù)基于XML的構(gòu)件組裝平臺分析_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

-.z摘要:構(gòu)件組裝技術(shù)是支持軟件復用的核心技術(shù),構(gòu)件組裝平臺的使用將系統(tǒng)開發(fā)的重點從程序設(shè)計轉(zhuǎn)移到已有構(gòu)件的選取、組裝和部署;在構(gòu)件模型的支持下,通過復用已有的構(gòu)件,軟件開發(fā)者可以“即插即用〞地快速構(gòu)造應(yīng)用系統(tǒng);在此,給出了一個基于*ML的構(gòu)件組裝平臺的設(shè)計與描述,并且根據(jù)構(gòu)件自身特點和構(gòu)件組裝的需要自定義了基于*ML的軟件構(gòu)造描述(SAD),其中包括基于*ML的構(gòu)件描述、連接子描述和組裝構(gòu)造描述,這些描述對連接子生成與構(gòu)件組裝提供了根本的信息支持。關(guān)鍵字:*ML,構(gòu)件化Abstract:ponentassemblytechnologyisthecoretechnologyofsoftwarereuse,ponentassemblyplatformsuccessfullyfulfillsthemainpointsofsystemdeveloping,suchasponentsearching,ponentassemblyandponenttransforminginsteadofprogramdesign.Undersustainingofponentmodel,reusingponent,softwaredevelopercouldquicklyconstructapplicationsystemasplugandplay.Adesignmethodanddescriptionofa*ML-basedponentassemblyplatformareproposedhere.Accordingtoponent-selfcharacterandrequirementofponentassembly,asoftwarearchitecturedescription:SAD(includesponentdescription,connectordescriptionandassemblydescription)isdefinedindetail,whichgivesbasicinformationalsupportforconnectorbuildingandponentassembly.Keywords:ponentassembly;connector;ponentassemblydescription目錄TOC\o"1-3"\h\u155111構(gòu)件分類、粒度劃分、業(yè)務(wù)模型1123281.1構(gòu)件分類1315241.2粒度劃分212891.3業(yè)務(wù)模型之間的關(guān)系3251182典型構(gòu)件模型技術(shù)3119062.1構(gòu)件的模型3252442.2基于CORBA的CCM技術(shù)4281402.3E技術(shù)5150603典型構(gòu)件模型技術(shù)及開展展望757654構(gòu)件組裝流程總體設(shè)計7203214.1用戶需求的輸入分析8182904.2構(gòu)件搜索與獲取892214.3構(gòu)件匹配選擇9312094.4構(gòu)件組裝9183234.5程序校驗和執(zhí)行10312415軟件構(gòu)造描述SAD10133025.1基于*ML的構(gòu)件描述11264165.2基于*ML的連接子描述11275745.3基于*ML的組裝構(gòu)造描述12327576組裝平臺的實現(xiàn)16-.z基于*ML的構(gòu)件組裝平臺的設(shè)計與實現(xiàn)1構(gòu)件分類、粒度劃分、業(yè)務(wù)模型1.1構(gòu)件分類對大量構(gòu)件進展分類有三個好處:便于組織管理、方便查詢和輔助理解.構(gòu)件分類是建立和維護構(gòu)件目錄信息的活動,構(gòu)件的檢索方法依賴于構(gòu)件的表示和分類。目前有很多構(gòu)件的分類和檢索方法。從構(gòu)件表示出發(fā)可分為人工智能方法、超文本方法和信息科學方法三類;而根據(jù)復雜度和檢索效果的不同則可以分為基于文本、基于詞法描述和基于規(guī)約的編碼和檢索三類。信息科學方法是軟件復用工程中應(yīng)用較為成功的一類,并且以枚舉、刻面、屬性值-關(guān)鍵詞幾種方法較為常見,其中刻面分類方法能夠表達豐富的構(gòu)件信息,為人關(guān)注。構(gòu)件的分類方式有多種,為了檢索和重用構(gòu)件時更好的了解構(gòu)件的性質(zhì),我們可以將構(gòu)件分類如下:根據(jù)構(gòu)件的復用方式,分為兩種構(gòu)件。一種是黑匣構(gòu)件,我們不需要知道其內(nèi)部是怎么工作,只需從外部使用它,能夠到達即插即用;一種是白匣構(gòu)件,需要經(jīng)過修改才能重用;根據(jù)使用的*圍,分為通用構(gòu)件和專用構(gòu)件。根據(jù)構(gòu)件顆粒度的大小,分為小型構(gòu)件,一般為根本數(shù)據(jù)構(gòu)造類構(gòu)件,如:窗口、按鈕、菜單等;中型構(gòu)件,具體指一些功能構(gòu)建,如:錄入、查詢、刪除等;大型構(gòu)件,一般都是系統(tǒng)級構(gòu)件,如一些系統(tǒng)框架等;根據(jù)功能用途,分為系統(tǒng)構(gòu)件,實在整個構(gòu)件集成環(huán)境和運行環(huán)境都使用的構(gòu)件;支撐構(gòu)件,是在構(gòu)件集成環(huán)境、構(gòu)件庫管理系統(tǒng)中使用的構(gòu)件;領(lǐng)域構(gòu)建愛你,是為專用領(lǐng)域開發(fā)的構(gòu)件;〔5〕根據(jù)構(gòu)件的構(gòu)造,分為原子構(gòu)件和組合構(gòu)件。1.1.1枚舉分類通過定義一個層次構(gòu)造來對構(gòu)件進展分類。構(gòu)件庫中的可復用構(gòu)件按照*種標準被分成了假設(shè)干個大類,每個大類中的構(gòu)件再分成假設(shè)干個小類,這樣就形成了一個構(gòu)件分類的層次構(gòu)造。層次構(gòu)造的最低層羅列的就是實際的構(gòu)件。1.1.2刻面分類一個刻面描述構(gòu)件*一個方面的特征??堂娣诸悇t是從不同的側(cè)面對構(gòu)件進展分類,每一種分類方式稱為一個刻面。不同的刻面根據(jù)其重要性可以設(shè)置不同的優(yōu)先級。對構(gòu)件的每個刻面賦予相應(yīng)的值,用以描述該構(gòu)件。刻面分類具有較好的靈活性,易于參加新的刻面值,因此刻面分類比枚舉分類更易于擴展和修改。支持多重觀點對構(gòu)件進展分類,例如從構(gòu)件的應(yīng)用領(lǐng)域、構(gòu)件所描述的對象、構(gòu)件的觀點和編程語言等不同的方式來分類。每一種分類方式稱為一個刻面。每個刻面把構(gòu)件集合劃分為一個子集,各刻面所劃分的子集形成一些較小的交集。檢索一個構(gòu)件時,給出一組刻面值,將確定一組子集合,在這些子集合的交集中,確認所需的構(gòu)件。構(gòu)件可用屬性描述,例如構(gòu)件類型、開發(fā)單位、作者、提交日期等屬性。檢索時通過構(gòu)件的屬性可以縮小搜索*圍??堂婧蛯傩远疾簧婕皹?gòu)件內(nèi)部實現(xiàn),只是為了便于構(gòu)件的管理、檢索和使用。如果把構(gòu)件比作一只箱子,其內(nèi)容如同箱子中裝的東西,刻面和屬性則如同箱子外邊的標簽??堂娣诸惙梢钥醋鲗哟畏诸惙ǖ臄U大。1.1.3屬性-值分類該方法首先是為構(gòu)件庫中的所有構(gòu)件定義一組屬性,并賦予相應(yīng)的屬性值。開發(fā)人員通過指定一組屬性值在構(gòu)件庫中對構(gòu)件進展檢索。該分類方法與刻面分類方法有幾點不同之處:屬性的數(shù)量沒有限制,而刻面描述一般限制在7或8個刻面;屬性沒有優(yōu)先級,而刻面根據(jù)其重要程度,有相應(yīng)的優(yōu)先級。1.2粒度劃分構(gòu)件粒度是軟件構(gòu)件的一個重要屬性,將粒度引入軟件領(lǐng)域,是因為粒度可以用來衡量構(gòu)件的規(guī)模,并在一定程度上影響著構(gòu)件的可復用性。粒度過大,靈活性小,難以實現(xiàn)復用,粒度過小,管理本錢提升,使得復用性也很難改善。構(gòu)件的粒度可以分為粗粒度、中等粒度、細粒度。對于粗粒度的構(gòu)件來講,往往含有非常復雜的業(yè)務(wù)邏輯,比方提供數(shù)據(jù)、數(shù)據(jù)構(gòu)造、數(shù)據(jù)定義等功能的構(gòu)件。中等粒度的構(gòu)件是由細粒度的構(gòu)件組成的,其中含有一些不復雜卻很特殊的業(yè)務(wù)邏輯。細粒度構(gòu)件往往是有一些RAD工具提供的,它具有很清晰的邏輯構(gòu)造,例如JAVA的GUI組件,Active*和JavaBeans等。1.3業(yè)務(wù)模型之間的關(guān)系構(gòu)件是從業(yè)務(wù)模型映射得到的。不穩(wěn)定的業(yè)務(wù)模型需要頻繁發(fā)生變化,與之相對應(yīng)的構(gòu)件要能夠包容這種變化,即構(gòu)件要能夠在頻繁變化的業(yè)務(wù)需求和相對穩(wěn)定的軟件系統(tǒng)之間建立緩沖,防止因業(yè)務(wù)的頻繁變化而導致軟件系統(tǒng)的頻繁變化。這就需要構(gòu)件本身應(yīng)具備適應(yīng)變化的能力,即構(gòu)件能夠通過對自身的配置和重構(gòu)來滿足不同的業(yè)務(wù)需求,但不會或極少影響到軟件系統(tǒng)的變化。如果業(yè)務(wù)模型的這種變化不能通過*種抽象的形式描述出來并以可配置的形式封裝在構(gòu)件中,就不得不降低構(gòu)件的粒度,將這些變化交由構(gòu)件復用人員針對具體的復用環(huán)境在復用過程中去完成,否則,構(gòu)件將不得不面臨著因日后頻繁重構(gòu)而帶來的巨大本錢。由此可知,構(gòu)件的粒度與構(gòu)件所實現(xiàn)的業(yè)務(wù)模型的穩(wěn)定性密切相關(guān)。模型越穩(wěn)定,可能發(fā)生變化的時機就越少,則相應(yīng)的構(gòu)件所需要包容的變化就越少,構(gòu)件的粒度就可以越大。反之,模型越不穩(wěn)定,模型的變化就越多,構(gòu)件要包容這些變化的難度就越大,就不得不將該模型分解為假設(shè)干個粒度較小的構(gòu)件。因此,對穩(wěn)定的業(yè)務(wù)模型,可直接映射為大粒度構(gòu)件;對不穩(wěn)定的業(yè)務(wù)模型,通過對其進展分解,得到一組子業(yè)務(wù)模型,并將穩(wěn)定的子業(yè)務(wù)元素映射為構(gòu)件,其它不穩(wěn)定元素繼續(xù)進展分解,直到所有的業(yè)務(wù)元素都映射為構(gòu)件為止。2典型構(gòu)件模型技術(shù)2.1構(gòu)件的模型軟件構(gòu)件模型是對軟件構(gòu)件本質(zhì)特征的抽象描述,是對開發(fā)可重用軟件構(gòu)件和構(gòu)件之間相互通信的一組標準的描述,它一般規(guī)定了創(chuàng)立和實現(xiàn)構(gòu)件的知道原則,構(gòu)件借口的構(gòu)造,構(gòu)件與軟件架構(gòu)及構(gòu)件與構(gòu)件間的交互機制。構(gòu)件模型主要有構(gòu)件和容器兩個局部組成。構(gòu)件模型分為兩類:客戶端構(gòu)件模型和效勞器端構(gòu)件模型。建立構(gòu)件模型要考慮的幾個要素:表達能力、簡單性、語言無關(guān)性、一致性、完備性、可擴展性。對象模型、構(gòu)件技術(shù)和Web技術(shù)的融合徹底改變了軟件的構(gòu)造方法。在分布式系統(tǒng)中,對象被用來表示分布的、可移動的、可通信的實體;構(gòu)件化的軟件開發(fā)方法使對象被加在網(wǎng)絡(luò)上,到達跨平臺的互操作和高的可伸縮性;Web技術(shù)使應(yīng)用對象可以在Internet這個開放的計算平臺上移動。這是一個全新的計算模式,核心是可互操作的對象,即軟件對象間可透明地進展相互通信,并且地位對等地使用對方的效勞,而不管這些對象是處于同一編址空間,還是不同的編址空間,或是根本不同的機器上。分布式構(gòu)件技術(shù)主要有三種:對象管理組織OMG的基于公共對象請求代理構(gòu)造(CORBA)的CCM,SUN公司的E和Microsoft公司的/D/+。2.2基于CORBA的CCM技術(shù)CORBA是對象管理小組(OMG)的一個規(guī)*,它的底層和核心局部是對象請求代理(ORB)。從*種意義上說,CORBA是“軟件總線〞。CORBA的實質(zhì)是RPC與面向?qū)ο蠹夹g(shù)的有機結(jié)合。在CORBA中,每一個構(gòu)件是一個對象,有一個基于面向?qū)ο蟮慕涌?內(nèi)部代碼實現(xiàn)可以是OO或非OO的語言,總線上的對象能夠被任何其它對象所使用。CORBA提供了接口語言定義語言(IDL)到C,C++,Java,COBOL等語言的映射機制IDL編譯器,它可以生成效勞器方的Skeleton和客戶方Stub代碼,通過分別與客戶端和效勞器端的聯(lián)編即可得到效勞方和客戶方的程序。對一個CORBA客戶機來說,效勞器的位置是透明的,客戶機通過接口與效勞器構(gòu)件進展通信。CORBA同時提供了一系列的公共效勞規(guī)*,其中包括名字效勞、永久對象效勞、生命周期效勞、事務(wù)處理效勞、對象事件效勞和平安效勞等,它們相當于一類用于企業(yè)級計算的公共構(gòu)件。最新的CORBA規(guī)*主要包含以下內(nèi)容:ORB核心、OMG界面定義語言、語言映射、存根(Stub)和框架(Skele-ton)、動態(tài)調(diào)用和倉庫、對象適配器和ORB之間的互操作。CORBA的構(gòu)造:IDL語言;ORB核心;客戶程序;對象實現(xiàn)。2.3E技術(shù)SUN公司的E是一種基于構(gòu)件的開發(fā)模型,它是Java效勞器端效勞框架的規(guī)*。E詳細地定義了一個可以方便地部署Java構(gòu)件的效勞框架模型,用于創(chuàng)立可伸縮、多層次、跨平臺、分布式的應(yīng)用,并可創(chuàng)立具有動態(tài)擴展性的效勞器端的應(yīng)用。E效勞器實現(xiàn)了對E對象構(gòu)件的管理,并提供對系統(tǒng)效勞的。E效勞器也可以提供其它軟件接口標準,如優(yōu)化的數(shù)據(jù)庫接口,對CORBA效勞的,對SSL3.0的支持等。E以構(gòu)件的形式組織效勞器E的構(gòu)件實現(xiàn)僅需考慮應(yīng)用需求,其系統(tǒng)級效勞諸如事務(wù)管理、平安性、構(gòu)件生命周期和線程等,都是通過E效勞器自動進展管理的。E的體系構(gòu)造具有面向?qū)ο?、分布式、跨平臺、可擴大性、平安性以及便于開發(fā)等優(yōu)點。同時它還是以協(xié)議為中心的,任何協(xié)議都可以被利用,如IIOP,HTTP等。由此可見,E技術(shù)很好地補充了CORBA體系規(guī)*,在CORBA體系上引入E技術(shù)使得建造應(yīng)用程序更為容易。事實上最近發(fā)布的CORBA規(guī)*中在建立Java語言的CORBA構(gòu)件時已大量參考了E的體系構(gòu)造。1996年10月,SUN公司推出的JavaBean,經(jīng)過幾次升級已成為比較重要的軟件構(gòu)件。按照SUN公司的定義,JavaBean是一種“能在開發(fā)工具中被可視化操作的、可重用的軟件構(gòu)件〞。它的最初目的是定義一種Java的軟件構(gòu)件模型,使第三廠方可以生成和銷售供其他人員使用的Java構(gòu)件。Bean可以被放置在“容器〞中,提供具體的操作性能。E規(guī)*是SUN于1997年12月發(fā)布的JavaBean構(gòu)件模型。一個E是特定的在效勞器上運行的Jav-aBean,并且E能在可視化的工具下裝配成新的應(yīng)用。效勞器構(gòu)件是運行在效勞器上的被包容器管理的Bean。包容器充當構(gòu)件協(xié)調(diào)者的角色,使用標準的JAR從其包容器或工具中導入E。一旦E處于包容器內(nèi),就可以參加事件處理、狀態(tài)管理、自動激活或撤銷等功能。E框架的優(yōu)點是以說明的方式定義效勞器方運行時的屬性。因此,可以通過可視工具管理和設(shè)置效勞器方構(gòu)件的屬性,包括它們的事務(wù)處理、平安性和狀態(tài)管理器。RMI(RemoteMethodInvocation)是JDK1.1引入的ORB,可看作是Java的RPC機制。它定義了一組遠程接口,可用于生成遠程對象,客戶機可以像調(diào)用本地方法一樣調(diào)用遠程對象。RMI直接把分布式對象模型嵌入到Java語言內(nèi)部,使Java程序員自然地編寫分布式程序,不必離開Java環(huán)境或者涉及CORBAIDL,以及Java到CORBA的類型轉(zhuǎn)換。然而,RMI不遵循CORBA標準,根本上是JavatoJava技術(shù),它要求客戶方、效勞器方程序由Java編寫,難以實現(xiàn)與其它語言編寫的對象間的互操作。技術(shù)是Microsoft推出的,它是一個二進制代碼的標準,經(jīng)歷了OLE,,Active*,D和+等幾個階段。目前+把消息通信模塊MSMQ和解決關(guān)鍵業(yè)務(wù)的交易模塊MTS都加進去了,是分布對象計算的一個比較完整的平臺。Microsoft的平臺效率比較高,同時它有一系列相應(yīng)的開發(fā)工具支持,應(yīng)用開發(fā)相對簡單。但它一個致命的弱點就是的跨平臺性較差,如何實現(xiàn)與第三方廠商的互操作性始終是它的一大問題。Java提供了一個概念清晰、構(gòu)造緊湊的分布計算模型和構(gòu)件互操作的方法,為構(gòu)件應(yīng)用開發(fā)提供了相當?shù)撵`活性。但由于它還處于開展時期,因此其形態(tài)很難界定。CORBA是一種集成技術(shù),而不是編程技術(shù)。它提供了對各種功能模塊進展構(gòu)件化處理并將它們捆綁在一起的粘合劑。Java和CORBA在很大的程度上可以看作是互補的。為了適應(yīng)WEB應(yīng)用的開展要求,許多軟件廠商都急于促成CORBA和Java技術(shù)的結(jié)合,將來的RMI可能建立在IIOP之上。CORBA不只是對象請求代理ORB,也是一個非常完整的分布式對象平臺。CORBA可以擴展Java在網(wǎng)絡(luò)、語言、組件邊界、操作系統(tǒng)中的各種應(yīng)用。其次,Java也不僅僅是與CORBA捆綁的語言,它還是一個易變的對象系統(tǒng),也是一個運行對象的便攜式OS,而且允許CORBA對象在主機、網(wǎng)絡(luò)計算機和蜂窩等應(yīng)用上運行。Java還簡化了大型CORBA系統(tǒng)中的代碼分配,其中內(nèi)置的多線程和垃圾收集使編寫可靠的網(wǎng)絡(luò)對象更為方便。此外,Java能創(chuàng)立可移動對象并將它們分發(fā)出去,而采用CORBA可以將它們連接在一起,并與計算環(huán)境中的數(shù)據(jù)庫、遺留系統(tǒng)、其他語言編寫的對象和應(yīng)用相互集成。3典型構(gòu)件模型技術(shù)及開展展望作為Internet上影響最大的Web應(yīng)用,CORBA和Java的參加,不僅大大改善了Web應(yīng)用的質(zhì)量,如客戶端可直接動態(tài)調(diào)用效勞器上的程序、多對象效勞群平衡處理輸入的客戶請求等,而且對于分布式對象的普及起到了積極的作用,它們的結(jié)合無疑是開發(fā)基于Web應(yīng)用的最正確技術(shù)。/D/+技術(shù)雖然是由微軟公司獨家支配和制定,但其支撐和開發(fā)工具非常齊全,開發(fā)效率非常高;加之Windows系列平臺在微機中的普遍使用,使人們不得不成認它已經(jīng)成為了一種事實上的標準,并被大量使用。所以,/D/+是開發(fā)基于Windows平臺應(yīng)用的有效技術(shù)。分布構(gòu)件技術(shù)已是目前企業(yè)信息系統(tǒng)和電子商務(wù)等大規(guī)模軟件開發(fā)的主流技術(shù),掌握它們的工作機理并加以靈活的應(yīng)用,無疑是每個軟件開發(fā)人員的必備能力。4構(gòu)件組裝流程總體設(shè)計從軟件工程的角度看,構(gòu)件組裝平臺特別適合于原形法和瀑布法軟件過程模型。構(gòu)件組裝總體流程[2]:給定任務(wù)——軟件模型——軟件構(gòu)造[3]——組裝構(gòu)造——組裝實現(xiàn)——測試部署。整個構(gòu)件組裝分為5個局部嗎,分別是用戶需求的輸入分析[4]、構(gòu)件搜索與獲取、構(gòu)件匹配選擇、構(gòu)件組裝、程序校驗和執(zhí)行。構(gòu)件組裝流程總體設(shè)計如圖1所示。圖1構(gòu)件組裝平臺總流程4.1用戶需求的輸入分析在系統(tǒng)用戶界面中,由于用戶只關(guān)心自己所需程序的功能,所提出的請求往往帶有一定的不確定性和模糊性。為了幫助用戶更準確地提交請求,需要提供友好的輸入界面。通過提供主題詞表和圖文導航目錄等方法讓用戶通過輸入界面提交有限定的非歧義的請求,為在相應(yīng)的*圍內(nèi)高效獲取可用構(gòu)件創(chuàng)造條件。用戶選定的關(guān)鍵詞或圖標及相關(guān)聯(lián)關(guān)系是用戶所需程序的初步描述,對用戶請求的分析就是將問題按照應(yīng)用領(lǐng)域和求解規(guī)則進展分解,將要解決的問題分解成小的模塊,找出他們之間的依賴關(guān)系,直到各子問題可以通過*個構(gòu)件或*些構(gòu)件的組合實現(xiàn)為止。用戶請求分析與構(gòu)件搜索、獲取嚴密聯(lián)系,如果找不到相應(yīng)的實現(xiàn)構(gòu)件,就需要根據(jù)搜索結(jié)果重新調(diào)整分解策略,直到獲得滿足要求的問題分解與構(gòu)件組裝方案[5]。4.2構(gòu)件搜索與獲取通過對用戶計算需求的分析,得到初步的構(gòu)件組裝方案,方案中的構(gòu)件描述,形成構(gòu)件搜索條件。搜索條件由構(gòu)件的應(yīng)用領(lǐng)域、功能描述、類別、接口特征等方面的屬性組合而成,構(gòu)件搜索代理的數(shù)量根據(jù)構(gòu)件搜索任務(wù)的大小決定。構(gòu)件搜索代理首先構(gòu)件目錄效勞器,通過目錄協(xié)議查詢構(gòu)件目錄信息庫,得到相關(guān)或相近構(gòu)件的位置信息。然后構(gòu)件搜索代理在提供構(gòu)件的庫效勞器間自主移動并與庫效勞器進展快速的本地交互,得到包含待選構(gòu)件的資源文件,轉(zhuǎn)交給下一步驟的代理處理。構(gòu)件搜索過程分為兩步進展:構(gòu)件搜索代理首先在本地構(gòu)件目錄庫中快速搜索需要的構(gòu)件,如果本地庫中沒有,則馬上返回錯誤信息,系統(tǒng)將該信息反響到上一階段,要求重新調(diào)整分解策略,滿足實時性要求高的應(yīng)用的要求;對于對實時性要求不高的用戶,系統(tǒng)可以啟動代理通過相鄰的構(gòu)件目錄效勞器到遠程構(gòu)件效勞器上繼續(xù)搜索,獲取需要的構(gòu)件。4.3構(gòu)件匹配選擇待選構(gòu)件的分析選擇取決于前面的結(jié)果。在建立構(gòu)件目錄信息庫階段,構(gòu)造出了描述構(gòu)件靜態(tài)屬性以及動態(tài)行為的構(gòu)件描述符,并做了分類組織,這是在構(gòu)件層次上的描述;對用戶需求的分析則得到用戶所需程序的功能規(guī)約和自上而下的程序分解方案,這是應(yīng)用層的描述。構(gòu)件分析的任務(wù)就是根據(jù)用戶需求分析階段得到的程序描述和分解方案,按照相反的順序自下而上驗證分解方案的可行性,從分析構(gòu)件的功能和依賴關(guān)系開場,逐步綜合,得到更高抽象層次的構(gòu)件組合,再進一步分析構(gòu)件組合之間的關(guān)系,最終得到基于構(gòu)件組裝的程序,建立起應(yīng)用層次和構(gòu)件描述層次之間的聯(lián)系。在分析待選構(gòu)件的過程中,由于由多個構(gòu)件實現(xiàn)一樣或相似的功能,并且在組合過程中對外部條件有不同的要求,因此在實際組裝之前需要對構(gòu)件進展選擇和優(yōu)化。構(gòu)件選擇主要從兩個層次進展:首先對功能相近的構(gòu)件進展比較分析,綜合考慮執(zhí)行效率、時空開銷等因素,對構(gòu)件進展取舍,以滿足用戶的實際需要;另外,在更高一個層次上,對于實現(xiàn)一樣功能的構(gòu)件組合,也同樣存在比較和取舍問題,確保構(gòu)件組合在執(zhí)行過程中不互相影響。這兩方面的取舍對于整個過程的優(yōu)化有重要意義。經(jīng)過構(gòu)件的分析選擇,最終確定了待組裝的構(gòu)件和構(gòu)件組裝方案。4.4構(gòu)件組裝在組裝環(huán)境中,按照構(gòu)件組裝方案定義的構(gòu)件和調(diào)用關(guān)系,對選定的構(gòu)件進展連線和組裝。在組裝過程中,需要根據(jù)用戶的具體需求調(diào)整和設(shè)置各個構(gòu)件的可定制屬性,通過事前觸發(fā)和方法調(diào)用將構(gòu)件連接成統(tǒng)一的整體,并自動生成相關(guān)的程序代碼,完成用戶所要求的計算功能。在組裝過程中,自動生成的代碼主要包括構(gòu)件之間的動態(tài)參數(shù)傳遞,以及支持整個程序執(zhí)行的靜態(tài)入口方法和變量設(shè)置等等。軟構(gòu)件之間的調(diào)用關(guān)系可以用*種構(gòu)件配置的和連接語言描述,例如:*ML來描述JavaBean之間的調(diào)用和依賴關(guān)系,進展JavaBean的連接和組裝。4.5程序校驗和執(zhí)行這一步的主要任務(wù)是在組裝程序提交給用戶之前,進展驗證和測試,確保得到的程序能夠完成用戶需要的功能,并且在運行過程中不會給客戶端系統(tǒng)帶來不良影響。程序的校驗在以下幾個方面進展:組裝程序的有效性和可靠性,程序功能規(guī)約的一致性和正確性,構(gòu)件間依賴關(guān)系的描述的正確性,以及功能規(guī)約到實現(xiàn)轉(zhuǎn)換的有效性。構(gòu)件的組裝將生成新構(gòu)件,將新構(gòu)件信息登記到構(gòu)件目錄信息庫是構(gòu)件再造和知識積累的過程。以上幾個階段相互聯(lián)系,相互影響,形成一個統(tǒng)一的構(gòu)件組裝流程。5軟件構(gòu)造描述SAD構(gòu)件組裝的本質(zhì)是在構(gòu)件之間建立關(guān)聯(lián),根據(jù)這種關(guān)聯(lián)來協(xié)調(diào)構(gòu)件的行為,把它們組織成為一個有機的整體。構(gòu)件之間的組裝關(guān)系,宏觀上由組裝構(gòu)造描述[6](簡稱組裝描述)定義,構(gòu)件之間復雜的行為關(guān)系,微觀上由連接子描述。主要完成從軟件體系構(gòu)造到系統(tǒng)組裝構(gòu)造描述的映射過程,自定義了軟件構(gòu)造描述,給出系統(tǒng)的抽象規(guī)約描述,它是構(gòu)件描述、連接子描述和組裝構(gòu)造描述的統(tǒng)稱,并根據(jù)描述語言映射為最終的實現(xiàn)語言,生成應(yīng)用系統(tǒng)骨架。SAD從構(gòu)件、連接子和兩者之間的組裝構(gòu)造關(guān)系三方面來建模系統(tǒng)。SAD有11個主要元素:(1)ponentName(構(gòu)件名):構(gòu)件有代表性的正規(guī)名稱,也是構(gòu)件的唯一性標識;(2)Function(構(gòu)件功能):對構(gòu)件功能的自然語言描述;(3)ponentLocation(構(gòu)件位置):構(gòu)件來源信息,一般與構(gòu)件的獲取方式相關(guān);(4)Inputpara(輸入?yún)?shù)):構(gòu)件操作的輸入?yún)?shù)數(shù)據(jù)類型以及參數(shù)名。包括兩個項,分別是ParaName(參數(shù)名)和ParaType(參數(shù)類型);(5)Outputpara(輸出參數(shù)):構(gòu)件操作完后的輸出參數(shù)數(shù)據(jù)類型以及參數(shù)名。同樣包括兩個項,分別是ParaName(參數(shù)名)和ParaType(參數(shù)類型);(6)ConnectorName(連接子名稱):標識連接子的名字;(7)ConnectorFunction(連接子功能):連接子的功能,連接子功能化分為兩個:數(shù)據(jù)的傳遞(Paratransmitter)和數(shù)據(jù)類型的轉(zhuǎn)換匹配(Paramatching);(8)ponentObjects(連接的構(gòu)件對象描述):對連接子連接的上一構(gòu)件(Up_ponent)與下一構(gòu)件(Down_ponent)的描述;(9)OutputParalist(來源參數(shù)列表):連接子接收的輸入信息的參數(shù)序列;(10)InputParalist(目的參數(shù)列表):經(jīng)連接子處理后發(fā)往下一個構(gòu)件的輸出,也是一個參數(shù)序列;(11)Condition(條件約束):這是一個條件約束,這個條件一般用自然語言描述,在由連接子描述映射到連接子實體時,半自動化生成選擇語句的條件表達式。5.1基于*ML的構(gòu)件描述軟件體系構(gòu)造人員根據(jù)用戶需求,對構(gòu)件的功能和其它特征進展刻畫,形成構(gòu)件描述[7]。在本文定義的構(gòu)件描述中,與組裝相關(guān)的構(gòu)件描述分為兩個局部,第一局部是構(gòu)件的一般信息描述,包括構(gòu)件名稱、來源、功能等;第二局部是構(gòu)件內(nèi)部構(gòu)造的詳細說明,包括操作的名稱及參數(shù)列表等。構(gòu)件描述包含了SAD中的5個元素:ponentName,F(xiàn)unction,ponentLocation,Inputpara,Outputpara。其中ponentName,F(xiàn)unction和ponentLocation的數(shù)據(jù)類型是String類型,Inputpara和Outputpara是復雜類型。5.2基于*ML的連接子描述在軟件組裝構(gòu)造中,連接子是一類特殊構(gòu)件,它不但具有邏輯意義上的獨立性,而且與構(gòu)件和一樣,都是獨立的二進制實體。連接子實現(xiàn)構(gòu)件之間的數(shù)據(jù)傳送、控制轉(zhuǎn)移(順序、選擇、循環(huán)、并行等)等功能,是構(gòu)件之間建立聯(lián)系的中介。本文所述的組裝關(guān)系最終都被映射到一類特殊的構(gòu)件?-連接子上。連接子定義、連接子處理方法和連接子接口,都被封裝在連接子中。因此,構(gòu)件之間的組裝關(guān)系,分散在對連接子的描述中。連接子的描述方法,其包括邏輯關(guān)系描述和組裝描述,主要研究連接子的一般規(guī)約模型。規(guī)*化描述接連子是使連接子作為獨立構(gòu)件的根底,也是使連接子工具化的第一步。由于連接子是軟件高層設(shè)計的構(gòu)件,因此,它的描述不同于傳統(tǒng)程序設(shè)計語言中的程序單元。它所描述的不是具體的實現(xiàn)功能、操作等,而應(yīng)該明確、顯示地描述它在體系構(gòu)造中所扮演的抽象角色。連接子描述包括功能、約束、非功能屬性描述等,它包含了SAD中的6個元素:ConnectorName,ConnectorFunction,ponentObjects,OutputParalist,InputParalist,Condition。5.3基于*ML的組裝構(gòu)造描述組裝構(gòu)造描述是軟件構(gòu)造描述的重點,它規(guī)定了應(yīng)用系統(tǒng)中各個構(gòu)件之間的作用形式和構(gòu)件在運行期間的通信機制,其它描述都是直接為它效勞的。*ML表示的組裝構(gòu)造描述(簡稱組裝描述)是對軟件系統(tǒng)各個組成局部之間關(guān)系的準確刻畫,它反映了構(gòu)件、連接子之間的交互關(guān)系。構(gòu)件組裝平臺的各個局部,可以根據(jù)自身在組裝描述中的位置,確定構(gòu)件與構(gòu)件以及構(gòu)件與連接子間的邏輯連接關(guān)系。每一個節(jié)點代表一個構(gòu)件或連接子,節(jié)點之間代表數(shù)據(jù)的流向。數(shù)據(jù)的傳遞以及數(shù)據(jù)類型的匹配在連接子中完成。構(gòu)件組裝描述中的節(jié)點、前驅(qū)節(jié)點、后繼節(jié)點定義如下:(1)節(jié)點(Node):節(jié)點是組裝描述的根本元素,有兩種類型的節(jié)點,一種是構(gòu)件,另一種是連接子。連接子結(jié)點描述了構(gòu)件之間的組裝關(guān)系,是構(gòu)件之間的粘合劑!。(2)前驅(qū)節(jié)點(PreNode):表示當前節(jié)點在組裝構(gòu)造中的前驅(qū)節(jié)點名稱,前驅(qū)節(jié)點的類型可以是構(gòu)件或連接子。(3)后繼節(jié)點(Ne*tNode):表示當前節(jié)點在組裝構(gòu)造中的后繼節(jié)點名稱,后繼節(jié)點的類型可以是構(gòu)件或連接子。組裝構(gòu)造的邏輯描述如下:<CL><DesObject><ClassName>構(gòu)件名稱</ClassName><MethodName>方法名稱</MethodName><Inputpara><ParaName>參數(shù)名稱</ParaName><ParaType>參數(shù)類型</ParaType></Inputpara><Outputpara><ParaName>參數(shù)名稱</ParaName><ParaType>參數(shù)類型</ParaType></Outputpara></DesObject><NodeListVersion=""Name="cl_table"><NodeName="start"><Ne*tNodes><Ne*tNodeName="構(gòu)件名稱"><Condition>true</Condition></Ne*tNode></Ne*tNodes></Node><NodeName="構(gòu)件名稱"><ClassType>構(gòu)件類型</ClassType><MethodName>方法名稱</MethodName><PreNode>前驅(qū)構(gòu)件</PreNode><Inputpara><ParaName>參數(shù)名稱</ParaName><ParaType>參數(shù)類型</ParaType></Inputpara><Outputpara><ParaName>參數(shù)名稱</ParaName><ParaType>參數(shù)類型</ParaType></Outputpara><Ne*tNodes><Ne*tNodeName="構(gòu)件名稱"><Condition>條件</Condition></Ne*tNode><Ne*tNodeName="構(gòu)件名稱"><Condition>條件</Condition></Ne*tNode></Ne*tNodes></Node><NodeName="連接子名稱"><ClassType>連接子類型</ClassType><MethodName>方法名稱</MethodName><PreNode>前驅(qū)構(gòu)件</PreNode><Inputpara><ParaName>參數(shù)名稱</ParaName><ParaType>參數(shù)類型</ParaType></Inputpara><Outputpara><ParaName>參數(shù)名稱</ParaName><ParaType>參數(shù)類型</ParaType></Outputpara><Ne*tNodes><Ne*tNodeName="構(gòu)件名稱"><Condition>條件</Condition></Ne*tNode><Ne*tNodeName="構(gòu)件名稱"><Condition>條件</Condition></Ne*tNode></Ne*tNodes></Node><NodeName="構(gòu)件名稱

溫馨提示

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

評論

0/150

提交評論